Sunteți pe pagina 1din 10

Limbaje de Programare - curs

isteI.2 INTRODUCERE ÎN SISTEME DE OPERARE

I.2.1 Noţiuni generale

Din cursul precedent:


 Componentele fizice care alcătuiesc un computer se numesc
hardware. Hardware-ul reprezintă "trupul" unui computer;
 Software-ul reprezintă unul sau mai multe programe (sau seturi
de instrucţiuni) ce pot fi înţelese de un calculator. Software-ul este
"sufletul" unui calculator.
Calculatoarele utilizează două tipuri de software:
 Software de sistem, ce permite calculatorului să execute
operaţiile de bază, cum ar fi cele de intrare/ieşire;
 Software de aplicaţie, ce permite utilizatorilor să realizeze
diferite operaţii.
Există patru tipuri de software de sistem, prezentate în figura 1.

Software de sistem Aplicaţii

Sisteme de operare Drivere de Programe utilitare Limbaje de


dispozitiv programare
Constau din unul sau
mai multe programe Sunt programe ce oferă Majoritatea utilitarelor Sunt utilizate pentru a
Controlează calculatorului tratează operaţiile de scrie programe, ce pot fi
echipamentele informaţii specifice stocare şi gestionare a executate apoi de către
hardware privind un anumit fişierelor calculator
Gestionează toate echipament hardware Unele utilitare sunt Permit utilizatorilor să
celelalte aplicaţii Sunt utilizate de OS incluse ca părţi ale OS introducă instrucţiuni
Sunt concepute pentru pentru comunicarea cu mai inteligibile decât
a lucra cu o anumită noile echipamente limbajul maşină
arhitectura hardware

Un sistem de operare este o colecţie de programe care, după


ce a fost iniţial încărcat în computer de către un "program de
încărcare" (bootstrap program), gestionează echipamentele
hardware şi toate celelalte programe din computer Celelalte
programe sunt denumite aplicaţii. Aplicaţiile utilizează sistemul de
operare, cerându-i acestuia să efectueze anumite "servicii" (funcţii).
De asemenea, utilizatorul poate interacţiona direct cu sistemul de
operare, prin intermediul unei interfeţe. Fiecare sistem de operare
este conceput pentru a lucra cu o anumită arhitectură hardware. Un

-1-
Limbaje de Programare - curs

sistem de operare proiectat pentru un calculator MacIntosh nu va


funcţiona pe un PC. Un PC mai vechi bazat pe procesorul 8088 nu
are resursele necesare pentru rularea unui sistem de operare
destinat să funcţioneze pe un Pentium.
Sistemul de operare conţine informaţii generale despre
dispozitivele ce pot fi conectate la calculator. Driverele de
dispozitiv sunt programe ce oferă calculatorului informaţii specifice
privind un anumit echipament hardware. Când se ataşează
calculatorului un nou dispozitiv, trebuie instalat pe hard-disk driverul
corespunzător. Driverul de dispozitiv este utilizat de sistemul de
operare pentru comunicarea cu noile echipamente.
Programele utilitare sunt programe utilizate împreună cu
sistemul de operare pentru a controla şi a utiliza echipamentele
hardware sau pentru a gestiona fişierele de date şi programele.
Unele dintre aceste utilitare sunt incluse ca părţi ale sistemului de
operare. Majoritatea utilitarelor tratează operaţiile de stocare şi
gestionare a fişierelor. Utilitarele sunt folosite pentru o gamă largă
de operaţii, cum ar fi:
 formatarea unui disk în vederea stocării de date şi programe;
 gestionarea datelor şi programelor – copierea, mutarea,
redenumirea sau ştergerea fişierelor;
 asigurarea securităţii datelor prin controlul existenţei viruşilor sau
crearea de copii de rezervă ale documentelor importante;
 restabilirea datelor şi programelor pierdute;
 efectuarea de teste de diagnosticare asupra echipamentelor
hardware.
Limbajele de programare sunt utilizate pentru a scrie
programe care sunt apoi convertite în limbaj maşină, cod binar ce
poate fi executat de către calculator. Limbajele de programare
permit utilizatorilor să introducă instrucţiuni mai inteligibile decât
limbajul maşină. Cu cât comenzile unui limbaj seamănă mai mult cu
un limbaj natural (de ex. cu limba engleză), cu atât limbajul respectiv
este mai uşor de învăţat şi devine mai popular.

I.2.2. Definirea sistemului de operare

Sistemul de operare poate fi definit ca un software care:


1. Gestionează resursele computerului pentru utilizatorii şi
programele concurente:
 procesorul/procesoarele (CPU)
 memoria (RAM)
 componentele de stocare (hard-disk, floppy disk, CD-ROM,
etc.)

-2-
Limbaje de Programare - curs

 componentele de intrare/ieşire (monitor, tastatură, mouse,


imprimantă)
 componentele multimedia (placă de sunet, placă video, etc.)
 componentele de conectare în reţea (placă de reţea, modem)
 etc.
2. Oferă utilizatorului o abstractizare simplu de utilizat a unei
realităţi complicate, transformând computerul într-o maşină
virtuală, uşor de utilizat şi programat:
 utilizatorii au o interfaţă simplă pentru rularea programelor,
gestionarea fişierelor, etc.
 programatorii nu trebuie să reinventeze roata; OS furnizează
câteva rutine optimizate pentru utilizarea şi alocarea
resurselor maşinii;
 OS furnizează o interfaţă de programare mai simplă,
programatorii neavând nevoie să înţeleagă în detaliu
interacţiunea dintre diversele componente hardware.
Majoritatea platformelor (hardware şi software) necesită (şi
uneori includ) un sistem de operare. Exemple de sisteme de operare:
MS-DOS, Windows 95/98/NT, UNIX, IBM-OS/2, MacOS.

I.2.3 Încărcarea sistemului de operare (booting)

Există multe tipuri de sisteme de operare, complexitatea


acestora variind după funcţiile pe care acesta le furnizează sau
scopul în care acesta este utilizat. Unele sisteme sunt responsabile
pentru gestionarea multor oameni, altele controlează dispozitive
hardware, cum ar fi pompe de petrol.
Sistemul de operare poate fi încărcat în memoria (RAM)
calculatorului în două moduri:
 este deja prezent în ROM;
 este încărcat de pe hard-disk la pornirea computerului.
În cazul în care sistemul de operare este deja prezent în ROM
(ex.: controleri industriali, pompe de petrol, etc.), acesta preia
controlul imediat ce procesorul este pornit. Prima lui sarcina va fi să
testeze senzorii şi alarmele hardware şi apoi să ruleze continuu o
rutină de monitorizare a tuturor senzorilor de intrare. Dacă starea
unui senzor se modifică, el va iniţializa o rutină de generare a unei
alarme.
Pentru sistemele mai complexe, sistemul de operare este, uzual,
stocat pe un suport (cum ar fi hard-disk-ul) şi încărcat în RAM la
pornirea computerului. Avantajul acestui tip de sistem este acela că
modificările aduse sistemului de operare sunt mai uşor de făcut şi de
implementat. La pornirea computerului, sistemul de operare se
încarcă automat în RAM, parcurgând următoarea secvenţă:
-3-
Limbaje de Programare - curs

1. Când se deschide calculatorul, controlul acestuia este preluat de


Sistemul de Bază de Intrare/Ieşire (Basic Input-Output System
- BIOS). BIOS-ul este un set de instrucţiuni stocat în cipul ROM şi
reprezintă interfaţa dintre echipamentele hardware şi sistemul de
operare.
2. Primul lucru pe care-l face BIOS-ul este un autotest (Power-On
Self Test - POST) pentru a se asigura că toate componentele
calculatorului sunt operaţionale. Apoi, un program de încărcare
conţinut în BIOS (bootstrap loader) caută pe unităţile de disk
(dischetă, hard-disk) programul special de încărcare (OS loader),
care va încărca sistemul de operare.
3. Mai întâi, caută pe dischetă o porţiune specifică unde sunt
localizate fişierele de încărcare a sistemului. O dischetă care
conţine aceste fişiere se numeşte dischetă sistem (de exemplu, în
cazul în care sistemul de operare este MS-DOS, fişierele
respective sunt IO.SYS şi MSDOS.SYS). Dacă în floppy drive există
o dischetă, dar care nu este dischetă sistem, BIOS-ul va transmite
utilizatorului un mesaj, informându-l că unitatea floppy nu conţine
o dischetă sistem. Dacă nu există o dischetă introdusă în unitatea
floppy (cazul uzual), BIOS-ul va căuta fişierele sistem pe o
porţiune specifică a hard-disk-ului.
4. După ce a identificat unde sunt localizate fişierele sistem, BIOS-ul
copiază informaţii din acestea în locaţii specifice din RAM. Aceste
informaţii sunt cunoscute sub numele de boot record.
5. Boot record conţine un program care preia controlul
computerului.
6. Boot record încarcă de pe disketă sau hard-disk în RAM fişierul
iniţial de sistem (pentru MS-DOS, acesta este IO.SYS).
7. Fişierul iniţial de sistem încarcă apoi restul sistemului de operare
în RAM.
8. Fişierul iniţial de sistem încarcă un fişier de sistem (de exemplu,
MSDOS.SYS), care ştie cum să lucreze cu BIOS-ul.
9. Unul din primele fişiere încărcate este şi fişierul de configurare
a sistemului (pentru MS-DOS acesta este CONFIG.SYS).
Informaţiile conţinute în acesta indică ce fişiere specifice ale
sistemului de operare e necesar să fie încărcate (de exemplu,
driverele de dispozitiv specifice).
10. Un alt fişier special ce este încărcat este unul care specifică
aplicaţiile sau comenzile pe care utilizatorul doreşte să fie
încărcate şi rulate ca parte a procesului de încărcare (pentru MS-
DOS acesta este AUTOEXEC.BAT, pentru Windows se numeşte
WIN.INI).
11. După ce toate fişierele sistemului de operare au fost încărcate,
sistemul de operare preia controlul computerului, îndeplineşte

-4-
Limbaje de Programare - curs

comenzile iniţiale şi aşteaptă prima comandă introdusă de


utilizator.
Secvenţa de încărcare a sistemului de operare este
reprezentată schematic în figura următoare:

1. programul de încărcare conţinut în BIOS (Bootstrap Loader) caută programul de


încărcare a sistemului de operare (OS Loader) pe unitatea de disk
2. apoi, transferă programul de încărcare în memoria RAM
3. programul de încărcare încarcă restul sistemului de operare in memorie

I.2.4 Interfaţa cu utilizatorul a sistemului de operare

Fiecare sistem de operare conţine o interfaţă cu utilizatorul,


înţelegând prin aceasta una sau mai multe metode de a introduce
comenzi. Partea exterioară (Shell) a sistemului de operare este
programul care preia comenzile de la utilizator şi le transferă către
nucleul acestuia (Kernel).
În funcţie de sistemul de operare, interfaţa cu utilizatorul poate
fi:
 bazată pe text;
 grafică.

I.2.4.1 Interfeţe bazate pe text

În cazul unei interfeţe bazate pe text, utilizatorul tastează


comenzi pentru a da instrucţiuni calculatorului. Un astfel de sistem
de operare este MS-DOS (conceput în 1981 de Microsoft).
Linia de comandă MS-DOS conţine un prompter, care
informează utilizatorul că sistemul este pregătit să primească
instrucţiuni. Instrucţiunile sunt tastate după prompter. După fiecare
instrucţiune, utilizatorul trebuie să apese tasta “Enter”, pentru a
prelucra instrucţiunea. MS-DOS acceptă şi prelucrează instrucţiunile

-5-
Limbaje de Programare - curs

pe baza unei biblioteci de instrucţiuni incluse în sistemul de operare.


Un exemplu de interfaţă MS-DOS este prezentat în figura următoare:

Versiuni mai recente de DOS conţin un Shell care permite


utilizatorilor introducerea comenzilor cu ajutorul mouse-ului.
UNIX reprezintă un sistem de operare multiutilizator pentru
PC-uri (conceput iniţial la AT&T Bell), cu o interfaţă, de asemenea,
bazată pe DOS. Unele versiuni de UNIX conţin o interfaţă grafică cu
utilizatorul.

I.2.4.2 Interfeţe grafice

Primul sistem care utiliza o interfaţă grafică cu utilizatorul,


intitulat Lisa, a fost realizat de Apple şi 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,
rezultând astfel sistemul de operare Mac-OS, cu o interfaţă grafică
simplă.
O interfaţă grafică utilizează mici imagini, numite icons
(pictograme) pentru reprezentarea programelor şi instrucţiunilor.
Pentru a da o instrucţiune sistemului de operare, utilizatorul indică
un icon şi efectuează click cu mouse-ul sau efectuează selecţii din
menu-urile aflate în Shell.
În 1985 Microsoft a lansat sistemul Windows, care oferea o
interfaţă grafică şi pentru PC-uri. Acesta nu era un sistem de
operare, ci un mediu (un program utilizat împreună cu un sistem de
operare), deoarece funcţionarea sa se baza pe existenţa unui
asemenea sistem. În esenţă, Windows reprezenta un înveliş (Shell)
pentru DOS, primind instrucţiuni prin intermediul mouse-ului şi
transformându-le în comenzi ce pot fi acceptate şi executate de DOS.
Windows 95 (lansat în 1995) este prima versiune de Windows
care este chiar un sistem de operare. Funcţiile sistemului de operare

-6-
Limbaje de Programare - curs

executate anterior de DOS au fost incluse în Windows 95, acest


sistem nemainecesitând un sistem de operare separat.
Microsoft deţine şi o versiune multiutilizator a sistemului
Windows numită Windows NT. Suprafaţa de lucru a acestui sistem
este prezentată în figura următoare:

I.2.5 Gestionarea proceselor

Sistemele actuale se caracterizează prin activităţi care se


desfăşoară în paralel. Este vorba, fie de un paralelism autentic (de
exemplu execuţia unui program de către un procesor simultan cu
derularea unei operaţii de intrare/ieşire printr-un periferic), fie de un
cvasiparalelism (dacă mai multe segmente de programe îşi împart
procesorul pentru intervale scurte de timp). Privită dinspre utilizator,
execuţia acestor programe pare să se desfăşoare în paralel, deşi în
realitate nu este o execuţie paralelă, ci în sistem de partajare a
timpului (time sharing).
Pentru a face abstracţie de dependenţa relativ complicată de
timp şi de loc, sistemele de operare moderne folosesc conceptul de
proces.
Programele conţin lungi liste de instrucţiuni ce sunt executate
de către procesorul computerului (procesoarele execută milioane de
instrucţiuni pe secundă). În cazul sistemelor de operare moderne,
numai o porţiune a unui program este încărcată la un moment dat,
restul programului stă în aşteptare pe hard-disk până când alte

-7-
Limbaje de Programare - curs

porţiuni sunt apelate, realizându-se astfel o economisire a spaţiului


de memorie.
Un proces (process sau task) este o porţiune a unui program
aflat în curs de execuţie. Un program poate consta în mai multe
procese. Un proces poate crea alte procese. Procesorul poate
executa o singură instrucţiune la un moment dat. Procesorul unui
computer rulează un proces pentru o scurtă perioadă de timp, apoi
este comutat către alt proces şi aşa mai departe. Cum un procesor
execută milioane de instrucţiuni pe secundă, acesta dă senzaţia că
rulează mai multe procese simultan.
În timpul existenţei sale, un proces se poate găsi într-una din
următoarele trei stări:
 pregătit pentru execuţie (ready runnable)
 activ (running)
 blocat (blocked)
Procesul poate fi activ atunci când îi este alocat un procesor şi
execută programul său. Poate fi blocat, când continuarea execuţiei
depinde de un eveniment, ca de exemplu de încheierea unei operaţii
de intrare/ieşire. Mai poate fi pregătit dacă evenimentul aşteptat s-a
produs şi aşteaptă alocarea procesorului.
Terminal
Activ
Activat de
scheduler Eveniment
exclus

Alt proces activat


de scheduler
Iniţial
Pregătit Blocat
Eveniment inclus

Procesele care se află în starea pregătit sunt ordonate într-o


coadă de aşteptare (process queue). În orice moment pot coexista
zeci sau chiar sute de procese coordonând lucrul utilizatorilor,
programele utilizate sau sistemul de operare însuşi.

-8-
Limbaje de Programare - curs

Atribuirea procesorului este executată de modulul programator


(scheduler) al sistemului de operare. Scheduler-ul este partea
sistemului de operare care decide ordinea în care vor fi executate
procesele pregătite de a fi executate.
Când procesorul este comutat de la un proces către altul starea
acestuia (regiştrii şi datele asociate) trebuie să fie salvate, deoarece
mai târziu procesul va fi reluat şi continuat ca şi cum nu a fost
niciodată întrerupt. Odată ce această stare a fost salvată este activat
următorul proces aflat în aşteptare. Aceasta presupune încărcarea
regiştrilor procesorului şi a memoriei cu toate datele salvate anterior
şi repornirea lui de la instrucţiunea ce urma să fie executată când a
fost ultima oară întrerupt. Acţiunea de comutare de la un proces la
altul se numeşte comutare contextuală (context switching).
Această comutare se poate face în două moduri:
a. procesul activ la un moment dat eliberează voluntar procesorul,
permiţând altui proces să devină activ. Procesul întrerupt voluntar
va trece la sfârşitul cozii de aşteptare, iar procesul de la vârful
cozii devine activ. Ca urmare, toate celelalte procese vor înainta
cu o poziţie.
b. un ceas în timp real generează întreruperi la intervale regulate de
timp (de ex. o sutime de secundă). De fiecare dată când apare o
întrerupere, procesorul este comutat către un alt proces. În acest
caz scheduler-ul atribuie şi o ordine de prioritate fiecărui proces,

-9-
Limbaje de Programare - curs

fiind astfel posibil ca unele procese să fie executate mai frecvent


decât altele.

I.2.6 Tipuri uzuale de sisteme de operare

Sistemele de operare pot fi împărţite în categorii care definesc


caracteristicile lor. Sistemele moderne pot utiliza combinaţii ale celor
descrise în continuare.
1. Sisteme de operare cu prelucrare pe loturi (batch
processing)
 Primele sisteme de operare apărute;
 Programul era introdus în computer şi apoi executat până la
terminare;
 Datele utilizate de program nu puteau fi modificate în timpul
execuţiei acestora. Orice eroare survenită în execuţie
presupunea reluare execuţiei de la capăt.
2. Sisteme de operare interactive
 Permit modificarea şi introducerea datelor în timpul execuţiei
programelor;
 Se utilizează în sistemele informatice cu baze de date în
permanentă schimbare (sistemele de evidenţă a conturilor
bancare, sistemele de rezervare a locurilor la companiile
aviatice).
3. Sisteme de operare multiutilizator (time sharing)
 Permit conectarea simultană, printr-un terminal a mai multor
utilizatori;
 Se alocă segmente de timp proceselor lansate de utilizatori.
4. Sisteme de operare multitasking
 Permite execuţia mai multor sisteme simultan, în funcţie de
ordinea de priorităţi;
 Procesorul este comutat rapid între procese.
5. Sisteme de operare în timp real (real-time)
 Utilizate la comanda proceselor industriale;
 Monitorizează diferitele intrări care afectează procesele aflate
în execuţie şi răspund adecvat într-o perioadă de timp garantată
(de obicei de ordinul milisecundelor).
6. Sisteme de operare multiprocesor
 Permit utilizarea mai multor procesoare pentru execuţia
proceselor.

- 10 -