Pamięć w systemie Linux

16.12.98


Kliknij tutaj, aby rozpocząć


Spis treści

Pamięć w systemie Linux

Dawno, dawno temu...

Pamięć?! - Co to?

Segmentacja - co i po co

Ale skąd bierzemy wolne ramki ?

Organizacja pamięci procesu

Operacje na segmentach

Algorytm widelca

Algorytm wyjścia

Algorytm egzekucji

Jak to było kiedyś ...

Jak to jest w Linuxie ..

Co się dzieje na początku ?

Na czy polega specyfika sposobu przydzielania pamięci dla jądra ?

Jednorazowe żądanie jądra nie może przekroczyć rozmiaru 2^5 = 32 stron. Możliwe rozmiary bloków dla i386 to:

W jak sposób identyfikowany jest blok ?

block_header

Co się dzieje kiedy żądanie jądra jest większe niż rozmiar strony?

page_descriptor

Jak pamiętane są wolne bloki?

size_descriptor

sizes[]

Co się dzieje kiedy w tablicy sizes[] nie ma bloku o odpowiedniej wielkości aby obsłużyć żądanie jądra?

Co się dzieje kiedy nie ma wolnej ramki?

Jak zrealizowany jest mechanizm rezerwacji stron?

Jak realizowany jest przydział pamięci dla jądra?

Jak realizowane jest zwolnienie pamięci

Informacje ogólne

Tablice stron

Implementacja operacji na pamięci

Zarządzanie ramkami

Wymiana stron z pamięci na dysk

Błędy braku i ochrony strony

Pamięć dzielona - nie mylić z IPC

Co to jest stronicowanie ?

Istotne cechy w Linuxie

Struktury danych

Najważniejsze pola struktury vm_area_struct

I co dalej?

do_mmap()

do_mmap() -cd.

do_munmap()

Struktura dla vm_ops (vm_operation_struct)

Co to jest „cache_page”?

filemap_nopage()

filemap_nopage() - cd.

filemap_swapout()

filemap_sync()

shrink_mmap

Wspomaganie sprzętowe.

Rejestry i struktury systemowe

Faults, traps, interrupts, aborts, exceptions...

Literatura.

Autor: Paweł Białka, Rafał Bieliński, Konrad Bojar, Tomek Chudzik, Paweł Weżgowiec