Systemy Operacyjne Komputerów Przemysłowych OS Linux, Część 3

Systemy Operacyjne Komputerów Przemysłowych OS Linux, Część 3

Systemy operacyjne komputerów przemysłowych OS Linux, część 3 Iwona Kochanska´ Katedra Systemów Sonarowych WETI PG Listopad 2019 GUT – Intel 2015/16 1/50 Pami˛ec´ fizyczna - liniowa (“flat”) I wszystkie procesy współdziel ˛aten sam obszar pami˛eci I przykładowe CPU: 8086-80206, ARM Cortex-M, 8- i 16-bit PIC, AVR, wi˛ekszos´c´ systemow 8- i 16-bitowych GUT – Intel 2015/16 2/50 Pami˛ec´ fizyczna - model x86 GUT – Intel 2015/16 3/50 Pami˛ec´ fizyczna - model x86 I Pami˛ec´ fizyczna podzielona jest na strony I Rozmiar strony jest rózny˙ dla róznych˙ architektur. W wi˛ekszosci´ przypadków to 4096 B I Ograniczona przenosno´ s´c´ programów C I Trzeba znac´ (lub sprawdzac)´ całkowit ˛ailos´c´ pami˛eciRAM I Trzeba pilnowac,´ by procesy miały osobne obszary pami˛eci I Zle´ napisane programy mog ˛apowodowac´ awari˛ecałego systemu GUT – Intel 2015/16 4/50 Linux to system obsługuj ˛acypami˛ec´ wirtualn ˛a I Mapowanie wirtualnej przestrzeni adreswej na: I przestrzen´ pami˛ecifizycznej RAM I urz ˛adzenia, np. PCI, GPU RAM I Zalety: I kazdy˙ proces moze˙ miec´ własn ˛aprzestrzen´ adresow ˛a; przestrzenie adresowe s ˛aod siebie odseparowane, I przestrzen´ adresowa j ˛adra jest niewidoczna dla przestrzeni adresowej uzytkownika˙ I pami˛ec´ fizyczna RAM moze˙ byc´ mapowana przez wiele procesów - pami˛ec´ współdzielona (shared memory) I obszary pami˛ecimog ˛amiec´ rózne˙ ustawienia dost˛epu(read, write, execute) GUT – Intel 2015/16 5/50 Linux to system obsługuj ˛acypami˛ec´ wirtualn ˛a I Dwie przestrzenie adresowe: I adresy fizyczne - uzywane˙ przez urz ˛adzenia (DMA, peryferia) I adresy wirtualne - uzywane˙ przez programy (instrukcje load/store dla procesorów RISC, wszelkie instrukcje dost˛epudo pami˛eciRAM dla procesorów CISC) I Kazdy˙ adres w pami˛eci(fizycznej lub wirtualnej) mozna˙ przedstawic´ jako wielokrotnos´c´ rozmiaru strony oraz przesuni˛ecia I Przestrzen´ adresowa pami˛eciwirtualnej I dla procesorów 32-bitowych: od 0 do 0xffffffff, podzielona na strony o rozmiarze 4 kB I dla procesorów 64-bitowych: 48 bitów adresu (maks. 256 TB), po połowie dla j ˛adra i przestrzeni uzytkownika˙ GUT – Intel 2015/16 6/50 Linux to system obsługuj ˛acypami˛ec´ wirtualn ˛a I Przestrzen´ adresowa podzielona na: I przestrzen´ u˙zytkownika (user space) - high memory I i przestrzen´ j ˛adra (kernel space) - low memory GUT – Intel 2015/16 7/50 Linux to system obsługuj ˛acypami˛ec´ wirtualn ˛a I Segment danych (Data) - globalne i statyczne zmienne o zdefiniowanych, niezmiennych wartosciach;´ wszelkie zmienne nie zdefiniowane wewn ˛atrzfunkcji I Segment BSS - globalne i statyczne zmienne o wartosci´ 0 lub bez wartosci´ I Sterta (Heap) - zmienne dynamiczne - przestrzen´ zarz ˛adzana poleceniami malloc, calloc, realloc, free; obszar współdzielony przez wszystkie w ˛atki,biblioteki współdzielone, moduły I Stos (Stack) - zmienne lokalne; jesli´ wska´znikstosu zrówna si˛e ze wska´znikiemsterty, to oznacza koniec wolnej pami˛eci. GUT – Intel 2015/16 8/50 Linux to system obsługuj ˛acypami˛ec´ wirtualn ˛a I Podział mi˛edzyprzestrzen´ uzytkownika˙ a przestrzen´ jadra: parametr PAGE_OFFSET konfiguracji j ˛adra I typowy system 32-bitowy: PAGE_OFFSET = 0xc0000000, nizsze˙ 3GB - przestrzen´ uzytkownika˙ I przestrzen´ uzytkownika˙ alokowana dla procesu I przestrzen´ j ˛adra - wspólna dla wszystkich procesów. GUT – Intel 2015/16 9/50 Jednostka zarz ˛adzaniapami˛eci˛a I Memory Management Unit (MMU) - zestaw układów realizuj ˛acychdost˛epdo pami˛ecifizycznej z˙ ˛adanejprzez CPU. Do ich zadan´ nalezy:˙ I translacja pami˛eciwirtualnej do pami˛ecifizycznej, I ochrona pami˛eci, I obsługa pami˛ecipodr˛ecznej, I zarz ˛adzanieszynami danych I przeł ˛aczaniebanków pami˛eci(w systemach 8-bitowych) I Układy MMU dziel ˛aprzestrzen´ logiczn ˛a(wirtualn ˛a)pami˛ecina strony, których rozmiar wynosi 2N (kilka kilobajtów). I Page frame number (PFN) - indeks strony pami˛eci(N starszych bitów adresu pami˛eci).Młodsze M bitów adresu (przesuni˛ecie) pozostaje niezmienione GUT – Intel 2015/16 10/50 MMU - Translation lookaside buffer I Translation lookaside buffer (TLB) - asocjacyjna pami˛ec´ podr˛ecznasłuz˙ ˛acado mapowania adresów wirtualnych/fizycznych I Jezeli˙ TLB nie posiada odpowiedniego przypisania (rozmiar pami˛eciTLB jest ograniczony) uruchamiane s ˛awolniejsze, sprz˛etowe mechanizmy procesora przeszukuj ˛acestruktury danych znajduj ˛acesi˛ew pami˛eci,co wymaga niekiedy pomocy ze strony oprogramowania (systemu operacyjnego). I Pozycje w tych strukturach nazywaj ˛asi˛ewpisami (elementami) tablicy stron pami˛eci(PTEs - ang. page table entries), a cała struktura nazywana jest tablic ˛astron pami˛eci(ang. page table). I Kompletny adres w pami˛ecifizycznej jest ustalany poprzez dodanie bitów przesuni˛eciado przetłumaczonego numeru strony. GUT – Intel 2015/16 11/50 MMU - Translation lookaside buffer I Jezeli˙ w strukturach TLB lub PTE nie znajduje si˛eodpowiedni opis aktualnie wykorzystywanej logicznej strony pami˛ecilub znajduj ˛acysi˛ewpis zabrania dost˛epuw danym trybie, MMU sygnalizuje CPU wyj ˛atekzwi ˛azany z bł˛ednym dost˛epemdo strony pami˛eci,tzw. page fault. GUT – Intel 2015/16 12/50 Mapowanie pami˛eciwirtualnej Ka˙zdastrona pami˛eciwirtualnej mo˙zebyc:´ I niemapowana (próba dost˛epu-> SIGSEGV -> komunikat segmentation fault) I mapowana na stron˛efizyczn ˛apami˛eci prywatn ˛adla procesu I mapowana na stron˛efizyczn ˛apami˛eci współdzielon ˛az innym procesem I mapowana na stron˛efizyczn ˛apami˛eci u˙zywan˛aprzez j ˛adro I j ˛adromoze˙ dodatkowo mapowac´ strony p. wirtualnej na obszary pami˛ecizarezerwowane dla np. buforów pami˛ecisterowników GUT – Intel 2015/16 13/50 Mapowanie pami˛eciwirtualnej - COW I mapowanie i współdzielenie z flag ˛a “copy on write” I gdy istnieje potrzeba współdzielenia duzej˙ ilosci´ danych I zamiast rzeczywistego, kosztownego kopiowania pami˛ecizwracany jest wska´znikdo oryginalnych danych; kopiowanie jest wykonywane dopiero, gdy zachodzi potrzeba ich modyfikacji. I Przykład: funkcja fork() I tworzy proces potomny, który posiada dokładn ˛akopi˛ekontekstu procesu nadrz˛ednego, jak równiez˙ kopi˛ejego pami˛eci(mapowan ˛a na t ˛asam ˛aprzestrzen´ fizyczn ˛a). I strony pami˛eci,które mog ˛abyc´ zmodyfikowane zarówno przez proces jak i jego potomka, otrzymuj ˛aznacznik "kopiowane przy zapisie". I gdy jeden z procesów modyfikuje pami˛ec,´ kernel przechwytuje to wywołanie i kopiuje modyfikowane strony tak, aby zmiany dokonane przez jeden proces były niewidoczne dla drugiego. Od tej chwili proces nadrz˛edny i potomny zaczynaj ˛aodwoływac´ si˛edo GUT – Intelfizycznie 2015/16 róznych˙ stron. 14/50 Mapowanie pami˛eciwirtualnej - COW GUT – Intel 2015/16 15/50 Zalety pami˛eciwirtualnej I niepoprawne odwołania do pami˛eciprzechwytywane i sygnalizowane przez SIGSEGV I proces działa we własnej przestrzeni pamieci, odizolowany od innych procesów I efektywne wykorzystanie pami˛eci- współdzielenie cz˛esci´ kodu i danych ( np. bibliotek) I mozliwo˙ s´c´ zwi˛ekszenia ilosci´ pami˛ecipoprzez pliki wymiany (swap files) GUT – Intel 2015/16 16/50 Wady pami˛eciwirtualnej I trudno ustalic,´ jakie jest aktualne zuzycie˙ pami˛eci(przez aplikacj˛e) I “overcommit” - praktyka przedzielania pami˛eciwirtualnej bez gwarancji, ze˙ dost˛epnajest odpowiednia ilos´c´ pami˛ecifizycznej I opó´znieniawprowadzane przez zarz ˛adzaniepami˛eci˛ai obsług˛e wyj ˛atków(page faults) GUT – Intel 2015/16 17/50 Przestrzen´ pami˛ecij ˛adra Przestrzen´ pamieci j ˛adra - kazdej˙ alokacji w przestrzeni wirtualnej odpowiada przestrzen´ fizyczna! Obszary: I j ˛adro (kod i dane załadowane z obrazu j ˛adra podczas rozruchu systemu) I segmenty: .text, .init, .data, .bss I pami˛ec´ dla sterowników urz ˛adzen´ I moduły j ˛adra GUT – Intel 2015/16 18/50 Przestrzen´ pami˛ecij ˛adra I pami˛ec´ alokowana przez void * kmalloc(size_t size, int flags) I slab allocator - efektywny mechanizm ci ˛agłej alokacji pami˛eci; I zachowanie kmalloc zalezy˙ od parametru flags: I GFP_KERNEL: zwykła alokacja, moze˙ zostac´ chwilowo wstrzymana (zwolniona) i ponownie zaalokowana. I GFP_ATOMIC: alokacja dokonana w całosci´ lub wcale. I zwolnienie pami˛eci: void kfree(const void *objp); I pami˛ec´ alokowana przez void *vmalloc(unsigned long size); I wi˛eksze obszary pami˛eciniz˙ kmalloc() (przestrzen´ adresowa wirtualna jest ci ˛agła,ale fizyczna - niekoniecznie) I odpowiednik malloc() w przestrzeni uzytkownika,˙ I zwolnienie pami˛eci: void vfree(const void *addr); I Przykład programu: http://www.roman10.net/2011/07/29/linux- kernel-programmingmemory-allocation/ GUT – Intel 2015/16 19/50 Ile pami˛eciuzywa˙ j ˛adro? I rozmiar obrazu j ˛adra I zwykle j ˛adrojest małe w porównaniu z całkowit ˛ailosci´ ˛apami˛eci I budowa małego j ˛adra ( Linux-tiny, Linux Kernel Tinification), projekt https://tiny.wiki.kernel.org/. GUT – Intel 2015/16 20/50 Ile pami˛eciuzywa˙ j ˛adro? Odczyt /proc/meminfo. Kernel memory usage to suma: I Slab: pami˛ec´ alokowana przez slab allocator I wi˛ecejinformacji - odczyt /proc/slabinfo I KernelStack: przestrzen´ adresowa stosu I PageTables: pami˛ec´ do przechowywania tablic stronicowania I VmallocUsed: pami˛ec´ alokowana przez vmalloc() I wi˛ecejinformacji - odczyt /proc/vmallocinfo GUT – Intel 2015/16 21/50 Ile pami˛eciuzywa˙ j ˛adro? GUT – Intel 2015/16 22/50 Ile pami˛eciuzywa˙ j ˛adro? lsmod - ile pami˛ecizuzywa˙ kod i dane modułów j ˛adra? GUT – Intel 2015/16 23/50 Obszar pami˛eciuzytkownika˙ I Stronicowanie na ˙z˛adanie(Demand-paging) - Linux mapuje strony pami˛ecifizycznej tylko wtedy, gdy program odwołuje si˛e do odpowiedniego miejsca w pami˛eciwirtualnej malloc(3) zwraca wska´znikdo pami˛eciwirtualnej operacja odczytu/zapisu przechwytywana przez

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    50 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us