Strony pracowników Wydziału Informatyki Politechniki Białostockiej

Systemy operacyjne 2 – pracownia specjalistyczna Plan zajęć

Systemy operacyjne 2 – pracownia specjalistyczna
Plan zajęć

1. Wprowadzenie do narzędzi programisty (głównie make i gcc) oraz narzędzi diff i patch. Zapoznanie się z emulatorem Microsoft Virtual PC 2004.

2. Konfiguracja i kompilacja jądra systemu, wprowadzanie prostych modyfikacji do jądra.

Jądro konfigurujemy poleceniem:
make menuconfig

Kompilacja jądra przy pomocy poleceń:
make depend
make bzImage
make modules
make modules_install

Instalacja jądra: z katalogu ./arch/i386/boot przegrać do katalogu plik bzImage. Uruchomić:
lilo

Przy starcie systemu z menu menadżera ładowania lilo należy wybrać opcję New.

Usunięcie plików tymczasowych, w celu wygenerownia patch’a
make distclean

Zadanie dla studentów.
Zmodyfikuj jądro tak aby przy starcie wypisywało komunikat to jest moje jądro. Odpowiednie wywołanie funkcji printk możesz umieścić np. w pliku ./drivers/block/ide.c (sterownik kontrolera dysku typu IDE) w funkcji ide_init. Skompiluj i uruchom zmodyfikowane jądro oraz wygeneruj (a następnie zaaplikuj) patch.

Praca domowa.
Umieść kod komunikatu w odzielnej funkcji, np void komunikat(void) znajdującej się w odrębnym pliku, np. komunikat.c. Funkcję tą należy wywołać z ide_init. Wskazówka: musisz zmodyfikować plik Makefile w katalogu ./drivers/block/

3. Zmodyfikuj kod sterownika ring (patch do jądra znajduje się tutaj) przedstawiony na wykładzie, tak aby:
Sterownik obsługiwał nie jeden, ale cztery niezależne bufory pierścieniowe, rozróżniane za pomocą numeru podrzędnego urządzenia.
Sterownik obsługiwał polecenie ioctl, pozwalające zmienić dynamicznie długość bufora. Długość bufora może być dowolną liczbą z przedziału [256B-16KB]. Podanie innej długości jest błędem. Zmiana długości bufora powinna być poprawnie wykonana, nawet gdy znajdują się w nim jakieś znaki (uwaga na synchronizację: kmalloc może spowodować uśpienie procesu i przełączenie kontekstu).
Inna komenda ioctl powinna pozwalać na odczyt długości bufora.
Sterownik mógł zostać skompilowany jako moduł jądra.

4. Zmodyfikuj kod sterownika ring stworzony w punkcie 3, tak aby:
Nowa komenda ioctl pozwalałaby na sprawdzenie, czy znak x jest w buforze.
Nowa komenda ioctl pozwalałoby na uporządkowanie bufora. Uporządkowanie powinno polegać na przeniesieniu wszystkich znaków na początek bufora

Opracował: Wojciech Kwedlo

× W ramach naszego serwisu www stosujemy pliki cookies zapisywane na urządzeniu użytkownika w celu dostosowania zachowania serwisu do indywidualnych preferencji użytkownika oraz w celach statystycznych.
Użytkownik ma możliwość samodzielnej zmiany ustawień dotyczących cookies w swojej przeglądarce internetowej.
Więcej informacji można znaleźć w Polityce Prywatności
Korzystając ze strony wyrażają Państwo zgodę na używanie plików cookies, zgodnie z ustawieniami przeglądarki.
Akceptuję Politykę prywatności i wykorzystania plików cookies w serwisie.