6

Skupmy się na jednoprocesorowych systemach komputerowych. Kiedy proces zostanie utworzony, o ile mi wiadomo, ustawiana jest tabela stron, która odwzorowuje wirtualne adresy na fizyczną przestrzeń adresową pamięci. Każdy proces otrzymuje własną tabelę stron przechowywaną w przestrzeni adresowej jądra. Ale w jaki sposób MMU wybiera właściwą tabelę stron dla procesu, ponieważ nie jest tylko jeden proces uruchomiony i będzie wiele przełączników kontekstu się dzieje?W jaki sposób system wybiera właściwą tabelę stron?

Każda pomoc jest doceniana!

Best, Simon

Odpowiedz

2

MMU w tym przypadku jest zupełnie nieświadomy tego, co jest procesem. System operacyjny, który przechowuje ścieżki procesów, generuje tabelę stron dla każdego procesu, jak to się mówi, podczas tworzenia. Proces przełączania kontekstu jest następujący:

  1. System operacyjny opowiada MMU użyć tabeli strona znajduje się pod adresem fizycznym 0xFOO

  2. programów systemu operacyjnego zegar programowalny przerwania (PIT), aby spowodować przerwanie sprzętowe po milisekundach BAR.

  3. System operacyjny przywraca stan procesu (rejestry CPU, licznik programów itp.) I przeskakuje do właściwego adresu.

  4. Proces trwa, aż PIT wyzwoli przerwanie.

  5. Procedura systemu operacyjnego do obsługi przerwania PIT, a następnie zapisuje stan programu (rejestry itp.), Wykorzystuje algorytm szeregowania do określenia następnego procesu do uruchomienia (w prostym przypadku, lista połączona koliście), a następnie rozpoczyna się od nowa w kroku 1.

Mam nadzieję, że rozwiąże wszelkie wątpliwości. Krótka odpowiedź: MMU jest procesem agnostycznym i nie wie, czym jest proces.

+0

Dziękuję za szybką odpowiedź. Więc mówisz, że system operacyjny spłukuje i przywraca tabelę stron w każdym przełączniku kontekstu? – saimn

+0

@ user1435023 Zasadniczo. System operacyjny informuje MMU, gdzie tabela znajduje się w pamięci fizycznej jako wskaźnik, następnie MMU obsługuje wypróżnianie TTL i innych zadań sprzętowych. W zależności od MMU, system operacyjny może mieć dokładniejszą kontrolę szczegółów niskiego poziomu, ale nie jest to absolutnie konieczne. Na najprostszym poziomie, wszystko, o co chodzi, to informowanie MMU, jakiej tabeli stron użyć. – Dougvj

+0

@ user1435023 Korekta: Prześlij powyższe TLB, * nie * TTL. Nathan Binkert odpowiedział więcej na temat TLB rzeczy – Dougvj

13

Procesory mają rejestr uprzywilejowany zwany rejestrem bazowym tabeli stron (PTBR), na x86 jest to CR3. W przypadku przełączania kontekstu system operacyjny zmienia wartość parametru PTBR, aby procesor wiedział, która tabela stron ma być używana. Oprócz PTBR wiele współczesnych procesorów ma pojęcie numeru przestrzeni adresowej (ASN). Procesom nadawany jest numer przestrzeni adresowej (z ograniczonej puli) i ten ASN jest również ustawiony w rejestrze na przełączniku kontekstu. Ten ASN jest używany jako część dopasowania TLB i umożliwia współistnienie wpisów TLB z wielu przestrzeni adresowej. Tylko wtedy, gdy ASN jest ponownie wykorzystywany, należy opróżnić TLB, a następnie tylko dla wpisów pasujących do tego ASN. Większość implementacji x86 jest bardziej gruba niż ta i istnieje pojęcie stron globalnych (dla bibliotek współdzielonych i danych współdzielonych).

+0

To było pomocne dzięki – JohnnyCat