koncepcje pamięci wirtualnej

Jestem zdezorientowany niektórymi tematami dotyczącymi pamięci wirtualnej. Więc zamierzam je wskazać i zadać pytania. Odpowiadając na to pytanie, wolę, jeśli podasz również źródło, z którego mogę wyczyścić wątpliwości. Będę mówił o pliku wykonywalnym linux elf.

Słyszałem, że każdy proces ma przestrzeń adresową 4 GB w 32-bitowym systemie. Kiedy sprawdziłem objdump jednego z moich plików wykonywalnych relokowalnych, zobaczyłem, że ma ograniczenia od 00000000 do ffffffff. Zawierał także przestrzeń jądra. To jest przestrzeń adresowa pliku.Czy to jest pamięć wirtualna, o której mówimy? Jeśli tak, to przeczytałem, że mechanizm pamięci wirtualnej pozwala na uruchamianie procesów o bardzo dużych rozmiarach i że rozmiar procesu nie jest ograniczony wielkością pamięci głównej (możemy przywołać wymagane strony do pamięci głównej po stronicowaniu na żądanie).Jeśli pamięć wirtualna ma tylko 4 GB, czy nie ogranicza maksymalnego rozmiaru programów do 4 GB? Sprawdziłem również objdump innego pliku i miał on ten sam adres (tj. 00000000 do ffffffff).Co to znaczy? Czy to oznacza, że ​​nasz plik jest jakimś rodzajem przenoszonego pliku, do którego ponownie zostaną dodane adresy początkowe(choć wydaje się to absurdalne, ponieważ jest już wykonywalnym plikiem relokowalnym).

Przeczytałem, że w pamięci, w której zaimplementowano segmentację, procesor wytwarza wirtualny (logiczny) adres. Ten adres ma trzy części - segment, przesunięcie w segmencie. Również omawiane tutaj segmenty to kod, dane, stos itp.

W przestrzeni adresowej procesu segmenty te znajdują się w określonych lokalizacjach. Jaka jest zawartość wirtualnego adresu procesora?Czy adres wirtualny ma zakres od 00000000 do ffffffff? Jeśli tak, toto proces uzyskiwania dostępu do treści pod adresem wirtualnym, następujące czynności: -

The segment part is looked up in the segment descriptor table to find the segment's
starting address in linear address space. Then the offset is indexed within the segment and
the resulting address is the linear address. Then, we look up the page table and map the
address to physical address. If the page is not currently in the main memory, it is 
brought. 

Ponownie pojawia się fakt, że żaden proces nie może być w pełni w głównej pamięci w dowolnym momencie, ponieważ cała pamięć będzie zajęta przez tylko jeden proces(ponieważ przestrzeń adresowa procesu wynosi 4 GB).

Ponadto, jeśli wszystkie procesy mają przestrzeń adresową od 00000000 do ffffffff, a więcej niż jeden proces może istnieć w głównej pamięci naraz, wtedywszystkie procesy powinny mieć własną tabelę deskryptorów segmentów, która zwraca adres segmentu w liniowej przestrzeni adresowej

Czytałem, że system operacyjny jest ładowany do pamięci głównej podczas uruchamiania. NastępnieJaka jest różnica między tym systemem operacyjnym a kodem jądra w przestrzeni jądra danego procesu? Czy wszystkie procesy mają własną kopię kodu jądra w przestrzeni jądra?

questionAnswers(1)

yourAnswerToTheQuestion