Архитектура операционной системы UNIX   ::   Бах Морис Дж.

Страница: 449 из 715



алгоритм swapper /* загрузка выгруженных процессов, выгрузка других процессов с целью расчистки места в памяти */

входная информация: отсутствует

выходная информация: отсутствует

{

loop:

 for (всех выгруженных процессов, готовых к выполнению)

  выбрать процесс, находящийся в состоянии выгруженности дольше остальных;

 if (таких процессов нет)  {

  приостановиться (до момента, когда возникнет необходимость в загрузке процессов);

  goto loop;

 }

 if (в основной памяти достаточно места для размещения процесса)  {

  загрузить процесс;

  goto loop;

 }

 /* loop2: сюда вставляются исправления, внесенные в алгоритм */

 for (всех процессов, загруженных в основную память, кроме прекративших существование и заблокированных в памяти)  {

  if (есть хотя бы один приостановленный процесс)

   выбрать процесс, у которого сумма приоритета и продолжительности нахождения в памяти наибольшая;

  else   /* нет ни одного приостановленного процесса */

   выбрать процесс, у которого сумма продолжительности нахождения в памяти и значения nice наибольшая;

 }

 if (выбранный процесс не является приостановленным или не соблюдены условия резидентности)

  приостановиться (до момента, когда появится возможность загрузить процесс);

 else  выгрузить процесс;

 goto loop; /* на loop2 в исправленном алгоритме */

}

Рисунок 9.9. Алгоритм подкачки

На Рисунке 9.10 показана динамика выполнения пяти процессов с указанием моментов их участия в реализации алгоритма подкачки. Положим для простоты, что все процессы интенсивно используют ресурсы центрального процессора и что они не производят обращений к системным функциям; следовательно, переключение контекста происходит только в результате возникновения прерываний по таймеру с интервалом в 1 секунду. Процесс подкачки исполняется с наивысшим приоритетом планирования, поэтому он всегда укладывается в секундный интервал, когда ему есть что делать.

|< Пред. 447 448 449 450 451 След. >|

Java книги

Контакты: [email protected]