Prezentacja z systemów operacyjnych:
Realizacja pamięci wirtualnej w systemie SUNOS


Spis treści

  1. Założenia i cele

  2. Podstawowe abstrakcje i pojęcia

  3. Struktura page

  4. Przestrzeń adresowa (PA)

  5. Segmenty

  6. Realizacja Page Fault

  7. Źródła


Założenia i cele


Podstawowe abstrakcje i pojęcia

  • Page-struktura identyfikująca stronę.

  • Anonimowa Pamięć (AP)-pamięć bez stałego adresu .

  • HAT(Hardware Address Translation)-jest to jednostka zależna od MMU-Memory Managemant Unit.

  • Przestrzeń Adresowa-w implementacji jest to uporządkowana lista odwzorowań adresów na pamięć fizyczną.

  • Segmenty-są to obiekty (C++) opisujące odwzorowanie z pamięci wirtualnej na ciągły obszar pamięci.


    Struktura page


    Przestrzeń adresowa (PA)


    Segmenty

    Rodzaje sterowników segmentowych:

    1. seg_vm - mapuje anonimową pamięć. Są dwa rodzaje mapowania

      • mapowanie dzielone - jeśli adres jest dobry to zapisujemy.
      • mapowanie prywatne (copy-on-write) - jeśli adres jest dobry to kopiujemy pamięć i dopiero potem zapisujemy.

    2. seg_map - używany tylko przez jądro do tłumaczenia adresów.

    3. seg_dev - mapują specjalne pliki przeznaczone dla urządzeń.

    4. seg_kmap - używany tylko przez jądro do specyficznych mapowań.


    Realizacja Page Fault

    Rysunek 2 przedstawia mapowanie prywatne z offsetu 0x6000 w vnode vp1 do adresu 0x30000 bajtów dla wielkości 0x4000 bajtów i strony o rozmiarze 0x2000. Jeśli będzie wyjątek braku strony inny niż przy pisaniu sterownik segmentowy vnode prosi menadżera obiektów vnode o stronę o adresie (vp1,addr - 0x30000). Menadżer obiektów vnode jest odpowiedzialny za stworzenie i inicjalizacje strony kiedy każe mu to sterownik segmentowy. Następnie sterownik segmentowy vnode zleca przetłumaczenie odwołania do strony warstwie hat .

    Rysunek 3 przedstawia rezultat operacji copy-on-write na adresie 0x32000. Sterownik segmentowy vnode zaalokował strukturę annon_map (struktura do trzymania anonimowych stron) i przepisał na strukturę annon zawartość strony spod adresu 0x32000.


    Źródła

    1. SunOS Virtual Memory Implementation. Joseph P.Moran

    2. Virtual Memory Implementation Architecture in SunOS. Robert A.Gingell, Joseph P.Moran, William A.Shannon

    Autor: Maciej Mostowski