1 Pami wirtualna 1.1 Stronicowanie Przestrze«adresowa, która mo»e by u»ywana przez program (przy 32-bitowych adresach) nie mie±ci si w typowej pami ci RAM (nawet jakby si mie±ciªa, to i tak jest problem wspóªczesne systemy operacyjne pozwalaj uruchamia wiele programów jednocze±nie; ka»dy z nich widzi 4GB pami ci!). Rozwi zaniem jest u»ycie pami ci wirtualnej cz ±c zawarto±ci pami ci gªównej umieszcza si na dysku twardym. Pomysª jest rozszerzeniem pomysªu pami ci cache pewne dane b d szybko dost pne (gdy s w pami ci RAM), inne b d musiaªy zosta najpierw ±ci gni te z dysku. Ka»dy proces ma do dyspozycji 4GB pami ci (mo»e u»ywa dowolnych adresów). Musimy sobie zdawa spraw,»e adresy wyznaczne s ju» w trakcie kompilowania programu. Programista nie wie wtedy w jakim otoczeniu b dzie wykonywany nasz program i jakich adresów b d u»ywaªy inne procesy - nie przejmuje si wi c tym w ogóle. Oczywiste zatem staje si staje,»e adresy wyst puj ce w kodzie maszynowym nie s adresami rzeczywistymi. Idea pami ci wirtualnej: dzielimy caª rzeczywist pami (gªówn i dyski) na strony. Przyjmijmy,»e rozwarza b dziemy strony o rozmiarze 4KB=2 12 bajtów. Potrzebujemy zatem 12- bitów, aby okre±li przesuni cie bajtu na stronie. 32-bitowy adres jest wi c dzielony na dwie cz ±ci: bity 0-11 - przesuni cie na stronie, bity 12-32 wskazuj na pozycj w tzw. tablicy stron (która jest przechowywana w pami ci RAM). Pojedynczy wpis do tablicy stron zawiera zyczny adres strony oraz pewne dodatkowe inforamcje o stronie. Jedn z tych inforamcji jest bit aktualno±ci. Je±li bit aktualno±ci = 1, ocznacza to,»e adres zyczny dotyczy pami ci gªównej, je±li=0 dyskowej (gdy si gamy do tablic stron i bit aktualno±ci =0 mówimy,»e nast piª bª d strony page fault). Ka»dy proces ma wªasn 4GB przestrze«adresow oraz wªasna tablic stron. Organizacja tablicy stron: maksymalnie 2 20 wpisów, ka»dy wpis zawiera wirtualny numer strony, jej adres zyczny oraz bit aktualno±ci. Uwagi: Tablica stron procesu zazwyczaj nie ma a» 2 20 (okoªo miliona) wpisów proces po prostu nie u»ywa zazwyczaj a» tak du»ej pami ci. Fizyczny adres strony okre±la zyczne poªo»enie strony na dysku lub w pami ci gªównej, a tak»e zawiera informacje np. o zabezpieczeniach przed zapisem i odczytem (np. proces A mo»e nie mie uprawnie«do odczytu strony u»ywanje przez proces B -zagadnienia zwi zane z systemami op.). Ilu bitów potrzeba na zyczny adres strony - zale»y od rozmiaru pami ci. 256MB RAM-u = 2 28 bajtów = 64K stron = 2 16 - potrzeba 16 bitów na zyczny adres strony. 128Gb dysku twardego - 32M stron 2 25-25 bitów w tablicy stron. Jak zorganizowana jest tablica stron? W najprostszej wersji numer strony (odczytywany z adresu wirtualnego) jest indeksem do odpowiedniego wpisu. W bardziej skomplikowanych wersjach mo»emy mie do czynienia z haszowaniem. Niekiedy tablice stron równie» podlegaj stronicowaniu.. Pojawia si pewnien problem: ka»de si gni cie do pami ci musi by poprzedzone zajrzeniem do tablicy stron, a wi c nawet je±li dane, które s potrzebne znajduj si w cache musieliby±my si ga najpierw do DRAM. Oczywi±cie chcemy tego unikn. Rozwi zanie tworzymy cache dla tablicy stron, twz. translation lookaside buer (TLB - szybka tablica translacji). TLB ma zazwyczaj kilkaset pozycji. np. 2 9 = 512. 1
Stosujemy idee podobne do znajnych nam z cache np. mapowanie bezpo±rednie lub sekcyjnoskojarzeniowe w TLB. Przy mapowaniu bezpo±rednim: wirtualny numer strony = 9 bitów wska¹nika do TLB + 11 bitów znacznika. Si gni cie do pami ci: adres wirtualny adres zyczny: zagl damy do odpowiedniej pozycji TLB, je±li znacznik si zgadza to nasza strona jest w RAM, a jej adres w TLB je±li znacznik si nie zgadza, to zagl damy do tablicy stron (jej adres dla aktualnego procesu mo»e by trzymany w specjalnym rejestrze procesora); je±li bit aktualno±ci =1 to jest jeszcze w miar dobrze strona jest w DRAM, kopiujemy zapis w tablicy stron do TLB; je±li bit aktualno±ci jest równy 0, to strona jest na dysku podmieniamy j z jak ± stron z DRAM (któr wybiera system operacyjny u»ywaj c np. algorytmu LRU) je±li wiemy ju»,»e strona jest w pami ci, to pozostaje nam jeszcze sprawdzenie czy nasz adres nie jest obecnie w cache (...) Uwaga: w przypadku wyst pienia bª du strony system operacyjny zazwyczaj nie czeka na ±ci gni cie strony z dysku, ale oddaje sterowanie innemu procesowi. Na koniec rozwa»my dwa przypadki si gania do pami ci: najlepszy i najgorszy: Najlepszy przypadek: sprawdzamy TLB traenie! - odczytujemy tªumaczenie adresu wirtualnego na zyczny (z TLB) sprawdzamy cache! - traenie! - odczytujemy interesuj ce nas informacje z cache Najgorszy przypadek: sprawdzamy TLB - chybienie! sprawdzamy tablic stron - bit aktualno±ci = 0 kopiujemy stron z dysku, poprawiamy wpisy w tablicy stron kopiujemy wpis tablicy stron do TLB tªumaczymy adres sprawdzamy cache: chybienie! (tu musi by w tym przypadku chybienie...) sci gamy blok z DRAM do cache odczyt z cache 2
1.2 Segmentacja Przedstawione powy»ej rozwi zanie nazywa si stronicowaniem. Nie jest to jednyna mo»liwa organizacja pami ci wirtualnej. Alternatywne rozwi zanie to segmentacja. W przypadku segmentacji wirtualna pami jest dzielona na fragmenty ró»nej wielko±ci nazywane segmentami. Przed skopiowaniem segmentu do pami cia RAM system operacyjny wyszukuje wolny obszar odpowiedniej wielko±ci (ewentualnie zwalnia go). Z ka»dym progrmem kojarzymy teraz tabel segmentów. Segment opisywany jest poprzez adres bazowy (lokuj cy go w przestrzeni adresowej) oraz rozmiar. Zalety: rozmiary segmentów mog zmienia si dynamicznie; ªatwe wspóªdzielnie danych mi dzy procesami; ªatwa ochrona. Wiele procesorów ma rozwi zania sprz towe zarówno dla segmentacji jak i dla stronicowania. W przypadku procesorów Pentium istnieje mo»liwo± wyboru rozdzaju organizacji pami ci (niesegmentowana pami niestronicowana, niesegmentowana pami stronicowana, segmentowana pami niestronicowana, segmentowana pami stronicowana. 1.3 Wady i zalety pami ci wirtualnej Wady: translacja adresów spowalnia prac dodatkowe zu»ycie pami ci (tablice stron) komplikcacja sprz tu marnowanie pami ci fragmetnacja (wewn trzna stronicowanie, zewn trzna segmentacja) Zalety: programy nie s ograniczone wielko±ci pami ci zycznej programista (kompilator j zyka wysokiego poziomu) nie musi si przejmowa w jakim otoczeniu b dzie wykonywany jego program (adresy) 2 Nap dy magnetyczne Nie b dziemy mówili wiele o zycznych podstawach funkcjonownia dysków magnetycznych. Kilka podstawowych informacji: Dane zapisywane s i odczytywane za pomoc gªowicy (czasem gªówice zapisuj ca i odczytuj ca s osobne mo»liwo± dotarcia do wszystkich informacji na dysku zapewnia obracanie si dysku (zazwyczaj gªowica porusza si tylko od ±rodka dysku do jego obrze»a; ewentualnie nie porusza si w ogóle wtedy mamy jedn gªowic nad ka»d ±cie»k ). Na powierzchni dysku znajduj si ±cie»ki (tysi ce okr gów) ka»da ±cie»ka szeroko±ci gªowicy cie»ki oddzielone s lukami dane przesyªane s jako sektory; na ±cie»ce znajduj si zazwyczaj setki sektorów 3
sektory mog by jednakowej lub zmiennej dªugo±ci; obecnie najcz ±ciej staªa dªugo± 512 bajtów bit blisko centrum dysku przechodzi pod gªowic szybciej ni» bit na obrze»u; mo»liwe rozwi zanie: im dalej od centrum, tym wi ksze odst py mi dzy bitami ( constant angular velocity); praktyczniejsze rozwi zanie: (multiple zone recording) powierzchnia dysku podzielona na strefy (typowo 16), w ka»dej stree liczba bitów na ±cie»ce jest staªa; ale strefy dalsze od ±rodka maj wi cej sektorów na ±cie»ce. musimy umie ustali pocz tek ±cie»ki i pocz tki/ko«ce sektorów; zapewniaj to dodatkowe informacje formatuj ce niewidoczne dla u»ytkownika Rodzaje dysków: jednogªowicowe/wielogªowicowe; wymienialne/niewymienialne; jednostronne/dwustronne; jednopowierzchniowe/wielopowierzchniowe. Czas dost pu do dysku twardego = czas poszukiwania ±cie»ki + czas oczekiwania na wªa±ciwy sektor. Wspóªczesne dyski obracj si z kilku-kilkunastu tysi cy obrotów na minut, co daje ±redni czas oczekiwania rz du kilku milisekund. Nast pnie trzeba jeszcze odczyta dane. Przykªad: rozwa»my dysk o ±rednim czasie poszukiwania ±cie»ki 2 ms, pr dko±ci obrotowej 15 tys. obrotów na minut (250 na sekund ), sektorach 512 bajtowych i 500 sektorach na ±cie»k. Chcemy odczyta plik zajmuj cy 2500 sektorów (1,28 MB). W pierwszej wersji zaªó»my,»e dane zajmuj pi s siednich ±cie»ek i uªo»one s sekwencyjnie. Pierwsza ±cie»ka zostanie odczytana w czasie: 2 ms (poszukiwanie) + 2 ms oczekiwanie na pierwszy sektor (±rednio). Odczytanie 500 sektorów: 4 ms. Pomijamy czas przestawiania gªowicy na kolejne ±cie»ki. Bierzemy pod uwag tylko czas oczekiwania na pierwszy sektor i czas odczytu ±cie»ki. W sumie: 8 + 4 6 = 32 ms. Je»eli zaªo»ymy,»e odczytywane dane s rozproszone uzyskamy czas: 2500 (2 + 2 + 0, 008) = ponad 10s. 3 RAID RAID - Redundant Array of Independent (Inexpensive) Disks - jest rozwi zaniem zapewniaj cym lepsz szybko± transmisji danych z dysku i/lub wi kszo± niezawodno± systemu dyskowego. Stosowane jest gªównie w systemach przechowuj cych dane o du»ym znaczeniu, lub dane w przypadku których wa»na jest szybko± dost pu. RAID u»ywany jest gªównie w serwerach, chocia» zdarza si i w komputerach osobistych. Deniuje si 7 poziomów RAID (od 0 do 6). Nie nale»y jednak patrze na nie jak na hierarchi jest to po prostu 7 ró»nych pomysªów. System RAID zbudowany jest z kilku osobnych (tanich) dysków, widzianych przez system operacyjny jako jedno urz dzenie. Dane rozproszone s na ró»nych dyskach. Cz ± przestrzeni dyskowej jest u»ywana do przechowanie informacji gwarantuj cej odzyskanie danych w przypadku uszkodzenia którego± (których±) z dysków. 3.1 RAID 0 Rozwi zanie to ma tylko poprawia szybko± transmisji. Nie gwarantuje odzyskiwania danych. Caªa logiczna przestrze«dyskowa dzielona jest na paski (paskami mog by np. sektory). Paski umieszczane s na kolejnych dyskach (pierwszy na dysku 1, drugi na 2, n-ty na dysku n, n + 1 na dysku 1, itd.). Rozwi zanie takie przyspiesza dziaªanie systemu z dwóch powodów: ró»ne» dania IO mog by obsªugiwane jednocze±nie (jest spora szansa,»e b d odwoªywa si do ró»nych dysków), pojedyncze»adanie mo»e dotyczy kilku dysków wtedy równie» mo»na przyspieszy jego obsªug. 4
Oczywi±cie RAID 0 (podobnie jak nast pne poziomy) wymaga osobnych kanaªów transmisji dla poszczególnych dysków. 3.2 RAID 1 Podobnie jak na poziomie 0 u»yte jest paskowanie. Tym razem ka»dy pasek jest jednak umieszczony na dwóch dyskach (czyli tak naprawd ka»dy dysk ma swoj kopi ). Zapewnia to mo»liwo± odzyskania danych w przypadku uszkodzenia którego± z dysków. Ale nie tylko. Umo»liwia równie» przyspieszenie operacji odczytu: odczyt wykonywany jest z tego z dysków przechowuj cych» dane dane, na którym szukany pasek znajduje si bli»ej gªowicy. Ka»d operacj zapisu nale»y niestety wykonowy na obu dyskach. Rozwi zanie to jes niestety do± kosztowne. Stosowane jest dlatego tylko tam, gdzie przechowywane dane s naprawd bardzo wa»ne. 3.3 RAID 2 w RAID 2 i RAID 3 kªadzie si nacisk na wykorzystanie równolegªego odczytu paski bardzo maªe (np. pojedyncze bajty) w pojedynczym odczycie/zapisie bior udziaª zazwyczaj wszystkie dyski dyski s zsynchronizowane gªowice wszystkich dysków s zazwyczaj w tej samej pozycji do korekcji bª dów u»ywa si zazwyczaj kodu Hamminga SEC (single error correcting): bity parzysto±ci liczone s dla sªów skªadaj cych si z odpowiadaj cych sobie bitów wszystkich dysków i umieszczane na dyskach dodatkowych zapewnia to mo»liwo± odtworzenia danych np. w przypadku caªkowitego uszkodzenia jednego z dysków (chocia» do tego celu wystarczy, jak zobaczymy, prostsze rozwi zanie); oczywi±cie koryguje te» pojedyncze bª dy wymaga log n dodatkowych dysków kosztowne w praktyce si go nie stosuje 3.4 RAID 3 podobny do RAID 2, ale wymaga tylko jednego dodatkowego dysku, niezale»nie od liczby dysków z danymi dodatkowy dysk przechowuje bity parzysto±ci dla sªów zªo»onych z odpowiadaj cych sobie bitów wszystkich dysków w przypadku uszkodzenia jednego z dysków dane ªatwe do odtworzenia zapewnie bardzo szybk obsªug pojedynczego» dania tracimy, je±li stawiamy nie tyle na szybk obsªug pojedynczego» dania, co na zas reakcji«a» danie 5
3.5 RAID 4 Na poziomach od 4 do 6 stawiamy na szybko± obsªugi wielu niezale»nych» da«dost pu dyski pracuj niezale»nie paski s du»e bity parzysto±ci podobnie jak w RAID 3 czasochªonny zapis (szczególnie w przypadku zapisu maªej ilo±ci danych) ka»da operacja zapisu u»ywa dysku parzysto±ci (staje si on w skim gardªem) 3.6 RAID 5 podobnie jak RAID 4, ale paski przysto±ci rozlokowane na wszystkich dyskach (np. pierwsze paski na dyskach: dane1, dane2, dane 3, parity1-3; drugie paski: dane4, dane5, parity4-6, dane 6; trzecie paski: dane7, parity7-9, dane8, dane9; itd.) redukcja problemu w skiego gardªa (dysk z bitami parzysto±ci) u»ywany powszechnie w serwerach sieciowych 3.7 RAID 6 zamiast n + 1 u»ywana si n + 2 dysków; informacje korekcyjne kodowane dwoma algorytmami (jeden to po prostu dodawanie bitów parzysto±ci) i zapisywane s na dwóch ró»nych dyskach; rozproszone podobnie jak w RAID 5. umo»liwia korekcj danych w sytuacjach gdy dwa dyski ulegn uszkodzeniu. 6