Какой объем логической памяти фактически выделяется для каждого процесса на диске?

270
veerendra

Предположим, процессор 32-битный. Таким образом, каждый процесс, работающий на этом процессоре, получает 2 ^ 32 бита логической памяти.

  1. Если в системе n процессов, на диске выделено n * 2 ^ 32 бита? где это выделено? это в пространстве подкачки?
  2. Если размер страницы составляет 4 КБ, общее количество страниц составляет 2 ^ 32/2 ^ 12 = 2 ^ 20. сумма страниц находится на диске и ОЗУ для этого процесса 2 ^ 20? если нет, то сколько из этих 2 ^ 20 выделено? 3.#include <stdio.h> int main(){ printf("Hello World"); }

    этот простой процесс также занимает 2 ^ 20 страниц на RAM + диск?

  3. #include <stdio.h> int main(){ int x; scanf("%d",&x); while(x!=0){ malloc(sizeof(int)); x--; } }

    Сколько страниц выделяется на диске + ОЗУ изначально в момент загрузки? это также 2 ^ 20? если нет, то как он растет при каждом вызове malloc?

0
Это виртуальная память. Вы путаете размер адресного пространства и то, что на самом деле использует запущенный процесс. Daniel B 8 лет назад 0
Это еще один домашний вопрос? DavidPostill 8 лет назад 0
Добро пожаловать в [су]! Пожалуйста, попробуйте задать один вопрос за раз (иначе ваш вопрос будет закрыт как слишком широкий). Пожалуйста, прочитайте [Как мне задать хороший вопрос?] (Http://superuser.com/help/how-to-ask) и [On-Topic] (http://superuser.com/help/on-topic). , DavidPostill 8 лет назад 0

1 ответ на вопрос

1
Serge

The OS allocates as many virtual pages as necessary to map the sections defined in the executable files.

If another process is already running the same executables then the OS reuses read-only pages at least and if the OS supports "copy-on-write" then it reuses already mapped unaltered read-write pages for a new process. For stacks, heaps, etc., it will reserve the virtual address space, but the pages would be allocated on demand, i.e. when stack grows beyond already mapped space, then the OS allocates more page(s)

The space in a swap file is allocated when the system decides to swap some altered pages of a process out of RAM. This is optimal strategy though, the actual behavior may vary from OS to OS.

Похожие вопросы