Блокировка системных вызовов без другой загрузки в системе (ядро Linux) - PullRequest
0 голосов
/ 25 апреля 2010

Если в системе только 1 запущенное приложение (и 100 спящих процессов по умолчанию), и оно выполняет системный вызов блокировки (меня интересует блокировка recv или read read). Будет ли ядро ​​Linux удалять это приложение из указателя task_t *current?

1 Ответ

0 голосов
/ 04 мая 2010

Вы спрашиваете, будет ли запущенное приложение спать?

Если есть данные, удовлетворяющие чтению, то они не будут спать - ядро ​​скопирует поставленные в очередь данные в ваш буфер и вернется из системного вызова. Если нет ожидающих данных, то процесс будет спать. Это не зависит от состояния других процессов в системе. Если все процессы находятся в спящем режиме, ядро ​​будет выполнять полезные действия, например переводить ЦП в состояние пониженного энергопотребления до тех пор, пока не произойдет прерывание, что может означать, что теперь могут быть доступны данные, ожидаемые вашим процессом.

...