Системный вызов в процессе - PullRequest
4 голосов
/ 17 января 2012

Предположим, что процесс запущен и вызывает системный вызов. Означает ли это, что процесс теперь будет заблокирован. Все системные вызовы блокируют процесс и изменяют его состояние с запущенного на блокированное? Или это зависит от сценария того времени?

Ответы [ 2 ]

3 голосов
/ 17 января 2012

Нет, это не значит, что процесс заблокирован. Некоторые системные вызовы блокируются, а некоторые нет. Однако обратите внимание, что в течение времени, в течение которого ядро ​​обрабатывает системный вызов, пока процесс продолжает выполняться, ваш собственный пользовательский код не выполняется, а код ядра выполняется от имени процесса.

1 голос
/ 17 января 2012

Некоторые операционные системы имеют даже обратные вызовы, когда пользовательское приложение регистрирует некоторые функции, которые в некоторых случаях вызываются ядром (обратно в пользовательское пространство). Сигнальный механизм Unix - очень простой пример, но некоторые ОС имеют гораздо более сложные вызовы.

Я думаю, что есть некоторые ОС, в которых системный вызов запускает некоторую обработку ядра, что может вызвать обратный вызов в пользовательском пространстве.

Я забыл подробности

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