2012-01-17 5 views
4

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

+0

вы можете задать здесь http://unix.stackexchange.com –

+1

Вопрос заключается в теоретической, а не UNIX, в частности. SO - правильное место. –

ответ

3

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

1

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

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

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

Смежные вопросы