Что именно делают alarm () и sleep ()? - PullRequest
0 голосов
/ 13 октября 2019

Если мой временной интервал равен 3 секундам, я предполагаю, что сигнал тревоги останавливает выполнение процесса каждые три секунды. Что делает сон? Устанавливает ли это процесс на 3 секунды? Это не имеет смысла для меня - что, если есть много процессов? Разве это не должно было бы спать дольше?

Я делаю это с помощью круговой стимуляции:

    while (head!=NULL)
      {
              alarm(TIMESLICE);
              sleep(TIMESLICE);
      }
      cout<<"no processes left"<<endl;

Код работает, но я просто хочу понять, что именно происходиткак я новичок в этой концепции.

1 Ответ

0 голосов
/ 14 октября 2019

Я предполагаю, что сигнал тревоги останавливает выполнение процесса каждые три секунды.

В некотором роде. Он организует отправку сигнала процессу в течение трех секунд. Затем процесс может продолжаться в обычном режиме и даже может игнорировать сигнал, если он этого хочет.

Что делает сон? Это переводит процесс в спящий режим на 3 секунды?

Правильно.

Это не имеет смысла для меня - что, если процессов много? Разве это не должно было бы спать дольше?

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

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