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

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

Если процесс подкачки не может найти ни одного процесса, подходящего для выгрузки, или ни одного процесса, подходящего для загрузки, или ни одного процесса, перед выгрузкой не менее 2 секунд [26] находившегося в памяти, он приостанавливает свою работу по причине того, что ему нужно загрузить процесс в память, а в памяти нет места для его размещения. В этой ситуации таймер возобновляет выполнение процесса подкачки через каждую секунду. Ядро также возобновляет работу процесса подкачки в том случае, когда один из процессов переходит в состояние приостанова, так как последний может оказаться более подходящим для выгрузки процессом по сравнению с ранее рассмотренными. Если процесс подкачки расчистил место в памяти или если он был приостановлен по причине невозможности сделать это, он возобновляет свою работу с перезапуска алгоритма подкачки (с самого его начала), вновь предпринимая попытку загрузить ожидающие выполнения процессы.

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

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

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

{

loop:

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

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

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

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

  goto loop;

 }

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

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

  goto loop;

 }

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

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

Java книги

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