Архитектура современных операционных систем

57 нил область памяти в своем адресном пространстве, эти изменения будут до- ступны другим процессам без выполнения ими операций ввода-вывода. Таким способом во многих UNIX-системах реализованы разделяемые об- ласти памяти, то есть создается временный файл нужного размера и он отобра- жает в адресное пространство взаимодействующих процессов. После того, как взаимодействие становится ненужным, временный файл уничтожается. Теоретически можно через временный файл сделать общим все адресное пространства процесса. Реализация управления памятью UNIX До ОС BSD v.3 все системы Unix при управлении памятью использовали свопинг (swapping). Когда памяти для размещения процесса при загрузке его в память не хватало, система выгружала на диск один или несколько располага- ющихся в памяти процессов, причем они выгружались целиком. Свопинг осуществлял компонент планировщика - своппер, который имел PID=0. Своппер начинал свопинг, то есть вытеснение процессов из памяти, если ядру не хватало памяти по одной из следующих причин:  системный вызов fork потребовал память для создаваемого дочер- него процесса;  системный вызов brk используется для расширения сегмента дан- ных;  разросшийся стек требует много памяти. Кроме того, и при загрузке процесса в память для него иногда необходи- мо освобождать место. В этих случаях, при выборе претендента на выгрузку, своппер сначала просматривал список находящихся в памяти процессов и пытался найти там блокированные процессы. Если блокированных процессов было несколько, то выбирался тот, который имел больший PRTY, то есть который больше исполь- зовал CPU.

RkJQdWJsaXNoZXIy MTY0OTYy