SO2 wyklad 12

background image

Systemy Operacyjne – semestr drugi

Wyk ad trzynasty

ł

Warstwa operacji blokowych w Linuksie

Blokowe urz dzenia wej cia – wyj cia s bardziej skomplikowane w obs udze ni urz dzenia znakowe. W przeciwie stwie do tych ostatnich pozwalaj one bowiem na

ą

ś

ś

ą

ł

ż

ą

ń

ą

swobodny dost p do zgromadzonych w nich danych. Oznacza to, e umo liwiaj one wyszukiwanie pozycji, gdzie s zgromadzone interesuj ce nas dane, lub gdzie jest

ę

ż

ż

ą

ą

ą

miejsce, w którym te dane chcemy zapisa . Musi wi c istnie jaki mechanizm pozwalaj cy na dwukierunkow zmian po o enia wska nika danych wzgl dem bie

cej

ć

ę

ć

ś

ą

ą

ę

ł ż

ź

ę

żą

pozycji. Wszystkie urz dzenia blokowe s wyposa one w system plików okre lonego typu. Najcz

ciej spotykanymi urz dzeniami blokowymi s oczywi cie dyski twarde,

ą

ą

ż

ś

ęś

ą

ą

ś

ale istniej równie inne urz dzenia, które zaliczamy do tej kategorii (CD, DVD, pami ci flash). Czas dost pu do tych urz dze (w szczególno ci do dysku twardego) jest

ą

ż

ą

ę

ę

ą

ń

ś

jednym z najbardziej znacz cych czynników maj cych wp yw na wydajno

ca ego systemu komputerowego. Z tego wzgl du, a tak e z uwagi na skomplikowanie

ą

ą

ł

ść

ł

ę

ż

zagadnienia, w j drze systemu Linux wyodr bniono osobny podsystem, zajmuj cy si obs ug takich urz dze , który

ą

ę

ą

ę

ł

ą

ą

ń

nazywa si warstw blokowych operacji wej cia –

ę

ą

ś

wyj cia (

ś

ang. block IO layer).

Urz dzenia blokowe przechowuj dane w sektorach, które najcz

ciej maj wielko

512 bajtów (cho nie jest to regu ). Sektor jest równocze nie najmniejsz

ą

ą

ęś

ą

ść

ć

łą

ś

ą

jednostk pami ci urz dzenia blokowego, któr mo na zaadresowa .

ą

ę

ą

ą

ż

ć Pojedyncza operacja wej cia – wyj cia mo e obejmowa jeden lub wi ksz liczb sektorów.

ś

ś

ż

ć

ę

ą

ę

Wi kszo

systemów operacyjnych nie pos uguje si bezpo rednio sektorami, ale

czy je w zazwyczaj wi ksze jednostki zwane blokami

ę

ść

ł

ę

ś

łą

ę

. Blok mo e mie taki sam

ż

ć

rozmiar jak sektor, lub jego rozmiar mo e by

ż

ć wielokrotno ci

ś ą rozmiaru sektora. W systemie Linux przyj to, celem uproszczenia kodu j dra, e bloki b d mia y

ę

ą

ż

ę ą

ł

wielko

mniejsz lub równ jednej stronie, cho to ograniczenie w przysz ych wersjach systemu mo e znikn

. Bloki na dane pochodz ce z odczytu lub zawieraj ce

ść

ą

ą

ć

ł

ż

ąć

ą

ą

dane do zapisu do urz dzenia blokowego s umieszczone w pami ci operacyjnej, w

ą

ą

ę

buforach. Ka dy z takich buforów wyposa ony jest w nag ówek okre lony struktur

ż

ż

ł

ś

ą

typu struct buffer_head, przechowuj cy dane niezb dne do prawid owego zarz dzania takim buforem. Do tych danych nale

mi dzy innymi: stan bufora, który jest

ą

ę

ł

ą

żą

ę

przechowywany w polu b_state tej struktury. Stan ten mo e by okre lony jednym lub kilkoma znacznikami nale

cymi do wyliczenia

ż

ć

ś

żą

bh_state_bits. Znacznik

BH_Uptodate oznacza, e bufor zawiera zsynchronizowane z no nikiem dane,

ż

ś

BH_Dirty – e zawarto

bufora zosta a zmodyfikowana i powinna zosta zapisana na

ż

ść

ł

ć

no niku,

ś

BH_Lock – bufor jest chroniony przed dost pem wspó bie nym na czas realizowanej w a nie operacji wej cia – wyj cia,

ę

ł

ż

ł ś

ś

ś

BH_Req – bufor jest u ywany

ż

w realizowanym zleceniu, BH_Update_Lock – u ywany do oznaczenia pierwszego bufora ze wszystkich znajduj cych si na stronie jako chronionych przed

ż

ą

ę

wspó bie nym dost pem na czas realizacji operacji wej cia-wyj cia,

ł

ż

ę

ś

ś

BH_Mapped – bufor jest poprawnym buforem odwzorowanym w bloku urz dzenia,

ą

BH_New – bufor

zosta przydzielony, ale jeszcze nie by wykorzystywany,

ł

ł

BH_Async_Read – bufor jest u ywany w operacji asynchronicznego odczytu,

ż

BH_Async_Write – bufor jest

u ywany w operacji asynchronicznego zapisu,

ż

BH_Delay – bufor nie zosta jeszcze skojarzony z blokiem urz dzenia.,

ł

ą

BH_Boundary – bufor opisuje blok graniczny

ci g ego obszaru bloków, nast pny blok nie nale y ju do tego obszaru,

ą ł

ę

ż

ż

BH_Write_EIO – wyst pi b d podczas zapisu bufora na no nik,

ą ł

łą

ś

BH_Eopnotsupp – wyst pi

ą ł

b d „nierealizowalna operacja” dla bufora,

łą

BH_Unwritten – zosta o przydzielone miejsce na no niku dla bufora, ale dane z niego nie zosta y jeszcze w tym miejscu

ł

ś

ł

zapisane, BH_Quiet – b dy operacji na buforze nie b d zg aszane. Wyliczenie

łę

ę ą

ł

bh_state_bits zawiera równie dodatkowy znacznik

ż

BH_PrivateStart, który informuje, e

ż

kolejne, starsze od niego bity pola b_state s wykorzystywane przez sterownik

ą

urz dzenia

ą

blokowego do w asnych celów. Kolejne pole tej struktury o

ł

nazwie b_count

jest licznikiem odwo a do bufora. Jego warto jest zwi kszana przy pomocy funkcji

ł ń

ść

ę

get_bh(), a zmniejszana przy pomocy put_bh(). Obie funkcje s funkcjami

ą

inline.

Licznik odwo a powinien by zwi kszany przed wykonaniem ka dej z operacji dotycz cej danego bufora, gdy zapobiega to jego wcze niejszemu zwolnieniu. Pole

ł ń

ć

ę

ż

ą

ż

ś

b_dev

zawiera identyfikator urz dzenia fizycznego na którym znajduje si blok skojarzony z

ą

ę

buforem, a pole b_blocknr zawiera numer tego bloku. Strona na której znajduje

si bufor jest okre lona warto ci pola

ę

ś

ś ą

b_page. Adres, od którego zaczyna si obszar bufora na tej stronie jest umieszczony w polu

ę

b_data. Rozmiar tego bufora jest

okre lony zawarto ci pola

ś

ś ą

b_size.

Nag ówek bufora w wersjach j dra systemu wcze niejszych ni 2.6 przechowywa równie informacje dotycz ce operacji jakie by y wykonywane na buforze. Taka

ł

ą

ś

ż

ł

ż

ą

ł

sytuacja powodowa a nisk efektywno takich operacji, gdy pojedynczy zapis lub odczyt z urz dzenia wymaga pos u enia si kilkoma takimi nag ówkami, dodatkowo

ł

ą

ść

ż

ą

ł

ł ż

ę

ł

rozmiar nag ówka by porównywalny z rozmiarem bufora, który opisywa . W najnowszej serii j dra postanowiono wi c „odchudzi ” nag ówek bufora i stworzy now

ł

ł

ł

ą

ę

ć

ł

ć

ą

struktur , o nazwie

ę

bio, która osobno przechowuje dane zwi zane z operacjami wej cia – wyj cia. Reprezentuje ona takie operacje w trakcie ich trwania za pomoc listy

ą

ś

ś

ą

segmentów

1

. Segment w tym przypadku jest definiowany jako ci g y fragment bufora. Bufory, których segmenty s zgromadzone na li cie nie musz tworzy ci g ego

ą ł

ą

ś

ą

ć

ą ł

obszaru. Dodatkowo, dzi ki tej strukturze mo na realizowa kilka operacji wej cia – wyj cia na jednym buforze równocze nie. Najwa niejsze pola struktury

ę

ż

ć

ś

ś

ś

ż

bio to

bi_io_vecs, bi_vcnt oraz bi_idx. Pierwsze z nich zawiera adres tablicy struktur bio_vec, która jest wykorzystywana jako lista poszczególnych segmentów u ywanych

ż

w danej operacji wej cia – wyj cia. Ka dy z elementów tej tablicy jest opisany trójk :

ś

ś

ż

ą <page, offset, len>, (strona, przemieszczenie, d ugo ). Ca a tablica opisuje wi c

ł

ść

ł

ę

sumaryczn przestrze stworzon z segmentów buforów i wyznaczon dla operacji. Drugie pole struktury

ą

ń

ą

ą

bio okre la ile elementów z opisywanej tablicy bierze udzia

ś

ł

w operacji. Bie

c pozycj w tej tablicy reprezentuje ostatnie z wymienionych pól, którego zawarto

jest aktualizowana na bie

co. U ycie tego pola pozwala na

żą ą

ę

ść

żą

ż

podzia struktury

ł

bio, co ma znaczenie w przypadku takich sterowników, jak sterowniki macierzy RAID. Podzia polega na kilkukrotnym skopiowaniu tej struktury

ł

i ustawieniu dla ka dej z tych kopii innej warto ci pola indeksuj cego. Podobnie jak nag ówek bufora równie struktura

ż

ś

ą

ł

ż

bio posiada licznik odwo a . Jego warto jest

ł ń

ść

zwi kszana przy pomocy funkcji

ę

bio_get(), a zmniejszana przy pomocy bio_put(). Pole bi_private mo e by wykorzystywane dla danych twórcy struktury

ż

ć

bio.

Zastosowanie struktury bio przynios o nast puj ce korzy ci:

ł

ę

ą

ś

blokowe operacje wej cia – wyj cia mog w prosty sposób korzysta z wysokiej pami ci, gdy struktura

ś

ś

ą

ć

ę

ż

bio pos uguje si strukturami

ł

ę

page,

struktura bio mo e reprezentowa zarówno zwyk e operacje I/O, jak i równie operacje bezpo rednie, które nie korzystaj z buforów j dra,

ż

ć

ł

ż

ś

ą

ą

u atwiona jest realizacja operacji wej cia – wyj cia, w których dane pochodz z wielu roz cznych stron pami ci (tzw. operacje z rozproszonym ród em),

ł

ś

ś

ą

łą

ę

ź

ł

obs uga takiej struktury jest mniej skomplikowana ni obs uga nag ówków buforów.

ł

ż

ł

ł

Wi kszo

sterowników urz dze blokowych utrzymuje struktury przechowuj ce zlecenia operacji wej cia – wyj cia przeznaczone dla obs ugiwanych przez nie

ę

ść

ą

ń

ą

ś

ś

ł

urz dze . Te struktury s nazywane kolejkami zlece . S one reprezentowane struktur

ą

ń

ą

ń

ą

ą request_queue i zawieraj dwukierunkow list zlece i skojarzonych z nimi

ą

ą

ę

ń

informacji steruj cych. Ka dy z elementów tych kolejek jest opisany struktur

ą

ż

ą struct request i reprezentuje pojedyncze zlecenie. Je li kolejka nie jest pusta, to pierwsze

ś

zlecenie znajduj ce si na niej jest przekazywane przez sterownik do urz dzenia, które je realizuje. Ka de zlecenie mo e zawiera wiele struktur

ą

ę

ą

ż

ż

ć

bio, które opisują

segmenty zaanga owane w dan operacj .

ż

ą

ę

Za szeregowanie zlece w opisywanej kolejce odpowiedzialny jest planista operacji wej cia – wyj cia (

ń

ś

ś

ang. I/O scheduler). Jego zadaniem jest zminimalizowanie liczby

przestawie mechanizmu s u

cego do odczytywania i zapisywania danych w urz dzeniu blokowym (np. g owicy w dysku twardym), co pozwala na osi gni cie

ń

ł żą

ą

ł

ą

ę

maksymalnej redniej przepustowo ci oraz unikanie zag odzenia

da . Planista dokonuje tego wykonuj c operacje scalania i sortowania

ś

ś

ł

żą

ń

ą

2

. Kiedy nowe

danie trafia

żą

do kolejki, wówczas planista stara si je scali z

daniami, które dotycz przyleg ych sektorów. Je li takowych

da nie ma, to planista stara si umie ci je po ród

ę

ć

żą

ą

ł

ś

żą

ń

ę

ś ć

ś

da , które dotycz sektorów le

cych w pobli u, dzi ki czemu nie b dzie konieczna cz sta zmiana kierunku ruchu g owicy

żą

ń

ą

żą

ż

ę

ę

ę

ł

3

. W j drach serii 2.6 jest u ywany jeden

ą

ż

z czterech

4

algorytmów szeregowania

da . Dwa z nich s wzorowane na algorytmie, który by wykorzystywany w wersji 2.4, wi c on jako pierwszy zostanie opisany.

żą

ń

ą

ł

ę

Planista I/O w j drach wersji 2.4 dzia a w oparciu o algorytm nazwany Wind Linusa (

ą

ł ł

ą

ang. Linus Elevator). Algorytm ten stosuje scalanie obustronne. Oznacza to, e

ż

1

Które nie maj nic wspólnego z segmentami, którymi pos uguj si procesory Intela i pokrewne do adresowania pami ci operacyjnej.

ą

ł

ą

ę

ę

2

W tym wypadku chodzi tu o dwie odr bne operacje a nie o operacj sortowania przez scalanie.

ę

ę

3

Podobnie jak w metodzie LOOK omawianej w poprzednim semestrze.

4

Liczba ta ulega co jaki czas zmianie. W wersjach j dra 3.0 i nowszych s dost pne tylko trzy takie algorytmy.

ś

ą

ą

ę

1

background image

Systemy Operacyjne – semestr drugi

nowe zlecenie mo e by umieszczone przed istniej cymi ju zleceniami lub za, je li tylko b d one dotyczy y spójnego obszaru sektorów. Pierwszy rodzaj scalania

ż

ć

ą

ż

ś

ę ą

ł

nazywany jest scalaniem frontowym, drugi scalaniem tylnym. Zazwyczaj ten drugi rodzaj wyst puje cz

ciej. Je li nowego zlecenia nie da si scali z innymi, które s

ę

ęś

ś

ę

ć

ą

obecne w kolejce, to nast puje etap sortowania. W tym etapie planista stara si znale

miejsce w kolejce dla nowego zlecenia, takie e otaczaj ce je inne zlecenia b d

ę

ę

źć

ż

ą

ę ą

dotyczy y sektorów znajduj cych si w pobli u. Je li nie znajdzie takiego miejsca, to umieszcza dane zlecenie na ko cu kolejki. Mo e tak post pi jeszcze w jednym

ł

ą

ę

ż

ś

ń

ż

ą ć

przypadku, kiedy podczas przeszukiwania kolejki znajdzie przeterminowane zlecenie. Takie post powanie ma na celu wyeliminowanie g odzenia

da , ale niestety nie

ę

ł

żą

ń

jest skuteczne i algorytm Windy Linusa mo e doprowadzi do g odzenia

da .

ż

ć

ł

żą

ń

W j drze 2.6 postanowiono wi c go zast pi czterema innymi rozwi zaniami. Pierwszym z nich jest planista terminowy (ang.

ą

ę

ą ć

ą

deadline I/O scheduler). Zapobiega on

g odzeniu

da , oraz faworyzuje operacje odczytu przed operacjami zapisu. Okazuje si bowiem, e opó nienia odczytu maj wi kszy wp yw na wydajno ci systemu ni

ł

żą

ń

ę

ż

ź

ą

ę

ł

ś

ż

opó nienia operacji zapisu. Planista terminowy stosuje cztery struktury danych: g ówn kolejk zlece , kolejk zlece odczytu, kolejk zlece zapisu i

ź

ł

ą

ę

ń

ę

ń

ę

ń

kolejk rozdzia u.

ę

ł

Mechanizm ten przydziela ka demu zleceniu termin realizacji. Domy lnie wynosi on 500 ms dla operacji odczytu i 5 s dla operacji zapisu. Nowe zlecenia s wstawiane

ż

ś

ą

równocze nie do kolejki g ównej, gdzie realizowane s operacje scalania i sortowania, oraz w zale no ci od rodzaju zlecenia do kolejki zapisu lub odczytu

ś

ł

ą

ż

ś

5

. Te dwie

ostatnie kolejki s typowymi kolejkami FIFO. Planista terminowy pracuje w dwóch trybach: w trybie normalnym pobiera pierwsze

danie z kolejki g ównej i

ą

żą

ł

wstawia

je do kolejki rozdzia u, z której trafi ono pó niej bezpo rednio do urz dzenia. Planista prze cza si w drugi tryb je li zbli a si termin realizacji operacji z

ł

ź

ś

ą

łą

ę

ś

ż

ę

kolejek FIFO.

Wówczas do kolejki rozdzia u trafia

danie z której z tych kolejek.

ł

żą

ś

Drugim planist stosowanym w j drach serii 2.6 jest planista przewiduj cy

ą

ą

ą

6

. W przeciwie stwie do planisty terminowego pozwala on unikn

sytuacji, kiedy ci gi

ń

ąć

ą

operacji zapisu s przerywane przez pojedyncze

dania operacji odczytu. W dzia aniu jest on bardzo podobny do planisty terminowego, ale stosuje tzw. heurystyk

ą

żą

ł

ę

przewidywania. W momencie przekazania zlecenia odczytu do kolejki rozdzia u planista nie wraca od razu do realizacji kolejnych zlece , lecz wstrzymuje swe dzia anie

ł

ń

ł

na 6 ms

7

. Je li po tym czasie aplikacja wygeneruje

danie odczytu dotycz ce obszaru le

cego w pobli u tego, którego dotyczy o poprzednie

danie, to jest ono

ś

żą

ą

żą

ż

ł

żą

realizowane natychmiast. Aby ten czas oczekiwania nie by czasem straconym, sytuacje takie, jak opisywana powy ej powinny mie cz sto miejsce. Planista

ł

ż

ć

ę

przewiduj cy stara si okre li mo liwo wyst pienia takiej sytuacji prowadz c statystyk dzia a aplikacji i stosuj c heurystyki. Planist przewiduj cego usuni to

ą

ę

ś ć

ż

ść

ą

ą

ę

ł ń

ą

ę

ą

ę

z j dra systemu w wersji 2.6.33.

ą

Planista przewiduj cy by domy lnym planist wej cia-wyj cia do czasu wydania j dra w wersji 2.6.18 (cho w niektórych dystrybucjach przesta nim by ju

ą

ł

ś

ą

ś

ś

ą

ć

ł

ć

ż

wcze niej). Zast pi go planista CFQ (

ś

ą ł

ang. Complete Fair Queuing), który po raz pierwszy pojawi si w wersji 2.6.6 j dra. Jego dzia anie mo na krótko

ł

ę

ą

ł

ż

scharakteryzowa jako po czenie planowania z u yciem kolejek wielopoziomowych, algorytmu rotacyjnego i przewidywania. Ten planista wprowadza równie now

ć

łą

ż

ż

ą

cech procesów u ytkownika: priorytet wej cia-wyj cia. Ka demu z procesów, który wykonuje operacje blokowe przydzielana jest dynamicznie kolejka na zlecenia

ę

ż

ś

ś

ż

synchronicznych operacji wej cia-wyj cia. Zlecenia operacji asynchronicznych trafiaj do wspólnych kolejek, których zazwyczaj jest mniej ni kolejek

da operacji

ś

ś

ą

ż

żą

ń

synchronicznych. Planista przegl da kolejki procesów poczynaj c od kolejek o najwy szym priorytecie, a sko czywszy na kolejkach o najni szym. Z ka dej z tych

ą

ą

ż

ń

ż

ż

kolejek zdejmuje tyle zlece , ile mo e zrealizowa w ci gu okre lonego dla kolejki przedzia u czasu. Kwant czasu i liczba zlece dla kolejki s zdeterminowane przez

ń

ż

ć

ą

ś

ł

ń

ą

priorytet wej cia-wyj cia jej procesu. Dla tych kolejek planista CFQ realizuje równie opcj przewidywania, czyli po opró nieniu danej kolejki zatrzymuje si na krótki

ś

ś

ż

ę

ż

ę

czas, sprawdzaj c, czy nie pojawi si w niej nowe zlecenia. Je li tak si stanie, to s one realizowane natychmiast. Po obs u eniu kolejek operacji synchronicznych

ą

ą

ę

ś

ę

ą

ł ż

planista przechodzi do kolejek operacji asynchronicznych, ale w ich przypadku nie stosuje opcji przewidywania.

Czwarty algorytm szeregowania

da I/O jest bardzo prosty w dzia aniu – realizuje wy cznie operacj scalania. Ten algorytm nosi nazw

żą

ń

ł

łą

ę

ę noop.

Planist operacji wej cia-wyj cia mo na wybra na etapie kompilacji, spo ród czterech (trzech od wersji j dra 2.6.33) opisanych wy ej, lub w czasie wykonania

ę

ś

ś

ż

ć

ś

ą

ż

dokonuj c odpowiednich wpisów do plików w katalogu

ą

/sys. W przypadku urz dze blokowych o

ą

ń

prawdziwie swobodnym dost pie (np.: pami ci flash) najlepszym

ę

ę

planist jest

ą

noop.

5

Dok adniej: do tych kolejek zapisywany jest wska nik na to zlecenie.

ł

ź

6

Mo na go te „ adnie” nazwa planist antycypuj cym.

ż

ż ł

ć

ą

ą

7

Czas ten mo na konfigurowa .

ż

ć

2


Wyszukiwarka

Podobne podstrony:
SO2 wyklad 12
wykład 12 pamięć
Socjologia wyklad 12 Organizacja i zarzadzanie
Wykład 12(3)
Wykład 12
Wykład 12 Zarządzanie sprzedażą
Wykład 12 1
wyklad 12
Wyklad 1 12
wyklad 12 MNE
wykład 12
ZARZ SRODOWISKIEM wyklad 12
wykład 7 12
Wyklad 12 ppt
OPI wyklad 12 wersja 20080227 p Nieznany
Biochemia TZ wyklad 12 integracja metabolizmu low

więcej podobnych podstron