Komputery przemysłowe i systemy wbudowane Systemy operacyjne w systemach wbudowanych 2 KSEM WETI PG October 7, 2015
System operacyjny System operacyjny (OS) - opcjonalny w systemach wbudowanych. zbiór bibliotek realizujacych dwie podstawowe usługi: warstwa abstrakcji dla oprogramowania SW, by mogło być mniej zależne od sprzętu (programowanie SW staje się łatwiejsze) zarządzanie globalne zasobami (sprzętowymi i programowymi) systemu wbudowanego
Model systemu operacyjnego
Jądro systemu Zarządzanie procesami (Process Management) w jaki sposób OS widzi i zarządza innym oprogramowanie SW? system przerwań i detekcji błędów Zarządzanie pamięcią (Memory Management) pamięć SW jest współdzielona przez różne procesy efektywne zarządzanie dostępem i alokacją pamięci Zarządzanie I/O dostęp do urządzeń I/O jest współdzielony przez różne procesy efektywne zarządzanie dostępem i alokacją I/O system zarządzania I/O umożliwia zapis danych do plików w systemie plików
Proces Proces tworzony jest przez system operacyjny w celu enkapsulacji informacji związanej z wykonywaniem programu (stos, kod źródłowy, dane wejściowe, etc.) System wielozadaniowy obsługuje jednocześnie wiele procesów
Wątek Niektóre wielozdaniowe systemy operacyjne obsługują wątki Wątek dostarcza dodatkowej enkapsulacji instancji programu Wątki podlegają zadaniom (procesom); jeden proces może posiadać wiele wątków Proces posiada własną przestrzeń adresową - tylko jego własne wątki mają do niej dostęp Wątek posiada własny stos Wiele wątków to mniejszy koszt, niż wiele procesów (do realizacji tego samego zadania)
Tworzenie procesów (zadań) Model Fork/Exec (IEEE /ISO POSIX 1003.1 standard) - systemy Linux Fork tworzy kopię przestrzeni pamięci procesu-rodzica (dziedziczenie kodu programu, zmiennych) Exec usuwa z pamięci procesu-dziecka wszelkie referencje do programu rodzica i ustawia nowy kod programu procesu-dziecka Model Spawn (inspirowany Fork/Exec) - systemy DOS i MS Windows Proces-dziecko dostaje zupełnie nową przestrzeń pamięci (kod programu i zmienne definiowane w momencie tworzenia procesu-dziecka)
POSIX Portable Operating System Interface (IEEE 1003) Standard różnych odmian systemu UNIX 1985 - początek prac nad standardem (IEEE). Dalszy rozwój: The Open Group, IEEE, firmy: IBM, Sun Microsystems, Hewlett-Packard, NEC Corporation, Fujitsu, Hitachi. Aktualna wersja (trzecia) - 2001 rok Od roku 2003 jest to norma międzynarodowa ISO/IEC 9945:2003. POSIX standaryzuje: interfejs programistyczny (API) interfejs użytkownika (polecenia systemowe) właściwości powłoki systemowej (zarządzanie procesami, pamięcią i I/O)
Formaty plików wykonywalnych ELF (Executable and Linking Format): format UNIX-owy (systemy Linux) nagłówek programu lista segmentów programu lista nagłówków sekcji dane - segmenty i sekcje Class (Java Byte Code): format języka Java strumień bajtów (8-bitowych) items - elementy klasy powiązania z innymi klasami tablica symboli (stałe), deklaracja pól, implementacja metod, referencje symboliczne do innych klas COFF (Common Object File Format): format Unixowy, potem zastąpiony ELF, obecnie w Microsoft Windows i EFI pliki obrazu: nagłówek pliku, nagłówek COFF pliki obiektów: nagłówek COFF.
Board Support Packages Board Support Packages (BSPs) - warstwa abstrakcji między systemem operacyjnym a sterownikami urządzeń Pozwalają na podział kodu oprogramowania na: hardware dependent i hardware independent Odpowiedzialne za inicjalizację sterowników w systemie
Literatura David J. Katz; Jean J. Labrosse; Jason Andrews; Colin Walls; Robert Oshana; Rick Gentile; Jack Ganssle; Keith E. Curtis; Bob Perrin; Embedded Software, Kamal Hyder Published by Newnes, 2007