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