Sunteți pe pagina 1din 38

SISTEME DE OPERARE PENTRU CALCULATOARE PERSONALE

Capitolul 1. CONCEPTE DE BAZ


1.1. Principii generale
1.1.1. Structura unui calculator digital
Calculatorul numeric (digital) reprezint un sistem de calcul digital format din componente
hardware i software n interaciune i este destinat prelucrrii datelor. Un asemenea sistem se
caracterizeaz prin urmtoarele:
1. Componentele harware sunt realizate cu ajutorul circuitelor electronice, majoritatea fiind
circuite integrate VLSI, care asigur o vitez ridicat n efectuarea operaiilor aritmetice i logice
i fiabilitate n funcionare.
2. Funcioneaz pe baza unui sistem de programe memorat, care au funcii clare. Un program
se mai numete i soft i este format dintr-o succesiune de instruciuni introduse n memoria
calculatorului, instruciuni care sunt extrase din memorie, interpretate i executate.
3. Informaia memorat i prelucrat este informaie discret, fiind codificat astfel nct
mrimile asupra creia opereaz pot lua numai dou valori distincte (0 i 1). O astfel de
informaie se numete informaie binar.
Orice calculator digital actual este format din subsisteme hardware i software inconectate
ntre ele, care, orict de evoluate ar fi, corespund modelului original von Neumann (1945),
modelul de comand dup program. Conform acestui model orice problem trebuie prezentat
calculatorului sub forma unei succesiuni (secvene) de operaii. Calculatorul ateapt un set de
instruciuni (sub forma unei succesiuni de cuvinte de comand) care s-i precizeze ce are de fcut
i care este ordinea n care trebuie s fie fcut.
Modelul von Neumann impune ca un calculator digital s conin 5 medii de procesare a
informaiilor:
1. un mediu de intrare care s asigure preluarea datelor i instruciunilor;
2. un mediu de memorare n care s se stocheze datele i programul aferent;
3. un mediu de prelucrare care realizeaz funciile aritmetice i logice pentru rezolvarea
problemelor;
4. un mediu de control capabil s interpreteze instruciunile extrase din memorie i s
controleze procesul de calcul automat i
5. un mediu de ieire care s permit extragerea rezultatelor.
Astfel a fost gndit o structur de calculator n 5 uniti funcionale corespunztoare celor
5 medii:
1. Unitatea de Intrare IU (Input Unit);
2. Unitatea de Memorie MU (Memory Unit);
3. Unitatea Aritmetico-Logic ALU (Aritmetic and Logic Unit);
4. Unitatea de control UC (Control Unit) i
5. Unitatea de ieire OU (Output Unit).
Aceast stuctur se mai numete i structura n 5 uniti a calculatorului. Unitile sunt
interconectate ntre ele conform unei scheme care s i permit ndeplinirea funciei impuse.
n mod curent se consider unitile de intrare i ieire mpreun ca formnd o singur
unitate, (I/O Unit) iar unitatea Aritmetico-Logic Unitatea de cea de Control formeaz
mpreun unitatea central de prelucrare CPU (Central Processing Unit), procesorul
computerului, deci 3 uniti interconectate.

Mai multe informaii referitoare la structura calculatorului vor fi prezentate la cursul de


Arhitectura calculatoarelor.
Software-ul reprezint unul sau mai multe programe (seturi de instruciuni reprezentate n cod
binar) scrise ntr-o form ce poate fi neleas de un calculator, pe care calculatorul le poate
interpreta i apoi executa pentru a rezolva o anumit sarcin impus de utilizator.
n mod tradiional se consider softul care lucreaz pe un PC este de dou categorii software
de sistem i sofware de aplicaii. Softul de sistem cuprinde sistemul de operare i o serie de
programe indispensabile pentru funcionaarea calculatorului.
Sistemul de operare furnizeaz infrastructura ce controleaz hard-ul computer-ului, astfel ca
aplicaiile soft-ului s funcioneze. Ex Microsoft Windows, Mac OS i sistemele Linux.
Software de aplicaii reprezint soft-ul computer-ului fcut pentru a-i uura munca
utilizatorului n realizarea unei anumite sarcini: de exemplu browsere web, sisteme de gestiune a
unor date, aplicaii pentru proiectare, controlul traficului aeriar, bancar, programe de contabilitate
sau monitorizarea unor procese, aplicaii grafice, sunet, jocuri etc. Aplicaiile se bazeaz pe
sistemul de operare avnd nevoie de anumite servicii (funcii) din partea acestuia.
Structura simpl a unui sistem de calcul este redat n figura de mai jos.

Figura 1.1. Structura simpl a unui sistem de calcul

1.1.2. Structura unui sistem de operare


n mod uzual se consider patru tipuri de software de sistem: sisteme de operare, drivere de
dispozitiv, compilatoare i editoare, prezentate schematic n figura 1.1.
Un sistem de operare SO (Operating System-OS) reprezint un ansamblu de programe care,
dup ce a fost initial incarcat in computer de catre un program de ncrcare (bootstrap
program) gestioneaza echipamentele hardware si software instalate, realiznd interfata ntre
componenta hardware a sistemului de calcul si utilizator, prin intermediul programelor de

aplicatii. Cuprinde ansamblul programelor de control si servicii ce urmareste un sistem de calcul


n executarea sarcinilor sale si asista programele de aplicatii prin intermediul unor functiuni i al
celor care au rolul de utilizare optima a resurselor fizice si logice ale sistemului de calcul si de a
concura la pregatirea, punerea n lucru si coordonarea executiei programelor utilizatorului.
Sistemul de operare reprezinta pentru un calculator, programul care i coordoneaza funciile
interne si asigur mijloacele de control asupra funciilor calculatorului.
Exist multe tipuri de sisteme de operare, complexitatea acestora variaz dup funciile pe care
acesta le furnizeaza sau scopul in care acesta este utilizat. Unele sisteme sunt responsabile pentru
gestionarea informaiilor despre persoane, tranzacii bancare, comunicaii telefonice sau internet,
altele controleaza dispozitive hardware, pentru trafic aerian sau feroviar, procese automatizate n
centrale nucleare, industria energetic sau petrolier etc. Sistemul de operare contine informatii
generale despre dispozitivele ce pot fi conectate la calculator
Driverele de dispozitiv sunt programe ce ofera calculatorului informatii specifice privind un
anumit echipament hardware care se ataeaz computerului. Cand se ataseaza calculatorului un
nou dispozitiv De exemplu imprimanta, scanner, USB, trebuie instalat pe hard-disk driverul
corespunzator dispozitivului. Driverul de dispozitiv este utilizat de sistemul de operare pentru
comunicarea cu noile echipamente.
Editoarele pot fi editoare video, foto, pentru muzic, pentru traducerea unui text sau
corectarea erorilor de redactare i alte numeroase.
Compilatoarele traduc textul unui program scris ntr-un anumit limbaj de programare "surs"
ntr-un alt limbaj de calculator, "int" adecvat pentru procesarea de ctre alte programe.
Programul surs se mai numete cod surs iar programul int cod obiect. Compilatoarele sunt
programe executabile care transform un program dintr-un limbaj high level ntr-un limbaj low
level.
1.1.3 Limbaje de programare
Limbajele de programare sunt utilizate pentru a scrie programe care sunt apoi convertite in
limbaj masina, cod binar ce poate fi executat de catre calculator. Pentru rezolvarea unei probleme
cu ajutorul calculatorului, este necesar descrierea rezolvrii printr-o succesiune de operaii care
constituie algoritmul de rezolvare. Descrierea se poate realiza, la nceput, n limbaj natural,
transpunndu-se apoi ntr-un limbaj artificial, numit limbaj de programare.
Limbajul de programare reprezint un set de instruciuni, mpreun cu regulile de organizare
ale acestora ntr-un program. Totalitatea simbolurilor i cuvintelor folosite n limbajul respectiv
constituie vocabularul limbajului. Totalitatea regulilor de scriere ale instruciunilor reprezint
sintaxa limbajului, iar totalitatea regulilor prin care se asociaz o semnificaie instruciunilor
reprezint semantica limbajului.
Calculatorul poate executa numai instruciuni exprimate intern sub forma unor iruri de cifre
binare. Programele n care instruciunile sunt scrise sub aceast form se numesc programe n
limbaj main. Limbajul main este caracteristic fiecrui tip de calculator. Codul ASCII
(American Standard Code for Information Intercharching) reprezint un sistem de codificare al
caracterelor text n limbaj recunoscut de computer. Cuprinde 128 de caractere, litere mari i mici,
cifre, semne de punctuaie i coduri de control.

Scrierea i introducerea programelor sub aceast form este dificil. Pentru simplificarea
scrierii programelor, au fost create limbaje n care fiecrui cod de instruciune i s-a ataat un
nume mnemonic (care poate fi memorat prin asociere). Acest mod de reprezentare a
instruciunilor main se numete limbaj simbolic sau limbaj de asamblare. Acest limbaj permite
utilizatorului s realizeze codificri simbolice ale instruciunilor i ale adreselor de memorie.
Pentru a se executa un program n limbaj de asamblare, acesta trebuie translatat n prealabil n
limbaj main, printr-un proces numit asamblare. Programul care se translateaz se numete
program surs, iar cel rezultat n urma translatrii se numete program obiect. Operaia de
translatare a programului surs n program obiect este executat de un program special numit
asamblor. O instruciune n limbaj de asamblare corespunde unei instruciuni n limbaj main,
deosebirea dintre ele constnd numai n modul de reprezentare. Deci, fiecare instruciune n
limbaj de asamblare este translatat ntr-o singur instruciune n limbaj main.
Un limbaj de asamblare este specific unui calculator, astfel nct trebuie s se cunoasc
instruciunile i organizarea intern a acelui calculator. Pentru aceasta s-au elaborat limbaje
pentru programe care se pot executa pe orice calculator, limbaje orientate pe probleme sau
limbaje de nivel nalt. Limbajele de asamblare, sunt limbaje de nivel sczut. Limbajele de
programare permit utilizatorilor sa introduca instructiuni mai inteligibile decat limbajul masina.
Cu ct comenzile unui limbaj seamn mai mult cu un limbaj natural (de ex. cu limba englez),
cu att limbajul respectiv este mai usor de invatat si devine mai popular. Exemple de limbaje de
programare: C++, Jawa, PHP, Lisp, Delphi etc. Limbaje de nivel nalt sunt Pascal, C, BASIC,
FORTRAN, LISP, COBOL, PROLOG etc.

Unei instruciuni ntr-un limbaj de nivel nalt i corespunde o succesiune de instruciuni n


limbaj main. Translatarea n limbajul main se poate realiza cu ajutorul unui compilator, care
genereaz din programul surs un program executabil, acesta fiind executat dup ce ntregul
program a fost compilat.
O alt posibilitate este utilizarea unui interpretor care translateaz fiecare instruciune n
limbajul de nivel nalt ntr-o succesiune de instruciuni main, acestea fiind executate imediat. n
acest caz nu se genereaz un program executabil. Viteza de execuie este ns redus, deoarece
fiecare instruciune trebuie interpretat chiar dac ea este executat n mod repetat.
Uneori este mai convenabil s se considere c exist un calculator ipotetic sau o main
virtual, a crui limbaj main este un anumit limbaj de nivel nalt. Un asemenea calculator
execut direct instruciunile limbajului de nivel nalt, fr a fi necesar utilizarea unui translator
(compilator) sau interpretor. Chiar dac implementarea unei maini virtuale care s lucreze direct
cu un limbaj de nivel nalt ar fi prea costisitoare, se pot scrie programe pentru aceast main,
deoarece aceste programe pot fi translatate sau interpretate cu un program care poate fi executat
direct de calculatorul existent.
1.1.4. Software specializat
Sistemul de operare utilizeaz o serie de programele utilitare pentru a controla si a utiliza
echipamentele hardware sau pentru a gestiona fisierele de date si programele. Unele dintre aceste
utilitare sunt incluse ca parti ale sistemului de operare. Majoritatea utilitarelor trateaza operaiile
de stocare si gestionare a fisierelor. Utilitarele sunt folosite pentru o gama larga de operaii, cum
ar fi:
a. formatarea unui disk in vederea stocarii de date si programe;
b. gestionarea datelor si programelor copierea, mutarea, redenumirea sau stergerea
fisierelor;
c. asigurarea securitatii datelor prin programe antivirus sau crearea de copii de rezerva (backup) ale documentelor importante;
d. restabilirea datelor si programelor pierdute;
e. efectuarea de teste de diagnosticare asupra echipamentelor hardware.
Utilizatorul poate interactiona direct cu sistemul de operare, prin intermediul unei interfete.
Fiecare sistem de operare este conceput pentru a lucra cu o anumita arhitectura hardware. Un
sistem de operare proiectat pentru un calculator MacIntosh nu va functiona pe un PC. Un PC mai
vechi bazat pe procesorul 80486 nu are resursele necesare pentru rularea unui sistem de operare
destinat sa functioneze pe un Pentium.
ntre specialiti se discut i despre alte softuri cu funcii ultraspecializate:
Firmware este soft-ul rezident n dispozitivele memoriei programabile a utilizatorului final
pentru controlul intern al unor diferite dispozitive electronice cum ar fi telecomenzi, calculatoare,
telefoane mobile i camere digitale.
Middleware este un soft al computer-ului care conecteaz elementele soft-ului pentru aplicaii
multiple sau ofer servicii cum ar fi multiprocesarea n sistemele difuzate i serviciile web.
Testware este o subdiviziune a soft-ului cu scopul special de testare a soft-ului i automatizare
a testului pentru depanarea n timp real i eliminarea erorilor
Soft-ul de programare este o unealt de dezvoltare a soft-ului care s permit proiectanilor de
soft crearea, repararea, meninerea softului sau ofer suportul altor programe i aplicaii. De
exemplu instrumentele CASE.
Malware este soft-ul rutcios realizat s se infiltreze n computer fr consimmntul

proprietarului, de exemplu virui, codul Trojan, diverse tipuri de programe distructive.


1.2 Funciile principale ale unui sistem de operare
Sistemul de operare (SO) aa cum am mai specificat este software-ul care se ocup de
gestionarea resurselor unui computer i ofer utilizatorilor o interfa prin care s acceseze acele
resurse. Este un ansamblu de proceduri manuale i module de program de sistem prin care se
administreaz resursele sistemului de calcul (procesoare, memorie, periferice, informaii) ce
asigur utilizarea eficient, n comun a acestor resurse i ofer utilizatorului o interfa ct mai
prietenoas pentru utilizarea sistemului de calcul.
Sistemul de operare poate fi considerat ca reprezentnd interfaa dintre componentele hard si
utilizator. Pentru a rspunde rolului de interfa hardware - utilizator, majoritatea sistemelor de
operare sunt organizate pe dou nivele:
i- fizic, mai aproape de harware cu care interacioneaz printr-un sistem de ntreruperi;
ii- logic, mai apropiat de utilizator, interfernd printr-un sistem de comenzi, limbaje de
programare, utilitare.
Corespunzator acestor dou niveluri, sistemele de operare cuprind n general, dou categorii
de programe:
i. de comand si control pentru coordonarea si controlul tuturor funciilor (procese de
intrare/iesire, execuia ntreruperilor etc.);
ii. de servicii (prelucrri) - executate sub supravegherea programelor sale de aplicaie.
Principalele funcii ale unui sistem de operare sunt:
1) Gestionarea resurselor computerului (spaiu memorie, timp) pentru utilizatori si
programele concurente:
a. procesorul/procesoarele (CPU-Central Processing Unit);
b. memoria (RAM-Random Access Memory - memorie primara sau fizica),
c. componentele de stocare (hard-disk, floppy disk, CD-ROM etc. memorie secundara);
d. componentele de intrare/iesire (monitor, tastatura, mouse, imprimanta, interfete network);
e. componentele multimedia (placa de sunet, placa video etc.);
f. componentele de conectare in retea (placa de retea, modem) etc.
2) Ofera utilizatorului o abstractizare simpl a unei realitati complicate astfel nct s fie
simplu de utilizat, transformnd computerul intr-o masina virtuala, usor de utilizat si
programat:
a. utilizatorii au o interfata simpla pentru rularea programelor, gestionarea fisierelor etc.;
b. OS furnizeaza programatorilor rutine optimizate pentru utilizarea si alocarea resurselor
masinii.
3) Sistemul de operare furnizeaza o interfata de programare mai simpla, programatorii
neavand nevoie sa inteleaga in detaliu interactiunea dintre diversele componente hardware.
Majoritatea platformelor (hardware si software) necesita (si uneori includ) un sistem de
operare.
4) Asigur gestiunea lucrrilor, ofer posibiliti de pregatire i lansare n execuiea
programelor de aplicaie. Pentru aceasta, sistemul de operare trebuie s dispun de:
- un editor de texte pentru introducerea i modificarea unui program surs (program scris ntrun limbaj de programare);

- un translator (compilator) pentru limbajul de programare folosit (asamblor, compilator,


interpretor), pentru traducerea instruciunilor din programul surs ntr-un limbaj recunoscut de
sistemul de calcul (program obiect);
- un editor de legturi pentru realizarea unei legturi ntre modulele obiect n vederea
construirii structurii pe segmente necesare execuiei programelor (program direct executabil).
Acesta se ncarc n memorie de ctre componenta sistemului de operare numit ncrctor, i
din acel moment execuia poate avea loc.
5) Pune dispoziia utilizatorului o serie de faciliti pentru compresia datelor, sortarea,
interclasarea, catalogarea i ntreinerea bibliotecilor prin programele utilizator disponibile;
6) Planific execuia lucrrilor dup anumite criterii (timp de executie, prioriti etc.), astfel
nct unitatea central s fie utilizat eficient;
7) Coordoneaz execuiea simultane a mai multor programe prin urmrirea modului de
executare a instruciunilor, depistarea si tratarea erorilor, lansarea n execuie a operaiilor de
intrare/iesire;
8) Asist la execuia programelor de ctre utilizator printr-o interfa prietenoas, att la
nivel hardware, ct si la nivel software.
1.3. Carateristici ale Soft-ului
1.3.1. Caracteristici funcionale
- Mod de operare tehnici specifice de procesare sau tipuri adoptate de sistemul soft-ului cum ar
fi procesarea n timp real, grupat (batch), pe poriuni de timp (time-shared), paralel i simultan;
- Mrimea soft-ului categorii definite de mrimea (ex. KLOC) sau complexitatea (ex. flux de
date) soft-ului. Dup mrime softurile pot fi mici, medii sau mari, simple sau complexe;
- Stabilitate caracteristic determinat de schimbarea continu, schimbarea suplimentar
(incremental) sau schimbarea improbabil;
- Funcia soft-ului compilator, procesarea tranzaciilor de afaceri, procesarea cuvintelor,
sisteme de control;
- Securitate nivelul de protecie al accesului neautorizat, procesului de audit, protecie a
programului i datelor procesate;
- Fiabilitate capacitatea de a nu genera erori n timpul funcionrii, toleran la erori,
maturitate i de recuperare;
- Performan capacitate, output, bucle de reluare i timp de rspuns (viteza de lucru);
- Limbaj limbajul de programare folosit iniial pentru soft, n mod tradiional (COBOL,
FORTRAN), procedural (C), funcional (Lisp), orientat ctre obiect ( C++)
1.3.2. Caracteristici legate de mediul de operare
n funcie de mediul de operare, softul are o serie de caracteristici:
- Zona de aplicare tipul sau clasa de sisteme externe n care este folosit soft-ul cum ar fi ebusiness, controlul procesului, n reea etc;
- Sistem computer sistemul computerului cu int specific n care softul opereaz cum ar fi
microprocesor controlat, sistem principal i sistem de operare n timp real;
- Clasa de utilizatori nivelul de calificare sau caracteristici ale clasei de utilizatori
planificai: nceptor, avansat i mediu;
- Resurse ale computerului limitri ale resurselor computerului referitoare la cerinele de
memorie, ale harddisk-ului i cerinele reelei locale;

- Criticitatea soft-ului se refer la nivelul cerinelor de integritate i securitate sistemelor


pentru care lucreaz: securitate naional, organizaional i privat;
- Disponibilitatea produsului software produsul comercial de pe raft, cel obinuit sau softul
creat pentru o destinaie special.
Softul mai depinde de modul de prezentare al datelor de intrare i ieire, tipul i structura
acestora i de modul planificat de folosire al soft-ului: singur utilizator, mai muli utilizatori
simultan sau succesivi.
1.4. Organizarea SO
Sistemele de operare sunt organizate pe dou nivele, unul fizic mai aproape de hard i unul
logic,mai aproape de soft aa cum se prezint n figura 1.2.

Figura 1.2. Organizarea SO


1.4.1. Organizare Monolitica, pornind se la o rdcin ce se ramific

1.4.2. Stratificata (THE=Technical Hogeschool Eindhoven), pe mai multe nivele


Nivelul

Funcia

5
4
3
2
1
0

Operator
Utilizator
Managementul intrri/ieiri (I/O)
Communicarea operator-proces
Managementul memoriei i al
schimbrilor
Alocarea procesorului i
multiprogramare

1.4.3. Maina virtual


Maina virtual este un calculator imaginar, dotat cu un set de instruciuni ce constituie
limbajul (codul) virtual.
Virtualizarea este un termen larg ce se refer la abstractizarea resurselor unui calculator.
Virtualizarea permite multiple maini virtuale, cu sisteme de operare heterogene, s ruleze
separat, una lng alta, pe aceeai maina fizic. Fiecare main virtual are propriul ei set de
hardwere (RAM, CPU, NIC etc.) pe care este ncrcat un sistem de operare cu tot cu
aplicaii. Mainile virtuale sunt ncapsulate n fiiere, fcnd posibil copierea i salvarea
rapid a mainii. ntregul sistem poate fi mutat n cteva secunde (sistemul de operare,
aplicaiile, BIOS-ul virtual, hardware-ul virtual).
Exist dou categorii de virtualizare:
-virtualizare pe platform -implic simularea mainilor virtuale, conine o platform hard
i un program de control i
-virtualizare pe resurse - implic simularea combinrii, simplificrii sau fragmentrii
resurselor.

Lucrul cu cod virtual decurge astfel: textul surs este tradus de ctre compilator n limbaj
virtual; programul rezultat constituie intrare pentru o procedur numit executiv, care este de fapt
un interpretor al limbajului virtual. Executivul este scris ntr-un limbaj recunoscut de calculatorul
int (cel pe care urmeaz s ruleze programul compilat). Rolul executivului este acela de a
parcurge codul virtual obinut de la compilator i de a executa fiecare instruciune, n termenii
limbajului maina al calculatorului int.
Avantajul acestui mod de lucru este acela c dac un limbaj surs trebuie tradus n mai multe

limbaje obiect, compilatorul propriu-zis se scrie o singur dat (el genereaz doar cod virtual), iar
pentru fiecare limbaj obiect se construiete cte un executiv. A scrie un executiv este un lucru
mult mai uor dect a scrie un compilator. Pe de alt parte, programul generat n cod virtual poate
fi transportat pe orice main dotat cu interpretorul codului respectiv, deci programul are o
portabilitate crescut.
Un dezavantaj al lucrului cu cod virtual este acela c viteza de execuie a programelor
respective este mai mic, deoarece ele sunt executate "software" (prin intermediul interpretorului)
i nu "hardware" (direct de ctre procesor).
Limbajul virtual i structura mainii virtuale sunt stabilite n principiu de ctre proiectantul
compilatorului, dup urmtoarele criterii:
- comenzile virtuale s fie suficiente pentru a permite transpunerea corect a instruciunilor
limbajului surs;
- funcionarea mainii virtuale s poat fi ct mai uor de simulat cu ajutorul executivelor,
pentru fiecare limbaj obiect.
n general, limbajul virtual este inspirat din limbajele de asamblare existente la un moment
dat, avnd nsa un grad ceva mai mare de abstractizare.
Virtualizarea permite multiple maini virtuale, cu sisteme de operare heterogene, s ruleze
separat, una lng alta, pe aceeai maina fizic. Fiecare main virtual are propriul ei set de
hardwere (RAM, CPU, NIC etc.) pe care este ncrcat un sistem de operare cu tot cu aplicaii.
Mainile virtuale sunt ncapsulate n fiiere, fcnd posibil copierea i salvarea rapid a mainii.
ntregul sistem poate fi mutat n cteva secunde (sistemul de operare, aplicaiile, BIOS-ul virtual,
hardware-ul virtual).
VMware este o maina virtual ce permite accesul la sisteme de operare diferite de sistemul de
operare nativ. Spre exemplu pe o platform hardware ce ruleaz sistemul Windows XP se poate
rula simultan un alt sistem de operare cum ar fi Linux sau o alt versiune de Windows.
VMware se bazeaz pe o arhitectur de tip Pentium (sau superioar acesteia) i este
disponibil pentru sistemele de operare Windows i Linux. Maina virtual funcioneaz pe o
platform hardware real copiind arhitectura acesteia. Astfel dac avem la dispoziie o arhitectur
Intel Core 2 atunci maina virtual va prelua toate elementele acesteia (setul de instruciuni,
accesul la memorie etc.) i nu va funciona ca un alt tip de arhitectur Pentium
1.4.4. Modelul client-server

Serverul controleaz procesele proprii i client, terminalele, fiierele, memoria etc. Clientul
obine seviciu prin transmiterea mesajelor ctre procesele serverului.

1.4.5. Modelul client-server intr-un mediu distribuit

1.5. Incrcarea sistemului de operare (booting)


Sistemul de operare poate fi incarcat in memoria RAM a calculatorului in doua moduri:
a) este deja prezent in ROM;
b) este incarcat de pe hard-disk la pornirea computerului.
a) In cazul in care sistemul de operare este deja prezent in ROM (pentru aplicatii speciale de
ex. controleri industriali, sisteme de automatizare a unor procese etc.), acesta preia controlul
imediat ce procesorul este pornit. Prima sarcina a SO va fi sa testeze senzorii si alarmele
hardware si apoi sa ruleze continuu o rutina de monitorizare a tuturor senzorilor de intrare. Daca
starea unui senzor se modifica, el va initializa o rutina de generare a unei alarme.
b) Pentru sistemele mai complexe, sistemul de operare este n mod uzual, stocat pe un suport (de
exemplu hard-disk-ul) si incarcat in RAM la pornirea computerului. Avantajul acestui tip de
sistem este acela ca modificarile aduse sistemului de operare sunt mai usor de facut si de
implementat. La pornirea computerului, sistemul de operare se incarca automat in RAM,
controlul fiind preluat de BIOS -Sistemul de Baza de Intrare/Iesire (Basic Input-Output System).
BIOS-ul este un set de instructiuni stocat in cipul ROM si reprezinta interfata dintre
echipamentele hardware si sistemul de operare. Primul lucru pe care-l face BIOS-ul este un
autotest (Power-On Self Test - POST) pentru a se asigura ca toate componentele calculatorului
sunt operationale. Exist o gam larg de versiuni de programe BIOS realizate pentru sisteme PC.
Acestea sunt livrate mpreun cu placa de baz. Fiecare ofer posibilitatea de a seta timpul i
data. Setrile se refer i la componente importante ale sistemului de intrare-ieire cum sunt
memoria operativ, hard discuri, componenta video, tastatur, dispozitive de indicare pe ecran,
dispozitive de reea, diverse porturi hardware sau fucionarea UCP, n funcie de complexitatea
sistemului.
O setare important care trebuie avut n vedere atunci cnd se schimb suportul de memorie
de pe care se boot-eaz (exemplu: instalarea SO de pe un CD butabil) este configurarea listei
(ordonate) de asemenea suporturi (dispozitive) de pe care se poate face boot-area. Fiecare
versiune de interfa BIOS Setup prezint o palet care se refer la configurarea acestei liste, sub
denumiri cum sunt: boot Device Priority, Boot Sequence, Boot Order .a.m.d. Pentru a face
disponibile, respectiv indisponibile diverse elemente ale listei acestea se selecteaz i se
acceseaz meniul corespunztor (de obicei prin tasta <Enter>). Operaiile n cadrul listei sunt
precizate printr-o documentare afiat de regul fie n bara de stare a ferestrei fie n partea stng
a acesteia.
Sunt parcurse urmatoarele etape:
1. Se cauta programul special de incarcare (OS loader) continut in BIOS (bootstrap loader)

pe unitatile de disk (CD, USB, hard-disk) care va incarca sistemul de operare.


Mai intai cauta pe disk o portiune specifica unde sunt localizate fisierele de incarcare a
sistemului. O discheta care contine aceste fisiere se numeste discheta sistem. Daca in unitate
exista o discheta, dar care nu este discheta sistem, BIOS-ul va transmite utilizatorului un mesaj,
informandu-l ca unitatea floppy nu contine o discheta sistem. Daca nu exista o discheta introdusa
in unitatea floppy (cazul uzual), BIOS-ul va cauta fisierele sistem pe o portiune specifica a harddisk-ului.
2. Dupa ce a identificat unde sunt localizate fisierele sistem, BIOS-ul copiaza informatii din
acestea in locatii specifice din RAM. Aceste informatii sunt cunoscute sub numele de boot
record. Boot record contine un program care preia controlul computerului. Boot record incarca
de pe disketa sau hard-disk in RAM fisierul initial de sistem. Fisierul initial de sistem incarca
apoi restul sistemului de operare in RAM.
3. Fisierul initial de sistem incarca apoi un fisier de sistem care stie cum sa lucreze cu BIOSul. Unul din primele fisiere incarcate este si fisierul de configurare a sistemului. Informatiile
continute in acesta indica ce fisiere specifice ale sistemului de operare e necesar sa fie incarcate
(de exemplu, driverele de dispozitiv specifice).
Un alt fisier special ce este incarcat este unul care specifica aplicatiile sau comenzile pe care
utilizatorul doreste sa fie incarcate si rulate ca parte a procesului de incarcare (pentru Windows se
numeste WIN.INI iar pentru LINX imaginea kernelului VM Linux, Generic.
Dupa ce toate fisierele sistemului de operare au fost incarcate, sistemul de operare preia
controlul computerului, indeplineste comenzile initiale si asteapta prima comanda introdusa de
utilizator.
Secventa de incarcare a sistemului de operare este reprezentata schematic in figura urmatoare:

Figura 1.10 Incarcarea sistemului de operare


Paii reprezentai n figur sunt:
1. programul de incarcare continut in BIOS (Bootstrap Loader) cauta programul de incarcare
a sistemului de operare (OS Loader) pe unitatea de disk;
2. transfera programul de incarcare in memoria RAM (boot record);
3. programul de incarcare ncarca restul sistemului de operare in memorie i l configureaz.
BOOTARE n Windows:
- Windows se lanseaza ca o aplicatie pe 16 biti (KRNL386.EXE), pentru a putea implementa
standardul Plug&Play.

- Configurarea tuturor echipamentelor are loc naintea lansarii interfetei grafice-,


- Apelare shell;
- Nucleul Kernel pe 16 biti vede apelul pentru shell si lanseaza aplicatia VWIN32.386 care
ncarca bibliotecile DLL pe 32 de biti care alcatuiesc WIN32 API
- Dupa terminare, VWIN32.386 reda controlul kernel-ului pe 16 biti, care apeleaza kernel-ul
pe 32 de biti.
Procesele care pornesc in procesul de boot-are sunt sintetizate n tabelul de mai jos:

Procesele de deasupra liniei pornesc tot timpul, cele de sub linie sunt exemple de servicii care
pot fi pornite
1.8. Interfata cu utilizatorul a sistemului de operare
Fiecare sistem de operare contine o interfata cu utilizatorul, intelegand prin aceasta una sau
mai multe metode de a introduce comenzi. Partea exterioara (Shell) a sistemului de operare este
programul care preia comenzile de la utilizator si le transfera catre nucleul acestuia (Kernel).
In functie de sistemul de operare, interfata cu utilizatorul poate fi:
- bazata pe text;
- grafica.
1.8.1 Interfete bazate pe text
In cazul unei interfete bazate pe text, utilizatorul tasteaza comenzi pentru a da instructiuni
calculatorului. Un astfel de sistem de operare este MS-DOS (conceput in 1981 de Microsoft).
Linia de comanda MS-DOS contine un prompter, care informeaza utilizatorul ca sistemul este
pregatit sa primeasca instructiuni. Instructiunile sunt tastate dupa prompter. Dupa fiecare
instructiune, utilizatorul trebuie sa apese tasta Enter, pentru a prelucra instructiunea. MS-DOS
accepta si prelucreaza instructiunile pe baza unei biblioteci de instructiuni incluse in sistemul de
operare. Un exemplu de interfata MS-DOS este prezentat in figura 1.3. Versiuni mai recente de
DOS contin un Shell care permite utilizatorilor introducerea comenzilor cu ajutorul mouse-ului.
UNIX reprezinta un sistem de operare multiutilizator pentru PC-uri (conceput initial la AT&T
Bell), cu o interfata, de asemenea, bazata pe DOS. Unele versiuni de UNIX contin o interfata
grafica cu utilizatorul.

Figura 1.11. Interfata MS-DOS


1.8.2 Interfete grafice
Primul sistem care utiliza o interfata grafica cu utilizatorul, intitulat Lisa, a fost realizat de
Apple. Lisa suporta multitasking, memorie virtuala, hierarhicaly file sisterm, fiind influenat de
XEROX PARK. Acest sistem costa peste 10.000 USD, nefiind un succes comercial. Apple a
adaptat sistemul de operare al calculatorului Lisa pentru a fi utilizat pe sisteme MacIntosh,
rezultand astfel sistemul de operare Mac-OS, cu o interfata grafica simpla.
O interfata grafica utilizeaza mici imagini, numite icons (pictograme) pentru reprezentarea
programelor si instructiunilor. Pentru a da o instructiune sistemului de operare, utilizatorul indica
un icon si efectueaza click cu mouse-ul sau efectueaza selectii din menu-urile aflate in Shell.
In 1985 Microsoft a lansat sistemul Windowscare oferea o interfata grafica si pentru PC-uri.
Acesta nu era un sistem de operare, ci un mediu (un program utilizat impreuna cu un sistem de
operare), deoarece functionarea sa se baza pe existenta unui asemenea sistem. In esenta,
Windows reprezenta un invelis (Shell) pentru DOS, primind instructiuni prin intermediul mouseului si transformandu-le in comenzi ce pot fi acceptate si executate de DOS.
Windows 95 (lansat in 1995) este prima versiune de Windows care este chiar un sistem de
operare. Functiile sistemului de operare executate anterior de DOS au fost incluse in Windows
95, acest sistem nu mai necesita un sistem de operare separat.
Versiunea multiutilizator a sistemului Windows este numita Windows NT. Suprafata de lucru a
acestui sistem este prezentata in figura 1. 12.

Figura 1.12. Suprafata de lucru a sistemului Windows 7


1.9. Gestionarea proceselor
Sistemele de operare se caracterizeaza prin activitati care se desfasoara n paralel. Este vorba
fie de un paralelism autentic (de exemplu executia unui program de catre un procesor simultan cu
derularea unei operaii de intrare/iesire printr-un periferic), fie de un cvasiparalelism (daca mai
multe segmente de programe isi impart procesorul pentru intervale scurte de timp). Privita
dinspre utilizator, executia acestor programe pare sa se desfasoare in paralel, desi in realitate nu
este o executie paralela, ci in sistem de partajare a timpului (time sharing).
Pentru a face abstractie de dependenta relativ complicata de timp si de loc, sistemele de
operare moderne folosesc conceptul de proces.
Programele contin lungi liste de instructiuni ce sunt executate de catre procesorul
computerului (procesoarele executa milioane de instructiuni pe secunda). In cazul sistemelor de
operare moderne, numai o portiune a unui program este incarcata la un moment dat, restul
programului sta in asteptare pe hard-disk pana cand alte portiuni sunt apelate, realizandu-se astfel

o economisire a spatiului de memorie.


Un proces (process sau task) este o portiune a unui program aflat in curs de executie. Un
program poate consta in mai multe procese. Un proces poate crea alte procese. Procesorul poate
executa o singura instructiune la un moment dat. Procesorul unui computer ruleaza un proces
pentru o scurta perioada de timp, apoi este comutat catre alt proces si asa mai departe. Cum un
procesor executa milioane de instructiuni pe secunda, acesta da senzatia ca ruleaza mai multe
procese simultan.
In timpul existentei sale, un proces se poate gasi intr-una din urmatoarele trei stari:
1. pregatit pentru executie (ready runnable);
2. activ (running);
3. blocat (blocked).

Figura 1.13: Stri ale proceselor n procesorul computerului


Procesul poate fi activ atunci cand ii este alocat un procesor si executa programul sau. Poate fi
blocat, cand continuarea executiei depinde de un eveniment, ca de exemplu de incheierea unei
operaii de intrare/iesire. Mai poate fi pregatit daca evenimentul asteptat s-a produs si asteapta
alocarea procesorului.
Procesele care se afla in starea pregatit sunt ordonate intr-o coada de asteptare (process
queue - kju:). In orice moment pot coexista zeci sau chiar sute de procese coordonand lucrul
utilizatorilor, programele utilizate sau sistemul de operare insusi.
Atribuirea procesorului este executata de modulul programator (scheduler) al sistemului de
operare. Scheduler-ul este partea sistemului de operare care decide ordinea in care vor fi
executate procesele pregatite de a fi executate.
Cand procesorul este comutat de la un proces catre altul starea acestuia (registrii si datele
asociate) trebuie sa fie salvate, deoarece mai tarziu procesul va fi reluat si continuat ca si cum nu
a fost niciodata intrerupt. Odata ce aceasta stare a fost salvata este activat urmatorul proces aflat
in asteptare. Aceasta presupune incarcarea registrilor procesorului si a memoriei cu toate datele
salvate anterior si repornirea lui de la instructiunea ce urma sa fie executata cand a fost ultima
oara intrerupt. Actiunea de comutare de la un proces la altul se numeste comutare contextuala
(context switching). Aceasta comutare se poate face in doua moduri:
1. procesul activ la un moment dat elibereaza voluntar procesorul, permitand altui proces sa
devina activ Procesul intrerupt voluntar va trece la sfarsitul cozii de asteptare, iar procesul de la
varful cozii devine activ. Ca urmare, toate celelalte procese vor inainta cu o pozitie;
2. un ceas in timp real (clok) genereaza intreruperi la intervale regulate de timp (de ex. o

sutime de secunda). De fiecare data cand apare o intrerupere, procesorul este comutat catre un alt
proces. In acest caz scheduler-ul atribuie si o ordine de prioritate fiecarui proces, fiind astfel
posibil ca unele procese sa fie executate mai frecvent decat altele.

Figura 1.14: Tipuri de procese n ateptare pentru execuie

1.10 Gestiunea memoriei


Gestiunea memoriei computerului se realizeaz n dou moduri Modul real i Modul
virtual
Modul real apare atunci cnd sistemul este pus sub tensiune, memoria fiind limitata la 1MB
(220B), paginarea nu este permisa iar adresa liniara este egala cu adresa fizica.
Ne intereseaza 4 aspecte:
- calculul adresei fizice
- dimensiunea segmentelor
- zonele de memorie rezervate
- tabelul vectorilor de ntrerupere
n modul protejat exista mai multe mecanisme care permit gestionarea memoriei:
- mecanismul de segmentare - este mult mai complex;
- mecanismul de paginare - poate fi operational;
- mecanismul de memorie virtuala.
1.10.1 Segmentarea
Segmentarea este o metoda de administrare a memoriei, constituind baza pentru protectie
pe 4 nivele de prioritate, PL0-PL3 (Priority Level), prin intermediul carora se stabileste protectia
sistemului de calcul.

Figura 1.12. Protecia prin segmentare pe 4 nivele de prioritate


Segmentarea modularizeaza programele si datele n segmente de lungime variabila.

Un segment este caracterizat prin:


- baza segmentului adresa liniara de nceput;
- limita segmentului care poate varia ntre 0-4GB;
- drepturile de acces care definesc tipul segmentului (executabil, citire, scriere), nivelul
de prioritate (ntre 0 si 3), indicatori pentru gestiunea memoriei virtuale.
Selectorul de segmente (continutul registrului de segment) are rolul unui index ntr-o tabela
definita prin sistemul de operare, tabela descriptorilor. Tabela contine adresa de baz a
segmentului dat pe 32 de biti.
n documentaia fiecrui microprocesor se specific modurile de adresare pentru
specificarea operanzilor. n memoria unui microprocesor exist trei tipuri de spaii de adrese:
logice;
liniare;

fizice.
Adresa logic, numit i virtual const n selectorul de segmente i de un offset (adres
efectiv) obinut din componentele de Baz, Index Deplasament i Scal.
Unitatea de segmentare translateaz spaiul adreselor logice n spaiul adreselor liniare de
32 bii. Dac unitatea de paginare nu este validat, adresa liniar coincide cu adresa fizic. Dac
unitatea de paginare este validat ea translateaz adresa liniar n adresa fizic.
Adresa fizic este cea care este scoas la pinii microprocesorului.
Exist numeroase moduri de adresare, dintre care dou sunt moduri de adresare rapid care
opereaz cu registre i operanzi imediai. Acestea sunt:
1) Adresare imediat pentru cazul n care operandul este un octet sau un cuvnt coninut de
instruciune chiar n cmpul adresei instruciunii. n acest caz pentru obinerea operandului este
suficient citirea instruciunii. Inconvenientul acestui mod de adresare este limitarea valorii
operandului de ctre numrul de bii ai cmpului de adres.
2) Adresare direct la registru, pentru cazul n care operandul este coninutul unui registru
specificat n codul instruciunii.
Celelalte moduri de adresare utilizeaz mecanismul de adresare liniar, compus din
adresa de baz (BA) i adresa efectiv (EA). Aceste 9 moduri de adresare liniar sunt:
3) Adresarea direct la memorie. n cmpul de adres al instruciunii se specific adresa
efectiv a operandului. Pentru obinerea acestuia este necesar un acces suplimentar la memorie.
Adresa efectiv este calculat ca o combinaie ntre Baz, Index, Scal i Deplasament, conform
figurii 12.5 i relaiei:
EA = Baza + (Index Scal) + Deplasament

(12.3.1)

unde: Baza reprezint coninutul oricrui registru de uz general;


Index este unul dintre registrele generale, numite index;
Scala este o constant care poate avea valoarea 1, 2, 4 sau 8, 16;
Deplasamentul este o valoare de 8 sau 32 bii care urmeaz imediat dup instruciune.
4) Adresare indirect prin registru;
5) Adresare indirect prin registru cu deplasare;
6) Adresare indexat;
7) Adresare indexat scalat;
8) Adresare indirect i indexat;
9) Adresare indirect i indexat scalat;
10) Adresare indirect i indexat cu deplasament;
11) Adresare indirect i indexat scalat cu deplasament.
Adresarea indirect (la registru sau la memorie) presupune c n instruciune se specific
adresa unei locaii care conine adresa operandului fiind necesare dou accese la memorie sau
registru dup citirea instruciunii: una pentru a citi adresa efectiv a operandului i alta pentru a
obine operandul.
Adresarea indexat se utilizeaz pentru a accesa un vector ale crui elemente se afl n
locaii succesive din memorie.
n figura 12.5 sunt specificate i tipurile de registre unde se gsesc punctele de start sau
limitele [51].

Figura 12.5. Moduri de adresare i calcul al adresei.


Segmentarea memoriei care oferit posibilitatea relocrii programelor n memoria
sistemelor cu microprocesor, astfel, spaiul de memorie a fost mprit n segmente de 64 KB
putnd s existe un numr de segmente nesuprapuse astfel nct instruciunile s poat lucra n
interiorul unui singur segment independent de ce se ntmpl n alt segment. Registrele de
segment specific adresa de baz pentru a calcula adresa fizic a locaiei dorite.
La microprocesoarele Intel memoria este divizat n grupuri de 8 bii (octei), de 16 bii
(cuvinte = words) i 32 bii (cuvinte duble = dwords). Cuvintele i cuvintele duble sunt plasate n
locaii succesive de memorie (2 i respectiv 4) cu octetul cel mai puin semnificativ (LSB) la
adresa mai mic iar octetul cel mai semnificativ (MSB) la adresa cea mai mare.
Memoria poate fi divizat n segmente (cu lungime variat, de maximum 64 KB) care poate
fi interschimbat cu discul sau ntre procese, aa numite task-uri. Mai exist dou mari uniti de
organizare a memoriei: unitatea de adresare i unitatea de paginare.
Descriptorul este o structura de 8B care memoreaza atributele unui segment. Totalitatea
descriptorilor dintr-un sistem sunt memorati n tabele recunoscute prin hardware, astfel:
- tabela descriptorilor globali GDT Global Description Table contine descriptori
disponibili tuturor task-urilor din sistem;
- tabela descriptorilor locali LDT Local Description Table contine descriptori asociati
unui task dat;
- tabela descriptorilor de ntreruperi IDT Interrupt Description Table contine
descriptori pentru localizarea celor 256 de rutine pentru tratarea ntreruperilor

Mecanismul de adresare n modul protejat este ilustrat n figura urmatoare:

unde:
- TI (1bit) pozitie 1-2 (Table Indicator) poate lua valorile:
TI=1 => indicatorul tabelei descriptorilor locali (LDT);
TI=0 => indicatorul tabelei descriptorilor globali (GDT).
- RPL (2biti= 4variante) pozitia 0-1 nivel de prioritate: 0,1,2,3.

1.10.2. Paginarea
Paginarea este un tip de administrare a memoriei pentru sistemele de operare multitasking
si cu memorie virtuala. Paginarea asigura divizarea programelor si datelor n pagini de marime
fixa, 4KB, si consta n translatarea adresei liniare, furnizata de unitatea de segmentare, n adresa
fizica.
Unitatea de paginare const n zone de memorie de lungime fix de 4KB care corespund
unei poriuni a unei structuri de date. Exist trei componente ale mecanismului paginrii:
directoarea paginilor;
tabelele paginilor i
paginile propriu-zise.
n figura 12.6 sunt prezentate relaiile dintre spaiile de adres i unitatea de paginare ale
unui microprocesor [51].

Figura 1.6. Relaiile dintre spaiile de adres ale unui microprocesor.

Directorul de pagini are o lungime de 4KB,


accepta 1024 intrari;
o intrare este identificata de cei mai semnificativi 10 biti ai adresei liniare;
o intrare = adresa tabelei de pagina (primii 20 biti mai semnificativi) + informatii
despre ea;
adresa lui fizica se gaseste n registrul de control CR3;
Tabela paginilor are 4KB;
accepta 1024 intrari;
intrare este identificata de 12-21 biti ai adresei liniare;
intrare = adresa de nceput a paginii propriu-zise (primii 20 biti) + informatii despre
pagina;

Pagina propriu-zisa are 4KB;


adresa fizica se obtine prin concatenarea celor mai semnificativi 20 biti dintr-o intrare
selectata din tabela paginilor cu cei mai putini semnificativi 12 biti ai adresei liniare.

Mecanismul paginarii este ilustrat n figura urmatoare.

Figura 10.13 Mecanismul paginrii n memorie


Mecanismul paginarii furnizeaza noi elemente de protecie la nivel de pagina:
- read/write (cifra 1),
- user/supervisor (cifra 0) ambele n directorul paginilor sau tabelei paginilor,
- write protect (bit 16 din CR0).
Exista urmatoarele nivele de protectie:
- nivel utilizator corespunde nivelului 3 din segmentare;
- nivel supervizor corespunde nivelelor 0,1 i 2 din segmentare
1.10.3. Memoria virtuala (MV)
Memoria virtuala da iluzia utilizatorului ca memoria principala este foarte mare. MV este
un atrificiu care implica o cooperare sincronizata ntre procesor, disc, memorie si programul de
memorie virtuala.
Cnd un program urmeaza sa ruleze pe un calculator, sistemul de operare creeaza un spatiu
de memorie virtuala care contine un model al memoriei si al adreselor de memorie, pe care
programul le are la dispozitia sa, o portiune din memoria reala a calculatorului este alocata MV.
Programul de MV este o functie inclusa n structura procesorului care i spune procesorului ca o
adresa fizica din memoria reala (AF) apare la o alta adresa, adresa virtuala (AV).

Functionarea MV
Cnd un program ncepe sa ruleze, memoria utilizata este virtuala (MV) si o portiune a ei
este mapata n memoria principala (MP), care este mai mica.
Modul de functionarea a memoriei virtuale este ilustrat n urmatoarea figura.

Pasii de lucru ai MV sunt:


- adresa virtuala (AV) este translatata n adresa fizica (AF) de catre SO, cu ajutorul
mecanismului de gestiune a memoriei (segmentare, paginare);
- se verifica daca pagina referita se afla n memoria main;
- daca da, se executa programul;
- daca nu, se acceseaza discul (memoria auxiliara), pentru una dintre urmatoarele functii:
a) ncarcarea paginii, daca este spatiu n memoria principala;
b) nlocuirea paginii rezidente, daca memoria centrala nu mai are spatiu;
Cnd programul utilizeaza o portiune a din MV care nu a fost mapat, adica nu are
corespondent n Memoria Principala, atunci procesorul va genera o greseala de pagini (page
fault) si intra n actiune programul de MV:
- acesta alege o parte a MV care are corespondent n MP;
- salveaza temporar din MP pe disc, proces numit de swapping (schimbare);
- partea eliberata a MP este folosita de MV;
- cnd va fi nevoie de partea schimbata, ea va fi copiata napoi de pe disc.
Discul este utilizat ca un depozit pentru a stoca parti din memoria virtuala care nu sunt
utilizate n mod curent. Aceste schimbari ntre disc si memorie, daca se executa foarte des, pot
duce la ntrzieri destul de mari n functionarea sistemului. Buna functionarea a sistemului de
memorie virtuala poate fi data de unele modificari de parametrii cunoscute sub numele de system
tuning (optimizarea sistemului).
- daca asupra paginii care va fi nlocuita s-au operat modificari, ea va fi salvata pe disc, si
dupa aceea va fi transferata n memoria principala.
- pagina care va fi nlocuita se stabileste pe baza unui algoritm.
Algoritmii de nlocuire a paginilor pot fi grupati n:
I. algoritmi care nu utilizeaza informatii privind comportarea anterioara i viitoare a
proceselor:
- alg. RAND (randomizare ) foloseste o regula statica, alege la ntmplare pagina care va
fi nlocuita, presupunnd ca toate au aceeasi probabilitate de a fi solicitate; algoritmul este
efficient cnd capacitatea memorie virtuale este mult mai mare dect cea reala (CMV>>CMR).
- alg. FIFO (First In, First Out) nlocuieste pagina care a ramas cel mai mult timp n
memorie;

II. algoritmi care nu utilizeaza informatii privind comportarea anterioara a proceselor:


alg. LRU (Least Recently Used) nlocuieste pagina care nu a fost utilizata de cel mai
mult timp;
alg. NFU (Not Frequently Used) nlocuieste pagina care a fost utilizata de cele mai
putine ori.
III. algoritmi care nu utilizeaza informatii privind comportarea viitoare a proceselor:
alg. MIN o extensie a celor din clasa anterioara.
Translatarea
Procesorul dispune de o functie de mapare, de translatie, care permite memoriei reale sa
aiba aparent o alta adresa. MV foloseste functia de translatie care transforma adresa virtuala n
adresa fizica reala (AV=>AF).
Sunt 2 cazuri, privind pozitia adresei virtuale ai:
- cnd se gaseste n tabela functiilor de translatie atunci functia aplicata lui ai devine bj,
care este o adresa fizica reala, daca si numai daca bj este rezidenta n memoria principala;
- cnd nu se gaseste n tabela functiilor de translatie atunci bj este nerezidenta n
memoria principala si trebuie adusa de pe disc, n momentul solicitarii ei.

Translatarea adresei virtuale n adresa fizica se face la 3 nivele:


- la nivel pagina duce la scaderea informatiei din tabela, deoarece spatiul de adrese este
mpartit n blocuri de dimensiuni constante, numite pagini. Unitatea de transfer ntre memoria
interna si externa este pagina, o entitate de memorie de dimensiune fixa de 512B, 1KB, 2KB,
4KB;
- la nivel segment mparte spatiul de memorie n blocuri de marimi variabile, segmente de
date si de programe; adresa virtuala referita de microprocesor este formata din nume segment si
cuvnt din segment;
- la nivel segment-pagina adresele fizice si virtuale sunt divizate n segmente, segmentele
n pagini, pentru a beneficia de avantajele celor 2 metode:
- paginarea implementare simpla si asigura protectia informatiei;
- segmentarea satisface cerintele utilizatorului prin mpartirea n segmente variabile, n
functie de logica programului
Vizualizare mem. virtuala + setare:
My computer click dreapta ->Properties
- Comanda mem /? vezi optiuni

Un sistem de operare are mai multe nivele. Partea central a sistemului de operare este
kernel-ul, care controleaza procesele de nivel scazut, modul in care modulul de memorie este
citit si scris, ordinea in care procesele sunt executate, modul in care informatia este primita si
trimisa la dispozitive si decide modul de interpretare a informaiile primite prin intermediul
retelelor. Interfata cu utilizatorul (UI=User Interface) este un alt nivel al sistemului de operare
care interactioneaza cu utilizatorul direct, permitand acestora sa controleze si sa utilizeze
programe. Interfata cu utilizatorul poate fi grafic cu icoane si un desktop, sub forma de text, cu o
linie de comanda.
O alta caracteristica similara este o interfata de programare a aplicatiei, care este un set
de servicii si biblioteci de cod care permite aplicatiilor sa interactioneze unul cu altul, precum si
sistemul de operare in sine.

1.8.Tehnici de exploatare a SO
Sistemele de operare pot fi exploatate n funcie de categorii care definesc caracteristicile lor.
Sistemele moderne pot utiliza combinatii ale celor descrise in continuare.
1. Sisteme de operare cu prelucrare pe loturi (batch processing)
a. Primele sisteme de operare aparute;
b. Programul era introdus in computer si apoi executat pana la terminare;
c. Datele utilizate de program nu puteau fi modificate in timpul executiei acestora. Orice
eroare survenita in executie presupunea reluare executiei de la capat.
2. Sisteme de operare interactive
a. Permit modificarea si introducerea datelor in timpul executiei programelor;
b. Se utilizeaza in sistemele informatice cu baze de date in permanenta schimbare (sistemele
de evidenta a conturilor bancare, sistemele de rezervare a locurilor la companiile aviatice).
3. Sisteme de operare multiutilizator (time sharing)
a. Permit conectarea simultana, printr-un terminal a mai multor utilizatori;
b. Se aloca segmente de timp proceselor lansate de utilizatori.
4. Sisteme de operare multitasking
a. Permite executia mai multor sisteme simultan, in functie de ordinea de prioritati;
b. Procesorul este comutat rapid intre procese.
5. Sisteme de operare in timp real (real-time)
a. Utilizate la comanda proceselor industriale;
b. Monitorizeaza diferitele intrari care afecteaza procesele aflate in executie si raspund
adecvat intr-o perioada de timp garantata (de obicei de ordinul milisecundelor).
6. Sisteme de operare multiprocesor
Permit utilizarea mai multor procesoare pentru executia proceselor.
Monoprogramare
Multiprogramare
Spool-ing (Simultaneus Peripherial Operations On-Line)
Time-sharing
Multiprelucrare
Multitasking
n timp programele au devenit din ce in ce mai complexe si mai mari, calculatoarele tot mai
rapide a devenit absolut necesar realizarea unor sisteme de operare mai performante, care sa puna
la dispozitia programatorilor o cantitate mai mare de memorie interna si sa poata asigura executia

multitasking si multiuser a lucrarilor.


Multitasking este termenul care defineste executarea mai multor programe in acelasi timp pe
un sistem de calcul.
Multiuser este termenul care defineste posibilitatea de exploatare a unui sistem de calcul de
catre mai multi utilizatori, in acelasi timp. Accesul multiplu la unitatea centrala este asigurat de o
tehnica speciala numita partajarea timpului (time sharing).
Sistemele de operare (SO) in evolutia lor au suferit multiple si rapide perfectionari,
determinate de progresele marcate de tehnicile constructive hardware, cat si de cerintele
multiplelor domenii de utilizare. In prezent cele mai utilizate sisteme de operare pentru PC-uri
sunt : MS-DOS, UNIX, OS/2, Windows 95, Windows NT, Windows XP, VISTA, Windows 2000,
Windows 2008, Linux, BeOS etc. Mac Operating System, Linux (AIX, HPUX), Unix, DOS PCDOS, MS-DOS, *BSD, BeOS, OSEK-VDX, Solaris, BS2000 ( BS3000), z/OS

Monoprogramare

Sincronizarea activitilor dintre unitatea central de prelucrare (CPU) i procesorul de


comunicaie (DMAC) n monoprogramare

Multiprogramare

Spool-ing (Simultaneus Peripherial Operations On-Line)

Time-sharing

Multiprelucrare

Fig. Front-end processor

Fig.. Back-end processor

Multiprelucrare: a) memorie unica i CPU identice, b) CPU master, memorie intern unica i mai
multe CPU slave d) memorie unica i CPU master/slave

1.9. Mecanisme de protectie Intreruperi si exceptii de protectie


Controlul accesului se realizeaz prin mecanisme de privilegii care permit accesul n anumitr
spaii de adresa, spaii ce au fost separate.
Protectia se poate realiza prin ierarhie de tutela:
a)Intreruperi si exceptii de protectie
- Intreruperi hardware: INT si NMI
- Intreruperi software: INT n
b) Exceptii de protectie
c)Vectori rezervati
Etapele tratarii unei intreruperi
- n momentul apariiei unei cereri de ntreruperi, aceasta se va lua n considerare dac este cea mai
prioritar din irul de ntreruperi;
- se face apoi analiza tipului de ntrerupere i salvarea cuvntului de stare al programului la o
anumit adres din memoria intern;
- se ncarc un cuvnt de stare al programului specific ntreruperii i se lanseaz n execuie rutina
ce prelucreaz ntreruperea;
- se rencarc vechiului cuvnt de stare al programului de la adresa unde a fost salvat n memoria
intern, dup terminarea prelucrrii ntreruperii;
- este redat controlului programului ntrerupt.
ntreruperile pot fi generate de program, de operaiile de intrare/ieire, de un defect al CPU sau
defecte externe sistemului de calcul provenind de la alte echipamente cu care este cuplat.

Controler de intreruperi pe 16bii

Atribuirea intreruperilor si prioritatile asociate


Tabelul vectorilor de ntrerupere
1. ntreruperile provoac abandonarea programului curent, urmnd a fi dat controlul rutinei
care trateaz ntreruperea;
2. Astfel, procesorul are nevoie de o modalitate simpl i clar de a gsi rutina de tratare a
ntreruperii, pentru aceasta folosind un tabel de vectori de ntreruperi;

3. Tabelul conine adresele rutinelor de tratare a ntreruperilor, care ncepe cu vectorul


corespunztor ntreruperii 0 la locaia de memorie 0;
4. Fiecare adres de vector are 4B, astfel c vectorul pentru ntreruperea n se gsete la locaia
de memorie n*4;
5. Vectorii conin adresele complete de memorie, scrise n form segmentat, ale rutinelor
care urmeaz s fie activate la apelul ntreruperii. Adresa segmentat este format dintr-o pereche
de cuvinte pe 2B (total 4B);
6. Adresele din tabelul vectorilor de ntrerupere sunt de 3 tipuri:
- numrul de segment ncepe cu cifra hexa F - indic componenta ROM-BIOS;
- memoria principal (vezi imaginea urmtoare). Pot conine programe ale DOS, programul
DEBUG nsui
- nivel de ntrerupere netratat, dac vectorii sunt toi 0.

Examinarea tabelului vectorilor de ntrerupere se realizeaz cu ajutorul programului DEBUG, cu


comanda d 0:0 (adic la nceputul memorie), iar debug se lanseaz fr nici un parametru.
Vectorii sunt stocai invers, cu deplasamentul naintea segmentului.
n exemplul anterior, primii 4 B afiai de DEBUG sunt: 68 10 A7 00, adic adresa segmentat
este 00A7:1068.
Pentru a studia oricare dintre rutinele de tratare a ntreruperi, se efectueaz urmtorii pai:
se decodific vectorii,
se obine adresa segmentat
se examineaz codul rutinei de tratare a ntreruperii cu ajutorul comenzii U (Unassembledezasamblare)
n exemplul anterior, pentru a afla ce se gsete la adresa segmentat, se aplic comanda: u
00A7:1068 l 10 (afieaz numrul de linii specificat, n cazul acesta 10)
Definiii speciale
Driver: Un program care controleaz un dispozitiv.
Majoritatea dispozitivelor dispun de cte un driver specific unui sistem de operare. Acesta
acioneaz ca un traductor ntre dispozitiv i programul care utilizeaz dispozitivul. Fiecare

dispozitiv dispune de un set de comenzi specializate, iar acestea sunt cunoscute de driver-ul su,
care le expune ctre sistemul de operare. Programele acceseaz dispozitivele printr-un set de
comenzi generice, ale sistemului de operare, care le transmite ctre driver pentru traducerea
acestora n comenzi specializate.
Kernel: Modulul central al unui sistem de operare, interfaa dintre aplicaii i datele procesate
la nivelul hardului
Este acea parte a sistemului de operare care se ncarc prima i rmne n memoria principal.
Datorit faptului c este rezident n memorie, este important ca acesta s fie ct mai mic i, n
acelai timp, s ofere toate serviciile necesare cerute de alte pri ale sistemului de operare i de
aplicaii. Uzual, kernel-ul este responsabil pentru administrarea memoriei, administrarea
proceselor i task-urilor, comunicarea ntre procese.
Kernel:
- monolitic: toate operaiile se execut n acelai spaiu de adres; ocup spaiu mare dar
permite creterea performanelor sistemului;
- microkernel: toate operaiile sunt rulate n spaiul utilizatorului (ex. server); permite
mbuntirea fiabilitii i modularitii SO.
n mod curent exist kerneluri care combin aceste dou variante limit.
Definiii specifice:
A mapa: A face conexiuni logice ntre dou entiti.
Deoarece programele nu pot fi traduse direct din concepte umane n numere pentru calculator,
ele translateaz incremental printr-o serie de niveluri. Fiecare nivel conine aceeai cantitate de
informaie ca i nivelul anterior, dar ntr-o form mai apropiat de ceea ce nelege calculatorul.
Aceast activitate de translatare de la un nivel la altul se numete mapare.
Mod (moduri): Setare a unui program (sau sistem de operare).
Termenul mod implic o alegere - aceea c putei schimba setrile i aduce sistemul (sau
aplicaiile) ntr-un mod diferit.
Multitasking: Abilitatea de a executa mai mult de un singur task deodat, un task fiind
recunoscut drept un program.
Exist dou tipuri de multitasking: preemptiv i cooperativ. n multitasking preemptiv,
sistemul de operare feliaz timpul de utilizare a procesorului pentru fiecare program.
n multitasking cooperativ, fiecare program poate controla procesorul atta timp ct are
nevoie. Dac la un anumit moment un program nu folosete CPU-ul, poate permite altui program
s l utilizeze.
Proces: Un program n execuie. Termenul este folosit pe scar larg ca sinonim al task-ului
(al unei sarcini).
Shell: Program care reprezint de fapt o interfa pentru diferite funcii i servicii ale
sistemului de operare.
Se numete aa deoarece este un strat exterior al interfeei, ntre utilizator i funciile interne
ale sistemului de operare.
Thread: fir de execuie procese. O parte a unui program care se poate executa independent de
celelalte pri.
Sistemele de operare care suport multithreading permit programatorilor s creeze programe
ale cror pri thread-uri pot fi executate concomitent.
User mode: Se refer la nivelul de privilegii implementate de un sistem de operare.

Este nivelul obinuit, opus nivelului super privilegiat sau administrativ (numit root pe
sistemele Unix). Fiecrui proces lansat n user mode pe un astfel de sistem i se permit i i se
interzic anumite operaiuni.
plug and play path Sistem de operare Linux
Bash (Bourne Again SHell): Interfaa de consol standard de-facto pe Linux, cu un puternic
limbaj de cripting n spate, scris n cadrul proiectului GNU.
Boot loader: Program de dimensiuni mici a crui sarcin este s ncarce sistemul de operare. n
cazul n care avem mai multe sisteme de operare, se folose te un program mai complex, care are
i sarcina de a oferi utilizatorului o list de opiuni.
Daemon: Echivalentul UNIX al unui serviciu un proces care ruleaz n fundal fr
intervenia utilizatorului i ndeplinete o funcie (web server, file server, task scheduler, mail
server etc.).
Device (fiier special): n lumea UNIX, totul este un fiier memoria este un fiier, partiiile
sunt fiiere, fiecare dispozitiv hardware i gsete corespondena ntr-un fiier. Fiierele care
permit accesul ctre hardware sunt numite fiiere nod sau fiiere speciale i de obicei n Linux se
gsesc n directorul /dev.
GNU (GNUs Not Unix): Un proiect pornit n 1983 de Richard Stallman cu scopul producerii
unei variante complete de UNIX al crei cod surs s fie liber de interesele marilor corporaii.
n prezent, fundaia GNU are o implementare complet a sistemului UNIX (inclusiv un kernel
numit Hurd), iar mpreun cu kernelul Linux formeaz sistemul de operare numit oficial
GNU/Linux i cunoscut ca Linux.
Group ID (GID): Numrul unui grup de utilizatori UNIX, alocat unic pentru un grup, necesar
pentru stabilirea permisiunilor.
Init: Este (n mod normal) primul proces pornit de kernel dup montarea sistemului principal
(root) de fiiere. Poate porni o sesiune de tip single-user pentru depanare sau n mod normal
ruleaz procedura de start-up a sistemului i pornete programele de logare n sistem. Este de
asemenea procesul care ruleaz procedura de oprire a sistemului.
Kernel: Centrul sistemului de operare, kernelul arbitreaz accesul la resursele hardware i
traduce prin driver-e un numr de funcii generale n comenzi hardware, pentru a permite
programelor s opereze cu diferite tipuri de hardware printr-un set standard de comenzi. Este de
asemenea responsabil pentru gestionarea utilizatorilor unui sistem i interzicerea (inter)aciunilor
cu procesele rulate de un alt utilizator.
Modul kernel: Kernel-ul Linux poate fi spart n mai multe buci numite module, care se
ncarc dinamic doar atunci cnd este nevoie de ele. Condiia clasic este ca modulul pentru
sistemul principal de fiiere (root=rdcin) i driver-ul pentru controllerul de disk s fie incluse
n kernel, pentru a putea boot-a sistemul i a avea acces la celelalte module.
Mount
Aplicaie care permite ataarea unui sistem de fiiere n sistemul principal de fiiere (root), de
exemplu adugarea unui CD-ROM ntr-un director dorit (frecvent/mnt/cdrom sau /cdrom) pentru
a-l putea citi. Un sistem de fiiere poate fi gsit pe o partiie, pe reea (prin Samba sau NFS), ntrun fiier (de exemplu, fiierele .iso) n RAM (shmfs sau tmpfs, adic ramdrive) sau chiar pe un
dispozitiv loop criptat, permind folosirea unui sistem de fiiere complet criptat cu diferii
algoritmi (inclusiv AES).
Permisiuni

n sens UNIX, un grup de bii care definete drepturile de acces asupra unui fiier/director, pe
trei categorii: proprietar (owner), grup i alii.
Trei drepturi pot fi setate pentru fiecare categorie: scriere(w), citire (r) i execuie (x).
Exemplu: rwxr-x permite citirea, scrierea i marcheaz fiierul ca executabil pentru
proprietar, permite citirea i executarea sa de ctre grupul cruia i aparine i nu acord nici un
drept altor utilizatori. Un al zecelea bit 100 difereniaz ntre un fiier i un director.
Samba
Implementarea pentru Linux a protocolului SMB/CIFS, altfel cunoscut ca Windows File
Sharing. Ruleaz n fundal, ca daemon.
SetUID (SUID)
Permite executarea unui fiier sub numele userului cruia i aparine. Adesea folosit pentru a
permite pornirea de ctre un utilizator a unui program care are nevoie de drepturi de superuser.
Superuser (root)
Un utilizator special cruia i este permis accesul direct la memoria kernelului i la procesele
celorlali utilizatori, oprirea sau repornirea sistemului, ignorarea permisiunilor fiierelor sau
crearea conturilor pentru ali utilizatori. Pe Linux, acesta are User ID egal cu zero.
User ID (UID)
Numrul unui utilizator UNIX, alocat unic pentru un sistem, necesar pentru stabilirea
permisiunilor.
Window Manager
O aplicaie care ruleaz pe un X Windows server i controleaz afiarea i poziionarea
ferestrelor pe ecran, permind repoziionarea i redimensionarea acestora, decorarea lor cu
margini, meniuri, titluri etc., n funcie de preferinele utilizatorului i adesea spre marea confuzie
a acestuia.
X Windows
Mediul grafic standard de-facto al universului UNIX, ns exist versiuni pentru aproape orice
sistem de operare. Este bazat pe un protocol de reea i ca atare permite afiarea unor aplicaii
rulate pe alt sistem (un fel de telnet grafic). Un numr de extensii aduse serverului permit
accesarea direct a hardware-ului i rularea unor aplicaii grafic intensive, cum ar fi jocurile
moderne i efectele grafice.
1. Sisteme de operare
Scurt prezentare a evoluiei sistemelor de operare
Deoarece primele computere erau construite numai pentru o singura sarcina, sistemele de
operare nu au existat ntr-o forma distinct pana in anii 1960. Pe msura evoluiei
calculatoarelelor care puteau rula diferite programe in succesiune, programatorii au inceput s
creeze "biblioteci de programare comune" pentru a le folosi n comun, pentru a beneficia de
experiena unui grup de programatori, pentru a accelera evoluia. Apoi, calculatoarele au inceput
sa fie construite pentru ndeplini mai multe sarcini i comuta automat de la o sarcina la alta. A
fost necesar crearea bibliotecilor run-time pentru a gestiona procesarea i au aprut programe
care puteau sa interpreteze diferite tipuri de limbaje de programare in cod masina.
Cand calculatoarele personale produse de catre companii precum Apple Inc, Atari, IBM si
Amiga au devenit populare in anii 1980, vanzatorii au inceput adaugarea de caracteristici cum ar
fi programarea de software si intretinere hardware.
La inceputul anilor 1950, un computer (care era ct o bibliotec ntreag) putea executa un

singur program la un moment dat. Fiecare utilizator a avut o utilizare exclusiva a calculatorului si
a ajuns la un moment dat cu programul si datele pe carduri de hartie perforate si banda.
Programul putea fi incarcat in masina, iar masina ar fi setata sa functioneze pana la finalizarea
programului sau pana la intreruperea lui. Programele puteau fi corectate nlocuind cartele cu o
altele n care erau scrise liniile de cod corectate. Mai tarziu au fost create biblioteci de software,
pentru anumite operatiuni, cum ar fi intrare, iesire si generatoare de cod
In 1959 sistemul de operare SHARE a fost lansat ca o utilitate integrata pentru IBM 704 si
IBM 709 mainframe-uri.
In 1964 IBM a produs familia de computere mainframe System/360 care a fost furnizat cu un
sistem de operare OS/360. OS/360 a inute evidenta tuturor resurselor sistemului care sunt
folosite, inclusiv programele si spatiu alocat a datelor in memoria principala, datele din spatiul
stocare secundara, cat si fisierele de blocare in timpul actualizarilor. Cand procesul este reziliat
indiferet de motiv, toate acele resurse sunt restituite de sistemul de operare. OS/360 a avut un rol
esenial pentru evoluia sistemelor de calcul, aplicatiile scrise pentru OS/360 pot inca rula pe
calculatoare moderne.
In mijlocul anilor 70 a aprut MVS (Multiple Virtual Storage), descendent al OS/360 care a
oferit prima implementare pentru utilizarea memoriilor RAM (Random Acces Memory).A aprut
apoi CP-67 a inceput o linie intreaga de sisteme de operare axate pe conceptul masinilor virtuale.
Control Data Corporation a dezvoltat sistemul de operare SCOPE in anii 1960, pentru
procesarea loturilor. In cooperare cu Universitatea din Minnesota, sistemul de operare KRONOS,
iar mai tarziu NOS au fost dezvoltate in anii 1970, care sustineau simultan loturi cat si utilizarea
timesharing-ului. Ca multe sisteme de timesharing comerciale, interfata sa a fost o extensie a
sistemelor de operare BASIC Darthmouth, unul dintre efortule de pionierat in multiproprietate si
limbaje de programare.
La sfarsitul anilor 1970, Control Data si Universitatea din Illinois au dezvoltat sistemul de
operare PLATO, care au folosit ecranele cu plasma si pe distante lungi de timp retele de partajare.
PLATO a fost deosebit de inovatoar pentru timpul sau, caracterizat prin execuii in timp real si
jocuri grafice multi-user.
Burroughs Corporation a introdus B5000 n 1961 cu MCP (Master Control Program), sistem
de operare. B5000 a fost o stiva de masini proiectate pentru a sprijini n mod exclusiv la nivel
nalt limbi cu nici un limbaj main sau de asamblare, precum si intr-adevar, MCP a fost primul
sistem de operare care urmeaza sa fie scris exclusiv intr-o limba de nivel inalt ESPOL
(prescurtare pentru Executive Systems Programming Oriented Language), un dialect al limbii
ALGOL (prescurtare pentru ALGOrithmic Language). MCP a introdus de asemenea multe
inovatii revolutionare, cum ar fi prima implementarea comerciala a memoriei virtuale. In timpul
dezvoltarii a AS400, IBM a facut o abordare a Burroughs sa acorde licente pentru MCP pentru a
rula pe hardware-AS400. Aceasta propunere a fost refuzata de catre conducerea Burroughs,
pentru a proteja productia existenta de hardware. MCP este inca in uz in Unsys ClearPath/MCP
linia de calculatoare.
UNIVAC, primul producator comercial de computere, a produs o serie de sisteme de operare
EXEC. Ca toate sistemele timpurii de tip main-frame, acesta a fost un sistem de lot orientat, care
era gestionat de tobe magnetice, discuri, cititoare de carduri si imprimante linie. In anii 1970,
UNIVAC produs de baza in timp real (Real-Time Basic - RTB) pentru a sprijini schimbul de
timp, pe scara larga, de asemenea, dupa modelul sistemului Dartmouth BASIC.
Digital Equipment Corporation a dezvoltat mai multe sisteme de operare pentru varietatea
liniilor de computer, incusiv TOPS-10 si TOPS-20 pentru sisteme de partajare de 36 biti PDP-10
sisteme de clasa. Inainte de utilizarea pe scara larga de UNIX, TOPS-10 a fost un popular sistem

in universitati, iar la inceputuri comunitate ARPANET.


De la sfarsitul anilor 1960 pana pe la sfarsitul anilor 1970, mai multe capabilitati hardware au
evoluat, ceea ce a permis software-urilor similare sau software-urile portate sa ruleze pe cat mai
multe sisteme. Tinerele sisteme au utilizat microprogramarea sa puna in aplicare functii de pe
sistemele lor pentru a permite diferitelor baze de arhitecturi sa para a fi la fel ca ceilalti intr-o
serie. De fapt, majoritatea 360, dupa 360/40 (cu exceptia 360/165 si 360/168) au fost
microprogramate implementarile. Dar, in curand alte mijloace de realizare a compatibilitatii
cererii s-au dovedit a fi mai semnificative.
Investitiile enorme in software-ul pentru aceste sisteme au fost facute in anii 1960 cauzate de
cele mai multe calculatoare originale ale producatorilor pentru a continua sa dezvolte sisteme de
operare compatibile, impreuna cu hardware-ul.

1.

Microcalculatoarele

Primele calculatoare nu au avut capacitatea sau necesitatea de a elabora sisteme de operare


care au fost dezvoltate pentru mainfraimuri si minis; sisteme de operare minimaliste au fost
dezvoltate, adesea incarte de la ROM (Read Only Memory) si cunoscute sub numele de
Monitoare. Un notabil disc bazat pe sistemele de operare timpurii a fost strans imitate de MSDOS, care a devenit salbatic de popular ca sistemul de operare ales pentru IBM PC(versiunea
IBM a fost numit IBM DOS sau PC DOS), succesorii sai creand Microsoft. In anii 80 Apple
Computer Inc. abandoneaza popularele serii Apple II de microcomputere pentru a introduce
Apple MacinTosh computere cu o inovatoare Interfata Grafica pentru Utilizator (Graphical User
Interface- GUI) pentru Mac OS.
Introducerea Intel 80386 CPU cip cu arhitectura pe 32 biti si capabilitati de paging,
calculatoarele personale prevazute cu abilitatea de a rula sisteme de operare cu multitasking-ul
cum ar fi cele mai tinere minicomputere si mainframe-uri. Microsoft a raspuns la acest progres
prin agajarea Dave Cutler, care au dezvoltat VMS( Virtual Memory System), sistemul de operare
pentru Digit Equipment Corporation. El va conduce la dezvoltarea de sistemul de operare
Windows NT, care continua sa serveasca dept baza pentru linia de sisteme de operare Microsoft.
Steve Jobs, co-fondatorul Apple Inc. , a inceput NeXT Computer Inc, care a dezvoltat sistemul de
operare Unix-like NEXTSTEP. NEXTSTEP a fost mai tarziu achizitionat de catre Apple Inc. si
folosit, impreuna cu codul de la FreeBSD ca nucleu al Mac OS X.
Proiectul GNU a fost inceput de activistul si programatorul Richard Stallman cu scopul de a
completa un software gratuit de inlocuire al proprietatii sistemului de operare UNIX. In timp ce
proiectul a avut un succes urias in duplicarea variatelor parti de functionalitati ale UNIX,
dezvoltarea GNU Hurd Kernel-ului s-a dovedit a fi neproductiva. In 1991 finlandezul Linus
Torvalds, in cooperare cu voluntarii de pe internet, a realizat prima versiune a kernel-ului Linux.
A fost fost curand o fuziune cu utilizatorii platformei GNU si software-ul sistemului pentru a
forma un sistem de operare complet. De atunci, o combinatie a celor doua componente majore au
fost de obicei demunite simplu Linux de industria software, o conventie de denumire care
Stallman si Free Software Foundation raman opuse, preferand denumirea de GNU/Linux in
loc. Barkeley Software Distribuition, cunoscut ca BSD, este derivat UNIX distribuit de
Universitatea din California, Berkeley, incepand din anii 1970. Distribuit liber si portat la multe
minicalculatoare, in cele din urma castiga un text pentru utilizarea pe PC-uri, in principal ca
FreeBSD, NetBSD si OpenBSD.