Sunteți pe pagina 1din 90

Introducere

Privire generala asupra SO


(ex.de referinta: Unix, Windows)
Modelul von Neumann(1945)
Are ca scop indrumarea proiectarii unui calculator
digital si se bazeaza pe urmatoarele principii:
1: Reprezentarea atat a programelor cat si a datelor ca
numere binare
2: Memorarea(stocarea) programului si a datelor
aferente lui intr-un dispozitiv electronic numit memoria
calculatorului (care la acel timp era echivalenta cu un set
de comutatoare)
3: Implementarea unei unitati centrale de calcul, care
pe langa calcule sa realizeze operatii de extragere a
instructiunilor si datelor din memorie, decodificarea lor si
executia instructiunilor din program
Structura unui calculator
Memorie
externa

Memorie
interna
*

Unitate de Unitate de Unitate de


intare * control iesire

ALU

CPU
Nivele ierarhice (hardware + software)
Software

Software
Sistem

Software
pentru aplicatii
Software Sistem – nivel 1
Sistem de operare
(subset al sistemului software)
Un set de programe care se situeaza intre
software-ul pentru aplicatii si hardware; software
fundamental care controleaza accesul la toate
resursele hardware si software ale calculatorului
Ex. MS-DOS OS (interfata user in linie de comanda)
Windows OS (Graphical User Interface – GUI)
(Win95/98/ME/NT/2000/XP/CE)
Unix (command-line interface), Linux
Definitii ale SO
Nu există o definiţie unanim recunoscută a unui
SO; iata cateva posibile definiţii:
1. Un SO reprezintă o colecţie organizată de module
SW, extensii ale hardware-ului, ce cuprind rutine de
control al resurselor unui calculator şi furnizează un
mediu pentru execuţia programelor, acţionând ca o
interfaţă între utilizator şi calculator
2. Un SO reprezintă o colecţie de componente software
care, adăugate la sistemul calculator de baza (hard),
oferă suportul necesar pentru implementarea
subsistemelor de programare
Resurse ale unui sistem calculator: procesorul,
memoria, dispozitivele periferice şi utilizatorii
Functii ale SO
Alocator de resurse – necesare programelor
(vazute ca procese de calcul):
 Echitabil – fara a avantaja vreunul dintre procese, in
special un proces fata de altul din aceeasi clasa
 Discriminatoriu – intre diferite clase de procese cu
necesitati de servire diferite
Controler – comanda executia programelor
utilizator si operatiilor dispozitivelor de I/E
Nucleu (Kernel) – singurul program ce ruleaza
permanent, in timpul functionarii calculatorului
Masina virtuala mai usor de inteles si programat
Scopul implementarii unui SO
Furnizarea unor facilităţi utilizatorilor săi:
a) Comenzi de sistem, care automatizează operaţiile
uzuale de lucru cu calculatorul
b) Funcţii de sistem, care sunt puse la dispoziţia
programelor. Aceste funcţii sunt puternic influenţate
de caracteristicile mediului în care se va utiliza SO
Gestiunea maşinii fizice într-o manieră eficientă
Intern, SO acţionează ca un manager al resurselor
sistemului de calcul, prin operaţii ca:
a) Evidenţa stării tuturor resurselor
b) Rezolvarea conflictelor între diverse cereri de acces
concurent la resurse, a.î. să se păstreze integritatea
sistemului
c) Optimizarea performanţelor rezultate
Multiplexarea resurselor
Managementul resurselor include multiplexarea
(partajarea) resurselor în timp şi în spaţiu
 Atunci când o resursă este multiplexată în timp,
programe diferite sau utilizatori diferiţi o utilizează pe
rând. Exemple de resurse multiplexate în timp:
procesorul, imprimanta
 În cazul unei resurse multiplexate în spaţiu, fiecăreia
dintre entităţile care o utilizează i se alocă una sau
mai multe părţi din resursa respectivă. Ex. de resurse
multiplexate în spaţiu: memoria internă, discul
Componentele unui SO (1)
Pot fi grupate pe baza functiei si i/e si sunt cele pt.
(a) gestiunea proceselor, ce pp. ca activităţi:
 crearea şi distrugerea proceselor
 suspendarea şi reluarea execuţiei proceselor
 asigurarea unor mecanisme pentru sincronizarea proceselor
 asigurarea unor mecanisme pentru comunicaţii între procese
 asigurarea unor mecanisme pentru tratarea inter-blocajului.
(b) gestiunea memoriei principale, ce pp:
 ţinerea evidenţei zonelor de memorie libere şi alocate şi
respectiv căror procese sunt alocate,
 luarea deciziei privind procesele cărora li se alocă memorie când
aceasta devine disponibilă,
 alocarea şi dealocarea de spaţiu de memorie
(c) gestiunea memoriei secundare
Componentele unui SO (2)
(d) gestiunea sistemului de I/O
 are ca obiectiv controlul unui spectru larg de dispozitive
periferice şi respectiv izolarea particularităţilor HW
 Ex. UNIX: izolarea particularităţilor driverelor fizice se face prin
utilizarea unui sistem de buffere cache, utilizarea unui driver
general pentru dispozitivele periferice şi definirea unor drivere
particulare pentru fiecare dispozitiv periferic
(e) gestiunea fişierelor, ce pp.
 crearea şi ştergerea fişierelor şi directoarelor
 furnizarea unor primitive pentru lucrul cu fişiere şi directoare
 alocarea fişierelor pe dispozitivele de memorie externă
 asigurarea protecţiei şi securităţii fişierelor
 gestionarea automată a unor copii de siguranţă
Componentele unui SO (3)
(f) sistemul de protecţie a accesului la resurse
 trebuie să ofere un mecanism necesar pentru a controla accesul
programelor, proceselor sau utilizatorilor la resursele sistemului
(g) gestiunea legăturii cu reţeaua, ce pp.
 oferirea suportului necesar pentru accesul la resursele partajate
 ascunderea detaliilor legate de topologia fizică a reţelei
(h) sistemul de interpretare a comenzilor – se ofera:
 Unul sau mai multe interpretoare de comenzi.
 Un astfel de program este denumit adesea shell (la SO din familia
UNIX) sau interpretor linie de comandă (DOS, Windows, etc.)
 El este folosit pe post de interfaţă cu utilizatorul
 Poate fi inclus în nucleu sau poate fi un program special
 Instrucţiuni de comandă, furnizate în mod text sau, în SO
moderne, pot beneficia de o interfaţă grafică
Terminologie. Concepte de baza in SO
Program
Proces
Fir de executie (thread)
Memorie
Sistem de fisiere
Apeluri sistem (functii)
Interpretor de comenzi (shell)
Nucleu (kernel)
Program
Dpdv SO:
 Colectie de instructiuni si date, tinute intr-un fisier pe disc
si incarcate in memorie in vederea executiei
 Fisierul este marcat ca executabil
 Structura (continutul) fisierului respecta regulile de
aranjare cunoscute de kernel
Tipuri de programe:
 Sursa - dispuse in fisiere text
 Obiect – translatia programelor sursa in limbajul masinii
 Executabile – codul complet de iesire al unui linker/ loader,
incluzand intrarile din biblioteci
Proces
Imagine a unui program in executie, creata de kernel
 “context” in care se executa un program
Compus din 3 segmente, logic (nu si fizic) contigue:
1. Segment de instructiuni Spatiul de adresare
2. Segment de date utilizator
3. Segment de date sistem
 Include atribute precum directorul curent, descriptorii
fisierelor deschise, timpi CPU acumulati etc.
 Aceste informatii sunt in afara spatiului de adresare
Procese (cont.)
Programul “initializeaza” primele doua segmente
(Kernel-ul) SO “initializeaza” ultimul segment
 Tabelele proces – mentin informatii despre fiecare proces:
cod + date + stiva + PC + SP + registrii +...
 Un proces poate fi oprit si apoi repornit de SO
Procesele pot achizitiona resurse (memorie, fisiere
deschise) “neprevazute” prin program
Procesele sunt identificate in mod unic de SO ( uid,
gid), se pot crea si distruge dinamic ( relatia parinte-
copii), si pot comunica (prin mesaje)
Thread-uri
Sunt fluxuri de executie (separate) ale instructiunilor
programului
In SO moderne sunt fire de executie ce pot fi
separat considerate pentru a asigura concurenta
intraproces
 Un proces poate avea multiple threaduri paralele

 Fiecare thread se executa secvential


Memoria
Ierarhizarea memoriei se bazeaza pe capacitatea de
stocare, viteza si cost
Nivele: registri/cache/memorie interna/externa/...
Concepte avansate: memorie virtuala, disk cache etc.
Baza definirii memoriei virtuale
= separarea de catre SO Registri
 Memorie fizica Cache
 Memorie logica
Memorie int.

Hard Disk

Medii removable
Administrarea memoriei
Serviciu foarte important al SO, ce include:
1. Izolarea proceselor independente (a.i. segmentele de cod si
date sa nu interfere)
2. Alocarea automata a memoriei pentru procesele nou create
 Programatorilor li se poate permite un anumit control
3. Suportul de programare modulara
 Programatorii trebuie sa poata defini module de program
 Programatorii trebuie sa poata crea/ distruge/ altera dinamic
marimea modulelor
4. Controlul accesului si protectia
 Programele pot coopera si comunica prin memoria partajata
5. Memorarea persistenta (long-term storage)
 In general se implementeaza prin sistemul de fisiere
Sisteme de fisiere
Fisierul = mijloc de stocare a datelor in memorie
 Serviciile oferite de SO ascund specificul lucrului cu fisiere
pe disc/banda/etc. si mecanismele de protectie a fisierelor
Directoarele, organizate ierarhic (arborescent) permit
gruparea fisierelor
 Un fisier este adresat prin nume si cale
 Exista un director radacina (root)
Dispozitivele de I/E sunt tratate ca fisiere speciale
 Orientate pe blocuri
 Orientate pe caractere
Pseudofisiere - pentru conectarea a 2 procese se fol.
conducta (pipe)
Apeluri sistem (API)
Se aplica pentru diverse obiecte software din SO, ca
procesele si fisierele
 Sunt invocate de programele utilizator pentru a comunica
cu nucleul SO, cerand un serviciu
 Acceseaza rutine ale nucleului ce executa efectiv cererea
Exista rutine de biblioteca ce corespund fiecarui apel
 Parametri de apel sunt pastrati de registrii masina
 Activarea SO se face printr-o instructiune de derutare
(trap), de fapt un apel de procedura protejat
 Detaliile de derutare sunt ascunse si fac apelul asemanator
cu unul de procedura obisnuit
Interpretere de comenzi (Shell)
Sunt programe utilizator si nu componente ale
nucleului SO, ce asigura:
 Interfata cu utilizatorul SO
 Redirectarea I/E
 Executia comenzilor in background: pentru cele mai
multe comenzi, shell-ul se ramifica (fork) si procesul
nou creat executa comanda asociata cu primul cuvant
al liniei de comanda (exec)
 Cuvintele ramase in linia de comanda sunt tratate ca
parametri
Comenzi shell
Tipuri de comenzi:
1. Fisiere executabile
2. Scripturi
3. Comenzi interne (“built-in shell commands”)
Comenzile shell ≠ apelurile sistem, ce asigura
interfata intre programele utilizator si SO (API)
 Functiile API sunt seturi de instructiuni extinse
asigurate de SO programelor utilizator
Nucleul (kernel)
Singura componenta SO permanent rezidenta in
memoria int.
Serviciile asigurate sunt transparente, de ex.
Recunoasterea distinctiei intre un fisier obisnuit si un
dispozitiv este ascunsa proceselor utilizator
Formatul intern al datelor unui fisier este ascuns
proceselor utilizator, se returneaza un stream de
bytes neformatat
Un shell poate citi intrari de la terminal, lansa
dinamic procesele, sincroniza executia proceselor,
crea pipe-uri, redirecta I/E etc. – comenzile apeleaza
functii (servicii) ale nucleului
Servicii nucleu
Servicii pentru alocarea memoriei:
Protectia spatiului de adrese al unui proces
Partajarea in anumite conditii a memoriei intre
procese
Eliberarea memoriei in situatii critice, prin scrierea
temporara a unui proces in memoria secundara, sau
in dispozitive de swap
Obs. Implementarea aceluiasi SO face distinctie intre
scrierea in dispozitivul de swap a unui intreg proces
(swapping system) sau doar a unor pagini de memorie
(paging system)
Translatarea adreselor generate de compilator in
adrese fizice
Servicii nucleu (cont.)
Servicii pentru executia proceselor:
Planificarea echitabila (“fair”) si alocarea resurselor
Controlul: creare/distrugere/suspendare/reluare
Comunicarea
Servicii pentru fisiere:
Alocarea memoriei secundare pentru stocarea si
regasirea eficienta a datelor in fisierele utilizator
Evidenta spatiului nealocat
Structurarea sistemului de fisiere intr-o maniera clara
Protectia fisierelor utilizator
Arhitectura nucleului
Dpdv al proiectarii SO, structura poate fi privita
ca o ierarhie de nivele
 Fiecare nivel executa un subset de functii
 Un nivel se bazeaza pe cel aflat “sub” el pentru a
executa unele functii primitive (elementare)
O astfel de abordare permite ca problema
proiectarii SO sa fie descompusa in mai multe
subprobleme, mai usor de rezolvat
Ierarhia nivelelor SO
Nivel Nume Obiecte Exemple de operatii
13 Shell mediu de programare instructiuni in limbaj shell
utilizator
12 Procese User procese quit, kill, suspend, resume

11 Director directoare create, destroy, attach,


detach, search, list
10 Dispozitiv dispozitive externe open, close,
(printer, display, read, write
keyboard)
9 Sistem de fisiere Fisiere create, destroy, open, close,
read, write
8 Comunicatii Pipe-uri create, destroy, open. close,
read, write
Ierarhia nivelelor (cont.)
Nivel Nume Obiecte Exemple de operatii
7 Mem.virtuala Segmente, pagini read, write, fetch
6 Mem.locala Blocuri de date, read, write, allocate,
free
secundara canale de dispozitiv
5 Proces primitiv Procese primitive, suspend, resume,
wait, signal
semafoare
4 Intreruperi Proceduri de tratare a invoke, mask,
unmask, retry
intreruperilor
3 Procedura Proceduri, stive apel mark stack, call,
return
2 Set instructiuni Stiva de evaluare, load, store, add,
subtract
Functiile SO
Alocarea resurselor
Abstractizarea (ascunderea) unor
detalii de arhitectura hardware
Functii
Constructia masinii virtuale mai nucleu
usor de inteles si programat (kernel)
Controlul executiei programelor si
operatiilor dispozitivelor de I/E

Interfata cu utilizatorul
Nucleul
Intr-o definitie clasica: singura componenta a SO
permanent rezidenta in memoria interna
Sau: toate componentele SO aflate sub interfata
cu utilizatorul si deasupra masinii fizice (hardware)
Nucleul grupeaza functiile SO cele mai uzuale si
mai des apelate
de ex. functiile sistem necesare pentru incarcarea
unui program in memorie si executia sa
Un mecanism special (“apeluri sistem”) permite
ca aplicatiile sa utilizeze serviciile nucleului
Servicii nucleu (1)
Programele fiind procese (in SO), se asigura servicii:
pentru executia proceselor:
Planificarea echitabila (“fair”) si alocarea resurselor
Controlul: creare/distrugere/suspendare/reluare
Comunicarea intre procese (IPC)
pentru detectia si controlul erorilor la executie:
detectia erorilor CPU si memoriei
detectia si controlul erorilor dispozitivelor de I/E
detectia si controlul erorilor in programele utilizator
Servicii nucleu (2)
pentru alocarea memoriei:
Protectia spatiului de adrese al unui proces
Partajarea (in anumite conditii) a memoriei intre
procese
Eliberarea memoriei in situatii critice, prin scrierea
temporara a unui proces in memoria secundara, sau
in dispozitive de swap (se face distinctie intre SO cu
sistem de swapping sau paging)
Translatarea adreselor generate de compilator in
adrese fizice
Servicii nucleu (3)
pentru fisiere:
Alocarea memoriei secundare pentru stocarea si
regasirea eficienta a datelor in fisierele utilizator
Evidenta spatiului nealocat
Structurarea sistemului de fisiere intr-o maniera clara
Protectia fisierelor utilizator
 Se asigura servicii transparente utilizatorului
Recunoasterea distinctiei intre un fisier obisnuit si un
dispozitiv
Formatul intern al datelor unui fisier (se returneaza
un stream de bytes neformatat)
Mecanisme de protectie nucleu (1)
Pentru diferite tipuri de procese nucleul SO trebuie sa
poata schimba nivelele de protectie (modul de executie)
Un nivel de protectie scazut este acela in care anumite
servicii nucleu cu acces direct la resursele hardware sunt
invalidate, de exemplu:
aplicatiile nu pot citi direct de pe HDD; astfel, SO garanteaza:
 securitatea executiei
 protectia fisierelor
O schema de protectie se bazeaza pe implementarea a
doua moduri de executie a proceselor (in procesor):
kernel mode
user mode
Mecanisme de protectie nucleu (2)
Astfel se izoleaza efectele unor implementari hardware-
specifice
Pot fi implementate complementar si alte mecanisme ce
folosesc caracteristici specifice ale procesorului
Schimbarea nivelelor de protectie are un cost major, de
aceea se evita in PSO traversarile ne-necesare de catre
procese a frontierelor intre nivelele de protectie
Exista SO in a caror proiectare nu s-au utilizat nivelele
de protectie procesor (ex. CP/M, MS-DOS, Windows 3.1)
- in aceste cazuri protectia se realizeaza prin:
verificarea codului inaintea executiei
interpretarea codului si verificare amanuntita in executie
Tipuri de nuclee SO
1. Monolitice
2. Stratificate (eng. layered)
3. Modularizate
4. Micro-kernele
5. Masina virtuala
6. Exo-kernele
Kernele “compacte”
Nuclee monolitice – modalitatea traditionala de
design, adecvata pentru SO complexe (ex. UNIX)
Codul de abstractizare, control si administrare
resurse este plasat in totalitate in kernel
Codul este apoi translatat pe fiecare proces
Altfel spus, intregul SO este 1! fisier “a.out” ce se
executa in mod kernel (A.Tanenbaum)
Nuclee stratificate si modularizate –proiectare
moderna, ce permite reducerea complexitatii
Masini virtuale (VM)
Dpdv istoric, utile in urmatoarele cazuri:
1. VM este o copie exacta a hardului - pt. sisteme
cu multiprogramare, ex. VM/370 (IBM)
2. VM emuleaza un hard anterior, dar pentru care
exista mult soft (ex. modul 8086 virtual in care
ruleaza progr. MS-DOS pe un μproc pe 32 biti)
3. VM este o arhitectura usor de interpretat,
pentru care se poate genera si transporta un
cod intermediar (ex. Java VM)
Alte avantaje ale VM:
Verificarea programelor dpdv al securitatii
Executia lor in medii protejate
Micro-kernele
Sunt modulare ca design
Mare parte din codul de abstractizare, control si
administrare resurse este mutat din nucleu
Micro-kernelul implementeaza doar:
controlul proceselor (low-level),
comunicarea prin mesaje,
tratarea intreruperilor si (posibil) a I/E
Componentele SO sunt executate ca procese separate,
mai ales in afara nucleului
Comunicarea se face prin transfer de mesaje – de
obicei intre aplicatie (client) si componenta care
furnizeaza un serviciu (server)
 Exemple: Mach, QNX, Minix, Win*
Exo-kernele
La fel ca micronucleele, sunt modulare si muta
mare parte din codul de abstractizare, control
si administrare resurse din nucleu
Specific este faptul ca mutarea se face nu in
programe externe, ci in biblioteci partajate ce
se leaga cu programele de aplicatie
Mecanismul de implementare a functiilor SO:
accesele fizice la hardware raman in nucleu
Strategia implementarii: tot ce tine de aparenta si
performanta SO trece in libOS
Beneficii ale proiectarii SO cu micro-
si exo-kernele
- SO este mai usor de extins
- SO este mai usor de portat pe noi arhitecturi
- SO este mai fiabil (mai putin cod se executa
in mod kernel) si mai sigur
 Experimentele arata performante bune ale exo-
kernelelor pentru aplicatii critice, fiindca un SO
poate fi (re)configurat si aplicatia legata diferit
folosind diverse strategii de “disk caching”
optimizand utilizarea sistemului de fisiere
Programe SYSGEN
In general SO proiectate pentru mai multe tipuri
de arhitecturi trebuie configurate
Un program SYSGEN poate obtine informatii
privind configuratia hardware specifica
Terminologie:
 Boot – pornirea unui sistem calculator prin incarcarea
kernel-ului SO
 Bootstrap program – cod stocat in ROM capabil sa
localizeze kernel-ul, sa-l incarce in memorie si sa
initieze executia sa
Studiu de caz 1-arhitectura nucleu:
Windows NT/2K/XP
Arhitectura modulara, ce asigura o flexibilitate
deosebita
Se executa pe o mare varietate de platforme
Exploateaza arhitectura μproc. pe 32 biti
Suporta aplicatii scrise pentru diferite alte SO
Asigura multitasking complet intr-un mediu
single-user
Permite executia Client/Server
Executivul
Structura: “modified microkernel architecture”
Spre deosebire de un microkernel pur, multe
dintre functiile sistem din afara sa ruleaza in
modul kernel (din ratiuni de performanta)
Executivul contine: manageri de obiecte,
procese, I/E, memorie, facilitati de apel pentru
proceduri locale, monitor de referinta a
securitatii
Gestioneaza: planificarea thread-urilor,
comutarea de procese, tratarea exceptiilor si
intreruperilor, sincronizarea multiprocesor
Interfete
Codul propriu microkernel nu ruleaza in thread-
uri separate
Ca si in cazul Unix, este izolat de programele
utilizator, dar aplicatiile pot accesa unul din
subsistemele protejate
Orice subsistem asigura doua interfete de
programare:
1. Win32 (pentru utilizatori traditionali Windows)
2. POSIX (faciliteaza portarea aplicatiilor UNIX)
Subsistemele si serviciile acceseaza executivul
folosind serviciile sistem
Functii sistem
Fiecare functie sistem este administrata de o
singura componenta a SO
Restul SO si toate aplicatiile au acces la functie
prin intermediul componentei responsabile,
folosind o interfata standardizata
Date sistem cheie pot fi accesibile doar prin
apelul functiei adecvate
In principiu, orice modul poate fi indepartat,
upgradat sau inlocuit fara a rescrie intregul
sistem sau API
Structura nucleului NT/2000/XP
Sunt evidente cel putin 3 straturi (layere):
Abstractizare hardware (HAL - hardware
abstraction layer)
 Izoleaza SO de diferentele hardware specifice unei
platforme
Microkernel
 Contine cele mai folosite componente ale SO
(componente fundamentale)
Drivere de dispozitiv
 Translateaza apelurile de functii user I/E in cereri
hardware-specifice de dispozitiv de I/E
Componentele executivului W2K
I/O manager
Object manager
Security reference monitor
Process/thread manager
Facilitate LPC (local procedure call)
Virtual memory manager
Cache manager
Module Windows/grafica
Procese user si thread-uri
Exista ca procese:
 Procese speciale sistem, de suport (Ex: logon
process, session manager)
 Procese server
 Subsisteme de mediu
 Aplicatii utilizator
Exista paralelism la nivelul threadurilor:
 diferite rutine se pot executa simultan pe diferite
procesoare
 mai multe threaduri ale aceluiasi proces se pot
executa simultan pe diferite procesoare
 procesele server pot utiliza mai multe threaduri si
partaja date si resurse
Arhitectura Client/Server
Simplifica structura si proiectarea nucleului
Ofera posibilitatea de construire a dif. API
Imbunatateste fiabilitatea SO
 Fiecare serviciu ruleaza ca proces separat in propria
sa partitie de memorie
 Clientii nu pot accesa direct hardware-ul
Asigura o modalitate unificata pentru aplicatii sa
comunice (prin LPC)
Permite implementarea unor modalitati de calcul
distribuit
Studiu de caz 2: UNIX
Arhitectura
sistemelor
UNIX
(cf. M.Bach –
The Design of
the UNIX OS)
Alte referinte:
A. Tanenbaum
– SO moderne,
ed. a II-a,
cap.10
Istoricul sistemelor UNIX
UNIX: 1969 Thompson & Ritchie AT&T Bell Labs
BSD: 1978 Berkeley Software Distribution.
Sist.comerciale: Sun/ Solaris, HP, IBM, SGI,
DEC, SCO
GNU: 1984, Richard Stallman, FreeSoftFound.
POSIX: 1986, IEEE Portable Operating System
unIX.
Minix: 1987 Andrew Tannenbaum
SVR4: 1989 AT&T and Sun; 4.4BSD
Linux: 1991, Linus Torvalds - Intel 80x86, Open
Source: GPL
System V Release 4 (SVR4)
Dezvoltat in cooperare de AT&T si Sun Microsystems, si
lumea academica, pentru a asigura o platforma uniforma
(standard) pentru implementarile comerciale
Incorporeaza cele mai multe caracteristici ale sistemelor
UNIX, intr-o maniera integrata dar si viabila comercial
Combina facilitati din SVR3, 4.3BSD, MS Xenix System V,
SunOS, ca o rescriere radicala a nucleului System V
Facilitatile noi includ:
 suport de procesare in timp real
 clase de planificare a proceselor
 structuri de date alocate dinamic
 managementul memoriei virtuale
 sisteme de fisiere virtuale
 kernel preemptiv
4.4BSD
Seria Berkeley Software Distribution (BSD) UNIX a jucat
un rol major in dezvoltarea teoriei proiectarii SO
Multe imbunatatiri ale SO UNIX au aparut in versiuni BSD
 introducerea socket-urilor
 integrarea lor cu descriptorii de fisier (ce a permis accesul datelor
in retea la fel de usor ca si cel de pe discul propriu)
Sistemele 4.xBSD sunt larg raspandite in zona academica
dar si ca baza a unor produse UNIX comerciale
4.4BSD e versiunea finala a BSD, upgrade major 4.3BSD
Include:
 un nou sistem de memorie virtuala
 schimbari in structura nucleului, etc.
SunOS/ Solaris
SunOS este versiunea UNIX a Sun Microsystems
pentru statii de lucru si servere:
 SunOS 1.0 (bazat pe 4.1BSD, 1982)
 SunOS 2.0 (bazat pe 4.2BSD, 1985) - a inclus:
 un layer VFS (virtual filesystem)
 protocolul NFS (network filesystem)
 SunOS 3.0 (BSD+System V, 1986)
 SunOS 4.0 (4.3BSD, 1989) a introdus:
 un nou sistem de memorie virtuala
 legarea dinamica
 implementarea arhitecturii System V STREAMS I/O
SunOS/ Solaris (cont.)
SunOS 4.1.4 a fost inlocuit in 1994 de Solaris 2
- implementarea Sun pentru UNIX SVR4
 SunOS 4 a fost numit retroactiv Solaris 1
 nucleul Solaris 2+ a fost desemnat SunOS 5
 ultima implementare: Solaris 10, SunOS 5.10
Facilitati avansate in implementarile Solaris:
 nucleu “fully preemptable”, multithreaded
 suport integral pentru SMP
 interfata object-oriented pentru sistemele de fisiere
Nucleul Unix
In implementarea traditionala este monolitic
(dar exista variante, de ex. Minix: micro-kernel)
Fiindca asigura un mare numar de functii pentru
acelasi nivel, se considera ca nucleul Unix este
chiar SO (izolat de utilizatori si aplicatii)
La cel mai inalt nivel, programele utilizator invoca
servicii nucleu (SO) folosind apeluri sistem (functii de
biblioteca)
La nivelul de jos, primitivele nucleului se interfateaza
direct cu hardware-ul
Structura nucleului Unix

(cf.
Silberschatz &
Galvin -
Operating
System
Concepts,
2002)
Nucleul este impartit logic in doua parti:
1. Subsistemul de fisiere, de transfer de date intre memorie si
dispozitivele externe
2. Subsistemul de control al proceselor, pentru comunicarea intre
procese, planificarea proceselor, administrarea memoriei
Structura nucleului 4.4BSD

O structura aproximativa a unui nucleu generic UNIX


(cf. Tanenbaum – Modern Operating Systems, 2001)
Functiile nucleului UNIX
1. Subsistemul de control al proceselor
 Gestiunea proceselor
 Distribuire (dispatch)
 Planificare (scheduling)
 Comunicare intre procese (pipe, socket, signal)
 Gestiunea memoriei
 Memorie interna si virtuala (paginare)
2. Subsistemul de control al fisierelor si disp. I/E:
transfer de date intre memorie si dispozitive
 Sisteme de fisiere pe disc
 Drivere de dispozitive externe (caracter, bloc)
Apeluri sistem pentru gestiunea
proceselor

s este un cod de eroare


pid este un procesID
residual este timpul ramas de la precedenta alarma
Apeluri sistem pentru threaduri
(POSIX)
Crearea primelor procese
UNIX
Un proces in UNIX este o entitate creata de un alt proces
dupa un apel sistem fork
exceptie face procesul 0, creat manual la boot
prin fork in procesul 0
se creeaza procesul 1
(init), ce executa:
 o initializare generala
 apoi una “user-level”
procesul 0 devine
“swapper”
Executia unei comenzi (ls)
Evolutia proceselor
In mare, se executa secvenţa
instrucţiunilor din programul
din care provine procesul
Se poate intretese executia
mai multor procese
Planificarea proceselor
Planificatorul UNIX

Se bazeaza pe
o structura
de coada
multinivel
Comunicarea prin semnale
(POSIX)
Folosirea soclurilor pentru retele
Structuri de memorie pentru
gestiunea proceselor (1)
Tabele de procese
 aici se găsesc atributele proceselor
 mai conţin: pid şi ppid-ul (identificatorul de proces al
părintelui), starea proceselor, timpul în care un
proces este în execuţie, localizarea în memorie
Tabele de memorie
 arată cum e alocată memoria principală şi secundară
(suport al sistemului de fişiere sau folosită pentru
swapping) către procese
 aici se găsesc atributele de protecţie pentru punerea
în comun a resurselor
 conţin informaţii pentru gestiunea memoriei virtuale
Structuri de memorie pentru
gestiunea proceselor (2)
Tabele de periferice
 aici avem reprezentat fiecare periferic
 astfel se cunoaşte dacă un dispozitiv e liber sau
blocat
 se cunoaşte starea operaţiilor de intrare-ieşire
 conţin informaţia de stare şi adresa din memoria
principală implicate în transferul cu un anumit
periferic
Tabele de fişiere
 arată existenţa fişierelor;
 conţin starea curenta a fişierului, atributele
fişierelor, localizarea în memorie
Gestiunea memoriei
Procesul A Procesul B

Distingem:
Spatiul virtual de adresare al procesului A
Memoria fizica
Spatiul virtual de adresare al procesului B
Paginarea

The core map in 4BSD.


Managementul I/E (UNIX, POSIX)

Dispozitivele sunt integrate in sistemele de fisiere, ca


fisiere speciale, bloc sau caracter.
Cu fiecare fisier special e asociat un driver de dispozitiv
ce foloseste numere (major & minor) pentru identificare
Sistemul UNIX de I/E in BSD
Stream-uri in UNIX System V
Sistemul de fisiere UNIX
Cateva directoare importante in majoritatea
sistemelor UNIX
Legaturi simbolice

(a) Inainte de legare (b) Dupa legare


Montarea sistemelor de fisiere

(a) (b)

(a) Inainte de montare (b) Dupa montare


Managementul fisierelor

s este un cod de eroare


fd este un descriptor de fisier
position este un deplasament de fisier
Managementul directoarelor

s este un cod de eroare


dir identifica un stream director
dirent este o intrare director
Planul discului in sistemele
UNIX

Structura i-nodului
Tabele cu descriptori de fisier
Efecte ale operatiilor cu fisiere

Director BSD cu 3 fisiere


Acelasi fisier dupa ce fisierul voluminous a fost sters
Sisteme de fisiere retea (NFS)
Structura pe straturi a NFS
Securitatea in UNIX
Moduri de protectie a fisierelor:
Apeluri sistem pentru protectia
fisierelor

S-ar putea să vă placă și