Работа с памятью — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Определение)
Строка 4: Строка 4:
  
 
==Определение==
 
==Определение==
[[Файл:Adresnoe prostranstvo.png|thumb|right|Адресное пространство]]
+
{|align="right"
 +
|-valign="top"
 +
|-class="standard"
 +
|[[Файл:Adresnoe prostranstvo.png|frame|Адресное пространство]]
 +
|[[Файл:Hranenie dannyh.png|frame|Хранение в физической памяти]]
 +
|}
 
При запуске программы операционная система создает процесс, которому выделяется адресное пространство размером <tex>4GB</tex> в 32-битных системах, и <tex>2^{64}B</tex> в 64-битных, представляющее из себя массив байт. В этом массиве можно писать и читать данные из любого его места. Ясно, что адресное пространство не может полностью содержаться в физической памяти, поэтому представим, что эта память просто дана каждому процессу, неважно, где она находится. Важно помнить, что у каждого процесса свое адресное пространство, которое не пересекается с адресными пространствами других программ.  
 
При запуске программы операционная система создает процесс, которому выделяется адресное пространство размером <tex>4GB</tex> в 32-битных системах, и <tex>2^{64}B</tex> в 64-битных, представляющее из себя массив байт. В этом массиве можно писать и читать данные из любого его места. Ясно, что адресное пространство не может полностью содержаться в физической памяти, поэтому представим, что эта память просто дана каждому процессу, неважно, где она находится. Важно помнить, что у каждого процесса свое адресное пространство, которое не пересекается с адресными пространствами других программ.  
 
{{TODO|t=привязать сюда определение физической памяти}}
 
{{TODO|t=привязать сюда определение физической памяти}}

Версия 21:23, 10 июля 2011

Эта статья находится в разработке!

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

Определение

Адресное пространство
Хранение в физической памяти

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

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

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

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

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

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

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

TODO: запилить картинку, написать про swap