Достаточно ли перехвата и воспроизведения всех системных вызовов для обеспечения детерминированного поведения программы? - PullRequest
2 голосов
/ 06 июня 2019

В GNU / Linux можно перехватывать все системные вызовы программы и ее дочерних элементов, используя ptrace(2). Типичное программное обеспечение будет полагаться исключительно на системные вызовы для взаимодействия с другим программным обеспечением.

Каковы возможные источники недетерминизма, которые может использовать программа, которые не связаны с системными вызовами? И они обычно используются?

Как правило, если бы я хотел разработать универсальный механизм кэширования , который отслеживает все системные вызовы программы и ее подпроцессов, и я должен был просто воспроизвести их, проверяя, что эти вызовы возвращают точное тот же результат (если нет, я вернусь к фактическому запуску программы), будет ли это всегда вести себя как настоящая программа?

С практической точки зрения, если я ослаблю некоторые вызовы, чтобы учесть другое поведение (обычно brk и mmap имеют тенденцию выбирать разные адреса и getpid возвращают разные идентификаторы процесса, но они на самом деле не влияют на программу много поведения) есть ли обычно используемые программы, которые бы нарушали эти ожидания? (обычно я предполагаю, что инструменты сборки имеют тенденцию быть довольно детерминированными)

Существует ли такая реализация универсального механизма кэширования ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...