Работа с памятью

Материал из Викиконспекты
Версия от 05:16, 10 июля 2011; Phil (обсуждение | вклад) (Новая страница: «Категория:С++ 2 семестр {{В разработке}} {{TODO|t=не надо писать сюда про единицу трансляции, т…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
Эта статья находится в разработке!

TODO: не надо писать сюда про единицу трансляции, точку входа и вообще выполнение проги — на это будет сделана отдельная страничка

Определение

При запуске программы, процессу выделяется адресное пространство размером [math]4GB[/math] в 32-битных системах, и [math]2^{64}B[/math] в 64-битных. Ясно, что оно не может полностью содержаться в физической памяти, поэтому представим, что эта память просто дана каждому процессу, неважно, где она находится. Важно помнить, что у каждого процесса свое адресное пространство, которое не пересекается с адресными пространствами других программ.

TODO: привязать сюда определение физической памяти

Старт процесса

При старте процесса, в адресное пространство помещается код исполняемой программы и код используемых в программе библиотек (например, Kernel.dll). Так же, в адресном пространстве будут храниться глобальные переменные программы.

TODO: налить воды

Хранение адресного пространства

Адресное пространство разбито на страницы объемом по [math]4kB[/math]. Для каждой страницы в хранится ее адрес в физической памяти, либо указание, что эта страница пуста (в таком случае хранить саму страницу не надо - поэтому все адресные пространства помещаются в физической памяти).

TODO: запилить картинки в первый и третий абзацы, написать про swap