System operacyjny i sterowniki urządzeń
System operacyjny – przypomnienie podstaw
Historia rozwoju systemów operacyjnych - zagadnienia
Kernel: RT / Monolithic / Microkernel RT Kernel
Kernel: RT / Monolithic / Microkernel Monolitic Kernel
Kernel: RT / Monolithic / Microkernel
Linux Kernel
Start systemu Linux Faza BootLoadera – inicjalizacja sprzętu oraz przekazanie kontroli do systemu Start jądra: Kernel_entry / stext – procedura w assemblerze inicjalizująca start jądra. Znajduje się zazwyczaj w: kernel/head.s Start_kernel(), orginalnie w pliku init/main.c – inicjalizacja i uruchomienie wątku „idle” (process id 0) wywołanie funkcji setup_arch(), inicjalizacja wybranych zasobów zależnych od platformy jak: rozpoznanie CPU, zidentyfikowanie ramdisk, inicjalizacja stronicowania trap_init() – inicjalizacja procedur obsługi sytuacji wyjątkowych init_IRQ() – inicjalizacja kontrolera przerwań Time_init – inicjalizacja timerów Console_init() – inicjalizacja urządzenia szeregowego do obsługi konsoli Calibrate_delay() – kalibracja dla funkcji udelay() Inicjalizacja dodatkowych sterowników urządzeń Inicjalizacja przestrzenii użytkownika: Inicjalizacja i przekazanie sterowania do procesu init
Sterowniki urządzeń w systemie Linux
Typy sterowników dla systemu Linux Character Device Drivers – sterowniki urządzeń sekwencyjnych. Odwołanie do urządzeń sekwencyjnych możliwe przez prosty mechanizm wywołania funkcji: open, reak, write lub bezpośrednio. Block Device Drivers – sterowniki urządzeń blokowych. Głównie do obsługi urządzeń o swobodnym dostępie. Wymiana danych poprzez bloki. Aplikacja nie może bezpośrednio odwoływać się do sterownika, tylko przez system plików. Network Device Drivers – sterowniki sieciowe. Osobny typ ze względu na specjalne traktowanie stosu protokołów sieciowych. Aplikacje nie maja bezpośredniego dostępu do tych sterowników, tylko przez podsystem sieciowy.
Przykład sterownika UART str.1
Przykład sterownika UART str.2 P. Raghavan, A. Lad, S. Neelakandan, Embedded Linux System Design and Developement, Auerbach Publications 2006
Przykład sterownika UART str.2 P. Raghavan, A. Lad, S. Neelakandan, Embedded Linux System Design and Developement, Auerbach Publications 2006
Windows – różne koncepcje sterowników MS DOS – Tryb rzeczywisty. Sterownik to plik wykonywalny pracujący także w trybie rzeczywistym. Informacja zebrana centralnie w pliku CONFIG.SYS. MS Windows – nakładka na DOS. Steroniki to pliki wykonywalne .DRV. : MS Windows 3.x – wielozadaniowość. Koncepcja maszyny wirtualnej w której uruchamiają się aplikacje MS DOS (tryb virtual 8086). Pliki typu VxD.386. Wprowadzono tryb użytkownika (user-mode) i tryb jądra (kernel-mode). VxD – Virtual Device Driver MS Windows NT (1990) – Sterowniki niekompatybilne z VxD. Pełny tryb chroniony MS Windows 95/98 – VxD wciąż aktualne. Powstaje model WDM WDM – Windows Driver Model MS Windows XP – Aktualne WDM. DDK – Driver Development Kit
Windows 98 VxD
Windows XP
Rodzaje sterowników w systemie Windows
Podstawy struktury sterowników WDM IRP – I/O Request Packet W. Oney, Programmint the Microsoft Windows Driver Model, Microsoft Press 2003
Wieloprogramowanie i wieloprzetwarzanie
Wielowątkowość – rodzaje i wsparcie sprzętowe Interleaved multithreading Blocked multithreading Simultaneous multithreading (SMT) Chip multiprocessing
Wielowątkowość – rodzaje i wsparcie sprzętowe str.2
Pentium 4 hyperthreading i IBM Power5 Pentium 4 – hyperthreading = SMT z dwoma wątkami. IBM Power5 – SMT + multiprocessing
Przykład IBM Power5
Polecana literatura 1) W. Oney, Programming the Microsoft Windows Driver Model, Microsoft Press 2003 2) P. Raghavan, A. Lad, S. Neelakandan, Embedded Linux System Design and Development, Auerbach Publications 2006 3) P. Orwick, G. Smith, Developing Drivers with the Windows Driver Foundation, Microsoft Press 2007 4) D. Bovet, Understanding the Linux Kernel, O’Reilly 2005 5) W. Stallings, Organizacja i architektura systemu komputerowego, WNT 2004
KONIEC dr inż. Mariusz Kapruziak mkapruziak@wi.ps.pl pok. 107, tel. 449 55 44 KONIEC