Работа с памятью — различия между версиями
Phil (обсуждение | вклад) (→Старт процесса) |
Phil (обсуждение | вклад) м (→Хранение в физической памяти) |
||
Строка 18: | Строка 18: | ||
==Хранение адресного пространства== | ==Хранение адресного пространства== | ||
===Хранение в физической памяти=== | ===Хранение в физической памяти=== | ||
− | Адресное пространство разбито на ''страницы'' объемом по <tex>4kB</tex>. Для каждой страницы в хранится ее адрес в физической памяти, либо указание, что эта страница пуста (в таком случае хранить саму страницу не надо - поэтому все адресные пространства помещаются в физической памяти). Физическая память формируется из оперативной памяти (<tex>RAM</tex>), места на жестком диске, отведенного под <tex>swap</tex>, и места на жестком диске, где хранится непосредственно | + | Адресное пространство разбито на ''страницы'' объемом по <tex>4kB</tex>. Для каждой страницы в хранится ее адрес в физической памяти, либо указание, что эта страница пуста (в таком случае хранить саму страницу не надо - поэтому все адресные пространства помещаются в физической памяти). Физическая память формируется из оперативной памяти (<tex>RAM</tex>), места на жестком диске, отведенного под <tex>swap</tex>, и места на жестком диске, где хранится непосредственно код программы. |
+ | |||
===Подгрузка страниц в оперативную память=== | ===Подгрузка страниц в оперативную память=== | ||
При обращении к той или иной странице, если она не находится в оперативной памяти, она загружается туда. Для этого, либо в оперативке находится свободное место, либо выбирается страница, которая будет выгружена оттуда. Если эта страница уже существует на жестком диске, и не была изменена за время ее пребывания в оперативной памяти, она просто удаляется оттуда; иначе - записывается в <tex>swap</tex>. | При обращении к той или иной странице, если она не находится в оперативной памяти, она загружается туда. Для этого, либо в оперативке находится свободное место, либо выбирается страница, которая будет выгружена оттуда. Если эта страница уже существует на жестком диске, и не была изменена за время ее пребывания в оперативной памяти, она просто удаляется оттуда; иначе - записывается в <tex>swap</tex>. |
Версия 21:43, 10 июля 2011
TODO: не надо писать сюда про потоки и вообще выполнение проги — на это будет сделана отдельная страничка
Содержание
Определение
При запуске программы операционная система создает процесс, которому выделяется адресное пространство размером
в 32-битных системах, и в 64-битных, представляющее из себя массив байт. В этом массиве можно писать и читать данные из любого его места. Ясно, что адресное пространство не может полностью содержаться в физической памяти, поэтому представим, что эта память просто дана каждому процессу, неважно, где она находится. Важно помнить, что у каждого процесса свое адресное пространство, которое не пересекается с адресными пространствами других программ.Старт процесса
При старте процесса, в адресное пространство помещается код исполняемой программы и код используемых в программе библиотек (например, Kernel.dll). Так же, в адресном пространстве хранится
, в который будут записываться глобальные переменные.TODO: налить воды
Хранение адресного пространства
Хранение в физической памяти
Адресное пространство разбито на страницы объемом по
. Для каждой страницы в хранится ее адрес в физической памяти, либо указание, что эта страница пуста (в таком случае хранить саму страницу не надо - поэтому все адресные пространства помещаются в физической памяти). Физическая память формируется из оперативной памяти ( ), места на жестком диске, отведенного под , и места на жестком диске, где хранится непосредственно код программы.Подгрузка страниц в оперативную память
При обращении к той или иной странице, если она не находится в оперативной памяти, она загружается туда. Для этого, либо в оперативке находится свободное место, либо выбирается страница, которая будет выгружена оттуда. Если эта страница уже существует на жестком диске, и не была изменена за время ее пребывания в оперативной памяти, она просто удаляется оттуда; иначе - записывается в
.