Zadanie laboratoryjne
 
Spis treści

Wstęp

W Linuxie modul "fs" (ang: file system) oddziela fizyczne systemy plików (ext2, msdos, ...) od reszty jądra i procesów użytkownika warstwą pośrednią, zwaną "wirtualnym systemem plików" (VFS, and: Virtual File System). Dzięki temu użytkownik postrzega wszystkie zamontowane systemy plików w ten sam sposób, niezależnie od ich implementacji. Tak więc, niezależnie od struktur danych i operacji charakterystycznych dla fizycznych systemów plików, musiały zostać zaimplementowane struktury danych utrzymujące VFS w pamięci jądra oraz zaimplementowane operacje na nich.

Ponadto w Linuxie realizowane jest buforowanie bloków dyskowych w pamięci. Ma ono służyć poprawie szybkości pracy komputera - komunikacja z urządzeniami zewnętrznymi jest zazwyczaj stosunkowo wolna. Oczywiście buforowanie jest tylko częściowe - nie wszystkie bloki pliku są umieszczane w pamięci operacyjnej, ze względu na jej oszczędność.

Czasem jednak gotowi jesteśmy poświęcić pamięć operacyjną za czas pracy komputera. Chcielibyśmy więc mieć możliwość wymuszenia na systemie załadowania całego pliku (wszystkich danych) do pamięci operacyjnej.


Zadanie
 
Zaimplementować możliwość ładowania na żądanie całego pliku do pamięci operacyjnej w momencie otwierania go do czytania, z pominięciem buforowania bloków pliku. Wymaga to zaimplementowania nowych funkcji realizujących otwieranie, czytanie, pisanie, ustalanie bieżącej pozycji w pliku i zamykanie zarówno dla "wirtualnego systemu plików" jak i dla fizycznego systemu "ext2".
Spodziewamy się zachowania spójności systemu z wersją nie zawierającą tej modyfikacji (to znaczy programy korzystające w zwykły sposób z plików powinny nadal działać poprawnie).
 

Autor: Robert Dąbrowski