Nikola Milutinovic, Petar Mitrovic.

Download Report

Transcript Nikola Milutinovic, Petar Mitrovic.

Glava 10: Primer operativnog sistema
– OS X
1
2
3
4
5
6
7
Istorijat
Principi dizajna
Upravljanje procesima
Raspoređivanje procesa
Upravljanje memorijom
Fajl sistemi
Međuprocesna komunikacija
Decembar 2012.
Copyright (C) 2012 by Nikola Milutinović, Petar Mitrović
1
Istorijat
Razvoj operativnog sistema OS X počinje izvan
današnje kompanije vlasnice – Apple-a
1985. godine Steve Jobs napušta Apple i počinje
novi projekat – NeXT
NeXT nije bio uspešan, za razliku od njegovog
naslednika – NeXTSTEP, koji je kasnije evoluirao u
OPENSTEP
1997. godine, nakon brojnih promašaja po pitanju
razvoja operativnog sistema Mac OS, Apple kupuje
NeXT za 427 miliona dolara
OPENSTEP se smatra pretečom današnjeg OS X-a
Decembar 2012.
Copyright (C) 2012 by Nikola Milutinović, Petar Mitrović
2
Istorijat
Dalji razvoj odvija se u Apple-u
2000. godine objavljen je preview novog Mac OS X
operativnog sistema
Sve dalje verzije, pored broja, dobijaju i naziv po
nekoj divljoj mački
2001. godine izlazi Mac OS X version 10.0 –
Cheetah; spora verzija, nekompletna, podržana od
strane jako malo hardvera
Kasnije te godine objavljena je verzija 10.1 –
Puma; besplatni upgrade za sve korisnike Cheetah
sistema; dodat DVD, popravljene performanse
Decembar 2012.
Copyright (C) 2012 by Nikola Milutinović, Petar Mitrović
3
Istorijat
2002. godine izlazi Jaguar, verzija 10.2; najviše
unapređenja na polju GUI-ja; kompatibilnost sa
ATI i nVidia grafičkim kartama
2003. godine objavljen je Panther (v10.3);
najznačajnija poboljšanja su ponovo na polju
performansi, ali i pdf formata i Safari-ja
2005. godine izlazi verzija 10.4 – Tiger; preko 200
novih opcija;
2007. godine objavljen je Leopard, verzija 10.5;
Apple objavljuje da je ovo najveći update, preko
300 novih opcija
Decembar 2012.
Copyright (C) 2012 by Nikola Milutinović, Petar Mitrović
4
Istorijat
2009. godine izlazi Snow Leopard, verzija 10.6;
pored velikog broja aplikacija i značajno
poboljšanih performansi, veoma važna promena je
i uvođenje 64-bitnih tehnologija
2011. godine izlazi verzija 10.7 – Lion; unapređen
GUI, po ugledu na iOS
2012. godine objavljen je Mountain Lion, verzija
10.8; ovo je ujedno i aktuelna verzija; većina
današnjih aplikacija, iMessage, iCal, iWork,
iCloud...
Decembar 2012.
Copyright (C) 2012 by Nikola Milutinović, Petar Mitrović
5
Principi dizajna
Mach (kernel) se vezuje za pojam mikrokernela
Mac OS X i Mach kernel



NeXTSTEP
OPENSTEP
XNU
Mach je osnova XNU
XNU predstavlja hibridno jezgro sa najboljim
karakteristikama oba modela
Decembar 2012.
Copyright (C) 2012 by Nikola Milutinović, Petar Mitrović
6
Principi dizajna
Razlika pojmova?


Logic Board
Motherboard
BIOS i EFI

NVRAM
 Non Voltile RAM

PRAM
 Parameter RAM

SMC
 System Management Controler
 SMU
 PNU
Decembar 2012.
Copyright (C) 2012 by Nikola Milutinović, Petar Mitrović
7
Principi dizajna
BIOS i EFI






BIOS je ogranicen na 16bitnu mašinsku reč i 1Mb
adresibilnog prostora
EFI ima mogućnost rada i sa 32bitnim i 64bitnim rečima
64bit UEFI long mode
Uparivanje po veličinama
Samo little endian
MBR i GPT
Decembar 2012.
Copyright (C) 2012 by Nikola Milutinović, Petar Mitrović
8
Upravljanje procesima
OS X je multi user, multitasking i multiprocess
operativni sistem
Nasleđen je UNIX stil: fork() za kreiranje novog
procesa nad istim kodom i exec() za pokretanje
novog programa unutar istog procesa
Napravljeno je mnogo neuspelih pokušaja po
pitanju upravljanja procesima, da bi se sve završilo
ovim što imamo danas – UNIX-oliko upravljanje
procesima
Decembar 2012.
Copyright (C) 2012 by Nikola Milutinović, Petar Mitrović
9
Upravljanje procesima
Sistemski procesi u OS X su jako nezavisni; samo
mali broj njih se oslanja na druge
Zato se većina procesa može gasiti i ponovo
pokretati bez ikakve štete
Postoji Activity Monitor pomoću kojeg se može
pratiti organizacija procesa u sistemu (odgovara
Task Manager-u na Windows-u)
Decembar 2012.
Copyright (C) 2012 by Nikola Milutinović, Petar Mitrović
10
Upravljanje procesima
Svi sistemski procesi pokreću se od strane root
korisnika (sam sistem)
Prvo se pokreće “launchd” proces sistema koji
pokreće sve ostale
Svi korisnički procesi pokreću se pod tzv.
“kišobranom” launchd procesa jednog korisnika,
koji je nešto manji od launchd procesa root
korisnika
Svaki proces nasleđuje prava pristupa korisnika
koji ga je pokrenuo
Decembar 2012.
Copyright (C) 2012 by Nikola Milutinović, Petar Mitrović
11
Upravljanje procesima
Identifikacija procesa
PID (Process ID): jedinstveni identifikator procesa koji
se koristi kao argument za sve sistemske pozive (na
primer “kill”); manji PID označava značajniji proces;
kernel ima PID=0, launchd sistemski proces ima PID=1;
rizično je nasilno gasiti procese koji imaju mali PID,
ostali se smeju gasiti gotovo uvek
Process name: ime procesa koje se koristi u
aplikacijama
User: korisnik koji je kreirao proces
Decembar 2012.
Copyright (C) 2012 by Nikola Milutinović, Petar Mitrović
12
Upravljanje procesima
3 stanja



Ready
Stopped
Running
Mach niti – kernel level thread




pthread
NS thread
Carbon MP
Cooperative
Decembar 2012.
Copyright (C) 2012 by Nikola Milutinović, Petar Mitrović
13
Upravljanje procesima
4 načina kreiranja niti:
POSIX (pthread)
NSThread (Cocoa class)
Korišćenjem Carbon Library MultiProcessor Service
Korišćenjem Carbon Thread Manager-a
Preemptive scheduled niti
Skalabilne niti za višeprocesorsko upravljanje
Cena kreiranja niti:
kernel strukture – 1KB
stek – 512KB za sekundarne niti, 8MB za sistemske niti
vreme kreiranja – 90 mikrosekundi
Decembar 2012.
Copyright (C) 2012 by Nikola Milutinović, Petar Mitrović
14
Upravljanje procesima
Prednost izvođenja iz Mach thread
Synch token (Mach message)

Carbon Thread Manager
Raspoređivanje



Thread Standard Policy
Thread Extended Policy
Thread Precedance Policy
Mach poruke
Kernel ne preuzima svu odgovornost pri raspodeli
Decembar 2012.
Copyright (C) 2012 by Nikola Milutinović, Petar Mitrović
15
Upravljanje procesima
POSIX Thread Library

Metode za rukovanje lightweight procesima
 Pokretanje niti, uništavanje niti nakon završetka
 Prikupljenje niti u pool
 Rukovanje nivoima prioriteta pojedinih niti


Metode i strukture podataka za rukovanje mutex
strukturama
Metode za rukovanje interakcijama niti i glavnog
procesa
Decembar 2012.
Copyright (C) 2012 by Nikola Milutinović, Petar Mitrović
16
Upravljanje procesima
Cocoa thread library

Cocoa je Apple –ov API
Zašto NSThread class?


POSIX biblioteka nam daje uspešan i standardan način
kreiranja i upotrebe niti
Prilično siromašna biblioteka kada je u pitanju rukovanje
Cocoa objektima
Decembar 2012.
Copyright (C) 2012 by Nikola Milutinović, Petar Mitrović
17
Upravljanje procesima
Mac OS X koristi standardne brojačke semafore
kada je u pitanju međusobno isključenje
Pri kreiranju, semaforu se dodeljuje proces

Taj proces je zadužen za uništavanje semafora
3 vrste tehnike:


FIFO
Fixed Priority
 Raspoređuje niti u redu čekanja prema prioritetu

Prepost (condition)
 Zabranjuje inkrementiranje pri praznom redu za čekanje
Decembar 2012.
Copyright (C) 2012 by Nikola Milutinović, Petar Mitrović
18
Upravljanje procesima
Mac OS X koristi lock-ove

Spinlocks
 Preporučljivo korišćenje samo kada je nemoguće koristiti mutex


Mutex locks
Read/write locks
Decembar 2012.
Copyright (C) 2012 by Nikola Milutinović, Petar Mitrović
19
Upravljanje memorijom - Alokacija
OS X koristi Automatic Memory Allocation, i za
svaku aplikaciju odvaja tačno onoliko memorije
koliko joj je potrebno
Memorija se deli na:
wired – informacije koje se nikad ne prebacuju na disk
active – informacije u RAM memoriji koje su skoro
korišćene
inactive – informacije koje su i dalje u RAM-u, iako nisu
skoro korišćene
used – ukupna količina RAM memorije koja je u
upotrebi
free – količina RAM memorije koja se ne koristi
Decembar 2012.
Copyright (C) 2012 by Nikola Milutinović, Petar Mitrović
20
Upravljanje memorijom - VM
OS X koristi segmentno-straničnu organizaciju
virtuelne memorije
4GB adresnog prostora za 32-bitne procese
18EB adresnog prostora za 64-bitne procese
Veličina stranice je 4KB
Sistemske stranice su iste veličine kao hardverske
stranice
Organizacija virtuelne memorije je vrlo slična onoj
u UNIX-u
Decembar 2012.
Copyright (C) 2012 by Nikola Milutinović, Petar Mitrović
21
Upravljanje memorijom - VM
Svaka stranica ima prava pristupa i nasledstvo
(koje može biti shared, copy i none)
shared – proces dete deli adresni prostor sa procesom
roditeljem
copy – proces dete kopira adresni prostor procesa
roditelja tehnikom copy-on-write
none – stranica procesa deteta se ne alocira
Učitavanje stranica vrši se na zahtev
Tabele stranica ne održavaju se za sve regione,
već samo za one koji su validni, jer bi bilo
potrebno oko 1MB po tabeli stranica, što je
neprihvatljivo
Decembar 2012.
Copyright (C) 2012 by Nikola Milutinović, Petar Mitrović
22
Upravljanje memorijom - VM
Radi sprečavanja thrashing-a, OS X vrši detekciju
radnog skupa stranica
predviđanje i učitavanje više stranica unapred – jedan
veliki zahtev pager-u
radni skup se čuva na disku
jedna od 10 stvari koje čine OS X izuzetno brzim
Algoritam zamene stranica
Modifikovani FIFO algoritam
Second Chance algoritam
Decembar 2012.
Copyright (C) 2012 by Nikola Milutinović, Petar Mitrović
23
Memorijski preslikani fajlovi
Postoje dve vrste poziva za preslikavanje:
vm_map – preslikavanje fajla
vm_allocate – preslikavanje nepoznate (anonimne)
memorije
Preslikavanje fajlova i nepoznate memorije u isti
adresni prostor dozvoljeno je zbog činjenice da je
adresni prostor na početku “proređen” (sparse)
Inače, aplikacija može ili da mapira fajl u svoj
adresni prostor, ili da mapira objekat nakon što joj
se preda ručka tog objekta
Decembar 2012.
Copyright (C) 2012 by Nikola Milutinović, Petar Mitrović
24
Memorijski preslikani fajlovi
Struktura vm_map_entry služi za čuvanje
informacija o jednom preslikavanju:
is_submap – polje koje određuje da li je map_entry
regularan VM objekat ili submap (kolekcija mapiranja
koja je deo većeg mapiranja)
protection – prava koja trenutno ima proces
max_protection – najveća prava koja se mogu dodeliti
procesu
use_pmap – polje koje određuje da li preslikavanja
treba deliti sa svim procesima, ili samo deliti strukturu, a
ne i stranice
Decembar 2012.
Copyright (C) 2012 by Nikola Milutinović, Petar Mitrović
25
File System
Mac OS X koristi UNIX konvenciju po pitanju fajl
sistema
Prvo pokretanje i root directory
Mac OS X koristi implementaciju virtuelnog fajl
sistema čime omogućava korišćenje većeg broja
različitih fajl sistema.
Mac OS X pruža podršku za razne fajl sisteme:
•
•
•
•
MS-DOS
SMB (Windows filesharing)
AFP (Mac OS filesharing)
UDF (Universal Disk Format)
Decembar 2012.
•
•
•
•
HFS+ (Mac OS Exteded)
UFS (BSD Standard)
NFS (industry standard)
ISO (CD-ROM file system)
Copyright (C) 2012 by Nikola Milutinović, Petar Mitrović
26
File System
Mac OS X implementira i opcije


Type codes
Code creator


Decembar 2012.
Omogućava otvaranje fajla u aplikaciji u kojoj je prvobitno i
kreiran.
Ni jedan drugi sistem ne koristi ove opcije.
Copyright (C) 2012 by Nikola Milutinović, Petar Mitrović
27
File System
Malo više o HFS+ (Mac OS Extended)

HFS – Hierarchical File System
 Mac OS Standard
 Prvobitno dizajniran za upotrebu na floppy diskovima i hard




diskovima
Case preserving – case insensitive
Diskovi podeljeni na sektore (512B)
Sektori se grupišu u alokacione blokove
16b
Decembar 2012.
Copyright (C) 2012 by Nikola Milutinović, Petar Mitrović
28
File System
HFS
HFS+
NTFS
Dužina imena fajla
31b
255 UTF 16code jedinica
255 karaktera
Dužina apsolutne
putanje
neograničeno
neograničeno
Do 255
karaktera
Veličina fajla
2GB
8EB
16EB
Veličina diska
2TB
8EB
16EB
Decembar 2012.
Copyright (C) 2012 by Nikola Milutinović, Petar Mitrović
29
File System
HFS+


Nasledio HFS
Strukture:
 Sadržaj direktorijuma – B tree
 Bitmap file allocation
 Loši blokovi – B tree

Journaling
 Vođenje dnevnika pre commit

Tip particije – Apple Partition
Decembar 2012.
Copyright (C) 2012 by Nikola Milutinović, Petar Mitrović
30
Međuprocesna komunikacija
Komunikacija
portovi – svaki proces dobija određen broj portova koje
koristi za komunikaciju; svaki port ima spisak operacija
koje se na tom portu mogu izvršavati
Razmena poruka
3 sistemska poziva – msg_send (slanje poruke),
msg_receive (primanje poruke), msg_rpc (remote
procedure call); prilično jednostavan i ograničen
mehanizam slanja i primanja poruka
Decembar 2012.
Copyright (C) 2012 by Nikola Milutinović, Petar Mitrović
31
Međuprocesna komunikacija
Novi princip – Apple events
high-level događaji
dozvoljavaju poruke tipa “open document” ili “print file”,
za razliku od low-level događaja koji predstavljaju
poruke tipa “keypress” ili “click”
proces koji šalje Apple event može da odabere da
sačeka odgovor, koji je takođe Apple event
u novijim verzijama dozvoljeni su i Remote Apple events
Apple events formiraju osnovu OS X skripting
jezika - AppleScript
Decembar 2012.
Copyright (C) 2012 by Nikola Milutinović, Petar Mitrović
32