Sunteți pe pagina 1din 18

PROIECT

PRACTIC
SISTEME DE OPERARE
2
CUPRINS
Nr.
crt.
Coninut
Nr.
pag.
1. I. Noiuni de sisteme de operare 3
2. II. Structura sistemului de fiiere DOS 6
3. III. Editor de text 7
4. IV. Programare C 8
a) Tipuri de date 8
) !ariai"e "#$a"e %
$) Para&etri '#r&a"i ()
d) Pr#$eduri ()
e) Opera*ii $u 'i+iere ((
3
I. NO,IUNI DE SISTEME DE OPERARE
Un sistem de operare este un program care controleaz execuia programelor de
aplicaie i acioneaz ca o interfa ntre utilizator i partea hardware a calculatorului. Scopul
unui sistem de operare este de a rezolva prolemele utilizatorului! adic de a executa
programele de aplicaie. "a executarea aplicaiilor concur at#t partea hardware! c#t i cea
software a calculatorului.
$ parte din sistemul de operare este rezident n permanen n memoria intern. %a se
numete Kernel sau nucleu i conine funciile cele mai folosite ale sistemului de operare.
&unciile sistemului de operare sunt'
Administrarea proceselor
- crearea i terminarea proceselor(
- planificarea i administrarea proceselor(
- comutarea ntre procese(
- sincronizarea proceselor i asigurarea comunicrii ntre procese(
- administrarea locurilor de control a proceselor.
Administrarea memoriei:
- alocarea pentru proces a spaiului de adrese(
- asigurarea schimului ntre memoria intern i disc(
- administrarea segmentelor sau paginilor.
Administrarea sistemului de intrare-ieire:
- administrarea ufferelor(
- alocarea la procese a canalelor de comunicaie i a modulelor de intrare)ieire.
Suportul funciilor:
- administrarea ntreprinderilor(
- monitorizarea(
- contailizarea.
&uncia principal a unui sistem de operare este de a administra diferite resurse
disponiile *memoria intern! procesoare! dispoziie de intrare)ieire+ i de a planifica
utilizarea lor de ctre diferite procese active.
Resursa este o component a sistemului de operare. Un program care consum o
resurs sau un utilizator care folosete o resurs se numete clientul resursei.
,
Resursele fizice sunt componentele hardware ale calculatorului care au funcii de
prelucrare! pstrare sau transferare a informaiei. -in aceast categorie fac parte procesorul!
memoria intern! modulele de control ale operaiilor de intrare)ieire i dispozitivele
periferice.
.esursele fizice se pot clasifica n funcie de modul n care sistemul de operare pune
resursa la dispoziia clientului'
Resurse fizice propriu-zise care reprezint componente efective ale sistemului de
operare care pot fi eventual parta/ate ntre mai multe programe sau utilizatori.
Resurse virtuale care sunt componente ale sistemului de operare pe care le pune la
dispoziia clientului pentru a le folosi n exclusivitate.
Resursele logice sunt componentele software ale calculatorului! care au funcii de
administrare a resurselor i a datelor! de planificare i executare a programelor de aplicaie!
de organizare i de prelucrare a datelor. -in aceast categorie fac parte programele i datele.
Sistemele de operare sunt alctuite n principal din dou categorii de programe'
programe de comand-control! av#nd rolul de coordonare i control al tuturor funciilor
sistemului de operare(
programe de servicii! care sunt executate su supravegherea programelor de comand)
control i sunt utilizate de programator pentru dezvoltarea aplicaiilor.
Programele de comand-control sunt cunoscute i su numele de monitoare!
supervizoare sau executive! coordoneaz activitatea celorlalte componente ale sistemului de
operare.
0el mai frecvent utilizate componente ale supervizorului sunt ncrcate n memoria
intern nc de la generarea sistemului de operare! celelalte componente rm#n n memoria
extern fiind apelate i executate numai atunci c#nd sunt solicitate de ctre nucleul sistemului
de operare asemenea programului de aplicaie.
1
Supervizorul iniiaz execuia operaiilor de intrare)ieire pentru transferul
componentelor tranzitorii din memoria extern n memoria intern! fiind totodat responsail
de alocarea canalelor de intrare)ieire! de asemenea efectueaz controlul i coordonarea
unitii centrale de prelucrare 02U! pe parcursul recepionrii de mesa/e de la canalele prin
care se execut transferul! a execuiei programelor din memoria intern! respectiv a
transmiterii de mesa/e ctre dispozitivele periferice de intrare)ieire prin intermediul
magistralelor.
&olosind programul shell! utilizatorul poate s comunice sistemului de operare
activitile pe care treuie s le execute! modul n care sunt delimitate activitile! structura
acestor activiti! resursele fizice i logice necesare pentru executarea lor i informaii despre
seturile de date folosite.
%voluia sistemelor de operare a dus la descompunerea lucrrilor n procese pentru a
se utiliza mai optim resursele sistemului de calcul. 3ceste procese se pot executa
reconvenional sau concurent! n funcie de logica lucrrii. $rice sistem modern de operare se
azeaz pe componenta Kernel pentru administrarea proceselor.
4
II. STRUCTURA SISTEMU-UI DE .I/IERE DOS
Sistemul 5S)-$S! raportat la alte sisteme de operare cunoscute *U678! $S92! U5S!
:76-$:S+ are o dimensiune medie i o complexitate moderat! suport un singur
utilizator. -in punctul de vedere al controlului resurselor calculatorului! 5S)-$S se
comport ca un manager de fiier dec#t ca un sistem de operare.
2artea de management a fiierelor din nucleul 5S)-$S este partea cea mai
consistent a 5S)-$S. %a asigur citirea i scrierea fiierelor. -ac nu este necesar accesul
la un sector particular de pe disc! programele de aplicaie treuie s realizeze citirea i
scrierea fiierelor prin intermediul nucleului 5S)-$S. Un fiier este o colecie de nregistrri
de acelai tip care poate fi tratat ca un tot unitar de utilizatori sau de programele de aplicaie!
identificarea lui fc#ndu)se printr)un nume unic. 5emorarea lui se face pe un suport de
informaie.
Sistemul de operare -$S accept nume de fiiere de maxim ; caractere! nu face
diferena ntre litere mari i litere mici iar numele fiierului este format din dou pri
separate prin punct.
$rganizarea logic a datelor n fiiere reprezint definirea unor relaii ntre
nregistrrile unui fiier i poziia nregistrrilor n fiier! astfel nc#t operaiile de intrare)
ieire s se execute c#t mai rapid.
<n sistemul de operare 5S)-$S! locul fiierelor de pe disc se numete cluster i este
format dintr)un numr de sectoare aran/ate continuu pe disc. 6umrul de sectoare depinde de
tipul discului i de capacitatea lui.
Sistemul de operare permite diferite operaii prin care se poate asigura pstrarea
informaiilor ntr)un fiier i regsirea lor n vederea prelucrrii.
3tunci c#nd mai muli utilizatori cer accesul la acelai fiier! fie s)l actualizeze! fie
s)l consulte! sistemul de operare sau sistemul de gestiune a fiierelor treuie s introduc o
disciplin a accesului. 3ceast prolem poate fi aordat fie prin a permite unui utilizator s
locheze accesul altor utilizatori la fiierul pe care l actualizeaz! fie s locheze accesul
celorlali utilizatori numai la nregistrarea pe care o actualizeaz. 7mplementarea se poate face
folosind mecanismul cititor-scriitor.
3locarea spaiului la fiiere se poate face static sau dinamic. $ alocare static
presupune s se cunoasc spaiul maxim necesar fiierului ca s se poat staili la crearea
fiierului. <n cazul n care spaiul se aloc dinamic unui fiier! alocarea se va face n poriuni
=
de suport numite uniti de alocare. %videna atriuirii unitilor de alocare la fiiere este
pstrat ntr)o tael numit tabela de alocare a fiierelor.
;
III. EDITOR DE TE0T
Un editor de text este un set de programe ce ofer posiilitatea introducerii! editrii i
tipririi de texte su forma unor fiiere 3S077. >extele sunt alctuite din caractere care se
introduc de la tastatur! apr#nd n acelai timp i pe monitor! erorile pot fi corectate foarte
uor! deoarece acestea nu sunt nc tiprite pe h#rtie. %ditorul de texte are ca activitate
principal crearea de texte! mpreun cu hardware)ul! furnizeaz calea de urmat pentru
vizualizarea! memorarea! editarea i regsirea textelor create. %ditoarele de texte mai
performante permit i introducerea elementelor de grafic n text. -eoarece documentaia de
utilizare a editoarelor de texte este voluminoas! proiectanii acestora au prevzut pentru cele
mai frecvente funcii un sistem de help ce const n informaii minime! afiate de monitor!
referitor la modul de lucru al funciei. 6umele fiierului! pagina curent! linia i coloana n
care se afl cursorul sunt permanent afiate pe monitor n vederea orientrii utilizatorului!
textul poate fi memorat pe suport magnetic! se poate folosi i modificarea dup necesiti.
%ditoarele de texte sunt componente ale sistemului de operare cu cea mai mare frecven de
utilizare. <n prezent exist o mare varietate de astfel de programe datorit capacitii de a
degreva utilizatorul de sarcini elementare! cum ar fi' desprirea n silae! alinierea textelor!
paragrafelor! titlurilor! sulinierea unor poriuni din text! cutarea unui ir de caractere i
editarea acestuia! indexarea documentului! realizarea cuprinsului.
?
I!. PRO1RAMARE 2N C
a !ipuri de date
>ipuri de date de az sunt char int float double reprezent#nd caractere *@ Ate+!
ntregi cu semn! numere n virgul moil n simpl i respectiv dul precizie. %xist mai
muli specificatori suplimentari de tip care se pot aplica acestor tipuri de date de az!
oin#ndu)se tipuri noi.
2entru tipul int exist specificatori short i long! put#nd declara de exemplu'
long int i(
short int /(
<n aceste cazuri! int se poate omite! deci se poate scrie direct'
long i(
short /(
.estriciile impuse de standardul 36S7 sunt'
dim*short+BC@4 ii(
dim*int+BC@4 ii(
dim*long+BC32 ii(
dim*short+DC dim*int+BC dim*long+(
Specificatorii signed i unsigned pot fi aplicai tipului char i oricrui tip de ntregi
*short int i long+. Eariailele de tip unsigned sunt considerate BCF! respect#nd regulile
aritmeticii modulo !n unde n este un numr de ii pe care e memorat tipul ntreg respectiv.
Eariailele de tip signed sunt n domeniul G2n)@...2m)@)@.
>ipurile short int i long sunt implicit cu semn! dar tipul char poate fi implicit cu
semn sau fr semn! depinz#nd de implementare. >ipul long double specific variailele n
virgul moil extins.
3pel#nd la o implementare uzual a lima/ului 0 pe echipamente 20! compatiile
7H5 su sistemul de operare 5S)-$S! tipurile de date diferite de standardul 36S7 i
recunoscute de lima/ cu reprezentarea din taelul urmtor.
@F
Tip Repre3e4tare 564 i*i) Ra47
char ; )@2;I@2=
unsigned char ; FI211
signed char ; )@2;I@2=
int @4 )32=4;I32=4;
unsigned int @4 FI41431
signed int @4 )32=4;I32=4=
short int @4 )32=4;I32=4=
unsigned short int @4 FI41131
signed short int @4 )32=4;I32=4=
long int 32 )2@,=,;34,;I2@,=,;34,=
signed long int 32 )2@,=,;34,;I2@,=,;34,=
unsigned long int 32 FI,2?,?4=2?1
float 32 @F
)3=
I@F
)3=
*4 digii precizie+
doule 4, @F
)3F;
I@F
)3F;
*@F digii precizie+
long doule ;F @F
),?32
I@F
),?32
*@1 digii precizie+
" Varia"ile locale
Eariailele locale! spre deoseire de cele gloale! nu sunt valaile n tot programul.
%le au o valailitate local! n unitatea n care sunt declarate. Eariailele locale pot fi alocate
stiv. <n acest caz ele se numesc automatice. 3cestea se declar n mod oinuit! n scopul
unei funcii sau la nceputul unei instruciuni compuse. $ astfel de variail se aloc la
execuie *nu la compilare+.
"a apelul unei funcii! variailele automatice *declarate n mod oinuit naintea
primei instruciuni din corpul funciei respective+ se aloc pe stiv. <n momentul n care se
revine din funcie! variailele automatice alocate la apel! se dezaloc *elimin+ i stiva revine
la starea dinaintea apelului *operaia de curire a stivei+. 3ceasta nseamn c variailele
automatice i pierd existena la revenirea din funcia n care sunt declarate. -e aceea! o
variail automatic este valail *viziil+ numai n corpul funciei n care a fost declarat.
<n acelai mod se comport variailele automatice declarate la nceputul unei
instruciuni compuse. $ astfel de variail se aloc pe stiv n momentul n care controlul
programului a/unge la instruciunea compus n care este declarat variaila respectiv i se
elimin de pe stiv n momentul n care controlul programului trece la instruciunea
urmtoare celei compuse.
Eariailele locale pot i s nu fie alocate pe stiv. <n acest scop ele se declar ca fiind
statice. $ declaraie de variail static este o declaraie oinuit precedat de cuv#ntul
cheie static.
Eariailele statice pot fi declarate at#t n corpul unei funcii c#t i n afara corpului
oricrei funcii. $ variail static declarat n corpul unei funcii este definit numai n
@@
corpul funciei respective. Spre deoseire de variailele automatice! o variail static nu se
aloc pe stiv la execuie! ci la compilare ntr)o zon de memorie destinat acestora. $
variail static declarat n afara corpurilor funciilor este definit *viziil+ din punctul n
care este declarat i p#n la sf#ritul fiierului surs care conine declaraia respectiv. Spre
deoseire de variailele gloale! o astfel de variail nu poate fi declarat ca extern. -eci ea
nu poate fi utilizat n alte fiiere dac acestea se compileaz separat sau se include naintea
declaraiei respective. 2utem spune c o variail static declarat n afara corpurilor
funciilor este local fiierului surs n care este declarat. %a se aloc la compilare ntr)o
zon special rezervat variailelor statice corespunztoare fiierului surs n care au fost
declarate.
c Parametri formali
Un parametru este o valoare transmis unei funcii. 0ele mai multe dintre programe
transmit parametri ctre funcia printf'
printf*Jvaloarea este KdLnM! rezultat+(
3tunci c#nd se utilizeaz n mod regulat! se poate muntii utilitatea transmi#ndu)
le parametrii.
2arametrii formali sunt numele parametrilor care apar n definiia funciei. <n
exemplul de mai /os v"rsta salariu i nrNmarca sunt parametri formali pentru funcia
info#anga$at:
void infoNanga/at *int v#rsta! float salariu! int nrNmarca+.
O
99 instruciunile funciei(
P
2arametrii formali se aloc pe stiv ca i variailele automatice. -e aceea! ei se
consider a fi variaile locale i sunt utilizaili numai n corpul funciei n antetul creia sunt
declarai.
"a apelul unei funcii! se aloc pe stiv parametri formali! dac exist! li se atriuie
valorile parametrilor efectivi care le corespund. 3poi se aloc pe stiv variailele automatice
declarate la nceputul corpului funciei respective.
"a revenirea din funcie! se realizeaz curirea stive! adic sunt eliminate de pe stiv
*dezalocate+ at#t variailele automatice! c#t i parametrii. <n felul acesta! la revenirea din
funcie! stiva a/unge la starea dinaintea apelului.
d Proceduri
@2
2rocedura treuie s exprime acelai proces de calcul dar care se realizeaz cu date
diferite. <n acest caz! procedura treuie realizat general! fc#nd abstracie de datele
respective. 2entru a evalua expresia' ,QQ@F)3QQ2F *@+! putem construi o procedur pentru
ridicarea la putere! care s fie general i s fac astracie de valorile efective pentru az i
exponent' , i @F pentru prima ridicare la putere! 3 i 2F pentru cea de)a doua. 3ceast
generalizare se realizeaz consider#nd ca fiind variaile at#t aza c#t i exponentul! iar
valorile lor se precizeaz la fiecare apel al procedurii implementate n acest fel. 3ceste
variaile utilizate pentru a putea implementa o procedur general i care se concretizeaz la
fiecare apel al procedurii se numesc parametrii formali. <n felul acesta! procedura apare ca un
rezultat al unui proces de generalizare necesar implementrii ei.
<n toate lima/ele de programare se consider 2 categorii de proceduri'
@. 2roceduri care definesc o valoare de revenire(
2. 2roceduri care nu definesc o valoare de revenite.
2rocedurile din prima categorie se numesc funcii. %aloarea de revenire se mai
numete i valoarea de &ntoarcere sau valoarea returnat de funcie. 2rocedura pentru
calculul ridicrii la putere este un exemplu de funcie. %a are ca parametrii aza i
exponentul! iar ca valoare de ntoarcere sau returnat! rezultatul ridicrii valorii azei la
valoarea exponentului! valori care sunt definite la apel.
<n lima/ele 0 i 0RR at#t procedurile din prima categorie c#t i cele din cea de)a
doua se numesc funcii. -eci! n aceste lima/e distingem funcii care returneaz o valoare la
revenirea din ele! precum i funcii care nu returneaz nici o valoare.
$ funcie are o definiie i at#tea apeluri ntr)un program! c#te sunt necesare. $
definiie de funcie are formatul'
antet
corp
unde' ) antet G are formatul'
tip nume *lista declaraiilor parametrilor formali+(
) corp G este o instruciune compus.
>ip este cuv#ntul cheie void pentru funcii care nu returneaz nici o valoare la
revenirea din ele.
3pelul unei funcii treuie s fie precedat de definiia sau de prototipul ei.
2rototipul unei funcii conine informaii asemntoare cu cele din antetul ei'
tipul valorii returnate(
numele funciei(
tipurile parametrilor.
@3
%l poate avea acelai format ca i antetul funciei! n plus este urmat de punct i
virgul.
e Operaii cu fiiere
$peraiile de prelucrare a fiierelor se execut utiliz#ndu)se funcii specializate de
gestiune a fiierelor. -e asemenea! fiecrui fiier i se ataeaz o structur de tip &7"%. 3cest
tip este definit n fiierul stdio'h. -e asemenea! toate funciile din aceast clas are
prototipurile n fiierul stdio'h.
(. De8$9iderea u4ui 'i+ier
2entru a deschide un fiier la acest nivel de prelucrare a fiierelor se utilizeaz funcia
fopen. %a returneaz un pointer spre tipul &7"% *tipul fiierului+ sau pointerul nul n caz de
eroare. 2rototipul funciei este urmtorul'
&7"% Qfopen*const char Q calea! const char Q mod+(
unde' ) calea G are aceeai semnificaie ca i n cazul funciei open adic este un pointer spre
un ir de caractere care definete calea spre fiierul care se deschide(
) mod G este un pointer spre un ir de caractere care definete modul de prelucrare al
fiierului dup deschidere! acest ir de caractere se definete astfel'
JrM G deschidere pentru citire(
JwM G deschidere pentru scriere(
JaM G deschidere pentru adugare(
JrRM G deschidere pentru modificare citire)scriere(
JrM G deschidere pentru citire inar(
JwM G deschidere pentru scriere inar(
JrRM G deschidere pentru citire)scriere inar.
0u a/utorul funciei fopen se poate deschide un fiier inexistent n modul ( sau a. <n
acest caz! fiierul respectiv se consider n creare.
-ac se deschide un fiier existent n modul (! atunci se va crea din nou fiierul
respectiv i vechiul coninut al su se va pierde.
-eschiderea unui fiier n modul a permite adugarea de nregistrri dup ultima
nregistrare existent n fiier.
2. Pre"u$rarea pe $ara$tere a u4ui 'i+ier
&iierele pot fi scrise i citite caracter cu caracter folosind dou funcii simple
@,
putc )pentru scriere(
getc )pentru citire.
&uncia putc are prototipul'
int putc*int c! &7"% Qfp+(
unde' ) c G codul 3S077 al caracterului care se scrie n fiier(
- fp G un pointer spre tipul &7"% a crui valoare a fost returnat de funcia fopen la
deschiderea fiierului n care se face scrierea( <n particular fp poate fi *stdont! stderr! stdprn!
stdaux+.
&uncia putc returneaz valoare lui c sau G@ la eroare.
&uncia getc are prototipul'
int getc*&7"% Qfp+(
unde' ) fp G un pointer spre tipul &7"% a crui valoare a fost definit la apelul funciei fopen'
<n particular fp poate fi *stdin! stdoux+.
&uncia putc returneaz codul 3S077 al caracterului citit din fiier.
@1
3. 24$9iderea u4ui 'i+ier
-up terminarea prelucrrii unui fiier! acesta urmeaz a fi nchis. <nchiderea unui
fiier se realizeaz cu a/utorul funciei fclose de prototip'
int fclose*&7"% Qfp+(
unde' ) fp Geste pointerul spre tipul &7"%. Ealoarea lui a fost definit prin funcia fopen la
deschiderea fiierului.
&uncia returneaz valorile'
- F Gla nchidere normal(
- )@ Gla eroare.
4. I4tr:ri;ie8iri de +iruri de $ara$tere
Hilioteca standard a lima/ului 0 conine funciile fgets i fputs care permit citirea!
respectiv scrierea! nregistrrilor care sunt iruri de caractere.
&uncia fgets are prototipul'
char Qfgets*char Qs! int n! &7"% Qfp+(
unde' ) s Geste pointerul spre zona n care se pstreaz caracterele citite din fiier(
) n Geste dimensiunea n octei a zonei n care se citesc caracterele din fiier(
) fp Geste pointerul spre tipul &7"% a crui valoare s)a definit la deschiderea fiierului.
0itirea caracterelor se ntrerupe la nt#lnirea caracterului JLnM sau dup citirea a cel
mult n)@ caractere. <n zona spre care pointeaz s se pstreaz caracterul JLnM dac acesta a
fost citit din fiier! iar apoi se memoreaz caracterul nul *J LFM+. <n mod normal! funcia
returneaz valoarea pointerului s. "a nt#lnirea sf#ritului de fiier funcia returneaz valoarea
F.
&uncia fputs scrie un ir de caractere ntr)un fiier. %a are prototipul'
int fputs *const char Qs! &7"% Qfp+(
unde' ) s G este pointerul de la nceputul zonei de memorie care conine irul de caractere care
se scrie n fiier.
) fp G este pointerul spre tipul &7"% a crui valoare a fost definit la deschiderea
fiierului prin apelul fopen'
&uncia fputs returneaz codul 3S077 al ultimului caracter scris n fiier sau G@ la
eroare.
3ceste dou funcii sunt similare cu funciile gets i puts'
@4
<. I4tr:ri ie+iri $u '#r&at 5I;O)
Hilioteca standard a lima/ului 0 conine funcii care permit realizarea operaiilor de
79$ cu format. <n acest scop se pot utiliza funciile fscanf fprintf'
3cestea sunt similare cu funciile sscanf! respectiv sprintf. -iferena dintre ele const
n faptul c fscanf i fprintf au ca prim parametru un pointer spre tipul &7"%! iar sscanf i
sprintf au ca prim parametru un pointer spre o zon n care se pstreaz caractere. 3stfel
fscanf citete date dintr)un fiier i le convertete! n timp ce sscanf realizeaz acelai lucru
dar utiliz#nd date din memorie. &uncia fprintf convertete date din format intern n format
extern i apoi le scrie ntr)un fiier! spre deoseire de funcia sprintf care realizeaz acelai
lucru dar rezultatele se pstreaz n memorie.
2rototipul funciei fscanf'
int fscanf*&7"% Qfp! const char Qformat! ...+(
unde' ) fp G este pointer spre tipul &7"% a crui valoare a fost definit prin apelul funciei
fopen.
2rototipul funciei fprintf'
int fprintf*&7"% Qfp! const char Qformat! ...+(
unde' ) fp G este pointer spre tipul &7"%.
6. P#3i*i#4area 64tr=u4 'i+ier
"ima/ul 0 conine funcia fsee* care permite deplasarea capului de citire)scriere al discului
n vederea prelucrrii nregistrrilor fiierului ntr)o ordine diferit de cea secvenial.
2rototipul funciei fsee*'
int fseeS*&7"% Qfp! long deplasament! int origine+(
unde' ) fp G este pointer spre tipul &7"% care definete fiierul n care se face poziionarea
capului de citire)scriere.
7. /ter7erea u4ui 'i+ier
Un fiier poate fi ters apel#nd funcia unlin*. 3ceasta are prototipul'
int unlinS*const char Qcalea+(
unde' ) calea G este pointer spre un ir de caractere identic cu cel utilizat la crearea fiierului
n funcia fopen.
)72(=(3646)
"i$e4ta&a4a7e&e4t>?a9##.$#&
@@@."u$raride"i$e4ta.r#
@=
@;