Работа с памятью — различия между версиями
Phil (обсуждение | вклад) (Новая страница: «Категория:С++ 2 семестр {{В разработке}} {{TODO|t=не надо писать сюда про единицу трансляции, т…») |
Phil (обсуждение | вклад) |
||
Строка 4: | Строка 4: | ||
==Определение== | ==Определение== | ||
− | При запуске программы, процессу выделяется адресное пространство размером <tex>4GB</tex> в 32-битных системах, и <tex>2^{64}B</tex> в 64-битных. Ясно, что оно не может полностью содержаться в физической памяти, поэтому представим, что эта память просто дана каждому процессу, неважно, где она находится. Важно помнить, что у каждого процесса свое адресное пространство, которое не пересекается с адресными пространствами других программ. | + | При запуске программы, процессу выделяется адресное пространство размером <tex>4GB</tex> в 32-битных системах, и <tex>2^{64}B</tex> в 64-битных, представляющее из себя массив байт. Ясно, что оно не может полностью содержаться в физической памяти, поэтому представим, что эта память просто дана каждому процессу, неважно, где она находится. Важно помнить, что у каждого процесса свое адресное пространство, которое не пересекается с адресными пространствами других программ. |
− | {{TODO|t=привязать сюда определение физической памяти }} | + | {{TODO|t=привязать сюда определение физической памяти, запилить картинку}} |
==Старт процесса== | ==Старт процесса== | ||
Строка 13: | Строка 13: | ||
==Хранение адресного пространства== | ==Хранение адресного пространства== | ||
Адресное пространство разбито на ''страницы'' объемом по <tex>4kB</tex>. Для каждой страницы в хранится ее адрес в физической памяти, либо указание, что эта страница пуста (в таком случае хранить саму страницу не надо - поэтому все адресные пространства помещаются в физической памяти). | Адресное пространство разбито на ''страницы'' объемом по <tex>4kB</tex>. Для каждой страницы в хранится ее адрес в физической памяти, либо указание, что эта страница пуста (в таком случае хранить саму страницу не надо - поэтому все адресные пространства помещаются в физической памяти). | ||
− | {{TODO|t=запилить | + | {{TODO|t=запилить картинку, написать про swap}} |
Версия 05:43, 10 июля 2011
Эта статья находится в разработке!
TODO: не надо писать сюда про единицу трансляции, точку входа и вообще выполнение проги — на это будет сделана отдельная страничка
Определение
При запуске программы, процессу выделяется адресное пространство размером
в 32-битных системах, и в 64-битных, представляющее из себя массив байт. Ясно, что оно не может полностью содержаться в физической памяти, поэтому представим, что эта память просто дана каждому процессу, неважно, где она находится. Важно помнить, что у каждого процесса свое адресное пространство, которое не пересекается с адресными пространствами других программ.TODO: привязать сюда определение физической памяти, запилить картинку
Старт процесса
При старте процесса, в адресное пространство помещается код исполняемой программы и код используемых в программе библиотек (например, Kernel.dll). Так же, в адресном пространстве будут храниться глобальные переменные программы.
TODO: налить воды
Хранение адресного пространства
Адресное пространство разбито на страницы объемом по
. Для каждой страницы в хранится ее адрес в физической памяти, либо указание, что эта страница пуста (в таком случае хранить саму страницу не надо - поэтому все адресные пространства помещаются в физической памяти).TODO: запилить картинку, написать про swap