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

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

Процессам, использующим эту системную функцию, не приходится дожидаться загрузки страниц, поэтому им гарантирован более быстрый ответ по сравнению с другими процессами. Следует ли иметь также возможность блокировки в памяти и области стека? Что произойдет в том случае, если суммарный объем заблокированных областей превысит размер доступной памяти в машине?

19. Что делает программа, приведенная на Рисунке 9.30? Подумайте над альтернативной стратегией замещения страниц, в соответствии с которой в рабочее множество каждого процесса включается максимально-возможное число страниц.

struct fourmeg {

 int page[512]; /* пусть int занимает 4 байта */

} fourmeg[2048];

main() {

 for (;;) {

  switch(fork()) {

  case -1: /* процесс-родитель не может выполнить fork — слишком много потомков */

  case 0: /* потомок */

   func();

  default:

   continue;

  }

 }

}

func() {

 int i;

 for (;;) {

  printf("процесс %d повторяет цикл\n", getpid());

  for (i = 0; i ‹ 2048; i++) fourmeg[i].page[0] = i;

 }

}

Рис. 9.30



ГЛАВА 10. ПОДСИСТЕМА УПРАВЛЕНИЯ ВВОДОМ-ВЫВОДОМ

Подсистема управления вводом-выводом позволяет процессам поддерживать связь с периферийными устройствами, такими как накопители на магнитных дисках и лентах, терминалы, принтеры и сети, с одной стороны, и с модулями ядра, которые управляют устройствами и именуются драйверами устройств, с другой.

|< Пред. 490 491 492 493 494 След. >|

Java книги

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