struktury systemów operacyjnych
Transkrypt
struktury systemów operacyjnych
STRUKTURY SYSTEMÓW OPERACYJNYCH Krzysztof Patan Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski [email protected] WSTĘP Systemy operacyjne nie są jednym spójnym tworem, lecz są zbudowane z wielu pomniejszych składowych Każda ze składowych powinna być dobrze określonym fragmentem systemu ze starannie zdefiniowanym wejściem, wyjściem i działaniem Każdy system operacyjny jest inaczej zbudowany, ale większość posiada podobne składowe moduł zarządzania procesami moduł zarządzania pamięcią operacyjną moduł zarządzania plikami moduł zarządzania systemem wejścia–wyjścia moduł zarządzanie pamięcią pomocniczą praca sieciowa system ochrony system interpretacji poleceń CZĘŚCI SKŁADOWE SO Zarządzanie procesami * Proces – program, który jest wykonywany, np. zadanie systemowe, program wsadowy, program użytkownika, zadanie do drukowania * Proces musi korzystać z pewnych zasobów systemu komputerowego, np. czasu CPU, pamięci, plików, urządzeń peryferyjnych * Zasoby mogą być przydzielone procesowi w chwili jego utworzenia, lub podczas jego wykonywania * Po zakończeniu działania procesu, system komputerowy odzyskuje wszelkie zasoby przez niego wykorzystywane i nadające się do powtórnego użytku * Proces – jednostka pracy w systemie; system składa się ze zbioru procesów, część z nich to procesy systemu operacyjnego, pozostałe – procesy użytkownika * Program – jest elementem pasywnym i sam w sobie nie jest procesem * Proces – element aktywny, w którym licznik rozkazów wskazuje następną instrukcję do wykonania: • proces jest wykonywany sekwencyjnie • CPU wykonuje instrukcje jedna po drugiej • na żądanie procesu może być jednocześnie wykonana co najwyżej jedna instrukcja • z jednym programem może być powiązanych wiele procesów, zawsze rozważa się je jako oddzielne ciągi instrukcji * W odniesieniu do zarządzania procesami system operacyjny odpowiada za: 1 tworzenie i usuwanie procesów użytkowych i systemowych 2 wstrzymywanie i wznawianie procesów 3 dostarczanie mechanizmów synchronizacji procesów 4 dostarczanie mechanizmów komunikacji procesów 5 dostarczanie mechanizmów obsługi zakleszczeń Zarządzanie pamięcią operacyjną * Pamięć operacyjna – kluczowy element każdego systemu komputerowego * Pamięć to ”magazyn” szybko dostępnych danych wykorzystywanych przez CPU i urządzenia IO * Przykładowe wykonywanie cyklu rozkazów 1 2 czytanie → pamięć operacyjna → wykonywanie pobieranie danych z dysku → pamięć operacyjna → czytanie danych przez proces → wykonywanie * W celu wykonania programu, należy go zaadresować oraz załadować do pamięci * Podczas wykonywania programu, rozkazy i dane są pobierane z pamięci za pomocą generowania potrzebnych adresów * Lepsze wykorzystanie CPU oraz szybsza odpowiedź komputera – przechowywanie w pamięci kilku programów jednocześnie * W odniesieniu do zarządzania pamięcią operacyjną system operacyjny odpowiada za: 1 utrzymywanie ewidencji aktualnie zajętych części pamięci wraz z informacją w czyim są władaniu 2 decydowanie, które procesy mają być załadowane do zwolnionych obszarów pamięci 3 przydzielanie i zwalnianie obszarów pamięci stosownie do potrzeb Zarządzanie plikami * Najbardziej widoczna część systemu operacyjnego * Dane można przechowywać na różnego rodzaju nośnikach: magnetycznych, optycznych, itp. * Dla wygody użytkownika system operacyjny tworzy jednolity, logiczny obraz magazynowanej informacji: • definiuje on pliki niezależnie od fizycznych właściwości używanych urządzeń przechowywania informacji • system operacyjny odwzorowuje pliki na fizyczne nośniki informacji • umożliwia do nich dostęp za pomocą urządzeń pamięci * Jeśli wielu użytkowników ma dostęp do tych samych plików to jest pożądane sprawowanie pieczy nad tym kto i w jaki sposób korzysta z tego dostępu * W odniesieniu do zarządzania plikami system operacyjny odpowiada za: 1 tworzenie i usuwanie plików 2 tworzenie i usuwanie katalogów 3 dostarczenie elementarnych operacji do manipulowania plikami i katalogami 4 odwzorowanie plików na obszary pamięci pomocniczej 5 składowanie plików na trwałych nośnikach pamięci Zarządzanie urządzeniami wejścia–wyjścia * Jednym z celów systemu operacyjnego jest ukrywanie przed użytkownikiem szczegółów dotyczących specyfiki urządzeń sprzętowych * Przykładem poprawnie zaprojektowanego systemu jest system UNIX, gdzie osobliwości urządzeń I/O są ukryte przed większością samego systemu przez tzw. podsystem wejścia–wyjścia * Podsystem wejścia–wyjścia składa się z: • części zarządzającej pamięcią (buforowanie, pamięć podręczna) • ogólnego interfejsu do modułów sterujących urządzeń • modułów sterujących (programów obsługi) poszczególnych urządzeń sprzętowych * Osobliwości poszczególnego urządzenia wejścia–wyjścia zna tylko odpowiadający mu moduł sterujący Zarządzanie pamięcią pomocniczą * Pamięć operacyjna jest za mała aby pomieścić wszystkie dane i programy * Zawarte w niej dane giną po odcięciu zasilania * System komputerowy powinien posiadać zatem pamięć pomocniczą będącą zapleczem dla pamięci operacyjnej * Pamięcią dyskową jako podstawowym środkiem magazynowania zarówno danych jak i programów * W odniesieniu do zarządzania pamięcią operacyjną, system operacyjny odpowiada za: 1 2 3 zarządzanie obszarami wolnymi przydzielaniem pamięci planowaniem przydziału obszarów pamięci dyskowej System ochrony * W systemie z wieloma użytkownikami i współbieżnie wykonywanymi wieloma procesami poszczególne procesy należy chronić przed wzajemnym oddziaływaniem * Należy opracować mechanizmy gwarantujące, że pliki, segmenty pamięci, procesor i inne zasoby będą użytkowane tylko przez te procesy, które zostały przez system operacyjny odpowiednio uprawnione * Ochrona – mechanizm nadzorowania dostępu programów, procesów lub użytkowników do zasobów zdefiniowanych przez system komputerowy * Mechanizmy ochrony zawierają sposoby określenia, co i w jakiej formie ma podlegać ochronie, jak również środki do wymuszania zaprowadzonych ustaleń * Za pomocą działań ochronnych można polepszać niezawodność systemu poprzez poszukiwanie błędów ukrytych w interfejsach między składowymi podsystemami * Wczesne wykrywanie błędów w interfejsach może zapobiec zanieczyszczeniu zdrowego podsystemu przez podsystem uszkodzony * Zasoby niechronione nie mogą obronić się przed użyciem lub nadużyciem przez nieupoważnionego lub niekompetentnego użytkownika * System ochrony dostarcza środków do rozróżniania między prawomocnym i nieprawomocnym użyciem System interpretacji poleceń * Interpreter poleceń – jeden z najważniejszych programów w systemie operacyjnym * Interpreter poleceń – interfejs pomiędzy użytkownikiem, a systemem operacyjnym • niektóre systemy zawierają interpreter poleceń w swoim jądrze • w innych systemach (MS-DOS, UNIX) interpreter poleceń jest specjalnym programem – powłoką (interpreterem wiersza poleceń) * Systemy operacyjne często różnią się od siebie warstwą powłoki • przyjazny interpreter – systemy Apple Macintosh i Microsoft Windows – operowanie za pomocą systemu okien i menu oraz myszki • interpretery trudniejsze do opanowania lecz o większych możliwościach – systemy MS-DOS, UNIX – polecenia pisane na klawiaturze są wyświetlane na monitorze lub drukowane * Polecenia rozpoznawane przez interpreter dotyczą: 1 tworzenia procesów i zarządzanie nimi 2 obsługi wejścia–wyjścia 3 administrowania pamięcią pomocniczą i operacyjną 4 ochrony i pracy sieciowej Usługi systemów operacyjnych * Wykonanie programu • możliwość załadowania programu do pamięci i rozpoczęcia jego wykonywania • możliwość zakończenia: w sposób normalny w sposób wyjątkowy (potrzeba sygnalizowania błędu) Przykład 1. System MS-DOS a) b) Wolna pamiêæ Wolna pamiêæ Proces Interpreter poleceñ Interpreter poleceñ J¹dro J¹dro a) rozruch systemu b) wykonanie programu • system jednozadaniowy • program jest wprowadzany do pamięci kosztem części systemu operacyjnego Przykład 2. System UNIX Proces D Wolna pamiêæ Proces C Interpreter poleceñ Proces B J¹dro • system wielozadaniowy z możliwością wyboru interpretera poleceń • interpreter poleceń może kontynuować działanie podczas wykonywania innego programu (wykonywanie procesu w tle) * Operacje wejścia–wyjścia • wiele programów potrzebuje operacji IO odnoszących się do pliku lub urządzenia peryferyjnego • poszczególne urządzenia wymagają określonych funkcji, np. wygaszenie ekranu monitora • ze względu na wydajność i ochronę, użytkownicy zazwyczaj nie mogą bezpośrednio nadzorować operacji wejścia–wyjścia * Manipulowanie systemem plików • programy muszą zapisywać i odczytywać pliki • możliwość tworzenia i usuwania plików przy użyciu ich nazw Komunikacja • Procesy wymagają wzajemnego kontaktu i wymiany informacji • Metody organizowania komunikacji: 1. pamięć dzielona, 2. przekazywanie komunikatów Przykład 3. Modele komunikacji 1 Model przesyłania komunikatów Proces A K Proces B K J¹dro K • informacja jest wymieniana przez międzyprocesowe środki komunikacji dostarczone przez system operacyjny • nawiązanie połączenia – nazwy klienta get process id i serwera get host id • zezwolenie odbiorcy na nawiązanie połączenia – accept connection • źródło (klient) oraz demon odbiorczy (serwer) wymieniają komunikaty za pomocą funkcji systemowych read message i write message • koniec komunikacji – close connection Zalety 3 bezkonfliktowa wymiana informacji 3 możliwość wykorzystania do komunikacji procesów pracujących w różnych systemach komputerowych 2 Model z pamięcią dzieloną Proces A Pamiêæ dzielona Proces B 1 2 J¹dro • procesy posługują się systemowymi funkcjami odwzorowania pamięci • system operacyjny próbuje zapobiegać dostawaniu się jednego procesu do pamięci innego • dzielenie pamięci wymaga, aby dwa lub więcej procesów zgodziło się na usunięcie tego ograniczenia • procesy mogą wymieniać informacje poprzez czytanie i pisanie do wspólnie użytkowanych obszarów • procesy muszą pamiętać, aby nie pisać jednocześnie do tego samego miejsca Właściwości 3 model stosowany do komunikacji procesów pracujących na tym samym komputerze 3 pamięć dzielona zapewnia maksymalną szybkość i wygodę komunikacji 7 problemy z zakresu ochrony i synchronizacji * Wykrywanie błędów system operacyjny powinien być nieustannie powiadamiany o występowaniu błędów oraz odpowiednio na nie reagować błędy w działaniu CPU i pamięci operacyjnej błędy w urządzeniach I/O (błędy parzystości, awaria połączenia w sieci, brak papieru w drukarce) błędy w programie użytkownika (błędy arytmetyczne, dostęp do niedozwolonych obszarów pamięci) * Przydzielanie zasobów zarządzanie różnymi zasobami systemu komputerowego przydzielanie cykli procesora czy pamięci operacyjnej może wymagać odrębnego kodu, podczas gdy urządzenia I/O mogą mieć bardziej ogólny kod zamawiania i zwalniania różne procedury mogą być wywoływane do przydzielania modemów, ploterów i innych urządzeń INNE USŁUGI SO * Rozliczanie przechowywanie danych o tym, którzy użytkownicy i w jakim stopniu korzystają z poszczególnych zasobów komputera cele statystyczne rekonfiguracja systemu * Ochrona nadzór nad wszystkimi dostępami do zasobów systemu zabezpieczenie systemu przed niedozwolonym dostępem, rejestrowanie wszystkich takich przypadków, wykrywanie włamań STRUKTURY SYSTEMÓW Wiele systemów nie ma ściśle określonej struktury Małe systemy często rozszerzano przekraczając pierwotne założenia System MS-DOS Programy u¿ytkowe Rezydentne programy systemowe Modu³y obs³ugi urz¹dzeñ z poziomu MS-DOS Modu³y obs³ugi urz¹dzeñ w pamiêci ROM BIOS wyraźnie rozróżnione poziomy funkcjonalne z poziomu programów użytkowych można korzystać z podstawowych procedur IO, np. pisania na ekran czy dyski swoboda tego rodzaju powoduje, że system nie jest odporny na błędnie działające programy użytkowe możliwość zawieszenia się systemu lub uszkodzenia System UNIX UŻYTKOWNICY Powłoki i polecenia Kompilatory, interpretery Biblioteki systemowe Interfejs funkcji systemowych jądra System plików, planowanie przydziału czasu CPU pamięć wirtualna, system wejścia–wyjścia moduły sterujące dysków i taśm moduły sterujące terminali Interfejs między jądrem a sprzętem sterowniki sterowniki sterowniki terminali urządzeń pamięci Terminale Dyski i taśmy RAM przykład strukturalizacji systemu system składa się z dwóch części: jądra i programów systemowych jądro dzieli się na ciąg interfejsów i programów obsługi urządzeń za pośrednictwem funkcji systemowych jądro udostępnia system plików, zarządzanie pamięcią operacyjną, planowanie przydziału CPU, itd. (wiele możliwości zebranych na jednym poziomie) programy systemowe korzystają z udostępnianych przez jądro funkcji systemowych w celu wykonywania użytecznych działań (operowanie plikami, kompilacja) wadą systemu UNIX w wersji podstawowej jest to, że posiada tylko dwie ”warstwy”, które zawierają bardzo dużo elementów można podzielić system operacyjny na mniejsze, lepiej dobrane elementy – większa kontrola nad komputerem i programami użytkowymi SYSTEMY O STRUKTURZE WARSTWOWEJ W podejściu warstwowym dzieli się system na tzw. warstwy (poziomy) Poziom najniższy (warstwa 0) – sprzęt Poziom najwyższy (warstwa N) – interfejs z użytkownikiem Poziom M-ty – struktury danych i procedury wywoływane z wyższych warstw Warstwa M-ta może wywoływać operacje dotyczące niższych warstw ZALETA – modularność każda z warstw korzysta z usług tylko niżej położonych warstw łatwe wyszukiwanie błędów i weryfikacja systemu pierwsza warstwa może być poprawiana bez troski o resztę systemu po uruchomieniu warstwy można przystąpić do realizacji kolejnej System THE 5 4 3 2 1 0 PROGRAMY UŻYTKOWE BUFOROWANIE URZĄDZEŃ WEJŚCIA–WYJŚCIA PROGRAM OBSŁUGI KONSOLI OPERATORA ZARZĄDZANIE PAMIĘCIĄ PLANOWANIE PRZYDZIAŁU PROCESORA SPRZĘT pierwszy system warstwowy – THE (Technische Hogeschool Eindhoven) schemat zarządzania pamięcią – pamięć wirtualna program obsługi konsoli operatora i buforowanie urządzeń wejścia–wyjścia były zlokalizowane wyżej od zarządzania pamięcią, bufory urządzeń mogły być umieszczone w pamięci wirtualnej buforowanie urządzeń wejścia–wyjścia znajdowało się powyżej konsoli operatora, dlatego informacje o błędach wejścia–wyjścia mogły być wyprowadzane na konsolę operatora System VENUS 6 5 4 3 2 1 0 PROGRAMY UŻYTKOWE PROGRAMY OBSŁUGI I PLANOWANIA PRZYDZIAŁU URZĄDZEŃ PAMIĘĆ WIRTUALNA KANAŁ WEJŚCIA–WYJŚĆIA PLANOWANIE PRZYDZIAŁU PROCESORA INTERPRETER POLECEŃ SPRZĘT poziomy niższe 0–4 – planowanie przydziału czasu procesora i zarządzanie pamięcią warstwy 0–4 zostały napisane jako mikroprogramy – szybsze działanie i przejrzysty interfejs między warstwami mikroprogramowanymi, a warstwami wyższymi Właściwości systemów warstwowych 7 główna wada – trudności w odpowiednim zdefiniowaniu zawartości poszczególnych warstw program obsługi pamięci pomocniczej powinien być poniżej procedury zarządzania pamięcią wiele wymagań nie jest jawnie określonych 7 realizacje warstwowe – mniej wydajne od innych 3 główna zaleta – łatwość w lokalizacji błędów i weryfikacji systemu Podsumowanie problemy z efektywnością spowodowały nieznaczne odchodzenie od modeli warstwowych dąży się do systemów złożonych z mniejszej liczby, ale bardziej funkcjonalnych warstw MASZYNY WIRTUALNE Cele programów użytkowych mogą być realizowane przez system operacyjny różnymi sposobami programy systemowe funkcje systemowe rozkazy sprzętowe Programy użytkowe mogą traktować wszystko to co znajduje się poniżej ich w hierarchii systemu komputerowego traktować jako stanowiące część maszyny (komputera) Logicznym rozszerzeniem modelu warstowego była idea maszyny wirtualnej System operacyjny VM (firma IBM) – przykład zastosowania koncepcji maszyny wirtualnej Dzięki koncepcji maszyny wirtualnej tworzy się interfejs identyczny z podstawowym sprzętem Każdy proces otrzymuje (wirtualną) kopię komputera (podstawy systemu) Procesy Procesy Procesy Procesy Interfejs programowy J¹dro J¹dro J¹dro J¹dro Maszyna wirtualna Sprzêt Sprzêt (a) (b) Maszyna niewirtualna (a), maszyna wirtualna (b) Właściwości 3 ochrona zasobów systemowych – każda maszyna wirtualna jest całkowicie odizolowana od innych maszyn wirtualnych 7 brak bezpośredniej możliwości wspólnego użytkowania zasobów 3 łatwa konserwacja systemu – programiści systemowi otrzymują własne maszyny wirtualne i na nich dokonują konserwacji systemu. Unika się w ten sposób okresowego wyłączenia systemu 3 rozwiązanie zagadnienia zgodności systemów – możliwość uruchomienia programów dedykowanych na określoną platformę sprzętową w innym systemie operacyjnym • uruchamianie programów dostępnych w systemie MS-DOS na komputerach DEC – maszyna wirtualna Intel nadbudowana na rdzenny procesor • komputer Apple Macintosh z procesorem PowerPC zawiera maszynę wirtualną Motorola 68000 umożliwiającą wykonywanie programów binarnych napisanych dla starszego modelu komputera JAVA Przykład ciągłości koncepcji maszyny wirtualnej Kompilator języka Java wytwarza tzw. kod pośredni, który wykonywany jest przez Wirtualną Maszynę Javy (ang. Java Virtual Machine – JVM) Maszyna JVM działa na wielu typach komputerów: komputerach klasy PC, Macintosh, stacjach roboczych i serwerach systemu UNIX, minikomputerach i komputerach głównych typu IBM Maszyna JVM jest realizowana w przeglądarkach sieciowych Kod pośredni sprawdzany jest pod kątem występowania rozkazów mogących naruszać bezpieczeństwo lub niezawodność podstawowej maszyny. Jeżeli program nie zaliczy tego testu to nie zostanie wykonany VMware vSphere ã Wirtualizacja serwera oprogramowanie ukrywa rzeczywisty sprzęt przed oprogramowaniem i udostępnia zasoby w postaci wirtualnej możliwość skonfigurowania maksymalnie 64 wirtualnych procesorów wirtualizacja pamięci możliwość alokacji procesorów i pamięci w sposób hierarchiczny w zależności od potrzeb Właściwości vSphere Kompatybilność – maszyna jest zgodna ze wszystkimi systemami operacyjnymi x86, aplikacjami oraz sterowanikami. Można na niej uruchamiać aplikacje zgodne z platformą PC Izolacja – maszyny wirtualne mogą dzielić fizyczne zasoby komputera, ale pozostają względem siebie odseparowane jakby były oddzielnymi fizycznymi komputerami Enkapsulacja – wirtualne maszyny są przenaszalne oraz łatwe w zarządzaniu. Mogą być kopiowane i przenoszone jak zwykłe pliki i zapisywane na dowolnym urządzeniu pamięci masowej Niezależność sprzętu – maszyny wirtualne jako niezależne od fizycznego sprzętu mogą być konfigurowane za pomocą wirtualnych komponentów. Można uruchamiać w nich różne rodzaje systemów operacyjnych Microsoft Hyper-V pozwala na instalowanie systemów x86 i x64 z rodziny Windows oraz systemów Linux alternatywa dla pakietu VirtualBox właściwość systemów Windows Server 2008 R2, Windows Server 2012 i Windows 8.1 Pro (domyślnie wyłączona) włączenie Hyper-V – właściwości i funkcje systemu Windows punkty przywracania – szybki powrót do “czystego” obrazu systemu operacyjnego SYSTEMY O STRUKTURZE MODULARNEJ System OS/2 Aplikacja Aplikacja Interfejs programowania aplikacji Podsystem Moduł sterujący Aplikacja Rozszerzenie API Podsystem Podsystem JĄDRO SYSTEMU • zarządzanie pamięcią • ekspediowanie zadań • zarządzanie urządzeniami Moduł sterujący Moduł sterujący system OS/2 – następca MS-DOS system wielozadaniowy, podwójny tryb operacji zaprojektowany z uwzględnieniem warstwowości użytkownik nie może korzystać bezpośrednio z udogodnień niskiego poziomu zwiększona kontrola nad sprzętem i lepsze rozeznanie co do zasobów wykorzystywanych przez programy użytkowników System Windows NT pierwsza wersja systemu – struktura warstwowa niska wydajność w stosunku do systemu Windows 95 w wersji Windows NT 4.0 poprawiono niedogodności przesuwając warstwy z przestrzeni użytkownika do przestrzeni jądra ściśle je integrując architektura systemu NT wersji 4 – warstwowy układ modułów warstwa abstrakcji sprzętu jądro egzekutor zbiór podsystemów działających w trybie użytkownika Struktura systemu Windows NT Zbiór podsystemów Egzekutor Zarz¹dca wejœciawyjœcia Zarz¹dca procesów Zarz¹dca obiektów Zarz¹dca pamiêci wirtualnej J¹dro Warstwa abstrakcji sprzêtu SPRZÊT PROJEKTOWANIE I IMPLEMENTACJA SO Założenia projektowe Specyfikacja systemu – wybór sprzętu i typ systemu Wymagania użytkowników – system operacyjny powinien być wygodny w użyciu, łatwy do nauki, niezawodny, bezpieczny i szybki Cele projektantów – system operacyjny powinien być łatwy do zaprojektowania, implementacji i konserwacji, elastyczny, niezawodny, pozbawiony błędów oraz efektywny problem zdefiniowania wymagań względem systemu operacyjnego nie ma jednoznacznego rozwiązania Ogólne zasady projektowania – Inżynieria oprogramowania Języki programowania obecnie do projektowania systemów operacyjnych wykorzystuje się języki wysokiego poziomu polepsza to implementację, pielęgnację oraz przenaszalność systemu wady stosowania języków wysokiego poziomu 1 2 spowolnienie działania systemu większe zapotrzebowanie na pamięć pomimo wielkich rozmiarów systemów operacyjnych na ich efektywność ma wpływ niewielka ilość kodu: zarządca pamięci i planista przydziału CPU procedury będące wąskimi gardłami można zastąpić odpowiednikami napisanymi w asemblerze FUNKCJE SYSTEMOWE Funkcje systemowe wywołania systemowe ( ang. system calls) stanowią interfejs pomiędzy wykonywanym programem, a systemem operacyjnym Podział funkcji systemowych: nadzorowanie procesów, np. end, abort, wait for time operacje na plikach, np. open, close, read, write, get file attributes operacje na urządzeniach, np. request device, release device, read, write, reposition otrzymywanie informacji, np. get time, get date, get device attributes komunikacja, np. create connection, delete connection, send message Przykład. Wykorzystanie funkcji fork() #include <stdio.h> #include <unistd.h> int main(void) { int pid; pid = fork(); printf("Rezultat fork = %d\n", pid); return 0; } Przykład. Wykorzystanie funkcji fork() int main(void){ int id; printf("proces (1): pid = id = fork(); switch (id) { case -1 : perror("fork"); exit(1); case 0: printf("proces (2): pid printf("proces (2): pid exit(0); default: printf("proces (1): pid printf("proces (1): pid } return 0; } %d\n", getpid()); = %d\n", getpid()); rodzica = %d\n", getppid()); nadal = %d\n", getpid()); potomka = %d\n", id); Przykład. Operacje na pliku – biblioteka języka C #include <stdio.h> int main(void){ FILE *in, *out; if((in = fopen("plik we.txt", "rt")) == NULL){ fprintf(stderr, "Nie można otworzyć pliku wej.\n"); return 1; } if((out = fopen("plik wy.txt", "wt")) == NULL){ fprintf(stderr, "Nie można otworzyć pliku wyj.\n"); return 1; } while(!feof(in)) fputc(fgetc(in), out); fclose(in); fclose(out); return 0; } Przykład. Operacje na pliku – funkcje systemowe #include <fcntl.h> #include <unistd.h> int main(void){ int in, out; char c; if((in = open("plik we.txt", O RDONLY)) == -1){ perror("Nie można otworzyć pliku wejściowego.\n"); return 1; } if((out=open("plik wy.txt",O CREAT|O WRONLY| O TRUNC,0666))==-1){ perror("Nie można otworzyć pliku wyjściowego.\n"); return 1; } while(read(in, &c, 1)) write(out, &c, 1); close(in); close(out); return 0; } Funkcje obsługi IPC w Systemie V plik nagłówkowy tworzenieotwieranie operacje sterujące przesyłanie kolejka komunikatów sysmsg.h msgget() msgctl() msgsnd() msgrcv() semafor syssem.h semget() semctl() semop() pamięć dzielona sysshm.h shmget() shmctl() shmat() shmdt() PROGRAMY SYSTEMOWE Programy systemowe tworzą środowisko do opracowywania i wykonywania innych programów. Można powiedzieć, że programy systemowe są interfejsami użytkownika do funkcji systemowych Podział programów systemowych: manipulowanie plikami informowanie o stanie systemu translatory języków programowania ładowanie i wykonywanie programów komunikacja Większość nowoczesnych systemów operacyjnych zawiera programy do wykonywania typowych zadań : przeglądarki WWW, edytory tekstów, proste arkusze kalkulacyjne, itp. System Windows 2000 Struktura systemu Winlogon Mened¿er sesji Svchost.exe Spooler Services.exe Lsass Mened¿er zadañ Windows Explorer POSIX OS/2 Win32 Ntdll.dll Tryb u¿ytkownika Tryb j¹dra Sterowniki urz¹dzeñ Centrum wykonawcze Win32 USER GDI Sterowniki graficzne J¹dro Warstwa abstrakcji sprzêtu HAL Interfejsy sprzêtowe, urz¹dzenia I/O, przerwania, kana³y DMA, magistrale Tryb jądra i tryb użytkownika Tryb jądra – uprzywilejowany tryb wykonywania kodu, w którym procesor zezwala na dostęp do całej pamięci systemu oraz do wszystkich instrukcji procesora W trybie jądra działa kod systemu operacyjnego Tryb użytkownika – nieuprzywilejowany tryb procesora, w którym działają aplikacje użytkownika W trybie użytkownika dostępna jest ograniczona liczba interfejsów oraz ograniczony dostęp do zasobów systemowych Dwa tryby pracy procesora wprowadzono w celu ochrony krytycznych dla systemu operacyjnego danych Mechanizm uniemożliwiający błędnej aplikacji użytkownika naruszenie stabilności całego systemu Komponenty systemu Windows 2000 * Warstwa uniezależnienia od sprzętu warstwa uniezależnienia od sprzętu HAL (ang. Hardware Abstraction Layer ) HAL odgrywa zasadniczą rolę w zapewnieniu przenaszalności systemu operacyjnego jest zewnętrznym pracującym w trybie jądra modułem (hal.dll) zapewnia niskopoziomowy interfejs do platformy sprzętowej wewntęrzne komponenty systemu oraz sterowniki urządzeń chcąc dostać się do sprzętu wywołują procedury warstwy HAL podczas instalacji systemu wybierana jest odpowiednia dla danej platformy sprzętowej wersja warstwy HAL * Jądro zawiera zestaw funkcji zapewniających podstawowe mechanizmy (szeregowanie wątków, synchronizacja) wykorzystywane przez centrum wykonawcze oraz niskopoziomowe funkcje zależne od platformy sprzętowej (obsługa przerwań i wyjątków) kod jądra napisano w C/C++ z wstawkami asemblerowymi (specjalizowane instrukcje procesora oraz rejestrów) dolna warstwa pliku ntoskrnl.exe lub ntkrnlpa.exe (dla obsługi pamięci większej niż 4 GB) (folder System32) Windows 2000 posiada jądro monolityczne – większość kodu systemu operacyjnego współdzieli tę samą, chronioną przestrzeń adresową trybu jądra istnieje możliwość zakłócenia integralności danych jednego komponentu systemu przez inny * Sterowniki urządzeń są zewnętrznymi modułami jądra (pliki z rozszerzeniem .sys), które służą jako interfejs pomiędzy menedżerem I/O, a odpowiednimi urządzeniami działają w trybie jądra w jednym z trzech kontekstów: 1 2 3 w kontekscie wątku użytkownika, który zainicjował funkcję I/O w kontekscie systemowego wątku trybu jądra jako rezultat przerwania sterowniki nie wykonują operacji bezpośrednio na sprzęcie, lecz za pośrednictwem warstwy HAL zainstalowanie sterownika jest jedynym sposobem dodania do systemu (wykonywanego w trybie jądra) kodu stworzonego przez użytkownika – możliwość dostępu do wewnętrznych funkcji lub struktur danych systemu operacyjnego * Centrum wykonawcze górna warstwa pliku ntoskrnl.exe (ntkrnlopa.exe) na centrum wykonawcze składają się: Menedżer konfiguracji – implementacja i zarządzanie rejestrem systemowym Menedżer procesów i wątków – funkcje systemowe do obsługi procesów i wątków zaimplementowano w jądrze, natomiast centrum nadaje im funkcjonalność Monitor bezpieczeństwa odwołań – ochrona zasobów systemu operacyjnego Menedżer pamięci podręcznej – zwiększa wydajność plikowych operacji I/O poprzez składowanie w pamięci danych dyskowych do których dostęp odbywał się niedawno; opóźnianie operacji zapisu, poprzez składowanie uaktualnień w pamięci przed wysłaniem ich na dysk Menedżer energii – koordynuje zdarzenia związane z poborem mocy przez system; generuje komunikaty dotyczące zarządzania energią; gdy system nie wykonuje obliczeń może przewidywać obniżenie poboru mocy poprzez uśpienie procesora Menedżer PnP – określa i ładuje sterowniki potrzebne do obsługi konkretnych urządzeń; pobiera wymagania zasobów sprzętowych każdego urządzenia; na podstawie wymagań sprzętowych urządzeń przyznaje odpowiednie zasoby (porty I/O, przerwania IRQ, kanały DMA, adresy pamięci); wysyła komunikaty w przypadku zmiany stanu urządzeń Menedżer I/O – implementacja niezależnych od sprzętu operacji I/O i przekierunkowanie żądań do odpowiednich sterowników urządzeń Menedżer pamięci wirtualnej – implementuje pamięć wirtualną zapewniającą każdemu procesowi dużą, prywatną przestrzeń adresową, która może przekraczać dostępną przestrzeń fizyczną Menedżer obiektów – tworzy, zarządza i usuwa obiekty Windows 2000 oraz abstrakcyjne typy danych używane do reprezentacji zasobów systemu operacyjnego (procesy, wątki obiekty synchronizacyjne) Mechanizm LPC (ang. Local Procedure Call) – przekazuje komunikaty między procesem klienta, a procesem serwera na tym samym komputerze; jest to wersja zdalnych wywołań procedur (ang. Remote Procedure Call – RPC) * Ntdll.dll specjalna biblioteka wspierająca system; wspomaga korzystanie z bibliotek podsystemowych procedury przekazujące wywołania usług systemowych do centrum wykonawczego interfejs do wewnętrznych usług Windows 2000 (ponad 200) wewnętrzne funkcje pomocnicze, wykorzystywane przez podsystemy, biblioteki podsystemów i inne komponenty Procesy systemowe Proces jałowy proces nie wykonuje żadnego programu trybu użytkownika zawiera po jednym wątku dla każdego procesora; wątek ten jest wykonywany w jałowym czasie procesora proces posiada identyfikator 0 Proces systemowy identyfikator procesu – zawsze 8 zawiera wątki specjalnego rodzaju wykonujące się jedynie w trybie jądra wątki systemowe są tworzone przez system oraz różne sterowniki urządzeń podczas inicjacji systemu Menedżer sesji smss lokalizacja: \winnt\system32\smss.exe pierwszy proces trybu użytkownika w systemie jest odpowiedzialny za czynności podczas uruchamiania systemu (otwarcie plików stronicowania, operacje zmiany nazwy i usunięcia plików, inicjacja systemowych zmiennych środowiskowych) uruchamia procesy podsystemów (csrss.exe) oraz proces winlogon, który tworzy pozostałe procesy w systemie po inicjacji główny wątek w smss oczekuje na uchwytach do procesów csrss i winlogon; jeśli którykolwiek z tych procesów nieoczekiwanie zakończy się, smss powoduje załamanie systemu oczekuje także na żądania załadowania podsystemów oraz zdarzenia związane z wykrywaniem błędów Proces logowania winlogon lokalizacja \winnt\system32\winlogon.exe obsługuje logowanie i wylogowanie się użytkowników proces dokonuje częściowej inicjacji środowiska użytkownika (ustanowienie liter napędów, polityka bezpieczeństwa) tworzy proces, w którym uruchamiana jest powłoka systemu explorer.exe proces przechwytuje sekwencję SAS (ang. Secure Attention Sequence) z klawiatury (Ctrl+Alt+Delete); może w ten sposób uruchomić Menedżera zadań, zablokować komputer lub zamknąć system Lokalny serwer bezpieczeństwa LSASS lokalizacja: \winnt\system32\lsass.exe otrzymuje żądania uwierzytelniania od procesu winlogon i wywołuje odpowiedni pakiet uwierzytelniający celem dokonania weryfikacji po uwierzytelnieniu, proces generuje tzw. znacznik dostępu zawierający profil bezpieczeństwa użytkownika Menedżer kontroli usług SCM lokalizacja: \winnt\system32\services.exe specjalny proces systemowy odpowiadający za uruchamianie, zatrzymywanie i interakcje z procesami usługowymi usługi mogą odnosić się do procesów serwerowych lub do sterowników usługi mogą być uruchamiane automatycznie lub ręcznie zainstalowane usługi można wyświetlić za pomocą narzędzia Usługi znajdującego się w Narzędziach administracyjnych Rejestr systemowy kluczowy komponent w konfiguracji i zarządzaniu systemem rejestr jest bazą danych składającą się z kluczy oraz wartości rejestr ma strukturę drzewa z sześcioma kluczami głównymi: 1 HKEY CURRENT USER – dane dotyczące aktualnie zalogowanego użytkownika 2 HKEY USERS – przechowuje informacje o wszystkich kontach dostępnych na danym komputerze 3 HKEY CLASSES ROOT – dane o skojarzeniu plików z aplikacjami 4 HKEY LOCAL MACHINE – dane dotyczące systemu 5 HKEY PERFORMANCE DATA – dane dotyczące wydajności 6 HKEY CURRENT CONFIG – informacje o aktualnym profilu sprzętowym aplikacje do pracy z rejestrem regedit i regedt32 Pliki zawierające części rejestru Ścieżka w rejestrze Ścieżka w systemie plików \winnt\system32\config\system \winnt\system32\config\sam \winnt\system32\config\security \winnt\system32\config\software ulotny ulotny \documents and settings\<username>\ ntuser.dat HKEY USERS\<security ID of username> Classes \documents and settings\<username>\ \local settings\application data\ microsoft\windows\usrclass.dat HKEY USERS\.DEFAULT \winnt\system32\config\default HKEY HKEY HKEY HKEY HKEY HKEY HKEY LOCAL MACHINE\SYSTEM LOCAL MACHINE\SAM LOCAL MACHINE\SECURITY LOCAL MACHINE\SOFTWARE LOCAL MACHINE\HARDWARE LOCAL MACHINE\SYSTEM\Clone USERS\<security ID of username> System UNIX Struktura jądra Programy u¿ytkownika Poziom u¿ytkownika Biblioteki Poziom j¹dra Interfejs funkcji systemowych Podsystem plików Komunikacja miêdzyprocesowa Podrêczna pamiêæ buforowa Przydzia³ CPU Zarz¹dzanie pamiêci¹ Znakowe Blokowe Programy obs³ugi urz¹dzeñ Podsystem steruj¹cy procesami Sterowanie sprzêtem Poziom j¹dra Poziom sprzêtu Sprzêt Plik i proces – podstawowe pojęcia w modelu systemu Jądro (ang. kernel) Program posiadający podczas działania systemu operacyjnego szereg przywilejów dostępu do zasobów fizycznych komputera Usługi jądra 1 zarządzanie jednostkami pamięci 2 określanie zawartości rejestrów procesora 3 pozwala innym procesom, serwerom na kontakt z zasobami fizycznymi komputera 4 określa przestrzenie adresowe do wzajemnej ochrony procesów przed sobą 5 nadzorowanie mechanizmem przywoływania zasobów zarządzanych przez jądro - pułapki systemowe (ang. system call trap) Jądra monolityczne i mikrojądra 1 Jądro monolityczne jądro monolityczne wykonuje wszystkie podstawowe funkcje systemu operacyjnego rozmiary jądra sięgają megabajta kodu i danych jądro umieszczone jest zazwyczaj w pliku /unix ( /vmunix /vmlinuz /genunix ) jądro jest nierozbieralne - budowa niemodularna jądro nie jest podatne na modyfikacje dostosowanie jakiegokolwiek elementu jego oprogramowania do zmieniających się wymagań jest trudne jądro monolityczne może zawierać pewną liczbę procesów usługowych, które działają w jego ramach (serwery plików, procesy sieciowe) wiele usług świadczonych przez jądro może być dostarczanych przez usługi otwarte ... S4 S1 S2 S3 ... j¹dro monolityczne program ³adowany dynamicznie kod i dane j¹dra serwer, program us³ugowy 2 Mikrojądro (ang. microkernel) mikrojądro to jądro realizujące najmniejszy z możliwych zbiorów usług i zasobów wszystkie inne usługi systemowe są dostarczane przez serwery umieszczane dynamicznie tylko w tym komputerach systemu rozproszonego, które mają dostarczać danych usług S1 S2 S3 S4 ... mikroj¹dro rozmiary mikrojądra wahają się od 10 KB do kilkuset KB mikrojądro jest tak zaprojektowane aby można je było przenosić między różnymi architekturami komputerów większa część kodu zaprojektowana jest w języku wysokiego poziomu np. C lub C++ właściwości jądra ułożone są warstwowo, tak aby składniki zależne od maszyny redukowały się do minimalnej dolnej warstwy budowa typowego mikrojądra Zarz¹dca procesów Zarz¹dca komunikacji Zarz¹dca w¹tków Zarz¹dca pamiêci Nadzorca Zarządca procesów – zajmuje się tworzeniem procesów i wykonywaniem na nich niskopoziomowych operacji Zarządca wątków – odpowiada za tworzenie wątków, ich synchronizację oraz planowanie. Wątki to działania skojarzone z procesem Zarządca komunikacji – zapewnia łączność między wątkami należącymi do różnych procesów lokalnych. Można tutaj umieścić poziom komunikacji pomiędzy wątkami procesów zdalnych Zarządca pamięci – administruje zasobami pamięci fizycznej, jednostką zarządzania pamięcią oraz sprzętowymi pamięciami podręcznymi Nadzorca – koordynuje obsługę przerwań, wywołań pułapek systemowych i innych wyjątków Porównanie Mikrojądro G otwartość G małe rozmiary G mniejsza podatność na błędy Jądro monolityczne G duże rozmiary G trudne w pielęgnacji G moduły jądra wykonywane są w tej samej przestrzeni adresowej G istnieje możliwość naruszania ścisłych reguł modularności G błąd w jednym module może źle wpływać na działanie innego modułu G ponowna implementacja modułu pociąga za sobą przebudowę jądra G dobra wydajność wywoływania operacji 1 Funkcje systemowe – zbiór funkcji systemowych podzielono na dwie grupy: funkcje systemowe do komunikacji procesów z podsystemem plików: open , close , read , write , stat , chown , chmod funkcje systemowe do sterowania procesami: fork , exec , exit , wait , brk , signal 2 Podsystem plików – zarządza plikami, przydziela na nie pamięć, administruje pamięcią wolną, steruje dostępem do plików, udostępnia użytkownikom dane 3 Podręczna pamięć buforowa – podsystem plików udostępnia dane z plików za pomocą mechanizmu buforowania, regulacja przepływu danych między jądrem i urządzeniami pamięci pomocniczej Programy obsługi urządzeń – są to moduły jądra sterujące pracą urządzeń peryferyjnych 4 blokowe – urządzenia o dostępie bezpośrednim lub urządzenia dla których ich podprogramy tworzą taką iluzję znakowe (surowe) – reszta urządzeń, które nie są blokowe 6 Podsystem sterowania procesami – odpowiada za synchronizację procesów, komunikację między nimi, współpracuje z podsystemem plików podczas ładowania pliku do pamięci w celu wykonania • zarządzanie pamięcią – steruje przydziałem pamięci (wymiana i stronicowanie na żądanie) • przydział CPU – przydzielanie czasu procesora procesom gotowym do wykonania, ustalanie kolejności wykonywania procesów • komunikacja międzyprocesowa – realizowane są różne sposoby komunikacji międzyprocesowej, asynchroniczne sygnalizowanie zdarzeń i synchroniczna transmisja komunikatów między procesami 7 Sterowanie sprzętem – odpowiada za obsługę przerwań i za komunikowanie się z komputerem. Dyski czy terminale mogą przerywać pracę jednostki centralnej podczas wykonywania procesu. Jądro może wznowić wykonywanie przerwanego procesu po zakończeniu obsługi przerwania Podsumowanie klasyczne jądro uniksowe było monolityczne i nie dawało się łatwo rozszerzać w miarę wzbogacania funkcjonalności systemu stawało się coraz większe i bardziej złożone jednym z rozwiązań była architektura mikrojądra, np. system Mach wydajność mikrojądra okazała się nieporównywalna z wydajnością tradycyjnego jądra więcej korzysci przyniosły próby modularyzacji i ładowania dynamicznego Budowa nowoczesnego jądra coff a.out Odwzorowania plików Odwzorowania urz¹dzeñ elf Tablica rozdzielcza Modu³ pamiêci wirtualnej Odwzorowania anonimowe NFS FFS Interfejs v-wêz³ów RFS Wspólne udogodnienia Podprogram Tablica obs³ugi rozdzielcza dysku urz¹dzeñ Modu³ szeregowania blokowych Podprogram obs³ugi taœmy Procesy z podzia³em czasu Strumienie Podprogram obs³ugi sieci Procesy czasu rzeczywistego Podprogram obs³ugi urz¹dzeñ tty Procesy systemowe Mac OS X Mac OS X Złożony system operacyjny dla komputerów Macintosh opracowany w roku 2000 w amerykańskiej firmie Apple Computer. X w nazwie oznacza 10 wersję systemu Mac OS, jednak Mac OS X jest systemem o całkowicie odmiennej budowie niż poprzednie wersje Mac OS. Mac OS X powstał w oparciu o mikrojądro Mach oraz usługi i narzędzia zaczerpnięte z projektów NetBSD oraz FreeBSD Podstawą systemu jest opracowany w Apple Computer system operacyjny Darwin Graficzny interfejs użytkownika nosi nazwę Aqua i jest własnym rozwiązaniem opracowanym przez Apple z wykorzystaniem doświadczeń i wzorów z poprzednich systemów tej firmy Apple udostępnia także własną wersję X Window System Struktura systemu Interfejs Aqua Carbon Cocoa Java Quartz OpenGL QuickTime system operacyjny Darwin Właściwości możliwość uruchamiania programów napisanych dla wcześniejszych wersji systemu Mac OS łatwość adaptacji, kompilacji i wykorzystania oprogramowania stworzonego dla systemów uniksowych, zwłaszcza typu BSD Quartz Extreme, format PDF jako podstawa interfejsu graficznego ColorSync, przemysłowej jakości system zarządzania kolorem wydajny silnik OpenGL ma wbudowane zaawansowane narzędzia sieciowe Na konferencji WWDC (WorldWide Developer Conference) 6 czerwca 2005 prezes Apple, Steve Jobs oświadczył, że Mac OS X był tworzony z myślą o procesorach firmy Intel i kompatybilnych. Zapowiedział przejście w ciągu dwóch lat całej linii komputerów Macintosh (a co za tym idzie - systemu operacyjnego i oprogramowania) na procesory Intela. Ma w tym pomóc innowacyjne oprogramowanie umożliwiające uruchamianie oprogramowania przewidzianego na procesory PowerPC na procesorach klasy x86. Jako przyczyny przejścia wymieniane były problemy firmy IBM z wyprodukowaniem energooszczędnych, szybkich procesorów do komputerów przenośnych. MacOS X – wersje MacOS X 10.4 Tiger (2005r.) pierwsza wersja systemu na platformę PC MACOS X 10.5 Leopard (koniec 2007r.) polepszono interfejsy użytkownika nie pogarszając tym samym znacząco wydajności systemu Quick Look – wyświetlanie, odtwarzanie i czytanie plików bez ich otwierania Time Machine – narzędzie do tworzenia kopii zapasowych Kontrola rodzicielska – zarządzanie, monitorowanie i kontrolowanie czasu, jaki dzieci spędzają przy komputerze, strony, które odwiedzają, a także osoby, z którymi prowadzą rozmowy Spaces – tworzenie własnych przestrzeni roboczych w celu lepszej organizacji prqacy Boot Camp – uruchamianie systemu Windows XP/Vista na komputerach Mac MacOS X – wersje, c.d. MACOS X 10.6 Snow Leopard (sierpień 2009) rezygnacja ze wsparcia procesorów PowerPC Grand Central Dispatch – technologia zwiększająca wsparcie dla aplikacji 64 bitowych, łatwe wykorzystanie wielordzeniowych procesorów przez programistów OpenCL – Opoen Computing Language, wspoarcie dla aplikacji wieloplatformowych składających się z różnego rodzaju jednostek obliczeniowych (CPU, GPU) pełne wsparcie Microsoft Exchange 2007 MAC OS X 10.7 Lion (lato 2011) sterowanie gestami połączenie funkcjonalności MAC OS X z iPada Symbian OS Symbian jest złożonym systemem operacyjnym dedykowanym na platformę telefonów komórkowych Zbudowany jest z tzw. podsystemów podsystem nie grupuje bibliotek czy plików źródłowych w ramach podsystemu można wyróżnić tzw, funkcjonalności powiązane ze sobą Struktura systemu Base – zawiera klasy do przechwytywania ciągów znaków, tablic, przechwytywania błędów i prostych typów danych. Zawiera także API dla zwykłych programistów, którzy potrzebują wykonywać operacje na wątkach, procesach i pamięci Security – zawiera komponenty, które dostarczają algorytmów kryptograficznych, zarządzania certyfikatami oraz aplikacji instalacyjnych zawierających cechy bezpieczeństwa Graphics – zawiera API do rysowania na szczególnych typach urządzeń takich jak ekrany i drukarki oraz przechwytywania czcionek i bitmap Application framework – podsystem zawiera definicje dotyczące struktury aplikacji oraz ich prostego interfejsu użytkownika. Aplikacja ma tutaj inne znaczenie niż program. Aplikacja traktowana jest jako program łącznie z interfejsem użytkownika Engines and utilities – zapewnia dostęp do danych aplikacji Communications – podsystem zawiera API związane z technologiami komunikacyjnymi połączenia na podczerwień IrDa, Bluetooth, połączenie poprzez port szeregowy Telephony zapewnia dostęp do funkcjonalności telefonu i określa zasady pisania sterowników dla określonego sprzętu Narrow bands Protocols – zapewnia przechwytywanie wiadomości SMS Messaging – udostępnia zasady dla wielo-protokołowego przesyłania wiadomości WAP Stack – umożliwia dostęp do stosu protokołu WAP WAP Browser – zapewnia pomoc dla WAP Push Właściwości systemu Przenaszalność Symbian jest systemem operacyjnym zbudowanym modularnie Istnieje możliwość dodawania, usuwania oraz modyfiowania komponentów Symbian zbudowany dla jednego typu telefonu może być, ale nie musi, kompatybilny z innym typem telefonu Znaczna część komponentów jest wspólna dla wielu typów telefonów komórkowych Interfejs użytkownika Telefony dedykowane dla różnych grup użytkowników wymagają zupełnie innych mechanizmów na wprowadzanie czy wyprowadzanie informacji Symbian zarządza wymaganiami użytkowników oddzielając warstwę interfejsu użytkownika od systemu operacyjnego System udostępnia szkielet struktury i usług, zaś producent telefonu dostarcza prawidłowy interfejs użytkownika dla swojego telefonu Wspomaganie standardów Symbian implementuje szeroką gamę standardów, głównie komunikacyjnych Bluetooth, CDMA, CompactFlash, Fax, GPRS, GSM, HSCSD, HTTP, IMAP4, IPv4, IPv6, IrDA, IrTranP, MIDP, MMS, MultiMediaCard, POP3, RS232, SMS, SMTP, SyncML, TCP/IP, Unicode, USB, WAP Języki programowania C++ – Symbian jest napisany w C++, czyli jest to naturalny język do implementacji nowych programów Java – głowny język programowania jako alternatywa do C++ Assembler – używany rzadko, w sytuacjach kiedy wydajność jest priorytetowa JavaScript – obsługa stron HTML po stronie klienta WMLScript – język skryptowy do obsługi WAP Android OS System operacyjny dla urządzeń przenośnych Obecnie rozwijany przez firmę Google Oparty na jądrze systemu operacyjnego Linux 22.10.2008 – premiera pierwszego telefonu z Androidem — HTC Dream Dalvik – maszyna wirtualna – modyfikacja Java Virtual Machine Natywny język programowania – Java Wersje systemu wersja 1.0 1.1 1.5 1.6 2.0 2.1 2.2 2.3 3.0 3.1 3.2 4.0. 4.1. 4.2. nazwa kodowa Apple pie Banana bread Cupcake Donut Eclair Eclair Froyo Gingerbread Honeycomb Honeycomb Honeycomb Ice Cream Sandwich Jelly Bean Jelly Bean jądro — — 2.6.27 2.6.29 2.6.29 2.6.29 2.6.32 2.6.35 2.6.39 2.6.39 2.6.39 3.0.1 3.0.1 3.6 data wydania 23.09.2008 09.02.2009 30.04.2009 15.09.2009 26.10.2009 12.01.2010 20.05.2010 06.12.2010 24.01.2011 10.05.2011 18.07.2011 19.10.2011 27.06.2012 29.10.2012 Struktura systemu Android nie jest systemem czasu rzeczywistego Jest to jądro Linuksa, z drobnymi modyfikacjami Istniał projekt dodania funkcjonalności systemu czasu rzeczywistego, ale deweloperzy stwierdzili, że system będzie działać na procesorach taktowanych 400 MHz – 1GHz, więc właściwości czasu rzeczywistego spowodowałyby tylko spadek wydajności