Ile pamięci logicznej jest faktycznie przydzielane dla każdego procesu na dysku?

0

Załóżmy, że procesor jest 32-bitowy. Tak więc każdy proces działający na tym procesorze otrzymuje 2 ^ 32 bity pamięci logicznej.

  1. Jeśli w systemie jest n procesów, czy na dysku jest przydzielonych n * 2 ^ 32 bity? gdzie to jest przydzielone? czy jest w przestrzeni wymiany?
  2. Jeśli rozmiar strony to 4KB, całkowita liczba stron wynosi 2 ^ 32/2 ^ 12 = 2 ^ 20. czy suma stron znajduje się na dysku, a pamięć RAM dla tego procesu wynosi 2 ^ 20? jeśli nie, ile z tych 2 ^ 20 jest przydzielonych? 3)#include <stdio.h> int main(){ printf("Hello World"); }

    czy ten prosty proces zajmuje również 2 ^ 20 stron na RAM + Disk?

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

    Ile stron jest przydzielonych na dysku + RAM początkowo w momencie ładowania? czy jest to również 2 ^ 20? jeśli nie, to jak rośnie wraz z każdym wywołaniem malloc?

veerendra
źródło
To pamięć wirtualna. Mylisz rozmiar przestrzeni adresowej i to, czego faktycznie używa uruchomiony proces.
Daniel B
Czy to kolejne pytanie o pracę domową?
DavidPostill
Witamy w Super User ! Spróbuj zadać 1 pytanie na raz (w przeciwnym razie Twoje pytanie zostanie zamknięte jako zbyt ogólne). Proszę przeczytać Jak zadać dobre pytanie? i On-Topic .
DavidPostill

Odpowiedzi:

1

W OSprzydziela wiele wirtualnych stron jako niezbędne do map sekcje zdefiniowane w plikach wykonywalnych.

Jeśli w innym procesie są już uruchomione te same pliki wykonywalne, system operacyjny ponownie wykorzystuje strony tylko do odczytu, a jeśli system operacyjny obsługuje funkcję „kopiuj przy zapisie”, to wykorzystuje ponownie zmapowane niezmienione strony do odczytu i zapisu dla nowego procesu. W przypadku stosów, stert itp. Zarezerwuje wirtualną przestrzeń adresową, ale strony zostaną przydzielone na żądanie, tj. Gdy stos wzrośnie poza już zmapowane miejsce, system operacyjny przydzieli więcej stron

Miejsce w pliku wymiany jest przydzielane, gdy system decyduje się zamienić niektóre zmienione strony procesu z pamięci RAM. Jest to jednak optymalna strategia, rzeczywiste zachowanie może się różnić w zależności od systemu operacyjnego.

Serge
źródło