Proces szeregowania żądań do urządzeń blokowych


Wszystkie żądania odczytu(zapisu) z urządzenia blokowego, przechodzą przez funkcje: block_read(block_write). Funkcje te sprawdzają czy, bloki które chcemy odczytać(zapisać), znajdują się w pamięci. Jeśłi tak to wykonywana jest odpowiednia operacja na tych blokach. Natomiast, jeśli potrzebnych nam bloków nie ma w pamięci, to musimy pobrać je z urządzenia, czyli zgłosić żadanie wjścia/wyjścia. Wywoływana jest wtedy funkcja ll_rw_block.

Funkcja ll_rw_block:
Parametry wejściowe: czytanie czy pisanie, ile buforów, tablica buforów

początek funkcji

	sprawdzanie czy wielkości buforów sa poprawne

	dla każdego bufora rób
			
		sprawdz czy ilosc zablokowanych buforów nie jest za duża (queued_sectors > high_queued_sectors)
		jesli tak to 
			odkorkuj kolejke żądań 
			czekaj aż zmaleje ilosć zablokowanych buforów (queued_sectors < low_queued_sectors)
		koniec jesli

		wywołaj funkcję submit_bh dla danego bufora
		
	koniec rób

koniec funkcji
Odkorkowanie kolejki żądań oznacza rozpoczęcie realizacji poczczególnych żądań wejścia-wyjścia w kolejce (będzia o tym mowa dalej).

Wstecz Tomasz Wadowski Dalej