Sunteți pe pagina 1din 118

Cuprins

1. Funcţiile şi componentele unui sistem de operare .................................. 4


1.1. Sistem de operare ................................................................................................................. 4
1.2. Funcţiile unui sistem de operare ....................................................................................... 4
1.3. Programe de comandă – control ......................................................................................... 6
1.4. Programe de servicii pentru dezvoltarea programelor de aplicaţie ......................... 7
1.4.1. Editoare de texte ................................................................................................... 7
1.4.2. Translatoare de limbaje ........................................................................................ 8
1.4.3. Editorul de legături ................................................................................................ 11
1.5. Alte programe de servicii ................................................................................................... 12
1.6. Sisteme de operare la calculatoarele personale ........................................................... 13
1.6.1. Categorii de sisteme de operare ......................................................................... 13
Exerciţii .......................................................................................................................................... 19
2. Tehnici de gestiune a lucrărilor la sistemele de calcul ......................... 20
2.1. Obiectivele urmărite în gestiunea lucrărilor .................................................................. 20
2.2. Monoprogramarea ................................................................................................................. 21
2.3. Multiprogramarea ................................................................................................................. 22
2.4. Sistemul spooling (Simultaneous Peripheral Operations On Line) ........................... 24
2.5. Sisteme TIME – SHARING (sisteme cu timp divizat) ................................................ 25
2.6. Multiprelucrarea ................................................................................................................... 27
2.6.1. Sisteme master – slave ......................................................................................... 27
2.6.2. Planificarea execuţiei lucrărilor ......................................................................... 28
Exerciţii .......................................................................................................................................... 30
3. Gestiunea resurselor unui sistem de calcul – funcţie a sistemului de
31
operare ..................................................................................................................
3.1. Gestiunea proceselor şi procesoarelor ............................................................................ 32
3.1.1. Procese concurente şi coordonarea proceselor ............................................... 32
3.1.2. Sincronizarea proceselor ...................................................................................... 33
3.1.3. Gestiunea procesoarelor ....................................................................................... 34
3.2. Gestiunea memoriei .............................................................................................................. 34
3.2.1. Alocarea dinamică a memoriei ............................................................................. 35
3.2.2. Memoria virtuală .................................................................................................... 35
3.3. Gestiunea dispozitivelor periferice ................................................................................. 39
3.3.1. Unităţi de control şi canale de transfer ........................................................... 39
3.3.2. Activitatea de gestiune a dispozitivelor periferice ...................................... 40
Exerciţii .......................................................................................................................................... 43
4. Componenta ROM-BIOS şi întreruperi. MS-DOS ................................. 44
4.1. Prelucrarea întreruperilor .................................................................................................. 44
4.1.1. Conceptul de întrerupere ...................................................................................... 44
4.1.2. Întreruperi la PC-uri .............................................................................................. 45
4.2. Clase de întreruperi la PC-uri ............................................................................................ 47
4.3. Atribuirea întreruperilor şi priorităţii. Serializarea întreruperilor ........................ 48
4.4. Componenta ROM-BIOS şi MS-DOS ............................................................................... 50
4.4.1. Elemente componente BIOS ................................................................................ 50
4.4.2. Structurarea programelor şi segmentarea la MS-DOS ............................... 51
4.4.3. Alocarea memoriei pentru programe şi execuţia lor ..................................... 52
4.4.4. Programe rezidente (TSR) ................................................................................... 55
Exerciţii .......................................................................................................................................... 57
5. WINDOWS ..................................................................................................... 58
5.1. Arhitectura mediului Windows .......................................................................................... 58
5.1.1. Arhitectura de bază ............................................................................................... 59
5.1.2. Arhitectura Windows 98 ...................................................................................... 64
5.2. Noi caracteristici la Windows 98 ..................................................................................... 68
5.2.1. Interfaţa Windows 98 .......................................................................................... 71
5.2.2. Facilităţi pentru lucrul în reţea .......................................................................... 75
5.2.3. Servicii multimedia ................................................................................................ 77
5.3. Windows 2000 ...................................................................................................................... 80
6. Sistemul de operare UNIX ......................................................................... 85
6.1. Caracteristici şi componente majore ............................................................................... 85
6.1.1. Evoluţie şi caracteristici ....................................................................................... 85
6.1.2. Arhitectura sistemelor de calcul ce lucrează cu UNIX ................................ 88
6.2. Sistemul de fişiere UNIX SYSTEM V ............................................................................ 92
6.2.1. Tipuri de fişiere ..................................................................................................... 92
6.2.2. Structura arborescentă a sistemului de fişiere ............................................ 93
6.2.3. Structura standard a sistemului de fişiere ..................................................... 94
6.2.4. Protecţia fişierelor şi drepturi de acces ......................................................... 94
6.2.5. Modificarea drepturilor de acces ...................................................................... 95
6.2.6. Montarea volumelor în structura arborescentă a sistemului de fişiere ... 97
6.3. Interpretorul de comenzi SHELL ..................................................................................... 101
6.3.1. Comenzi shell ........................................................................................................... 101
6.3.2. Fişiere standard. Redirectare şi extensii ........................................................ 101
6.3.3. Multitasking şi aşteptare ..................................................................................... 102
6.3.4. Conducte şi linii de conducte ............................................................................... 103
6.3.5. Limbajul de programare Shell ............................................................................. 103
6.3.6. Fişiere de comenzi indirecte ............................................................................... 104
6.4. Nucleul sistemului de operare UNIX (KERNEL) ........................................................... 108
6.4.1. Structură şi funcţii ................................................................................................ 108
6.4.2. Procese şi stări ....................................................................................................... 109
6.4.3. Coordonarea şi gestiunea proceselor ................................................................ 111
6.4.4. Sincronizarea proceselor ..................................................................................... 114
6.4.5. Comunicaţia între procese ................................................................................... 115
6.4.6. Gestiunea fişierelor speciale .............................................................................. 117
Exerciţii .......................................................................................................................................... 119
FUNCŢIILE ŞI COMPONENTELE UNUI SISTEM DE OPERARE

Un sistem de calcul nu poate să prelucreze date fără să fie programat, un


program constând dintr-o succesiune de instrucţiuni ce converg către soluţia
problemei ce se rezolvă.
Există două categorii de programe:
1) programe de aplicaţii care sunt destinate să rezolve probleme specifice; acestea
efectuează prelucrări ale datelor, în concordanţă cu cerinţele informaţionale;
2) programe de sistem destinate să coordoneze operarea circuitelor sistemului,
asistând la dezvoltarea programelor de aplicaţii; ele sunt proiectate să faciliteze
utilizarea eficientă a resurselor sistemului de calcul şi să ajute la dezvoltarea si
execuţia programelor de aplicaţii.
Programele de sistem sunt scrise pentru anumite categorii de sisteme de calcul şi
nu pot fi folosite pe orice calculator; sunt furnizate de către producătorii sistemelor
de calcul sau alte firme specializate, fiind astfel proiectate încât să corespundă unei
game variate de solicitări.

1.1. Sistem de operare

Un sistem de operare constă dintr-o colecţie integrată de programe de sistem, ce oferă


utilizatorului posibilitatea folosirii eficiente a sistemului de calcul, concurând la dezvoltarea
programelor de aplicaţie.
Se poate aprecia că un sistem de operare acţionează ca o interfaţa între componenta hardware a
unui sistem de calcul şi utilizator, reprezentat prin programele sale de aplicaţie (fig.1.1.).

SISTEM DE PROGRAME
OPERARE DE APLICAŢIE
(PA)
NIVEL NIVEL comenzi PA1 utilizator
FIZIC LOGIC
macro-
PA2 utilizator
HARDWARE ·
·· instrucţiuni
limbaje de ·
·
programare ·
mesaje
PAn utilizator

Fig. 1.1. Sistemul de operare-interfaţă între hardware şi utilizator

4
Sisteme operaţionale

Majoritatea sistemelor de operare sunt organizate pe două niveluri:

1) nivelul fizic care este mai apropiat de partea de hardware, interferând cu aceasta printr-un
sistem de întreruperi ce semnalizează anumite evenimente deosebite ce au loc în sistem; în acel
moment va da controlul unor rutine de pe nivelul logic în vederea tratării acestora şi al informării
utilizatorului despre cauzele care le-au generat.

2) nivelul logic este mai apropiat de utilizator, interferând cu acesta prin:

- comenzi ce specifică execuţia anumitor subfuncţii ale sistemului de operare;


- macroinstrucţiuni ce conduc la expandarea în programele de aplicaţii, a unor
macrodefiniţii cu funcţii speciale;
- limbaje de programare;
- mesaje către utilizator;
- întreruperi solicitate de către software.

1.2. Funcţiile unui sistem de operare

Pentru a îndeplini rolul de interfaţă între hardware şi utilizatori, un sistem de operare trebuie
să fie capabil a îndeplini următoarele funcţii:
1) oferirea posibilităţii de pregătire şi lansare în execuţie a programelor de aplicaţie (fig.1.2.);
în acest scop, un sistem de operare trebuie să dispună de cel puţin următoarele componente:
- un editor de texte pentru a introduce şi modifica un program sursă (PS) scris într-un
limbaj de programare;
- un translator pentru limbajul de programare folosit (asamblor, compilator sau
interpretor), care să traducă instrucţiunile programului sursă, într-o formă recunoscută
de sistemul de calcul (formă binară) - program obiect sau module obiect (PO);
- un editor de legături care să realizeze legătura dintre diverse module obiect, sau să
apeleze la module obiect din bibliotecile sistemului, respectiv la modulele obiect din
biblioteca utilizatorului - care au fost catalogate în prealabil, pentru a construi structura
pe segmente impusă de sistemul de calcul în vederea execuţiei programelor (program
obiect executabil-POE).
Odată construită structura pe segmente, programul va fi gata de execuţie, ceea ce va implica
încărcarea acestuia în memoria internă şi execuţia efectivă; componenta sistemului de operare ce
realizează acest deziderat se numeşte încărcător. Dacă această componentă lansează automat
execuţia programului după încărcarea în memoria internă, încărcătorul este de tip Load and Go.
2) alocarea resurselor necesare execuţiei programelor prin:
- identificarea programelor ce se execută şi a necesarului de resurse;
- alocarea memoriei interne şi a dispozitivelor periferice;
- identificarea şi protecţia colecţiilor de date.
3) acordarea unor facilităţi prin utilitare de interes general:
- gestiune cataloage (directori, subdirectori) şi fişiere;
- creare, modificare, copiere, mutare, ştergere, recuperare directori şi fişiere;
- sortare/interclasare;
- comprimare/decomprimare spaţiu pe suporturile de memorie externă;
- depistare şi eliminare viruşi informatici şi altele.
4) planificarea execuţiei mai multor programe (multiprogramare) după anumite criterii, în
vederea utilizării eficiente a unităţii centrale de prelucrare.

5
Capitolul 1 – Funcţiile şi componentele unui sistem de operare
MS-DOS UNIX

ed
Editor edit vi
texte emacs
nice editor

Program PS
sursă

asm a
Translator pas cp
limbaj c cc
bas b

Erori

Program PO .obj .o
obiect

Editor
Biblioteci legături Biblioteci
utilizatori sistem

Program obiect .exe a.out .x


POE .com
executabil

Încărcător

lansare în execuţie

Fig. 1.2. Pregătirea execuţiei programelor


5) coordonarea execuţiei mai multor programe ce se execută simultan, prin urmărirea
modului de execuţie a instrucţiunilor programelor, depistarea şi tratarea erorilor, lansarea în execuţie
a operaţiilor de intrare/ieşire şi depistarea eventualelor erori.
6) asistarea execuţiei programelor de către utilizator, prin comunicaţia sistem de
calcul-utilizator atât la nivel hardware cât şi la nivel software.
7) asigurarea organizării şi protecţiei datelor în memorie.
8) posibilitatea generării unui sistem de operare pe măsura configuraţiei existente.
1.3. Programe de comandă - control
Sisteme de operare sunt alcătuite în principal, din două categorii de programe:
- programe de comandă-control având rolul de coordonare şi control al tuturor funcţiilor sistemului
de operare;
- programe de servicii care sunt executate sub supravegherea programelor de comandă-control, şi
sunt utilizate de programator pentru dezvoltarea aplicaţiilor.
Programele de comandă-control cunoscute şi sub numele de monitoare, supervizoare sau
executive, coordonează activitatea celorlalte componente ale sistemului de operare.

6
Sisteme operaţionale
Cele mai frecvent utilizate componente ale supervizorului sunt încărcate în memoria internă
încă de la generarea sistemului de operare, fiind păstrate în memoria internă pe tot parcursul
execuţiei aplicaţiilor de către sistemul de calcul; aceste programe se numesc rutine rezidente,
formând nucleul sistemului de operare; celelalte componente rămân în memoria externă fiind apelate
şi executate numai atunci când sunt solicitate de către nucleul sistemului de operare ( se numesc
rutine tranziente) asemenea oricărui program de aplicaţie (fig. 1.3.)

Memoria internă Memoria externă

Rutinele rezidente Încărcare


Programe de comandă – control
(nuceul) sistem de operare
(PCC)
Rutinele tranziente
Solicitări Programe de servicii
Alte rutine şi
programe de aplicaţie ale PCC Programe de aplicaţie

Fig. 1.3. Rutine rezidente şi rutine tranziente


Supervizorul iniţiază execuţia operaţiilor de intrare/ieşire pentru transferul componentelor
tranzitorii din memoria externă în memoria internă, fiind totodată responsabil de alocarea canalelor
de transfer (magistralele) pentru dispozitivele periferice de intrare/ieşire; de asemenea efectuează
controlul şi coordonarea unităţii centrale de prelucrare (CPU) pe parcursul recepţionării de mesaje
de la canalele prin care se execută transferul, a execuţiei programelor din memoria internă respectiv,
a transmiterii de mesaje către dispozitivele periferice de intrare/ieşire prin intermediul magistralelor.
Dispozitivele periferice de intrare/ieşire trebuie să fie alocate aplicaţiilor care le solicită,
datele solicitate fiind transferate în memoria internă sub controlul sistemului de gestiune a
intrărilor/ieşirilor.
Programele de comandă control îndeplinesc trei funcţii majore:
a. administrarea resurselor fizice ale sistemului de calcul;
b. planificarea, lansarea şi urmărirea execuţiei aplicaţiilor;
c. depistarea şi tratarea evenimentelor deosebite ce apar în timpul execuţiei unei aplicaţii.
(detalii se regăsesc în capitolul 3.).
1.4. Programe de servicii pentru dezvoltarea programelor de aplicaţie
Programele de servicii se execută sub controlul programelor de comandă control ca orice
program de aplicaţie, având în componenţă programe care facilitează dezvoltarea programelor de
aplicaţii respectiv programe utilitare de interes general.
Principalele programe de care dispune orice sistem de operare pentru dezvoltarea unui
program de aplicaţie sunt: editoarele de texte, translatoarele de limbaje, editoarele de legături,
încărcătoarele şi depanatoarele.
1.4.1. Editoare de texte
Un editor de texte este un set de programe ce oferă posibilitatea introducerii, editării, şi
tipăririi de texte sub forma unor fişiere ASCII. Textele sunt alcătuite din caractere care se introduc
de la tastatură apărând în acelaşi timp şi pe monitor; erorile pot fi corectate uşor deoarece acestea
nu sunt încă tipărite pe hârtie.
Editoarele de texte au ca activitate principală, crearea şi editarea de texte; împreună cu
hardware-ul, furnizează calea de urmat pentru vizualizarea, memorarea, editarea şi regăsirea textelor
create. Editoarele de texte mai performante, permit şi introducerea elementelor de grafică în text.
Deoarece documentaţia de utilizare a editoarelor de texte este voluminoasă, proiectanţii acestora au
prevăzut pentru cele mai frecvente funcţii, un sistem de Help ce constă în informaţii minime afişate

7
Capitolul 1 – Funcţiile şi componentele unui sistem de operare
la monitor referitor la modul de lucru al funcţiei.
Numele fişierului, pagina curentă, linia şi coloana în care se află cursorul, sunt permanent
afişate pe monitor în vederea orientării utilizatorului; textul poate fi memorat pe suport magnetic,
se poate refolosi şi modifica după necesităţi.
Editoarele de texte sunt componente ale sistemului de operare cu cea mai mare frecvenţa de
utilizare, existând astăzi o mare varietate datorită serviciilor aduse pentru a degreva utilizatorul de
sarcini elementare cum sunt: despărţirea în silabe, alinierea textelor, paragrafelor, titlurilor,
sublinierea unor porţiuni din text, căutare unui şir de caractere şi editarea acestuia, indexarea
documentului, realizarea cuprinsului, etc.
Observaţii:
- un procesor de texte poate produce fişiere ASCII numai dacă include opţiunea out of ASCII
text;
limbajul Java foloseşte caractere ASCII reprezentate pe 16 biţi (caractere Unicode) ce includ
caracterele întâlnite la majoritatea limbilor străine
1.4.2. Translatoare de limbaje
Translatoarele de limbaje sunt componente ale programelor de servicii care traduc programe
sursă(PS) scrise de utilizator într-un limbaj de programare, în programe obiect(PO), a căror
instrucţiuni în limbaj maşină sunt recunoscute şi executate de sistemul de calcul.
Translatoarele de limbaje se divid în două categorii:
1) compilative care realizează numai traducerea PS ---> PO; acestea pot fi:
* asambloare - programe de servicii care traduc programe sursă scrise în limbaje de
asamblare specifice fiecărui sistem de calcul (masm, tasm);
* compilatoare - programe de servicii care traduc programe sursă scrise în limbaje evoluate,
universale (Pascal, C);
2) interpretative - care odată cu compilarea realizează şi execuţia programului (Basic).
Spre deosebire de asambloare, compilatoarele creează o formă intermediară arborescentă a
instrucţiunilor din programul sursă astfel:
- orice variabilă este un nod terminal al arborelui;
- orice operator creează un arbore binar a cărui ramură stângă este primul operand, iar cea din
dreapta este al doilea operand.
Pentru a înţelege modul de lucru al unui compilator în tratarea unei instrucţiuni, se consideră
următorul exemplu:
Să se determine arborele binar corespunzător acţiunii unui compilator pentru calculul
expresiei:
X = A * ( B - C ) * D * ( E - F - 207 )
Rezultatul acţiunii compilatorului asupra expresiei este redat în fig. 1.4.
=

X +

* *

A – D –

B C = 207

E F
Fig. 1.4. Acţiunea unui compilator asupra expresiei X

8
Analiză Analiză Analiză Optimizare Generare
sintactică sintactică sintactică cod cod
Structura pe Arbore Structura pe Arbore
PS atomi lexicali sintactic atomi lexicali sintactic PO

(4)
(1) (3)
(2)

(3)
(2) (5)
(1)

Tabelă de Fişier
simboluri erori

Fig.1.5. Etapele unui proces de compilare

9
Capitolul 1 – Funcţiile şi componentele unui sistem de operare
(1) Analiza lexicală descompune PS în atomi lexicali (identificatori, cuvinte rezervate,
constante, operatori) pe care îi introduce în tabela de simboluri sub formă codificată.
(2) Analiza sintactică prin care şirul de atomi lexicali este analizat în privinţa depistării unor
structuri sintactice ca: expresii, liste, proceduri, plasându-le într-un arbore de derivare
(arbore sintactic).
(3) Analiza semantică foloseşte structura programului şi informaţiile din tabela de simboluri
pentru generarea unui grup de instrucţiuni simple cu format fix (codul intern); dacă arborele sintactic
nu respectă gramatica limbajului, semnalizează erori.
(4) Optimizarea codului presupune eliminarea redundanţelor, a lungimii şi variabilelor
inutile, în vederea unei execuţii mai eficiente.
(5) Generarea codului alocă zone de memorie pentru păstrarea datelor în timpul execuţiei,
alocă registre şi produce codul obiect.
(6) Gestiunea structurilor de date reprezintă o colecţie de proceduri care creează şi
actualizează baza de date cu care lucrează celelalte faze; în baza de date se găsesc tabelele
identificatorilor, a constantelor, a constructorilor, a cuvintelor cheie, a procedurilor standard, care
uneori sunt înglobate într-o unică tabelă de simboluri.
(7) Tratarea erorilor este realizată de o colecţie de proceduri ce sunt activate când se
depistează o eroare în program; utilizatorul primeşte mesaje de diagnostic iar compilatorul continuă
analiza sintactică pentru a depista alte erori.
O succintă abordare comparată a translatoarelor de limbaje conduce către următoarele
aspecte mai semnificative:
- asamblorul este determinat de limbajul maşină specific fiecărui sistem de calcul, iar compilatorul
este specific unui anumit limbaj de programare independent de sistemul de calcul;
- compilatorul oferă posibilitatea scrierii de programe pentru orice sistem de calcul ce dispune de
compilatorul respectiv;
- asamblorul translatează o definiţie simbolică a programului sursă într-o singură definiţie din
programul obiect, în timp ce compilatorul o poate translata în mai multe definiţii din programul
obiect (memoria ocupată astfel de asamblor necesită mai puţin spaţiu, dar compilatorul este mai
puternic datorită includerii într-o definiţie sursă, a mai multor definiţii obiect);
- interpretorul este util în special, la controlul proceselor industriale ce se desfăşoară în timp real,
însă interpretarea este mai lentă decât compilarea;
- execuţia repetată a unui program este facilitată de compilator care realizează translatarea o singură
dată, în timp ce interpretorul îl translatează de fiecare dată.
Există componente ale sistemului de operare ce sunt concepute ca programe generalizate
care, în funcţie de necesităţile utilizatorului se pot adapta pentru a realiza un grup de funcţii; aceasta
se realizează în faza de asamblare, prin intermediul unui macrolimbaj care asigură generarea
secvenţelor de program (PS şi PO) specificate.
Macrolimbajul foloseşte macroinstrucţiuni care sunt instrucţiuni ale PS, care asigură prin
intermediul comenzilor, inserarea în PS a secvenţei de instrucţiuni în locul unde a apărut
macroinstrucţiunea; de remarcat este faptul că nu economiseşte decât timp utilizator.
Structura unei macroinstrucţiuni:
-început MACRO
-nume NNNN
-secvenţa instr.1
de ...
instrucţiuni instr.n
-sfârşit ENDM

După definirea unei macroinstrucţiuni, utilizarea numelui NNNN este echivalentă cu


utilizarea secvenţei de instrucţiuni incluse în macroinstrucţiune.

10
Sisteme operaţionale
Macroasamblorul este componenta programelor de servici a sistemului de operare care tratează
macroinstrucţiunile, având ca activităţi de bază:
- recunoaşterea macrodefiniţiilor indicate prin MACRO, ENDM;
- memorarea definiţiilor macroinstrucţiunilor de care are nevoie pentru a le expanda la
un apel macro;
- recunoaşterea apelului macroinstrucţiunii cu secvenţa de instrucţiuni corespunzătoare.
- înlocuirea macroinstrucţiunii cu secvenţa de instrucţiuni corespunzătoare.

1.4.3. Editorul de legături


Structura externă a unui PS este alcătuită din secţiune, segment şi program.
Secţiunea este o unitate de program independentă constituită dintr-o secvenţă de definire a
datelor şi o secvenţă de instrucţiuni, ce asigură posibilitatea comunicării cu alte unităţi ale PS
(fig.1.6.).

Elemente de comunicaţie cu Elemente de comunicaţie cu


alte unităţi alte unităţi
Definire date Definire date

Proceduri Proceduri

Fig. 1.6. Comunicaţia dintre două secţiuni ale unui program sursă

Definirea datelor şi procedurilor servesc atât propriei secţiuni cât şi altor secţiuni.
Compilatorul asigură pe lângă generarea codului obiect şi informaţii de legătură între
secţiuni:
- informaţii de identificare (nume secţiune, punctul de intrare);
- informaţii de legătură.
Structura unei secţiuni după compilare este redată în fig.1.7.
Nume secţiune

Punct de intrare
Dicţionar de legătură
Codul obiect

Fig. 1.7. Structura unei secţiuni după compilare

Dicţionarul de legături rezultă în urma determinării de către compilator, a elementelor de


comunicaţie specificate în fiecare secţiune a PS, conţinând două tipuri de simboluri:
- externe - nedefinite în secţiune, cu adresa necunoscută;
- interne - definite în secţiune, dar referite din exteriorul acesteia.
Segmentul este o succesiune de secţiuni între care au fost rezolvate legăturile; acesta conţine:
- numele segmentului;
- punctul de intrare în segment;
- codul obiect al secţiunilor aranjate într-o anumită ordine.
Programul este o structură arborescentă de segmente (segment principal şi segmente
subordonate organizate pe substructuri); acesta este organizat într-o structură multifazică de către
editorul de legături, care pe baza numelor segmentelor din care este alcătuit programul şi a secvenţei
de secţiuni din care este compus fiecare segment, creează structura de program pe care o depune pe
suport extern (de obicei, hard-disk) de unde va fi ulterior încărcat în RAM pentru execuţie.

11
Capitolul 1 – Funcţiile şi componentele unui sistem de operare
Editorul de legături prelucrează PO rezultat în urma compilării secţiunilor, în scopul construirii
structurii pe segmente a programului; el este o componentă a programelor de servicii care asigură
următoarele funcţii:
- construirea dicţionarului de legături între diverse secţiuni;
- înlocuirea fiecărei secţiuni din cadrul unui segment, cu un factor de relocare corespunzător
adresei de încărcare în RAM;
- alocarea de zone continue pentru segment;
- modificarea constantelor de adresă relocabile, pentru a conţine valorile relocate ale
simbolurilor lor;
- căutarea în biblioteca relocabilă, a modulelor obiect catalogate;
- construirea structurii arborescente a programelor executabile.
Activitatea editorului de legături (linkeditor) este redată în fig.1.8.

Structura
PO Program obiect pe segmente

Editorul
Bibliotecă de Program obiect POE
sistem legături executabil

Bibliotecă
utilizator

Fig.1.8. Activitatea editorului de legături


Observaţii:
- mediul de programare Pascal include editorul de legături în compilator;
- sub sistemul de operare UNIX editarea legăturilor se realizează implicit, cu excepţia
cazurilor în care ea este gestionată de utilizator; în acest caz, la compilare se va specifica opţiunea
- o (numai compilare).

1.5. Alte programe de servicii

Încărcătorul
Încărcătorul este componenta sistemului de operare ce încarcă programul obiect executabil
(POE) în RAM în vederea execuţiei şi iniţializarea execuţiei.
Încărcarea programelor în RAM pentru execuţie se poate face:
- imediat după translatare, când sistemul de operare are inclus încărcătorul în compilator
(compilatoare Load and Go);
- în momentul editării de legături (încărcătorul inclus în Link);
- după editarea de legături, ca proces distinct.
Activitatea încărcătorului la sistemul de operare MS-DOS este materializată prin execuţia
funcţiei exec, în timp ce la sistemul de operare UNIX funcţia similară este execl

12
Sisteme operaţionale
Depanatorul
Depanatorul este un program de servicii ce oferă utilizatorului mijloace convenabile pentru
depanarea şi controlul operaţiilor programului său prin:
- lansarea în execuţie a programului;
- suspendarea execuţiei în puncte predeterminate (breakpoints) sau execuţie pas cu pas;
- examinarea şi modificarea conţinutului cuvintelor din RAM şi registre;
- realizarea de modificări şi corecţii adiţionale la rularea programului, utilizând codul binar,
octal, hexazecimal.

Sub MS-DOS există utilitarul debug, în timp ce sub UNIX se poate folosi utilitarul sdb ce
se constituie ca un depanator simbolic care permite analiza execuţiei pas cu pas a programelor, prin
vizualizarea stării variabilelor, a parametrilor ce definesc mediul de execuţie şi altele.

Alături de programele de servicii destinate acordării de instrumente ce oferă facilităţi


utilizatorilor pentru dezvoltarea propriilor programe de aplicaţie, un sistem de operare dispune de
programe de interes general care sunt lansate în execuţie prin specificarea unor comenzi aparţinând
interpretorului de comenzi sau se găsesc pe suportul de memorie externă sub forma fişierelor
executabile:

- gestiunea cataloagelor (directori, subdirectori): copiere, mutare, ştergere, creare, redenumire


etc.
- gestiunea datelor şi programelor sub forma fişierelor: creare, mutare, copiere, ştergere,
redenumire, salvare, refacere etc.;
- informaţii despre sistemul de calcul, despre componente şi despre resursele utilizate;
- opţiuni de configurare a resurselor;
- comprimare/decomprimarea spaţiu pe suportul de memorie externă: pkzip/pkunzip, arj, rar,
stacker;
- antivirus: scan, clean, tbav, fprot, avx, rav;
- alte comenzi.

1.6. Sisteme de operare la calculatoare personale

1.6.1. Categorii de sisteme de operare

La calculatoarele personale (PC) există în principal două categorii de sisteme de operare:


1) monotasking care execută un singur task (program sau parte a unui program aflat în faza de
execuţie) la un moment dat, având ca principale funcţii:
- încărcarea şi execuţia programelor;
- asigurarea unei interfeţe omogene cu dispozitivele periferice;
- posibilitatea dialogării cu utilizatorul prin intermediul unui interpretor de comenzi.
2) multitasking care va asigura suplimentar, partajarea timpului între programele ce se execută
simultan şi gestiunea alocării resurselor sistemului de calcul atât hardware cât şi software; nucleul
sistemului de operare include următoarele componente:
- supervizorul care are ca principale activităţi lansarea, oprirea sau suspendarea aplicaţiilor;
- planificatorul proceselor care reglează timpul de execuţie alocat pentru diverse activităţi.
I. alocatorul de resurse evidenţiază resursele libere sau alocate;
II. modulul de gestiune pentru intrări /ieşiri ce asigură dialogul cu perifericele.
La nucleul sistemului de operare se adaugă:
I. interpretorul de comenzi;
II. sistemul de gestiune al fişierelor;

13
Capitolul 1 – Funcţiile şi componentele unui sistem de operare
III. sistemul de gestiune al bazelor de date;
IV. programe de comunicaţie
Referirile s-au făcut la nucleul sistemelor de operare rezident în memoria internă, parte
componentă a programelor de comandă control; considerentele precizate la programele de sistem
rămân valabile cu specificul impus de categoria microsistemelor.
Principalele sisteme de operare existente astăzi pe PC-uri sunt: MS-DOS şi interfeţele grafice
Windows, Unix, OS/2, Apple/Macintosh DOS, VMS.
1) MS-DOS (Microsoft – Disk Operating System)
În 1981 firma Microsoft a lansat sistemul de operare IBM MS-DOS care în 1985 a devenit
standardul sistemelor de operare pe microcalculatoare cu implementarea microprocesoarelor pe 16
biţi (I 8086, I 8088) MS-DOS versiunea 3.3; versiunile ulterioare oferă facilităţi pentru desfăşurarea
activităţii utilizatorului prin punerea la dispoziţie a unor opţiuni de alegere din meniu, comparativ
cu versiunile anterioare care presupuneau cunoaşterea sintaxei fiecărei comenzi; drept urmare,
software-ul special – denumit DOS SHELL – a făcut din sistemul de operare MS-DOS un sistem
uşor de utilizat, cu meniu disponibil pentru comenzi. Ultima versiune este MS-DOS 7 sub interfeţele
grafice Windows.
Sistemul de operare MS-DOS a fost proiectat în principal, să execute un singur program
pentru un singur utilizator.
2) Digital Research Corporation a introdus câteva versiuni noi, incluzând DOS Concurent
care suporta execuţia mai multor programe în acelaşi timp (DR-DOS).
3) Apple DOS a fost introdus pe PC-urile de tip Apple, care se bazează pe microprocesoare
diferite decât cele folosite de IBM, deci incompatibil cu clasele de PC-ri de tip IBM; iniţial a fost
destinat pentru un singur utilizator care execută un program la un anumit moment.
Un sistem de operare mult mai puternic este Macintosh DOS proiectat să fie utilizat pe PCuri de tip
Apple /Macintosh DOS (implementat cu microprocesor Motorola 68040) ce permite
multiprogramare şi memorie virtuală.
Apple Computer a lansat următoarea generaţie de sisteme de operare constituită din Mac OS 8 şi
Rhapsody.
4) Interfeţele grafice WINDOWS
Windows este o interfaţă grafică orientată pe ferestre; utilizatorul poate lansa concomitent
mai multe aplicaţii, fiecare în fereastra ei, precum şi efectuarea schimbului de informaţii intre
acestea. Se consideră ca apariţia sa marchează momentul în care calculatoarele IBM şi compatibile,
au putut egala facilităţile de utilizare şi viteza calculatoarelor din gama Macintosh.
Windows 3.11. for Wokgroups, spre deosebire de Windows 3.1., dispune suplimentar de
facilităţi pentru lucru în reţea a grupurilor de utilizatori conectaţi; aceştia pot efectua transferuri de
date, mesaje, informaţii prin simpla selectare şi activare a unor comenzi şi funcţii disponibile.
Windows NT (New Tehnology) a fost proiectată în ideea compatibilităţii cu interfeţele
grafice precedente, Windows 3.1. şi Windows 3.11. for Workgroups. Sistemul Windows NT,
serverul Windows NT şi produsele legate de acesta, alcătuiesc un sistem un client-server deschis,
deosebit de puternic şi fiabil. Unul dintre avantajele majore care-l recomandă, constituie posibilitatea
implementării atât pe platforme Intel, cât şi pe platforme bazate pe microprocesoare RISC.
Windows 95 spre deosebire de versiunile precedente, încearcă să fie un compromis de sistem
de operare ce lucrează pe 32 de biţi; încorporează majoritatea facilităţilor regăsite la celelalte
interfeţe grafice, adăugând şi altele noi. Este util doar în aplicaţii pe 32 de biţi, chiar dacă păstrează
compatibilitatea cu aplicaţiile pe 16 biţi.
Windows 98 este un sistem de operare complet integrat cu Internetul, constituindu-se ca un
suport pentru noile tehnologii hardware şi păstrând compatibilitatea cu Windows 95 faţă de care
apare ca un upgrade.

14
Sisteme operaţionale
Windows 2000 este ultima generaţie a celui mai răspândit sistem de operare de reţea din
întreaga lume. Proiectat pentru organizaţii de orice dimensiune noua versiune oferă siguranţă sporită
şi scalabilitate, costuri mai reduse, respectiv servicii pentru aplicaţii derulate prin Internet.
5) OS/2 (Operating System / 2)
În 1988 IBM şi Microsoft a introdus sistemul OS/2 care a fost proiectat să preia avantajele
microprocesoarelor I 80286 şi I 80386 pentru seria de microcalculatoare IBM PS/2 pe 32 biţi; este
un sistem de operare multitasking, fiind capabil a adresa 16 M memorie internă; necesită 1,5 M
memorie internă şi hard disc; versiunile construite în jurul microprocesorului I 80386 sunt şi
multiutilizator (maxim 16 utilizatori simultan).
Deşi spaţiul adreselor fizice este de 16 M, prin mecanismul memoriei virtuale spaţiul
adreselor virtuale poate accesa până la 32 M.
OS/2 păstrează majoritatea comenzilor MS-DOS în special pentru operaţiile cu fişiere şi
periferice.
Pentru a permite mişcarea intre aplicaţii a utilizatorului, OS/2 dispune de o interfaţă PM
(Presentation Manager) orientată pe ferestre pentru introducerea comenzilor, selectarea taskurilor
ce se vor executa, gestiunea taskurilor şi altele; PM dispune de două programe de comandă control:
▪ controlul pentru configurarea porturilor, culorilor ecranului şi setului de caractere, etc.;
▪ utilitar pentru fişiere ce permite deplasarea prin arbori de directori, mutare, copiere, ştergere
de fişiere şi subdirectori, modificarea atributelor, sortarea şi alte operaţii.
Versiunile recente OS/2 Warp şi OS/2 Warp Connect solicită cel puţin un sistem AT 386
cu 4 M de RAM (OS/2 Warp) respectiv 8 M de RAM (Warp Connect).
OS/2 Warp este un sistem de operare ce controlează acţiunile calculatorului, dar este şi o
interfaţă grafică utilizator (GUI-Graphical User Interface), care permite comanda calculatorului, prin
selectarea de simboluri vizuale.
Dintre facilităţile disponibile la OS/2 Warp se pot enumera:
• lucrul cu mai multe programe (multitasking);
• interfaţa sistemului Warp este uşor de înţeles, de memorat;
• toate programele livrate cu Warp au aspecte grafice şi de operare similare (pachetul
Bonus
• Pak)
• OS/2 Warp facilitează conectarea la Internet (CIM)
Bonus Pak include un procesor de texte, un program de tip foaie electronică de calcul
(spredsheet), generator de diagrame, Sistem de Gestiune a Bazelor de Date (SGBD), generator de
rapoarte; utilitare pentru accesoriile: plăci audio, fax / modem, video, etc.
Conectarea la Internet se realizează on-line Compuserve cu CIM pentru OS/2, respectiv cu
Hyper ACCESS Lite la alte servicii on-line, la un Bulletin Board System sau la alt PC.
6) UNIX a fost iniţial creat pentru minicalculatoare, pentru a mări disponibilităţile sistemului:
memorie virtuală, multiutilizator şi multitasking; rescris în limbajul C, a fost portabil pe o gamă mai
largă de sisteme de calcul: mainframes, microcalculatoare, de unde şi unul din marile sale avantaje.
Actualmente, sistemele de operare UNIX sunt proiectate de mai multe firme specializate, ceea ce
a condus la existenta mai multor versiuni cum sunt: AIX, SCO-ODT, HP-UX, SOLARIS, Digital,
UNIX, IRIX, Linux, ş.a.
Trăsăturile principale ale sistemului de operare UNIX sunt:
• Sistemul de fişiere structurat pe mai multe niveluri, ceea ce permite mai multor
utilizatori să lucreze cu acelaşi calculator în acelaşi timp (multiuser);
• Orice utilizator curent poate solicita execuţia mai multor programe în acelaşi timp
(multitasking);
• Un program utilizator poate să transmită rezultatele sale altui program;
• Utilizatorul poate redirecta rezultatele programului său de la un dispozitiv periferic la
altul;

15
Capitolul 1 – Funcţiile şi componentele unui sistem de operare
• Existenţa unui interpretor de comenzi şi un limbaj adecvat, cunoscut sub denumirea de
Shell;
• Foloseşte un limbaj structurat numit µC, pentru programarea sistemelor;
• Includerea unor componente pentru editarea textelor şi formatarea lor pentru tipărire;
• Utilizarea de tehnici evoluate pentru conectarea sistemelor de calcul care operează sub
UNIX sau alt sistem de operare;
• Nu impune vreo limită la eventualele modificări determinate de specificul aplicaţiei.
Linux a fost dezvoltat ca o versiune distribuită gratuit de UNIX, UNIX fiind unul dintre cele mai
utilizate sisteme de operare în lume, mult timp standardul pentru staţii de lucru de înaltă performanţă
şi servere mari. Pentru că UNIX este un produs comercial, el trebuie cumpărat pentru fiecare
platformă pe care rulează. Licenţele pentru versiunile UNIX pentru PC-uri sunt destul de scumpe
şi de aceea, în tentativa de a face UNIX-ul disponibil fără costuri pentru cei care vor să-l
experimenteze, un număr important de sisteme UNIX pentru domeniul public au fost dezvoltate de-a
lungul anilor.
Una dintre primele astfel de versiuni ale UNIX-ului a fost Minix, scrisă de Andrew
Tanenbaum. Cu toate că Minix nu avea un set foarte mare de caracteristici, a fost un mic sistem de
operare ce putea fi folosit pe PC-uri. Pentru a extinde Minix-ul, un număr de programatori au
început dezvoltarea unui sistem de operare mai puternic care să profite de avantajele arhitecturii
microprocesorului I 80386. Unul din primii proiectanţi ai acestui sistem cunoscut ulterior sub numele
de Linux, a fost Linus Torvalds de la Universitatea din Helsinki. El a lansat o primă versiune a
Linux-ului în 1991. O versiune comercială, aproape fără nici un bug, a fost lansată pentru
programatori în martie 1992.
Curând, mulţi programatori au început să lucreze la Linux şi pe măsură ce provocarea şi
dorinţa de a construi un sistem de operare asemănător UNIX-ului a început să prindă, Linux-ul a
crescut cu o rată remarcabilă. Deoarece numărul celor care lucrau la Linux creştea, într-un final acest
sistem de operare a fost terminat şi acum include toate instrumentele ce se pot întâlni într-o versiune
comercialã a UNIX-ului. Linux-ul continuă să crească pe măsură ce adaptează noi caracteristici şi
programe care original, au fost scrise pentru versiunea comercială a UNIX-ului.
Linux nu se bazează pe o singură versiune de UNIX, ci este o consolidare a celor mai bune
caracteristici ale BSD UNIX şi System V. BSD UNIX a fost dezvoltat şi implementat la
Universitatea din California (Berkeley) începând din anul 1997. Câteva lansări majore au crescut
puterea lui BSD UNIX. Câteva programe standard UNIX au fost iniţial realizate la BSD, cu toate
că BSD a încetat dezvoltarea versiunilor de UNIX la începutul anilor ’90. Compania AT&T care
a realizat prima versiune de UNIX, a continuat propria dezvoltare producând o serie de versiuni
UNIX numite System III, System IV şi System V. Linux foloseşte prima lansare a lui BSD UNIX
numită 4.4 BSD ca bază şi preia câteva alte caracteristici din ultima lansare a versiunii System V,
numită System V Release 4 ( SVR4 ).
Linux este un sistem de operare complet multitasking şi multiuser care se comportă ca
sistemele de operare UNIX în termenii comportamentului nucleului şi a suportului pentru periferice
(fig.3.9). Linux are toate trăsăturile UNIX-ului, plus câteva extensii recente care i-au adăugat mai
multa flexibilitate .
Unele servicii software furnizate chiar de nucleu, au proprietăţi similare, prin urmare au fost
abstractizate în clase. De exemplu, diferitele protocoale de reţea au fost abstractizate într-o singură
interfaţă de programare numită BSD socket library. Un alt exemplu îl constituie fişierele de sistem
virtuale ( Virtual File System -VFS ) care abstractizează operaţii legate de fişiere şi pentru care
fiecare sistem de fişiere are propria implementare. Când o entitate încearcă să utilizeze un sistem de
fişiere, cererea se transmite VFS - ului care o redirecţionează către driverul pentru sistemul de fişiere
corespunzător.
Pentru a face ca Linux-ul să fie acceptat la scară largă, el suportă un număr de sisteme de
fişiere inclusiv cele compatibile cu DOS şi OS/2. Sistemul iniţial de fişiere propriu al Linux-ului

16
Sisteme operaţionale
numit ext2fs este proiectat pentru o utilizare optimă a discului.
Linux-ul este ideal pentru dezvoltare de aplicaţii şi experimentare cu noi limbaje. Diferite
compilatoare, inclusiv C, C++, Fortran, Pascal, Modula-2, LISP, Ada, Basic şi Smalltalk vin prin
distribuirea software-ului. Multe dintre compilatoarele Linux-ului, instrumente, debuggere şi
editoare provin de la proiectul GNU Free Software Foundation.
7) Open VMS
Open VMS, iniţial denumit VMS ( Virtual Memory System ), a fost conceput în 1976 ca un
sistem de operare pentru noua linie de calculatoare pe 32 de biţi a firmei DEC (Digital Eguipment
Corporation), numită VAX (Virtual Address eXtension ). Primul model VAX ( 11/780 ) a fost
denumit Star, de aici şi numele de cod Starlet pentru sistemul de operare VMS, nume care se
păstrează şi astăzi ca nume pentru biblioteca sistem ( STARLET.OLB). Versiunea actuală a
sistemului de operare este Open VMS 7.2
Open VMS este un sistem de operare pe 32 de biţi cu suport pentru multitasking,
multiprocesor şi memorie virtuală.
Conceput ca un sistem de operare de uz general care rulează atât în mediile de dezvoltare,
cât şi în mediile de producţie, Open VMS poate fi implementat pe toată seria de calculatoare Alpha
a firmei DEC
(actualmente un departament al firmei Compaq Computer Corporation ), cât şi pe seriile de
calculatoare VAX, Micro VAX, VAX Station şi VAX Server. Pentru ambele categorii de platforme
OpenVMS asigură facilităţi de multiprocesare simetrică ( Symmetric MultiProcessing – SMP).
Sistemul de operare OpenVMS poate fi configurat pentru a oferi performanţe maxime în
medii foarte variate ca de exemplu domenii care necesită calcule şi operaţii de intrare /ieşire intense,
medii client /server, sau execuţie în timp real. Performanţa sistemului depinde de tipul de calculator,
memoria internă disponibilă, numărul şi tipul discurilor, etc.
Versiunea 7.2 pentru platforme Alpha aduce noi facilităţi proiectate pentru a asigura un nivel
înalt de interoperabilitate între OpenVMS şi Windows NT. Aceasta oferă şi arhitectura software
Galaxy pentru OpenVMS care creşte performanţa, scalabilitatea şi siguranţa în funcţionare permiţând
mai multor instante ale sistemului de operare sã se execute simultan în acelaşi calculator sau pe un
cluster.
Cele mai importante facilităţi introduse sau extinse de către OpenVMS V7.2 sunt:
• integrarea cu Windows NT;
• arhitectura Galaxy pentru platforme Alpha;
• canale pe fibre optice pentru interconectarea mediilor de stocare într-un cluster OpenVMS;
• componenta Object Model ( COM );
• Java Development Kit;
• Netscape Fast Track Web Server;
• noi modalităţi de realizare a clusterelor ( performanţă sporită pentru baze de date mari
distribuite, management simplificat, toleranţă la defecţiuni fizice, Galaxy, etc ;)
• sistem îmbunătăţit de stocare a fişierelor;
• servicii de TCP/IP îmbunătăţite, bazate pe cele din kernelul Tru 64 UNIX;
• unelte noi pentru administrare;
• îmbunătăţiri în ceea ce priveşte performanţa, siguranţa, disponibilitatea şi securitatea
sistemului de operare;
• program de BACKUP îmbunătăţit;
• compatibilitate completă cu anul 2000.

Ultima versiune ( OpenVMS V7.2-1) include suport pentru COM V1.1 pentru OpenVMS,
canale de fibre optică pentru conectarea dispozitivelor de stocare, suport pentru multe din
standardele importante cum ar fi OSF/Motif şi OSF Distributed Computing Enviroment (DCE), Java
şi Microsoft Distributed Component Object Model (DCOM).

17
Capitolul 1 – Funcţiile şi componentele unui sistem de operare
La ora actuală există aproximativ 450.000 de sisteme OpenVMS instalate în întreaga lume .
Produsele Alpha/OpenVMS sunt apreciate datorită performanţei, securităţii, siguranţei în
funcţionare, facilităţilor de interconectare oferite, posibilităţilor de upgrade ulterior şi costurilor
foarte scăzute de întreţinere .
Acestea sunt dovedite şi de poziţia ocupată pe piaţă :
• numărul 1 în domeniul sistemelor integrate din domeniul medical;
• 90% din sistemele producătorilor de procesoare;
• peste 50% din sistemele de facturare;
• 66% din transferurile financiare se fac pe maşini Alpha/OpenVMS;
• 5 din cele mai mari 10 burse ale lumii;
• peste 80% din loterii.
În România, sistemele Alpha/OpenVMS/Oracle sunt folosite de către Ministerul Industriei şi
Comerţului, Mobifon ( Connex ), Registrul Independent al Acţionarilor REGISCO S.A., SNCFR şi
în sistemul bancar .

18
Sisteme operaţionale

EXERCIŢII

1. Care sunt asemănările şi deosebirile dintre programele de aplicaţie (software de aplicativ)


şi programele de sistem (software de bază) ?

2. Identificaţi etapele de pregătire a execuţiei programelor pe un mediu de programare


(Turbo Pascal, de exemplu), evidenţiind activitatea componentelor sistemului de operare.

3. Determinaţi structura arborescentă creată de acţiunea unui compilator asupra expresiilor:

a) E = ( a - b ) * ( c + d + e : f )
b) F = x - ( y + z ) : t
c) G = a2 - b2 : 5c
d) H = x + ( y - a + b )( z2 - t3 ) : 298 - uvw1/2
e) A = GF - EH

4. Prin ce se deosebesc esenţial translatoarele de limbaje ?

5. Corectaţi erorile de execuţie apărute la un program scris în Turbo Pascal, utilizând


depanatorul inclus în MS-DOS (se activează debug.exe).

6. Care sunt principalele sisteme de operare disponibile la calculatoarele personale


compatibile IBM ? Menţionaţi caracteristicile de bază mai semnificative.

7. Prin ce se diferenţiază semnificativ sistemele de operare care sunt proiectate pentru


calculatoarele IBM, de cele care echipează sistemele Apple şi MacIntosh ?

19
TEHNICI DE GESTIUNE A LUCRĂRILOR LA SISTEMELE DE CALCUL

Unul dintre obiectivele utilizării eficiente a sistemelor de calcul este acela de


a executa un volum cât mai mare de lucrări, cu o configuraţie minimă (termenul de
lucrare desemnează activităţile declanşate de solicitarea unor prelucrări cu ajutorul
sistemelor de calcul).
În acest scop se analizează componenta hardware (din punct de vedere al
costului, ca măsură a utilizării eficiente a volumului de lucrări ce trece prin sistem
într-o perioadă dată de timp) şi software (un program este bun dacă răspunde
cerinţelor informaţionale pentru care a fost realizat, utilizează un spaţiu minim de
memorie internă şi un timp de execuţie cât mai redus).
Rolul principal al sistemului de operare este să îmbunătăţească eficienţa
utilizării resurselor sistemului de calcul. Componentele sistemului de operare luate
individual, sunt astfel proiectate încât să utilizeze cât mai eficient fiecare resursă a
sistemului de calcul: timpul unităţii centrale de prelucrare, spaţiul de memorie internă
şi externă, registre, dispozitive periferice de intrare/ieşire şi altele.
Pentru aprecierea performanţelor unui sistem de calcul se pot utiliza o serie
de indicatori cum sunt:
- volumul de lucrări intrate în sistem;
- timpul petrecut în sistem;
- timpul de răspuns ca diferenţă între momentul servirii cererii şi emiterea ei;
- accesibilitatea sistemului;
- fiabilitatea sistemului;
- costul serviciilor prestate.
Unii indicatori sunt în conflict, astfel că o creştere a performanţelor unui indicator se
realizează pe seama scăderii performanţelor altui (altor) indicator(i); exemplu:
creşterea volumului de lucrări din sistem implică o creştere a timpului petrecut în
sistem de către fiecare lucrare şi implicit la creşterea timpului de răspuns; de
asemenea, verificările de securitate măresc timpul de prelucrare.

2.1. Obiectivele urmărite în gestiunea lucrărilor

Una dintre funcţiile majore ale unui sistem de operare este de a optimiza utilizarea tuturor
resurselor unui sistem de calcul: timp unitate centrală de prelucrare, spaţiu de memorie internă,
canale, registre, dispozitive periferice de intrere/ieşire, biblioteci, programatori, utilizatori, rezultate
ale prelucrării.
Cu o planificare foarte riguroasă este posibilă apropierea de încărcarea maximă a
unităţii centrale de prelucrare şi a procesoarelor de intrare/ieşire (canale). Chiar şi în acest caz însă,
sunt menţinute neocupate alte resurse ale sistemului de calcul: memoria internă, memoria externă,
dispozitivele periferice de intrare/ieşire.

20
Sisteme operaţionale

La stabilirea unei modalităţi de planificare a lucrărilor trebuie cunoscute foarte precis


obiectivele- uneori subiective şi contradictorii- de realizare simultană a următoarelor activităţi:
- execuţia unui volum cât mai mare de lucrări în unitatea de timp - dacă se rulează lucrări cu
timp redus de execuţie;
- reducerea timpilor de aşteptare ai unităţii centrale de prelucrare - dacă se execută lucrări cu
volum mare de calcule şi număr redus de operaţii de intrare/ieşire;
- încărcarea dispozitivelor periferice la capacitate maximă - când se execută lucrări cu volum
mare de operaţii de intrare/ieşire şi volum redus de calcule.
Se observă că unele obiective se exclud prin natura lor.
Se poate aprecia în general, că pentru stabilirea unei strategii de planificare a execuţiei unor
lucrări în condiţiile impuse de limitările hardware, se vor urmări obiectivele:
- maximizarea ratei de ieşire a lucrărilor;
- minimizarea timpului mediu de răspuns;
- servirea unui număr cât mai mare de utilizatori, într-un timp acceptabil;
- reducerea costurilor pentru serviciile prestate;
- posibilitatea execuţiei unor lucrări cu prioritate (printr-un cost mai ridicat);
- încărcarea echilibrată a unităţii centrale de prelucrare şi a sistemului de intrare/ieşire;
- folosirea cu un randament ridicat a spaţiului de memorie internă şi externă;
- distribuirea prelucrării unui program, prin împărţirea acestuia în sarcini mai mici (taskuri)
ce se pot executa în paralel (multitasking);
- integrarea unui număr cât mai mare de utilizatori (clienţi) în jurul unui procesor central
(server).

2.2. Monoprogramarea

Monoprogramarea este o tehnică de gestiune a lucrărilor ce presupune execuţia secvenţială


a lucrărilor solicitate a se prelucra pe un sistem de calcul.
Caracteristicile acestei tehnici se concretizează în următoarele aspecte:
- planificarea lucrărilor se realizează strict secvenţial într-o ordine prestabilită;
- fiecare lucrare are la dispoziţie toate resursele sistemului de calcul în momentul execuţiei;
- fiecărei lucrări i se asociază un singur proces la un moment dat, astfel că pe durata operaţiilor de
intrare/ieşire (care durează mult comparativ cu durata de execuţie a unităţii centrale de prelucrare),
unitatea centrală de prelucrare aşteaptă terminarea acestor operaţii, conducând la creşterea duratei
de execuţie a lucrărilor.
Obiectivul urmărit în cadrul acestei tehnici îl constituie reducerea timpului mediu petrecut
de lucrare în sistem.

Execuţia lucrărilor în monoprogramare


Un program solicită pe parcursul execuţiei operaţii de intrare/ieşire; operaţiile sunt
supervizate de către un procesor de comunicaţii numit canal, care transferă conţinutul între memoria
internă şi dispozitivele periferice de intrare/ieşire.
Dacă unitatea centrală de prelucrare întâlneşte o instrucţiune de citire, atunci iniţiază execuţia
unui proces de intrare către procesorul de comunicaţie, continuând-şi activitatea de prelucrare fără
a se interfera cu activitatea canalului.
Procesele de intrare/ieşire fiind mai lente, unitatea centrală de prelucrare va aştepta transferul
datelor solicitate în vederea prelucrării lor ulterioare; dacă procesul de intrare s-a încheiat, unitatea
centrală de prelucrare va fi sesizată de canal printr-o întrerupere.
Sincronizarea activităţilor dintre unitatea centrală de prelucrare şi procesorul de comunicaţie
este redată în fig. 2.1.

21
Capitolul 2 – Tehnici de gestiune a lucrărilor la sistemele de calcul

iniţiere operaţie de intrare/ieşire

CPU

procesor
comunicaţie t1 t2 t3 t4

Fig.2.1. Sincronizarea activităţilor dintre unitatea centrală de prelucrare ( CPU ) şi procesorul de


comunicaţie ( DMAC ) în monoprogramare
t1 - momentul iniţierii de către CPU a unei operaţii de intrare;
t2 - momentul în care CPU are nevoie de datele solicitate de la dispozitivul periferic de intrare,
pe care nu le are deoarece nu s-a terminat operaţia de citire;
t3 - se termină operaţia de citire şi se reia execuţia programului de către CPU cu datele solicitate;
t4 - momentul încheierii execuţiei programului.
Pentru aprecierea eficienţei utilizării acestor procesoare ( CPU, DMAC), se calculează
randamentul de utilizare (în % ):
t − (t 3 − t 2 )
η CPU = 4 × 100
t4
t [t + (t 4 − t 3 )]
η DMAC = 4 1 × 100
t4
Deşi prezenţa canalului ameliorează productivitatea sistemului datorită simultaneităţii
activităţii acestuia cu activitatea CPU (parţial sau total), există intervale de timp impuse de
necesitatea sincronizării activităţilor în care CPU este în starea de aşteptare.
2.3. Multiprogramarea
Timpul de inactivitate al CPU impus de perioadele de aşteptare poate fi redus substanţial
dacă în memoria internă ar putea coexista simultan mai multe programe ce pot solicita CPU atunci
când aceasta aşteaptă terminarea unei operaţii de intrare/ieşire pentru lucrarea curentă în execuţie.
Multiprogramarea este o tehnică de gestiune a lucrărilor pe sistemele de calcul prin care
sunt plasate mai multe lucrări simultan în memoria internă iar CPU comută între ele; din punct de
vedere conceptual, multiprogramarea implică simultaneitatea a "n" procesoare pe un singur procesor
sau existenţa a "n" procesoare virtuale în cadrul unui singur procesor.
Caracteristicile de bază ale acestei tehnici constă în:
- existenţa simultană a mai multor lucrări în memoria internă;
- existenţă unui mecanism de trecere de la un program la altul astfel ca randamentul
sistemului să fie ridicat;
- existenţa unui mecanism de protecţie între lucrări care să permită execuţia fiecăreia, fără
afectarea celorlalte lucrări existente în memoria internă;
- existenţa unui mecanism pentru gestiunea resurselor fizice şi logice solicitate de către
lucrările în execuţie (echipamente periferice, informaţii, etc.).
Obiectivul urmărit în multiprogramare îl constituie maximizarea volumului de lucrări care trec
prin sistem şi minimizarea timpului petrecut de o lucrare în sistem.
Multiprogramarea se poate aprecia ca o dezvoltare a sistemului de operare, iar folosirea
partajată a CPU de către lucrări, ca o execuţie concurentă (în realitate, partajarea este realizată pe
intervale distincte).

22
Sisteme operaţionale
2.3.1. Planificarea execuţiei lucrărilor
Sistemele de calcul ce utilizează tehnica multiprogramării sunt prevăzute cu o componentă
a sistemului de operare numită monitor de planificare a lucrărilor, care alege dintr-un grup de
programe în ordinea sosirilor, pe acelea potrivit cărora timpul neocupat al CPU să fie minim; există
o limită pentru numărul de lucrări ce pot fi executate simultan (dacă acest număr este depăşit, este
invocată o procedură pentru selecţia lucrărilor, iar cele neselectate rămân în aşteptare) funcţie de
memoria afectată utilizatorilor.
Procesul de planificare are două funcţii distincte:
- asigurarea priorităţii;
- alocarea resurselor care utilizează prioritatea.
Algoritmii de planificare presupun că lucrările sunt ordonate pe bază de prioritate, sub forma
firelor de aşteptare. Alegerea unui anumit algoritm se va face după obiectivele urmărite; dintre
algoritmii frecvent utilizaţi în multiprogramare se menţionează:
STF Shortest proccessing Time First - lucrarea cu cel mai scurt timp de prelucrare este prima
executată, urmăreşte minimizarea timpului de trecere prin sistem a lucrărilor ce durează puţin;
LTF Longest proccessing Time First - lucrarea cu cel mai lung timp de prelucrare este prima
executată, urmăreşte reducerea timpului total de execuţie a lucrărilor;
SMF Smallest Memory requirment First - lucrarea ce necesită cel mai mic spaţiu de memorie
este prima executată;
LMF Largest Memory requirment First - lucrarea ce necesită cel mai mare spaţiu de
memorie este prima executată;
FIFO First Input First Output - lucrările sunt executate în ordinea lansării în execuţie;
LIFO Last Input First Output - lucrările sunt executate în ordinea inversă lansării în execuţie;
Round-Robin sau planificarea circulară, fiecare lucrare având alocată o cuantă de timp
(interval de 1-10 ms), după care controlul este comutat la următoarea lucrare.
2.3.2. Sincronizarea activităţii CPU cu activitatea procesorului de comunicaţie
Sincronizarea activităţii CPU cu activitatea procesorului de comunicaţie este redată în fig.
2.2. presupunând existenţa a trei programe încărcate în memoria internă (P1,P2,P3) la un moment dat,
ce sunt executate de CPU conform algoritmului Round-Robin.
CPU
T1
P1

T2
P2

T3
P3 ×

P1 P2 P3
procesor × × ×
comunicaţie t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13

Fig.2.2. Sincronizarea activităţilor dintre CPU şi procesorul de comunicaţie în multiprogramare

23
Capitolul 2 – Tehnici de gestiune a lucrărilor la sistemele de calcul
t1 - momentul iniţierii unei operaţii de intrare/ieşire de către CPU pentru P1;
t2 - momentul când P1 are nevoie de transferul datelor solicitate la t1 care nu sunt disponibile
deoarece nu s-a terminat operaţia de intrare/ieşire, comutând astfel la execuţia programului următor
P 2;
t3 - terminarea operaţiei de intrare/ieşire pentru P1 (CPU este ocupată cu P2);
t4 - iniţierea operaţiei de intrare/ieşire pentru P2; canalul fiind liber, trece la execuţia solicitată;
t5 - momentul când P2 necesită datele solicitate; operaţia de intrare/ieşire nu s-a încheiat, deci CPU
comută la P3;
t6 - iniţierea unei operaţii de intrare/ieşire de către P3; canalul este ocupat, trece operaţia în aşteptare;
t7 - se termină operaţia de intrare/ieşire iniţiată de P2 şi poate fi lansată operaţia de intrare/ieşire
iniţiată de P3 (t8);
t9 - momentul când CPU devine liberă de la P3 şi având datele solicitate de P1 încă de la momentul
t3, reia execuţia P1;
t10 - se încheie execuţia P1 şi CPU comută la P2;
t11 - se încheie execuţia P2 şi CPU aşteaptă deoarece nu s-a încheiat operaţia de intrare/ieşire iniţiată
de P3;
t12 - se încheie operaţia de intrare/ieşire şi se redă controlul CPU pentru P3;
t13 - sfârşit P3.

t − (t 12 − t 11 )
η CPU = 13 × 100
t 13
t − [t 1 + (t 4 − t 3 ) + (t 13 − t 12 )]
η DMAC = 13 × 100
t 13

2.4. Sistemul spooling (Simultaneous Peripheral Operations On Line)


Activitatea de suprapunere a operaţiilor de intrare, prelucrare şi ieşire prin intermediul
tehnicii spooling, are ca principal obiectiv îmbunătăţirea randamentului sistemului de calcul şi
lărgirea gamei de facilităţi oferite utilizatorilor.
Tehnica dispune de următoarele caracteristici:
- disponibilitatea unei memorii externe de capacitate mare şi cu acces direct (discuri
magnetice), care asociată cu tehnica multiprogramării permite manipularea unor succesiuni continue
de operaţii de intrare, ieşire şi alte prelucrări, ameliorând astfel diferenţa dintre timpul de execuţie
al operaţiilor de intrare/ieşire şi timpul de execuţie al operaţiilor de către CPU;
- asigurarea unei încărcări la întreaga capacitate a dispozitivelor periferice de intrare/ieşire;
- esenţialul acestei tehnici constă în organizarea de zone tampon de memorie (buffere) în care
se creează dispozitive periferice de intrare/ieşire virtuale ce permit:
* introducerea de lucrări înainte ca acestea să fie executate;
* redarea rezultatelor la imprimante în timpul execuţiei altor lucrări;
* planificarea execuţiei lucrărilor în ordinea priorităţilor fără a ţine seama de disciplina de
introducere a acestora în sistem;
* schimbarea ordinii de execuţie a lucrărilor prin priorităţi asociate.

Organizarea unui sistem spooling este redată în fig. 2.3.

24
Sisteme operaţionale

Buffer i/ Buffer /o
P1 … P3 P9
P1
P2 … P4 P10

CON 1 LPT1
P11
Canal

LPT1
RAM P12
CON 2 P5 P7

P6 P8
P2
Canal Canal
Nucleu sistem
de operare

CPU

Fig. 2.3. Organizarea unui sistem spooling


P1, P2 se introduc de la tastatură;
P3, P4 aşteaptă încărcarea în memoria internă;
P5, P6, P7, P8 sunt active în memoria internă;
P9, P10 sunt executate şi aşteaptă tipărirea;
P11, P12 se tipăresc.
2.5. Sisteme TIME – SHARING (Sisteme cu timp divizat)
Tehnica de gestiune a lucrărilor time-sharing este caracterizată de utilizarea concurentă a
resurselor unui sistem de calcul de către "n" utilizatori prin intermediul staţiilor de lucru (work
stations) plasate local sau la distanţă; elementele globale ce definesc aceste sisteme sunt tehnica
divizării timpului şi multiplexarea resurselor între mai mulţi utilizatori independenţi; termenul de
multiplexare semnifică partajarea resurselor sistemului astfel încât se creează mai multe procese,
fiecare utilizator având senzaţia că sistemul îi aparţine integral (practic, se comută sau se
multiplexează în timp, de la un utilizator la altul).
În time-sharing CPU este partajată pe bază de cerere, planificarea execuţiei urmărind
obţinerea unui timp de răspuns minim; lucrările nu au priorităţi prestabilite, astfel că acestea trebuie
să fie executate într-o manieră dinamică.
Multiplexarea resurselor între procese necesită existenţa unei componente a programelor de
comandă-control capabilă să trateze o largă gamă de întreruperi.
Utilizatorii sunt aleatori, se schimbă în orice moment, lucrează programe diferite, se
conectează/deconectează la/din sistem independent unii de alţii utilizând perioade de timp diferite
pentru execuţia lucrărilor.
Trăsăturile esenţiale ale acestei tehnici constă în:
- protecţia memoriei, prin care programele utilizatorilor trebuie să fie protejate între ele
pentru a nu permite accesul neautorizat, fiecare program fiind limitat la spaţiul său de memorie;
- independenţa utilizatorilor, prin care se stabileşte o cuantă de timp pentru fiecare utilizator;
dacă programul nu s-a terminat în acest interval de timp, este returnat în memoria externă şi plasat
la sfârşitul firului de aşteptare, încărcându-se alt program în memoria internă, ş.a.m.d.
- alocarea resurselor pentru programele utilizatorilor este efectuată de monitorul rezident în
memoria internă (monitor de time-sharing): spaţiu de memorie internă, timp CPU, tratarea cererilor
de întrerupere de la terminale, etc.;

25
Capitolul 2 – Tehnici de gestiune a lucrărilor la sistemele de calcul
- alocarea memoriei interne se realizează printr-o tehnică de alocare şi control a mişcării
paginilor între memoria internă şi cea externă.
Caracteristici hardware solicitate implică:
- memorie internă de capacitate mare şi CPU rapidă pentru asigurarea unui timp minim de
răspuns (volum mic de migrări între memoria internă şi cea externă, respectiv comutarea rapidă între
programe);
- ceas de timp real care să genereze întreruperi pentru comutarea CPU de la un program la
altul;
- memorie externă cu acces direct în care o soluţie ar fi cuplarea în paralel a memoriei
externe la CPU şi terminale, ceea ce implică transferul între memoria externă şi terminale
independent de activitatea CPU;
- sistem de comunicaţie transferul informaţiilor între CPU şi terminale, linii de comunicaţii,
modemuri, concentratoare şi multiplexoare;
- terminale şi CPU adecvate.
Caracteristici software
Caracteristici software sunt realizate în principal de monitorul de time-sharing care gestionează
resursele întregului sistem:
- alocarea şi comutarea CPU după timpul alocat pe baza unui algoritm de planificare a
execuţiei stabilit astfel încât să se asigure:
- reducerea timpului de răspuns;
- minimizarea timpului necesar comutării între procese;
- posibilitatea lansării în execuţie a oricărui proces care aşteaptă, lansare ce se execută în
funcţie de priorităţi;
- încărcarea echilibrată a sistemului;
- stabilirea locului fiecărui program în firul de aşteptare, în funcţie de prioritate;
- alocarea spaţiului de memorie internă: zona de memorie şi adresa unde se încarcă fiecare
program;
- tratarea întreruperilor prin analiza motivului întreruperii care va determină acţiunea ce se
întreprinde în continuare;
- gestiunea fişierelor prin care se determină locul unde sunt memorate colecţiile de date,
regăsirea lor rapidă, parola de protecţie ş.a..
Modul de lucru al unui sistem time-sharing este redat în fig. 2.4.
DP i/o

Disc sistem Canale de i/o Disc utilizator

P1 Monitor
P3 time-
P2 sharing Procesor
(nucleu) comunicaţie
P4
RAM

P6 P5
Memorie instanţe

Fig. 2.4. Modul de lucru al unui sistem time-sharing

26
Sisteme operaţionale
2.6. Multiprelucrarea

Dacă mai multe programe se găsesc în acelaşi timp în memoria internă şi partajează resursele
sistemului de calcul atunci sistemul utilizează tehnica multiprogramării; dacă în multiprogramare
se folosesc mai multe procesoare, atunci sistemul utilizează tehnica de gestiune denumită în
multiprelucrare. Se poate aprecia că multiprogramarea este un concept software, iar multiprelucrarea
un concept hardware.
Un sistem de calcul utilizează tehnica multiprelucrării dacă cel puţin două CPU lucrează
în paralel; unităţile centrale de prelucrare pot executa instrucţiunile unui singur program sau pot
executa instrucţiuni din programe diferite.
Oportunitatea multiprelucrării constă în :
- încărcarea partajată a programelor pentru execuţie, fiecare procesor având acces la firul de
aşteptare alcătuit din lucrările solicitate a se executa;
- separarea diverselor funcţii ale sistemului, existând câte un program responsabil pentru
fiecare funcţie;
- creşterea fiabilităţii sistemului, pentru care există două posibilităţi:
- duplexarea sistemelor, prin care una sau mai multe componente hardware sunt dublate, una
fiind în activitate iar cealaltă va fi activată la apariţia unui defect al primei componente; pe durata
funcţionării corecte a procesorului principal, procesorul secundar poate fi folosit pentru alte operaţii;
- sisteme duale, sunt sistemele în care două procesoare centrale prelucrează simultan acelaşi
program de aplicaţie, periodic verificându-se reciproc privind validarea rezultatelor.

2.6.1. Sisteme master/slave


Unul din obiectivele multiprelucrării este de a degreva o CPU, de sarcini specifice ca:
tabelări de date, editări de texte, gesţiunea colecţiilor de date (fişiere, baze de date); pentru a realiza
acest deziderat, la o CPU - denumită slave, este cuplată o CPU care este destinată coordonării
activităţilor din sistem - denumită master (fig.2.5.).
Master-ul poate să coordoneze toate operaţiile de intrare/ieşire în timp ce slave-ul execută
operaţii complexe; în acest caz masterul este referit ca "front-end processor" având rol de interfaţă
între slave şi dispozitivele periferice de intrare/ieşire.

CPU master
Date, comunicaţii control
Alte DP i/o

CPU slave
Prelucrări
Memorie externă complexe

Fig. 2.5. Front-end processor

Dar masterul se poate utiliza şi ca interfaţă între slave şi colecţii voluminoase de date
existente în memoria externă, situaţie în care este referit ca "back-end processor" fiind responsabil
de gestiunea colecţiei de date (fig.2.6.)

27
Capitolul 2 – Tehnici de gestiune a lucrărilor la sistemele de calcul

Memorie externă

Slave
MAINFRAME

CPU1 CPU1

Master
Date, comunicaţii,
control

Alte DP i/o

Fig.2.6. Back-end processor

Prin urmare, în multiprelucrarea sistemelor organizate în varianta master/slave, fiecare CPU


fi dedicată unor sarcini specifice sau poate fi utilizată în mod alternativ pentru execuţia unei aceleiaşi
sarcini, în vederea furnizării unor răspunsuri mai rapide.

2.6.2. Planificarea execuţiei lucrărilor


În funcţie de gradul de planificare al lucrărilor şi al sistemului de comunicaţie, se disting
următoarele clase de sisteme (fig.2.7.):
1) sisteme cu CPU identice care sunt determinate de modul în care CPU partajează memoria:
* memorie unică pentru CPU cuplate în care mai multe CPU partajează o memorie;
* memorie proprie pentru fiecare CPU din sistem.
De remarcat este faptul că se pot include şi variante master/slave.

Fig.2.7.a) memorie unică şi CPU identice

Memorie Memorie
internă CPU CPU internă

Fig.2.7.b) memorie proprie şi CPU identice

CPU slave

Memorie CPU slave


CPU master
internă unică

CPU slave

Fig.2.7.c) memorie unică şi CPU master/slave

28
Sisteme operaţionale
Memorie Memorie
internă CPU slave CPU master internă

Fig.2.7.d) memorie unică şi CPU master/slave

Legăturile dintre memoria internă şi CPU se pot realiza în următoarele variante:


- legătură matriceală (cross bar) prin intermediul unui sistem de comunicaţie, cererile
neservite fiind plasate într-un fir de aşteptare gestionat prin hardware sau software;
- legătură prin canale multiple când procesoarele partajează o cale unica pentru fiecare
modul de memorie;
- legătură printr-un singur canal folosit partajat acesta constituind interfaţa dintre toate CPU
şi memoria internă.
2) sisteme cu CPU diferite care presupun existenţa unui număr de CPU periferice care
lucrează în paralel cu CPU principală; pot fi organizate sub formă de:
- arie de procesoare (processor array) care implică divizarea unui program în activităţi
independente ce se pot executa simultan pe CPU existente în configuraţie;
- conductă (pipe) ceea ce permite operarea directă asupra unui şir de vectori (pipeline) elementele
şirului fiind reprezentate de CPU;
- puternic conectate, caracterizate de o creştere a volumului de lucrări executate datorită
controlului direct exercitat de CPU din configuraţie asupra resurselor;
- slab conectate, care pot partaja: sistemul de comunicaţie, volumele de memorie cu acces direct,
programele de servici prin care componenta software dintr-un sistem comunică cu componenta
software din alt sistem, pentru cereri de partajare a resurselor; nu există un control asupra resurselor
unui procesor exercitat de alt procesor.
Planificarea execuţiei lucrărilor în multiprelucrare depinde de modul de conectare al
sistemelor, existând următoarele variante:
1) planificarea în cazul sistemelor diferite se poate realiza:
- manual, fără nici o planificare, doar cu comutarea de la un procesor la altul;
- prin urmărirea încărcării echilibrate a sistemelor, dacă acestea sunt slab conectate şi dispun de
CPU proprie;
2) planificarea în cadrul sistemelor master/slave în care toate resursele sunt disponibile
tuturor CPU; în acest caz, memoria internă şi dispozitivele periferice de intrare/ieşire sunt alocate
la procese nu la CPU, iar CPU sunt asigurate să execute procesele de către modulul de planificare
a execuţiei proceselor (sisteme puternic conectate).
În cazul tehnicii de planificare master/slave, o CPU master reţine starea tuturor proceselor
din sistem şi planifică activitatea tuturor CPU slave.
3) planificarea în cazul sistemelor omogene. În această situaţie, CPU sunt tratate ca CPU
slave, având loc o planificare descentralizată; se crează o listă în memoria internă ce conţine numele
proceselor şi starea lor, fiind permis oricărei CPU să acceseze această listă.
În momentul întreruperii execuţiei unui proces, CPU căreia i-a fost atribuit merge la lista proceselor
şi găseşte procesul pe care îl va lansa în execuţie (va folosi acelaşi algoritm de planificare pentru
alegerea următorului proces de executat din lista proceselor gata pentru execuţie).

29
Capitolul 2 – Tehnici de gestiune a lucrărilor la sistemele de calcul

EXERCIŢII

1. Enumeraţi obiectivele urmărite în planificarea lucrărilor de către sistemele de operare.

2. Care sunt avantajele multiprogramării comparativ cu monoprogramarea ?

3. Se consideră un sistem de calcul cu trei grade de multiprogramare. Pentru programele respective


se cunosc următoarele:
- duratele de execuţie estimate pentru programele P1, P2, P3 sunt:
t1ex=7c
t2ex=6c
t3ex=9c
- momentele iniţierii operaţiilor de intrare/ieşire:
t1i=4c
t2i=3c
t3i=5c
- duratele operaţiilor de intrare/ieşire:
t1i/o=6c
t2i/o=5c
t3i/o=10c

Între momentul iniţierii operaţiilor de intrare/ieşire şi momentul când programele respective solicită
datele citite o cuantă de timp (1c).
Se cere: să se calculeze randamentele de utilizare a CPU şi canalului pentru următoarele
discipline:
a. Round-Robin;
b. planificare cu priorităţi astfel:
prioritatea lui P3 > prioritatea lui P1 > prioritatea lui P2;
c. algoritmul SJNE (Short Job Next Executed).

4. În ce constă sistemul Spooling şi ce avantaje oferă ?

5. Care sunt asemănările şi deosebirile dintre multiprogramare şi sistemele time-sharing ?

6. Specificaţi obiectivele urmărite de către fiecare variantă de organizare master/slave în


multiprelucrare.

7. Prin ce se deosebesc sistemele ce utilizează tehnica multiprelucrării şi cum se realizează


planificarea execuţiei lucrărilor în cadrul fiecăreia ?

30
GESTIUNEA RESURSELOR UNUI SISTEM DE CALCUL -
FUNCŢIE A SISTEMULUI DE OPERARE

Componenta hardware a sistemelor de calcul necesită existenţa unui sistem de operare


care să poată gestiona resursele hardware, concomitent cu asistarea utilizatorului pe timpul
pregătirii şi lansării în execuţie a lucrărilor sale. Programele de comandă-control ale sistemului
de operare sunt constituite din programe care coordonează şi controlează resursele hardware
(memoria, CPU, canalele, dispozitivele periferice) şi informaţiile (programe, date), îndeplinind
astfel rolul sistemului de operare de a asigura utilizarea eficientă a resurselor şi de a rezolva
conflictele apărute în competiţia dintre utilizatori.
Pentru gestionarea resurselor programele de comandă-control ale sistemului de operare
trebuie să realizeze următoarele activităţi:
- evidenţierea fiecărei resurse;
- adoptarea unei strategii pentru determinarea în orice moment cărui proces să-i aloce
resursa, cât din resursă, la ce moment de timp şi cuanta de timp alocată;
- să aloce resursele, iar la terminarea activităţii să le dezaloce.
În acest scop, programele de comandă-control ale sistemului de operare au fost grupate
în 4 categorii, corespunzător funcţiilor îndeplinite:
1) funcţia de gestiune a memoriei care constă în:
- evidenţa acestei resurse: câtă memorie este alocată şi pentru care programe;
- ce proces primeşte memorie, la ce moment şi în ce cantitate - în cazul
multiprogramării;
- alocă părţi din memorie şi asigură metode de acces şi protecţie pentru procesele
solicitante;
- dezalocă zonele de memorie alocate.
2) funcţia de gestiune a procesorului (CPU) se referă la:
- evidenţa procesoarelor şi stărilor acestora ("traffic controller");
- decide cine poate să utilizeze procesorul ("proccesor scheduler"), la ce moment de timp
şi pentru cât timp;
- alocă procesorul la un proces prin pregătirea şi încărcarea unor registre hardware;
- retrage alocarea când procesul renunţă la utilizarea procesorului, s-a terminat sau a
depăşit cuanta de timp alocată.
3) gestiunea dispozitivelor periferice realizează următoarele activităţi:
- evidenţa dispozitivelor, a unităţilor de control şi a canalelor ("I/O Traffic Controller");
- decide metoda cea mai eficientă de alocare a dispozitivelor periferice; dacă are loc o
utilizare simultană, decide cine foloseşte resursa şi cât timp ("schedulering I/O");
- alocarea dispozitivelor periferice şi iniţiază operaţia de intrare/ieşire;
- dezalocarea dispozitivelor periferice la terminarea execuţiei operaţiilor de intrare/ieşire.
4) gestiunea informaţiei care se materializează în:
- evidenţierea resursei (informaţia), localizarea ei, utilizarea, starea, etc. (File System);
- decide cine utilizează informaţia, impune protecţia cerută şi oferă rutine de acces
necesare;
- alocă resursele prin deschiderea fişierului (OPEN);
- dezalocă resursele prin închiderea fişierului (CLOSE).

31
Sisteme operaţionale

3.1. Gestiunea proceselor şi procesoarelor

Utilizarea partajată a resurselor unui sistem de calcul este determinată de insuficienţa la un


moment dat a resurselor necesare execuţiei simultane a proceselor create de utilizatori. Gestiunea
procesoarelor are ca scop asigurarea procesoarelor la procesele create. Fiecărui program de
aplicaţie, sistemul de operare îi asociază o serie de procese.
Procesul reprezintă un program în execuţie (program de serviciu, de aplicaţie sau rutină a
sistemului de operare).
Procesorul reprezintă componenta capabilă să execute un program (CPU sau canal).
Programul este o secvenţă de instrucţiuni, iar procesul o serie de activităţi (taskuri)
executate prin program.
Activitatea (task) este o unitate de lucru internă creată de sistemul de operare, atunci când
o etapă din lucrare este acceptată de sistemul de calcul.
Lucrarea reprezintă o colecţie de activităţi (taskuri) ce se execută de către sistemul de
calcul.

3.1.1. Procese concurente şi coordonarea proceselor


Procesele concurente numite şi procese paralele, presupun că la un moment dat, mai multe
programe pot fi urmărite între punctul de începere şi terminare a execuţiei; în acest caz procesele
interacţionează în două moduri:
- indirect, prin concurarea la aceiaşi resursă a sistemului;
- direct, prin utilizarea simultană a aceloraşi resurse.
Tranziţia stărilor unui proces este redată în fig.3.1.

Lansare Activare
Inactiv Pregătit
Dezactivare Activ
nelansat întrerupt

Blocat în
aşteptare

Fig.3.1. Tranziţia stărilor unui proces

Oportunitatea programării concurente constă în necesitatea reducerii timpului de răspuns la


solicitările la care este supus sistemul de calcul concomitent cu utilizarea eficientă a resurselor
precum şi în necesitatea utilizării partajate a informaţiei şi comunicaţiei între programele în curs de
execuţie, ceea ce implică şi o sincronizare specifică la nivelul software-ului de bază.
Coordonarea proceselor concurente implică următoarele aspecte:
1) determinarea proceselor potrivit cărora sistemul de activităţi trebuie să fie independent de
vitezele relative de execuţie ale activităţilor componente, conducând la un rezultat unic; dacă acest
rezultat depinde de ordinea şi viteza de execuţie a activităţilor, sistemul este nedeterminat şi în acest
caz se vor introduce restricţii de prioritate (grad de precedenţă);
2) interblocarea proceselor apare atunci când două sau mai multe procese aşteaptă un timp nedefinit
într-un fir de aşteptare circular, ca alt proces să renunţe la pretenţiile de utilizare a unei resurse;
interblocarea poate fi înlăturată prin mecanisme cum sunt:
- prealocarea resurselor partajate;
- alocarea controlului în avans de execuţie;

32
Capitolul 3 – Gestiunea resurselor unui sistem de calcul – funcţie a sistemului de operare
- organizarea secvenţială a cererilor şi ierarhizarea resurselor pe nivele astfel încât atunci
când un proces a dobândit resursele de la un anumit nivel, poate solicita resurse numai de la un nivel
superior;
- excluderea mutuală a proceselor prin care anumite activităţi vor fi programate astfel încât
să nu poată fi în execuţie în acelaşi timp (de exemplu, READ şi WRITE).

3.1.2. Sincronizarea proceselor


Sincronizarea proceselor include mecanisme prin care anumite procese vor fi oprite la un
moment dat, până ce apar anumite evenimente ce se află sub controlul altei activităţi. Problema
sincronizării apare datorită partajării resurselor în legătură cu alocarea proceselor pentru execuţie
şi comunicaţia între procese care generează două aspecte:
- apariţia condiţiei de competiţie între procese care se iveşte atunci când planificarea unor
procese pentru execuţie devine critică deoarece parametrii pentru planificarea execuţiei provin din
calcule diferite;
- tendinţa de a obţine resursa de către procese ar putea genera interblocarea acestora.
Mecanismele de sincronizare pentru coordonarea şi comunicarea între procese includ
următoarele posibilităţi:
1) biţi de atenţie
Prin această modalitate, orice resursă partajată de "n" procese va dispune de un bit de atenţie
"lock-bit" folosindu-se convenţia:
lock-bit = 0 - resursa este disponibilă;
lock-bit = 1 - resursa este în folosinţă.
Înainte ca un proces să aibă acces la un procesor, acesta va verifica starea lock-bit-ului: dacă
lock-bit = 0 atunci este permis acestui proces să aibă acces la procesor, iar la terminarea execuţiei
va trece lock-bit-ul în starea iniţială 0; dacă pe parcursul execuţiei un alt proces va solicita
procesorul, acesta va găsi lock-bit-ul în starea 1, el fiind trecut în starea de aşteptare până când
lock-bit-ul devine 0.
2) mecanisme de aşteptare şi semnalizare
Inconvenientul sincronizării proceselor prin lock-bit constă în continuarea secvenţei de testare a
lock-bit-ului pentru comutarea din starea 1 în starea 0; în acest sens, o variantă de utilizare mai
eficientă a procesorului în sensul reducerii timpului de aşteptare şi de ciclare o constituie plasarea
procesului într-o listă de procese blocate alături de alte procese. Atunci când procesorul alocat unui
proces încheie execuţia, acesta va introduce un semnal de legătură (pointer) prin care unul din
procesele blocate din lista celor care aşteaptă, este sesizat că resursa pentru care a fost blocat a
devenit liberă; în acest moment, procesul care câştigă competiţia este trecut din lista de procese
blocate, în lista proceselor gata de execuţie, urmând să fie din nou planificat pentru reluarea execuţiei
din punctul în care a fost întrerupt.
3) calculul semafoarelor prin operaţiile P şi V
P şi V sunt primitive care operează pe semafoarele S constituite din variabile ce iau valori întregi
(nu numai 0 şi 1). Mecanismul se desfăşoară astfel:
P(S): decrementează valoarea lui S cu 1 şi dacă S <= 0 atunci aşteaptă;
V(S): incrementează valoarea lui S cu 1 şi dacă S <= 0 atunci semnal.
4) comunicarea directă de tip SEND/RECEIVE
Mecanismele de sincronizare anterioare realizează comunicaţii indirecte. Sincronizarea se
poate realiza şi într-o manieră directă, prin intermediul primitivelor SEND (Proces1, mesaj) şi
RECEIVE(Proces2, mesaj).
5) cutii poştale
Cutiile poştale sunt constituite din zone tampon din memoria dinamică, tratată ca dispozitiv
periferic de intrare/ieşire. Fiecare activitate creează o cutie poştală cu informaţii ce pot fi extrase de
celelalte activităţi înainte de lansarea în execuţie.

33
Sisteme operaţionale

3.1.3. Gestiunea procesoarelor


Gestiunea procesoarelor presupune asigurarea procesoarelor la procesele create; această
activitate se desfăşoară la două nivele:
1) planificarea lucrărilor, la care se decide care lucrări vor fi executate şi care va fi prima
lansată în execuţie;
2) alocarea procesorului la procese.
În acest scop există module specializate ale programelor de comandă-control ale sistemului de
operare, ce realizează o serie de activităţi:
Modulul pentru planificarea lucrărilor îndeplineşte următoarele activităţi:
- evidenţierea stării tuturor lucrărilor sesizând care dintre lucrări solicită servicii;
- alegerea disciplinei prin care vor intra lucrările în sistem: priorităţi, resurse solicitate,
încărcarea echilibrată, etc.;
- alocarea resurselor necesare lucrării planificate: memorie internă, externă, dispozitive
periferice, CPU;
- dezalocarea resurselor la terminarea execuţiei lucrării.
Modulul de planificare a lucrărilor creează unul sau mai multe procese pentru lucrarea
considerată în momentul trecerii din starea de pregătire în starea de execuţie, stabilind totodată şi
modul de comunicaţie între procese; cu alte cuvinte, alocă resursele fizice disponibile la procese, în
scopul utilizării eficiente a sistemului de calcul, prin simularea unei maşini virtuale pentru fiecare
proces şi un sistem de facilităţi ce permit proceselor concurente să realizeze o excludere mutuală din
regiunile critice şi să comunice cu alte procese.
Modulul pentru planificarea procesoarelor decide care dintre procese va dispune de
procesor, în ce moment şi care este cuanta de timp alocată:
- evidenţiază starea tuturor proceselor (componenta traffic controller);
- decide procesul care va dispune de procesor şi pentru cât timp (processor scheduller);
- alocă procesorul la procese, ceea ce implică actualizarea conţinutului registrelor
procesorului care să reflecte starea curentă;
- dezalocarea procesorului atunci când cuanta de timp acordată a expirat sau procesul trebuie
să aştepte datorită unei întreruperi cum ar fi solicitarea unei operaţii de intrare/ieşire. În acest caz e
necesară salvarea conţinutului registrelor procesorului, în vederea păstrării stării la care a fost
întrerupt, pentru reîncărcarea la reluarea execuţiei din punctul în care a fost întrerupt.
Se poate astfel aprecia că modul de planificare a procesoarelor alocă maşini virtuale la procesele
create, în conformitate cu strategia adoptată.
Pentru planificarea lucrărilor la nivelul procesorului se întâlnesc două tipuri de sisteme:
1) sisteme nepreemptive în care fiecare activitate se execută până la execuţia completă; în
acest caz, procesorul va executa cererea cea mai prioritară din sistem până la terminarea execuţiei,
chiar dacă pe durata execuţiei apar cereri mai prioritare în sistem;
2) sisteme preemptive sunt sistemele în care cererile se pot afla în diverse etape ale execuţiei;
la un moment dat sistemul execută o singură activitate, dar dacă apare o cerere cu prioritate mai
mare, execuţia curentă este întreruptă şi trecută în aşteptare.

3.2. Gestiunea memoriei

Sistemele de calcul includ diverse dispozitive de memorare organizate în final pe două


nivele: memoria internă şi memoria externă. Gestiunea memoriei are rolul de a decide cum trebuie
organizată informaţia pe cele două nivele şi când trebuie transferată informaţia între acestea;
tehnicile de gestiune a lucrărilor (multiprogramare, multitasking, time-sharing,etc) implică existenţa
unor metode eficiente pentru gestiunea memoriei: tehnici de alocare dinamică şi memoria virtuală.
Obiectivul activităţii de gestiune a memoriei este de a furniza o viteză de execuţie sporită

34
Capitolul 3 – Gestiunea resurselor unui sistem de calcul – funcţie a sistemului de operare
a programelor, prin menţinerea în memoria internă a acelor părţi din programe care sunt referite cu
o frecvenţă mare de către CPU (de regulă, programe independente între ele); deoarece în memoria
internă există simultan mai multe programe independente între ele, pentru a utiliza eficient CPU apar
următoarele aspecte:
- introducerea în memoria internă a programului ce urmează a fi executat necesită un spaţiu
de memorie determinat de dimensiunea sa, de spaţiul liber din memoria internă în acel moment şi
de modul de ocupare al memoriei interne de către alte programe;
- pentru zonele de memorie alocate diferitelor programe, trebuie să se asigure protecţia
acestora faţă de anumite interferenţe şi adresări cu alte programe.
Alocarea spaţiului din memoria internă se realizează în funcţie de disponibilitatea memoriei
în acel moment, fapt care nu permite cunoaşterea adreselor reale ocupate de program la momentul
execuţiei (numite şi adrese fizice) în etapele scrierii şi translatării programelor a căror adrese de
memorie, sunt simbolice (numite adrese logice). Translatarea adreselor logice în adrese fizice se
realizează printr-o funcţie de translatare care precede execuţia instrucţiunii respective.
Activitatea de gestiune a memoriei are la bază trei algoritmi (fig.3.2.):
1) algoritmul de transfer care determină când un bloc trebuie transferat din memoria externă
în memoria internă - înaintea execuţiei sau în timpul execuţiei;
2) algoritmul de plasare care determină ce zonă nealocată din memoria internă este folosită
pentru plasarea blocului încărcat din memoria externă;
3) algoritmul de reamplasare care determină care blocuri şi la ce moment trebuie reîncărcate
în memoria internă.
Adrese
Procesor Memorie
internă

Canale de transfer

Comenzi de Memorie
deplasare externă

Fig.3.2. Activitatea de gestiune a memoriei

3.2.1. Alocarea dinamică a memoriei


Alocarea memoriei interne se poate realiza:
- static când programul este încărcat iniţial în orice zonă liberă din memoria internă. În
momentul solicitării unei întreruperi, acesta este transferat în memoria externă urmând a fi reluat
după tratarea întreruperii. Reîncărcarea sa în memoria internă se va face obligatoriu în acelaşi spaţiu
de adrese fizice în care a fost încărcat iniţial, ceea ce reprezintă un mare neajuns în cazul
multiprogramării şi multitasking-ului;
- dinamic când adresele relative ale instrucţiunilor programului după editarea de legături, nu
sunt translatate în adrese fizice în faza de încărcare a programului în memoria internă, ci doar în
momentul execuţiei instrucţiunilor. Adresele relative se păstrează pentru o deplasare a programului
dintr-o zonă în alta a memoriei interne şi o reîncărcare a programului din memoria externă, într-o
altă zonă din memoria internă.

3.2.2. Memoria virtuală


Conceptul unui singur nivel de memorie- denumită memorie virtuală- oferă utilizatorului
iluzia că memoria internă are o capacitate foarte mare, partea de hardware realizând automat
transferul informaţiei din memoria internă în memoria externă şi invers.
Unitatea de transfer între memoria internă şi cea externă este pagina, aceasta reprezentând o entitate

35
Sisteme operaţionale
a memoriei de dimensiune fixă de 512, 1024, 2048 sau 4096 kbytes; procesul de deplasare al
paginilor între memoria internă şi memoria externă este referit ca transfer de pagini.
O adresă folosită de programator se numeşte adresă virtuală, iar adresa reală unde este
memorată se numeşte adresă fizică (dimensiunea spaţiului de adrese virtuale este mult mai mare
decât dimensiunea spaţiului de adrese reale).
Funcţia de translatare a unei adrese virtuale ai în adresă reală bj se poate defini astfel:
ft = 0 dacă informaţia de la adresa virtuală solicitată (ai) nu este în acel moment rezidentă în
memoria internă;
ft = bj dacă adresa virtuală ai găseşte rezidentă adresa reală bj în memoria internă.
Dacă ft(ai) = 0 se emite un semnal de nerezidenţă şi se generează o întrerupere care are ca efect
plasarea din memoria externă în memoria internă, a informaţiei referite de procesor prin adresa
virtuală ai. La terminarea întreruperii (care lansează în execuţie algoritmii de transfer, plasare şi
reamplasare) ft(ai) va fi nenulă, având loc o nouă iniţiere a activităţii întrerupte. Dispozitivul de
translatare este redat în fig.3.3.

Procesor
ai Tabelă
bj Memorie
funcţie de internă
translatare
Canale de transfer

Comenzi de Memorie
deplasare externă

Fig.3.3. Mecanismul de translatare a adreselor virtuale în adrese fizice

Din punct de vedere al modului de organizare, există implementate următoarele variante


pentru memoria virtuală:

1) organizarea la nivel de adresă (fig.3.4.)

RV
ai Tabelă
Procesor ai funcţie de
translatare RM
bj bj Memorie
bj
internă

Acces
Rezident
Depăşire
Memorie
externă

Fig. 3.4. Organizarea la nivel de adresă a memoriei virtuale

Dacă procesorul referă adresa virtuală ai, aceasta se introduce în registrul de adrese virtuale
RV, registrul REZIDENT este resetat (pus pe 0), iar registrul de ACCES setat (pus pe 1),
iniţializându-se procesul de translatare:
- dacă se găseşte cu ai o intrare în tabela ft, atunci conţinutul găsit se introduce în registrul
de adrese fizice al memoriei interne RM, având loc extragerea din memoria internă a informaţiei

36
Capitolul 3 – Gestiunea resurselor unui sistem de calcul – funcţie a sistemului de operare
solicitată de procesor de la adresa reală bj;
- dacă nu se găseşte o intrare în ft, atunci RM = 0, registrul REZIDENT este setat şi are loc
iniţierea celor 3 algoritmi care vor aduce din memoria externă în memoria internă informaţia referită
de procesor, actualizând totodată şi tabela de descriere a funcţiei de translatare ft.
Acest mod de organizare are dezavantajul că spaţiul de memorie ocupat de tabela ft este prea
mare, aceasta conţinând adresele de bază ale blocurilor d; ft determină adresa bj astfel:
bj= f(d)+c
unde c este adresa relativă de la adresa de bază (d) a blocului.

2) organizarea la nivel de pagină

Organizarea la nivel de pagină conduce la reducerea necesarului de informaţie conţinut în


tabela ft deoarece spaţiul de adrese este divizat în blocuri de dimensiune constantă numite pagini.
Dimensiunea paginii virtuale coincide cu dimensiunea paginii reale ceea ce implică netranslatarea
adresei cuvântului de pagină. Dispozitivul de translatare construieşte o tabelă a paginilor organizată
în memoria internă (MTP) cu informaţii necesare procesului de translatare din adrese virtuale în
adrese fizice (fig. 3.5.).

RV RM

Procesor
ai C MTP C bj Memorie
P Q internă

Memorie
Acces externă
Rezident
Depăşire

Fig.3.5. Organizarea la nivel de pagină a memoriei virtuale

Pentru orice adresă virtuală ai se asociază perechea (P,C) unde P reprezintă numărul
cuvintelor din pagină, iar C numărul unui cuvânt referit din P. Prin P se intră în tabela de pagini, la
unul din cuvintele de la 0 la 2p, de unde se extrage componenta Q de o anumită dimensiune; dacă:
- RM (Q) are conţinut nenul, atunci adresa solicitată de procesor are drept corespondent o
pagină de memorie rezidentă în memoria internă;
- RM (Q) = 0 atunci adresa virtuală solicitată nu are adresă de pagină reală în memoria
internă, ceea ce conduce la declanşarea celor 3 algoritmi ca urmare a setării registrului de
REZIDENT. Algoritmii vor determina transferul paginii corespunzătoare din memoria externă în
memoria internă, actualizând totodată şi MTP, după care procesorul referă din nou adresa.
Organizarea la nivel de pagină oferă avantajul că un program se poate executa fără a avea toate
paginile încărcate în memoria internă, ele putând fi încărcate pe măsură ce devin necesare în
prelucrare, deci o utilizare mai eficientă a memoriei şi totodată, o protecţie mai sigură a informaţiei.

3) organizarea la nivel de segment

Organizarea la nivel de segment împarte spaţiul de memorie în blocuri de dimensiune


variabilă, numite segmente (pot fi module de program sau anumite structuri de date)- fig. 3.6.

37
Sisteme operaţionale

RV RM
Comparator
Procesor
ai C
MTS C bj Memorie
S R internă

D
R D
R

buffer Memorie
externă
Acces
Rezident
Depăşire

Fig.3.6. Organizarea la nivel de segment a memoriei virtuale


Adresa virtuală referită de procesor constă din numele segmentului S şi numele cuvântului
din segment C; adresa de memorie unde începe segmentul S reprezintă adresa de bază R, iar prin D
se specifică dimensiunea segmentului.
Adresa reală determinată prin R+C se obţine dacă registrul de buffer conţine adresa extrasă
din memoria tabelei de segmente, efectuându-se şi comparaţia dintre C şi D; dacă R = 0, atunci se
vor declanşa cei trei algoritmi.
4) organizarea la nivel de segment-pagină
Organizarea la nivel de segment-pagină divide adresele virtuale şi adresele fizice în
segmente, iar segmentele în pagini, în vederea fructificării avantajelor celor două metode de
organizare:
- paginarea, care oferă implementarea simplă şi cel mai sigur mijloc de protecţie a
informaţiei;
- segmentarea, care satisface într-o mai mare măsură cerinţele programatorului prin
divizarea în segmente, deci ţinând seama de logica programului (fig.3.7.).

RV RM
CC
ai CC
Procesor CP bj Memorie
MTS CP MTP Q internă
S
R
R D RA
D
Q Memorie
R
externă
buffer

Depăşire Acces
segment pagină

Rezident Acces
segment

Fig. 3.7. Organizarea la nivel de segment-pagină a memoriei virtuale

38
Capitolul 3 – Gestiunea resurselor unui sistem de calcul – funcţie a sistemului de operare
În cadrul acestui mod de organizare, există o singură tabelă de segmente şi un număr de
tabele de pagini egal cu numărul de segmente.
Atunci când procesorul referă o adresă virtuală, acesteia i se asociază:
- adresa virtuală a segmentului S;
- adresa virtuală a paginii în segment CP;
- adresa virtuală a cuvântului din cadrul paginii CC; iar registrul de acces segment este setat.
Prin S din RV se caută în MTS; dacă se găseşte o adresă, aceasta este reprezentată prin:
- R - adresa tabelei de pagini;
- D - dimensiunea segmentului exprimată în pagini şi introdusă apoi în registrul de buffer.
Prin intermediul lui R din registrul de buffer se selectează o tabelă de pagini din MTP;
componenta CP din registrul de adrese şi R din registrul de buffer, permit extragerea din tabela de
pagini a cuvântului indicat prin CP din RV; cuvântul selectat are Q biţi şi reprezintă una din paginile
reale din memoria internă, fiind introdus în RM unde vine şi componenta CC care indică adresa reală
a cuvântului în pagină.
Dacă nu se găseşte prin S din RV nici o intrare în MTS, atunci segmentul virtual adresat nu
are corespondent în memoria internă, deci registrul de REZIDENT este setat şi se declanşează
algoritmii de transfer din memoria externă în memoria internă a segmentului solicitat actualizându-se
şi memoria tabelei de segmente.
Dacă CP din RV este mai mare decât D din registrul de buffer, registrul de depăşire
semnalizează o eroare de adresare poziţionându-se pe 1.
Accesul în MTP se realizează prin poziţionarea registrului de acces la pagină pe 1, iar
componentele Q şi CC sunt introduse în RM.
În cazul proceselor concurente, gestiunea memoriei între mai multe procese poate fi analizată
prin
- limitarea frecvenţei transferului de date şi programe;
- conservarea execuţiei programelor din memoria internă, în timp ce alte programe sunt în
aşteptare în memoria externă;
- transferul datelor şi programelor din memoria internă atunci când procesele le solicită.

3.3. Gestiunea dispozitivelor periferice

O mare pondere din arhitectura sistemelor de calcul este deţinută de echipamentele de


intrare/ieşire (denumite dispozitive periferice), fapt care implică o atenţie deosebită acordată
utilizării lor eficace. Deşi evoluţia continuă în domeniul facilităţilor (mai ales a vitezelor de execuţie)
a condus la multe îmbunătăţiri, continuă să existe diferenţe mari între viteza dispozitivelor periferice
şi vitezele la care operează CPU şi memoria internă, ceea ce motivează introducerea canalelor de
intrare/ieşire şi a procesoarelor specializate în operarea cu unităţile de control ale dispozitivelor
periferice.

3.3.1. Unităţi de control şi canale de transfer


Unităţile de control ale dispozitivelor periferice sunt prevăzute cu circuite electronice
destinate controlului automat al citirii/scrierii efective pe mediile fizice, îndeplinind următoarele
funcţii:
- recunoaşterea adreselor dispozitivelor periferice pe care le controlează;
- conversia comenzilor primite de la canal în forma acceptată de mecanismele şi circuitele
perifericului comandat;
- transmiterea către canal a secvenţelor de semnale standard ce indică desfăşurarea operaţiilor
de intrare/ieşire solicitate;
- efectuarea controlului de paritate asupra datelor şi informaţiilor de control;
- urmărirea îndeplinirii condiţiilor de execuţie a comenzii;

39
Sisteme operaţionale
- generarea informaţiei de stare a dispozitivelor periferice şi a unităţilor de control care se
prezintă canalului la iniţierea şi respectiv, prelucrarea modului în care s-a terminat transferul de date;
- conversia formatului datelor din codul acceptat de dispozitivul periferic, în codul acceptat
de CPU la citire sau invers la scriere.
Există unităţi de control ce permit conectarea la canal a unui singur dispozitiv periferic sau
mai multor dispozitive periferice, numărul acestora fiind limitat de debitul canalului şi de numărul
de periferice admis de acesta.
Canalele de transfer dirijează fluxul de informaţie între memoria internă şi dispozitivele
periferice degrevând CPU de sarcina tratării proceselor de intrare/ieşire îndeplinind ca principale
funcţii:
- transformarea informaţiei de comandă primită de la CPU în semnale acceptate de către
unităţile de control ale dispozitivelor periferice;
- prelucrarea controlului transferului de date şi eliberarea CPU pentru alte lucrări;
- asamblarea sau dezasamblarea datelor transferate între dispozitivele periferice şi memoria
internă;
- sincronizarea transferului de date cu activitatea CPU;
- controlul adresei care reprezintă sursa sau destinaţia transferului de date în memoria
internă, inclusiv verificarea protecţiei memoriei;
- generarea informaţiei de stare a canalului, pe care o ţine la dispoziţia CPU.
Transferul de informaţii între dispozitivele periferice şi memoria internă, se poate realiza:
- continuu - când un dispozitiv periferic se conectează logic la canal până la terminarea
transferului de date, nepermiţând altui dispozitiv periferic să comunice cu canalul în acest interval
de timp;
- multiplex - când mai multe dispozitive periferice pot transmite simultan prin interfaţă.

3.3.2. Activitatea de gestiune a dispozitivelor periferice


O operaţie de intrare/ieşire este iniţiată de CPU prin executarea unei instrucţiuni ce specifică
canalul, adresa dispozitivului periferic şi adresa locaţiei din memoria internă unde începe programul
de transfer numit driver, care specifică operaţiile de intrare/ieşire ce se vor executa; în timpul
execuţiei driver-ului, CPU poate executa alte operaţii în mod concurent; totodată CPU controlează
modul în care se desfăşoară execuţia procesului de intrare/ieşire prin instrucţiuni specifice.
Procesul de intrare/ieşire cunoaşte starea CPU prin cercetarea conţinutului registrelor de
stare. Comunicaţia dintre canalul de intrare/ieşire şi CPU se realizează, de obicei, prin intermediul
întreruperilor (o întrerupere constituie o facilitate hardware care poate suspenda execuţia operaţiei
curente de către CPU, memorarea stării curente şi transferul la o locaţie specifică unde se găseşte un
program pentru tratarea întreruperii respective).
CPU şi canalele de intrare/ieşire sunt proiectate pentru a opera în mod concurent în
următoarea ierarhie: CPU controlează activitatea canalelor de intrare/ieşire, canalele de intrare/ieşire
controlează activitatea unităţilor de control ale dispozitivelor periferice iar acestea controlează
activitatea dispozitivelor periferice ataşate.
Un sistem de intrare/ieşire poate fi organizat în următoarele moduri:
- un canal de intrare/ieşire poate fi utilizat în mod partajat de două CPU folosind un
controller pentru canalul de intrare/ieşire- situaţie întâlnită la sistemele de calcul exploatate în
multiprelucrare;
- o unitate de control poate fi partajată între mai multe canale, situaţie în care pentru acelaşi
dispozitiv periferic există mai multe căi de acces, iar doua CPU partajează aceeaşi unitate de control;
- dispozitivele periferice de intrare/ieşire pot fi partajate între mai multe unităţi de control
ataşate la diferite canale de intrare/ieşire ale aceleiaşi CPU sau la canalele mai multor CPU. În acest
caz, este solicitată aceeaşi unitate de control, existând mai multe căi prin care dispozitivul periferic
poate transmite sau recepţiona date (fig.3.8.).

40
Capitolul 3 – Gestiunea resurselor unui sistem de calcul – funcţie a sistemului de operare
În toate cazurile, dispozitivele periferice pot fi conectate printr-un dispozitiv de comutare.

Canal de
intrare/ieşire

Unitate de
control
... Unitate de
control

Unitate de
comutare

Dispozitiv
periferic
... Dispozitiv
periferic

Fig. 3.8. Variantă de organizare a unui sistem de intrare/ieşire

Sistemele de operare dispun de drivere pentru controlul sistemului de intrare/ieşire şi pentru


gestiunea datelor, care degrevează utilizatorii de scrierea programelor pentru procesele de
intrare/ieşire din programele lor de aplicaţie.
Gestiunea dispozitivelor periferice trebuie să îndeplinească următoarele funcţii:
- evidenţa stării tuturor dispozitivelor periferice sub forma blocurilor unităţilor de control
asociate pentru fiecare dispozitiv periferic;
- introducerea unei discipline pentru a determina cărui proces îi este alocat dispozitivul
periferic, pentru cât timp şi la ce moment, în funcţie de natura proceselor, de viteza dispozitivului
periferic şi modul lui de funcţionare;
- alocarea dispozitivului periferic, a unităţii de control şi a canalului pentru proces;
- dezalocarea la nivelul procesului.
Utilizarea eficientă a dispozitivelor periferice se realizează cu ajutorul unor metode hardware
şi a unor module specializate ale sistemului de operare.
Gestiunea dispozitivelor periferice prin metode hardware se poate realiza prin:
1) operarea dispozitivului periferic independent, fără asistenţa canalului sau unităţii de
control;
2) disciplina buffer care implică existenţa unui buffer pentru date în dispozitivul periferic sau
al unităţii de control, ce ar permite unui dispozitiv periferic lent să lucreze independent de canal;
3) căi de acces multiple, concretizate în mai multe căi de acces pentru fiecare dispozitiv
periferic. În acest caz, driverele pentru gestiunea dispozitivelor periferice vor ţine evidenţa căilor de
acces şi vor determina ruta liberă pentru servirea unei cereri de intrare/ieşire la dispozitivul periferic
solicitat;
4) multiplexarea canalului prin execuţia unor programe de canal multiple, ceea ce înseamnă
o implementare hardware a multiprogramării pentru programele de canal.
Gestiunea dispozitivelor periferice de către sistemul de operare este realizată de următoarele
module specializate:

41
Sisteme operaţionale
1) controlorul traficului de intrare/ieşire (I/O Traffic controller) care are rolul de a evidenţia
informaţiile de stare pentru fiecare dispozitiv periferic, furnizând informaţii mecanismului prin care
un dispozitiv periferic poate fi alocat sau nu. În acest scop, construieşte un bloc de control pentru
dispozitivul periferic, unul pentru unitatea de control şi unul pentru canal (fig.3.9.);

Bloc de control Bloc de control


dispozitive periferice canale

Identificare unitate dispozitiv periferic Identificarea canal

Starea dispozitivului periferic Stare canal

Unităţi de control la care este cuplat Unităţi de control cuplate la canal


dispozitivul periferic
Procese care aşteaptă accesul la Procese care aşteaptă accesul la canal
dispozitivul periferic

Bloc de control pentru


unităţile de control

Identificarea unităţi de control

Stare unităţi de control

Dispozitive periferice conectate la


unitatea de control

Console conectate la unitatea de


control

Console conectate la unitatea de


control

Procese care aşteaptă accesul la


unitatea de control

Fig. 3.9. Informaţia de stare a dispozitivelor periferice

2) planificatorul operaţiilor de intrare/ieşire (I/O Scheduller) care conţine algoritmul privind


strategia utilizată pentru alocarea canalului, a unităţilor de control şi a dispozitivelor periferice; are
funcţii similare cu planificatorul proceselor, cu deosebirea că un program de canal odată lansat în
execuţie nu va putea fi întrerupt înainte de execuţia lui completă;
3) manipulatorul dispozitivelor periferice de intrare/ieşire (I/O Devices Handler) are rolul
de a crea programul de canal pentru execuţia funcţiei dorite, executând fizic operaţia respectivă;
4) dispozitive periferice utilizate partajat (Shared Devices) sunt partajate între mai multe
procese concurente, ceea ce implică:
- interferenţa cererilor din partea proceselor;
- protecţia împotriva acceselor neautorizate.
5) dispozitive periferice virtuale sunt dispozitive periferice ce pot fi convertite pentru a putea
fi utilizate partajat prin sistemul Spooling.

42
Capitolul 3 – Gestiunea resurselor unui sistem de calcul – funcţie a sistemului de operare

EXERCIŢII

1. Ce reprezintă procesele concurente şi care sunt stările de tranziţie prin care poate trece un proces
?

2. Cum se poate preveni interblocarea proceselor ?

3. Care sunt mecanismele de sincronizare între procese şi prin ce se caracterizează fiecare dintre ele
?

4. Specificaţi activităţile desfăşurate de modulele sistemului de operare care asigură alocarea


procesoarelor.

5. Ce se înţelege prin multitasking preemptiv ?

6. Ce se urmăreşte prin mecanismul memoriei virtuale şi în ce constă diferitele moduri de organizare


ale acesteia ? Menţionaţi avantajele oferite de către fiecare mod de organizare.

7. Se consideră un sistem de calcul având implementată memorie virtuală organizată la nivel de


pagină. Capacitate unei pagini este 512 K, capacitatea memoriei reale este de
4 G, iar a memoriei virtuale este de 4 T.
Se cere să se determine:
a) dimensiunea registrului de adrese virtuale;
b) dimensiunea registrului de adrese reale;
c) capacitatea memoriei tabelei de pagini.

8. Se consideră un sistem de calcul având implementată memorie virtuală organizată la nivel de


segment lungimea segmentului variind între 256 k şi 1024 K. Capacitatea memoriei reale este de 4
G iar a memoriei virtuale este de 4 T.
Se cere să se determine:
a) dimensiunea registrului de adrese virtuale;
b) dimensiunea registrului de adrese reale;
c) dimensiunea registrului buffer;
d) capacitatea memoriei tabelei de segmente.

9. Se consideră un sistem de calcul având implementată memorie virtuală organizată la nivel de


segment-pagină. Capacitate unei pagini este 512 K, iar lungimea segmentului variază între
256 K şi 1024 K.Capacitatea memoriei reale este de 4 G, iar a memoriei virtuale este de 4T.
Se cere să se determine:
a) dimensiunea registrului de adrese virtuale;
b) dimensiunea registrului de adrese reale;
c) dimensiunea registrului buffer;
d) dimensiunea registrului de adrese;
e) capacitatea memoriei tabelei de segmente;
f) capacitatea memoriei tabelei de pagini.

10. Specificaţi activităţile desfăşurate de modulele sistemului de operare care asigură gestiunea
dispozitivelor periferice de intrare/ieşire.

43
COMPONENTA ROM-BIOS ŞI ÎNTRERUPERI. MS-DOS.

4.1. Prelucrarea întreruperilor

4.1.1. Conceptul de întrerupere


În cadrul procesului de execuţie al unui program CPU trebuie să asigure următoarele funcţii:
- evidenţierea stării în care se află şi asigurarea unui mecanism de schimbarea stării;
- asigurarea înlănţuirii automate a instrucţiunilor;
- asigurarea comenzilor necesare execuţiei unei instrucţiuni.
În ceea ce priveşte schimbarea stării CPU, aceasta se poate realiza prin:
- memorarea dinamică a informaţiei de stare, în cuvântul de stare al procesorului (MSW -
Machine Status Word);
- sistemul de întreruperi.
CPU se poate afla în una din următoarele stări:
- operaţională- atunci când poate executa operaţii de prelucrare a datelor;
- neoperaţională- care corespunde unei situaţii de defect.
Starea operaţională se caracterizează prin una din următoarele stări generate de procese:
- activă sau în aşteptare;
- întreruptibilă sau neîntreruptibilă, funcţie de luarea în considerare a întreruperii sau nu (se
spune că întreruperea este mascată);
- sistem sau utilizator, după cum este sub controlul sistemului de operare sau al programelor
de aplicaţie lansate de utilizatori.
Informaţia de stare este dinamică şi reflectă în orice moment funcţionarea CPU, fiind
memorată într-un registru de stare sub denumirea de cuvânt de stare program MSW (Machine Status
Word), conţinând în general, următoarele informaţii:
- dreptul de acces al programului la zona respectivă de memorie;
- o informaţie sintetică asupra modului cum s-a încheiat execuţia instrucţiunii precedente,
numită cod de condiţie (registrul Eflags la microprocesoarele Intel);
- măştile de întreruperi;
- starea CPU;
- nivelul de prioritate al programului;
- adresa următoarei instrucţiuni de executat (registrul EIP - Extended Instruction Pointer la
microprocesoarele Intel).
Posibilitatea comutării stării CPU se realizează prin procese de întrerupere care (de exemplu,
în cazul multiprogramării) este o condiţie indispensabilă în sensul asigurării trecerii controlului de
la un program la altul. Prelucrarea întreruperilor este realizată de o componentă hardware
specializată inclusă în CPU şi o componentă software (ce dispune de rutine incluse în sistemul de
operare pentru a trata fiecare întrerupere în parte).
Etapele tratării unei întreruperi (fig.4.1.):

44
Sisteme operaţionale

Fig. 4.1. Etapele tratării unei întreruperi

- în momentul apariţiei unei cereri de întreruperi, aceasta se va lua în considerare dacă este
cea mai prioritară din şirul de întreruperi;
- analiza tipului de întrerupere şi salvarea cuvântului de stare al programului la o anumită
adresă din memoria internă;
- încărcarea unui cuvânt de stare al programului specific întreruperii şi lansarea în execuţie
a rutinei ce prelucrează întreruperea;
- reîncărcarea vechiului cuvânt de stare al programului de la adresa unde a fost salvat în
memoria internă, după terminarea prelucrării întreruperii;
- redarea controlului programului întrerupt.
Întreruperile pot fi generate: de program, de operaţiile de intrare/ieşire, de defect al CPU sau
externe sistemului de calcul provenind de la alte echipamente cu care este cuplat.

4.1.2. Întreruperi la PC - uri


La microprocesoarele implementate pe PC -uri care permit multiprogramarea (I80286,
I80386, I80486, Pentium), controlul accesului între programele de aplicaţie şi sistemul de operare
este asigurat prin controlul spaţiului de adresă şi un mecanism de protecţie privilegiat astfel:
- controlul spaţiului de adresă separă programele de aplicaţii unele faţă de altele;
- mecanismul privilegiat de protecţie izolează software-ul de bază de software-ul aplicaţii.
Acesta garantează posibilitatea programelor de a avea acces la segmentul de cod, de date şi

45
Capitolul 4 – Componenta ROM-BIOS şi întreruperi MS-DOS
resursele de intrare/ieşire de bază, numai pentru nivelul privilegiat al segmentului respectiv.
Protecţia se bazează pe noţiunea de ierarhie de tutelă, existând patru niveluri privilegiate
aranjate în inel, începând cu cea mai mare tutelă 0 (fig.4.2.)

Nivel 3

Nivel 2

Nivel 1

Nivel 0

Fig.4.2. Protecţia prin ierarhia de tutelă

- nivelul 0 este rezervat în general, sistemului de operare;


- nivelul 3 este nivelul cea mai mică tutelă.

Nivelul privilegiat este un atribut de protecţie alocat la toate segmentele prin software-ul
sistemului, aceasta determinând care proceduri pot accesa segmentul, în timp ce drepturile de acces
sunt implementate hardware.
Codul sistemului de operare şi segmentele de date plasate la cel mai privilegiat nivel (nivel
0) nu pot fi accesate prin programe de alt nivel privilegiat, fiecare program putând accesa date la un
nivel identic sau mai mare.
Întreruperile şi excepţiile sunt cazuri speciale de transfer al controlului între programe.
O întrerupere este generată de un eveniment independent de programul în curs de execuţie,
în timp ce excepţiile sunt rezultate direct din programul în curs de execuţie, apărând atunci când o
instrucţiune nu poate fi executată complet în mod normal. Pentru localizarea întreruperii, CPU
asociază fiecărei surse de întrerupere un număr, numit vector de întrerupere cu rol de adresă în
IDT.
Tabela de descriere a întreruperilor (IDT) defineşte dirijarea acestora pentru fiecare tip de
întrerupere; această tabelă poate fi localizată oriunde în spaţiul adreselor fizice, ea fiind accesată în
memoria reală prin adrese ce sunt păstrate în registrul tabelei de descriere a întreruperilor (IDTR).
Fiecare intrare în tabela de descriere a întreruperilor conţine adresa planificatorului de întreruperi.
Erorile de execuţie care generează excepţiile referă o intrare în tabela de descriere a întreruperilor
ce se poate identifica prin bitul 1 în codul de eroare. Acest bit este setat pe 1 dacă întreruperea a fost

46
Sisteme operaţionale
cauzată de un eveniment extern programului (flagul TF=1).
Excepţiile au totodată şi rolul de a detecta faulturile sau erorile de programare produse de
utilizarea operanzilor sau a nivelurilor privilegiate; ele nu pot fi mascate, având fixaţi vectorii în
primele 32 de întreruperi. De exemplu, încercarea de a viola protecţia cauzează o excepţie care, ca
orice fault este dirijată de programul care a generat-o dacă aceasta este o întrerupere, respectiv de
un alt program, dacă este o intrare în tabela de descriere a întreruperilor.

4.2. Clase de întreruperi la PC - uri

Sistemul de întreruperi la PC este realizat cu ajutorul unui controlor de întreruperi


(standard 8259 A), existând mai multe niveluri de întreruperi situate fie pe magistrala
sistemului, fie pe placa de bază a CPU.
PC din gama IBM sau compatibile manevrează următoarele clase de întreruperi:

1) întreruperi ale microprocesorului grupate pe tipuri de întreruperi, fiecărui tip fiindu-i


atribuit un cod după care se identifică;

2) întreruperi iniţiate hardware sunt cauzate de evenimente externe activate pe două linii
: INTR (INTerrupt Request) şi NMI (Non Maskable Interrupt -pini de întrerupere ai
microprocesorului):
- dacă linia INTR este activă, CPU execută anumite activităţi în funcţie de indicatorul de validare al
întreruperii (IF):
* dacă IF = 0, atunci întreruperile semnalate vor fi mascate (inactive), iar CPU ignoră
întreruperea şi execută instrucţiunea următoare a programului activ;
* dacă IF = 1, atunci CPU recunoaşte cererea de întrerupere, opreşte execuţia normală a
programului activ şi predă controlul rutinei de tratare a întreruperii;
- dacă linia NMI este activă, întreruperea anunţă producerea unor evenimente critice, iar CPU le va
da imediat controlul; evenimentele ce utilizează intrarea NMI sunt nemascabile, în timp ce
evenimentele care utilizează intrarea INTR sunt calificate ca întreruperi posibil de inhibat
(mascabile).
Mascarea întreruperilor se poate realiza prin setarea bitului IF din cuvântul de stare al
procesorului (de remarcat că IF nu inhibă excepţiile, întreruperile cauzate de instrucţiunile INT sau
de erorile de extensie ale procesorului). Întreruperile nemascabile au o prioritate mai mare decât
întreruperile mascabile.
3) întreruperi iniţiate software sunt produse explicit de instrucţiuni de întrerupere sau sunt
rezultatul unor condiţii de excepţie ce previn programul asupra continuării execuţiei; sunt întreruperi
nemascabile.
Instrucţiunile de întrerupere sunt de forma:
INT n
unde prin n se va specifica numărul vectorului de întrerupere.
O instrucţiune INT (INTerrupt) generează o întrerupere imediat după execuţia sa. Tipul de
întrerupere este codificat în instrucţiune anunţând CPU care rutină de tratare a întreruperii să o
execute. Deoarece poate fi specificat orice tip de întrerupere software, se pot utiliza şi pentru a testa
rutinele de tratare a întreruperilor generate de dispozitivele externe.
Dacă este setat bitul TF, CPU generează o întrerupere după execuţia fiecărei instrucţiuni;
aceasta se numeşte execuţie pas cu pas (step by step) constituindu-se într-un instrument deosebit de

47
Capitolul 4 – Componenta ROM-BIOS şi întreruperi MS-DOS
util pentru testarea şi depanarea programelor
Întreruperile software sunt fixate la orice PC din gama IBM sau compatibil, ele făcând parte
din programele BIOS-ului.

4) întreruperile DOS sunt disponibile numai sistemului de operare MS-DOS; rutinele de


tratare a acestor întreruperi gestionează operaţii de bază, lucrul cu fişierele, gestionarea memoriei,
ş.a.

5) întreruperile Basic sunt folosite numai dacă în memoria ROM, interpretorul Basic este
activ.

6) întreruperile de adresă se găsesc sub forma vectorilor de întreruperi, în tabela vectorilor


de întrerupere şi conţin adresele diferitelor tabele din memorie, nefiind asociate cu rutinele de tratare
a întreruperilor; trei tabele sunt mai semnificative:
- tabela de iniţializare video;
- tabela de bază a discului;
- tabela de caractere grafice.

7) întreruperile folosite de programe utilizator care de regulă, au un interval rezervat.

4.3. Atribuirea întreruperilor şi priorităţii. Serializarea întreruperilor

Iniţial, microprocesoarele familiei Intel X86 aveau opt întreruperi incluse pe controlerul
standard Intel 8259 A numerotate de la 0 la 7, cu priorităţi în ordine descrescătoare numerelor
atribuite (NMI, IRQ0, IRQ1,..., IRQ7); existau doar două linii de semnal dintre care una era folosită
de întreruperea nemascabilă NMI (eroare de paritate a memoriei sau provenită de la coprocesorul
matematic), iar cealaltă era folosită de întreruperile IRQ în funcţie de prioritatea asociată.
Ulterior, la modelele AT numărul liniilor de semnal s-a dublat prin introducerea unui nou
controler Intel 8259 A legat în cascadă cu primul controler (fig. 4.3.), la întreruperea IRQ 2 care a
fost redistribuită liniei IRQ 9, modificându-se şi priorităţile aşa cum se observă din tabelul 4.1.
Magistralele PCI nu folosesc controlerul de întreruperi AT, având integrat propriul controler
care include patru linii de întrerupere (patru linii a câte opt biţi), neimpunând limite în modul de
folosire al semnalelor de întrerupere datorită în principal software-ului.
Majoritatea PC - urilor actuale bazate pe microprocesoare Pentium, pentru a păstra
compatibilitatea cu microprocesoarele Intel precedente, includ plăci ISA/PCI; în acest caz, legătura
cu microprocesorul se realizează pe magistrala PCI printr-un cip de legătură PCI-magistrala locală
a microprocesorului, în timp ce legătura cu magistrala ISA se realizează printr-un cip de legătură
ISA/PCI care include un standard de serializare a întreruperilor IRQ pentru magistrala PCI.
Standardul de serializare IRQ se bazează pe un semnal special IRQ SER ce codifică
întreruperile IRQ; printr-un ciclu IRQ SER se trimit informaţii despre starea tuturor întreruperilor
din sistem (durata unui ciclu este de 4 - 8 cicluri de ceas), acesta fiind divizat în cadre ce includ câte
trei cicluri de ceas. Un cadru codifică starea unei întreruperi (tabelul 4.2.)

48
Sisteme operaţionale

Număr Funcţia realizată Prioritate


întrerupere generală
IRQ 0 Ieşire - ceas 0
IRQ 1 Tastatură - buffer plin
IRQ 2 Cascadă din IRQ 2
IRQ 3 Port serial 2, 4 7
Comunicaţie SLDC, BSC
Adaptor reţea, cluster
IRQ 4 Port serial 1, 3 8
Comunicaţie SLDC, BSC
Adaptor comunicaţie vocală
IRQ 5 Port paralel 2 9
Audio
IRQ 6 Controler floppy-disk 10
IRQ 7 Port paralel 1 11
Adaptor cluster
IRQ 8 Ceas de timp real 11
IRQ 9 Redirectare soft la INT OA 1
Video
Reţea
IRQ 10-12 Rezervat 2-4
(12 - mouse)
IRQ 13 Coprocesor matematic 5
IRQ 14 Controler de hard-disk IDE primar 5
IRQ 15 Controler de hard-disk IDE secundar 6

Tabelul 4.1. Atribuirea întreruperilor şi priorităţile asociate la sistemele AT (magistrale ISA pe 16


biţi)
8259 - 1
IRQ 0 ← circuite ceas
IRQ 1 ← tastatură
IRQ 2
IRQ 3 ←
CPU INT IRQ 4 ←
IRQ 5 ←
8259 - 2
IRQ 6 ← IRQ 8 ← RTC/CMO
IRQ 7 ← IRQ 9
IRQ 10 ←
INT IRQ 11 ←
de la sloturi de 8 biţi IRQ 12 ←
IRQ 13 ← FPU
IRQ 14 ←
IRQ 15 ←

de la sloturi de 16 biţi

de la sloturi de 8 biţi pentru IRQ 2

Fig. 4.3. Controler de întreruperi pe 16 biţi

49
Capitolul 4 – Componenta ROM-BIOS şi întreruperi MS-DOS
4.4. Componenta ROM-BIOS şi MS-DOS
4.4.1. Elemente componente BIOS
Sistemul driverelor de intrare/ieşire de bază - BIOS (Basic Input Output System) rezident
în memoria ROM, conţine următoarele elemente:
- programe de test pentru resursele sistemului din configuraţia standard;
- program de încărcare a înregistrării ce conţine încărcarea sistemului de operare pe disc;
- proceduri pentru tratarea cererilor de întrerupere externe.
Întreruperea codificată Poziţia cadrului Observaţii
IRQ 0 1
IRQ 1 2
SMI # 3 System Management Interrupt
IRQ 3 4
IRQ 4 5
IRQ 5 6
IRQ 6 7
IRQ 7 8
IRQ 8 9
IRQ 9 10
IRQ 10 11
IRQ 11 12
IRQ12 13
IRQ13 14
IRQ 14 15
IRQ 15 16
IOCHCK # 17 I/O Check
INT A 18
INT B 19
INT C 20
INT D 21
Neatribuite 22-32 Disponibile

Tabelul 4.2. Codificarea cadrelor de serializare a întreruperilor la magistrala PCI


- proceduri pentru comanda şi controlul execuţiei operaţiilor de intrare/ieşire la nivel fizic,
pentru dispozitivele periferice din configuraţia standard.
Programele de test pentru resursele din configuraţia standard se execută automat odată cu
pornirea sistemului realizând următoarele activităţi:
- testarea sumară a microprocesorului care include testarea registrelor accesibile utilizatorului
şi a căilor de date;
- testarea şi programarea canalului DMA (Direct Memory Acces) şi a contorului programabil
ce participă la realizarea operaţiei de reîmprospătare a memoriei interne;
- testarea şi programarea contorului programabil pe baza căruia se construieşte ceasul de
timp real;
- stabilirea configuraţiei sistemului prin determinarea poziţiei comutatorilor;
- testarea memoriei RAM;
- testarea sistemului de întreruperi şi iniţializarea tabelei ce conţine adresele rutinelor pentru
tratarea acestora;
- stabilirea legăturilor cu alte ROM din afara plăcii de bază incluse în interfeţele
dispozitivelor periferice, ce constă în:
* stabilirea adreselor de tratare a întreruperilor aferente;

50
Sisteme operaţionale
* iniţializarea dispozitivelor periferice şi a variabilelor asociate;
* testarea sumară a adaptoarelor pentru tastatură, monitor şi discuri.
4.4.2. Structurarea programelor şi segmentarea la MS-DOS
Programele executabile pot fi memorate pe suport extern în două forme:
- nume_fişier.EXE constituit dintr-o structură multisegment: stiva, datele, codul;
- nume_fişier.COM constituit dintr-un singur segment ce include atât datele cât şi codul
instrucţiunilor programului.
Într-un fişier cu extensia .EXE, programul este constituit într-un format relocabil incluzând
un antet cu privire la informaţiile necesare pentru realocare.
Fişierele cu extensia .COM ocupă un spaţiu mai redus pe suport magnetic, încărcându-se în
RAM mult mai repede.
Oricare ar fi formatul programului executabil, în momentul încărcării în RAM pentru
execuţie acesta este precedat de un prefix de segment al programului (PSP) a cărui adresă de început
este ds:0000 şi es:0000 având următoarea structură constituită din 256 bytes (100H):
- adresa 0: codul instrucţiunii INT 20H- 2 bytes;
- adresa 2: ultima adresă de memorie - 2 bytes;
- adresa 4: rezervat - 1 byte;
- adresa 5: apel procedură de intrare în DOS corespunzător funcţiilor DOS- 5 bytes;
- adresa AH: adresa de revenire în DOS la terminare execuţie (INT 22H şi INT 4CH) ce se află la
adresa de tratare a întreruperii INT 22H -4 bytes;
- adresa EH: adresa de tratare CTRL-BREAK care se găseşte la adresa de tratare a întreruperii INT
23H - 4 bytes;
- adresa 12H: adresă de tratare a cererilor critice ce se află la adresa de tratare a întreruperii INT 24H
- 4 bytes;
- adresa 16H: rezervaţi pentru DOS - 22 bytes;
- adresa 2CH: adreă de segment pentru un şir de caractere ASCIIZ ce conţin descrierea informaţiilor
de sistem (environment);
- adresa 2EH: rezervat pentru DOS - 46 bytes;
- adresa 5CH: blocul de control al fişierelor pentru primul parametru - 16 bytes;
- adresa 6CH: blocul de control al fişierelor pentru al doilea parametru - 20 bytes;
- adresa 80H: numărul de bytes în linia de apel a programului (nu include şi numele programului)
- 1 byte;
- adresa 81H: linia de apel a programului (fără numele programului şi directivele de redirectare) -
127 bytes.
Structura unui fişier .EXE conţine 3 segmente:
a. segmentul de stivă, segment ce poate apare în orice ordine relativă din alt segment; este
utilizat de programe pentru a memora orice date care trebuie salvate şi reapelate apoi de program;
b. segmentul de date este segmentul care conţine variabile referite de segmentul de cod,
motiv pentru care este important să fie plasat înaintea acestuia în vederea scăderii posibilităţii de a
se produce erori, a creşterii vitezei de execuţie şi a eficienţei asamblării;
c. segmentul de cod conţine instrucţiunile executabile începând cu o etichetă ce identifică
punctul de intrare în segment.
În momentul încărcării fişierului .EXE pentru execuţie, se va poziţiona în RAM mai întâi
PSP ce conectează programul cu MS-DOS după care MS-DOS poziţionează în RAM segmentul de
cod, segmentul de date şi cel de stivă al programului. În final, MS-DOS plasează elementele de
identificare ale segmentului de cod şi ale segmentului de stivă în registrele de segment:

51
Capitolul 4 – Componenta ROM-BIOS şi întreruperi MS-DOS
- registrele ES şi DS sunt iniţializate la adresa de segment corespunzătoare adresei de început a
segmentului de date;
- registrul CS este iniţializat la adresa de început segmentului ce conţine programul.
Dacă există un singur segment atunci conţinutul lui CS va fi cu 10H (64 în hexazecimal) mai
mare decât conţinutul registrelor DS şi ES. Pentru execuţia corectă a programului, registrele DS şi
ES trebuie încărcate explicit cu adresele segmentelor de date pe care le accesează:
- registrul de stivă (SS) şi indicator al adresei din stivă (SP) se vor iniţializa dacă nu a fost declarat
explicit un segment pentru stivă sau se doreşte utilizarea unui alt segment pentru stivă, decât cel de
cod. În cazul inexistenţei unei astfel de iniţializări, registrul SS este iniţializat cu aceeaşi valoare ca
şi registrul CS, iar SP va conţine valoarea 0 astfel încât prima informaţie din stivă va fi memorată
în segmentul de cod la adresa 0FFFEH.
La terminarea execuţiei programului, redarea controlului se realizează cu INT 21H precedată
de încărcarea în registrul AX a funcţiei 4C00H.
Structura fişierului .COM
Fişierul .COM are un singur segment "comun" ce conţine toate datele programului, PSP par
şi stiva. Dimensiunea maximă a unui program .COM poate fi de 64 K cât este dimensiunea unui
segment, şi toate referirile din program sunt relative la adresa de început a segmentului. MS-DOS
construieşte PSP şi îl include în segment pe primii 256 bytes (100H) ceea ce implică definirea
punctului de intrare în program la 100H după blocul de 256 bytes al PSP. După definirea punctului
de intrare în program, acesta trebuie comutat la instrucţiunea de început a execuţiei programului
(dacă este scrisă o dată între punctul de intrare şi instrucţiunea de pornire, asamblorul trebuie să sară
peste această dată - instrucţiunea JUMP- la prima instrucţiune executabilă). Datele programului pot
fi plasate oriunde în program, cu condiţia să nu se interfereze cu codul (de preferat plasarea datelor
înaintea codului deoarece asamblorul poate semnala erori la referirea unor date ce nu au fost
declarate în prealabil).
De remarcat că nu este necesară iniţializarea registrelor de segment (acestea fiind iniţializate
implicit cu aceeaşi valoare ca şi registrul CS), iar stiva este iniţializată automat la sfârşitul
segmentului ocupat de program (registrul SS conţine aceeaşi valoare ca şi registrul CS, iar registrul
SP conţine valoarea 0FFFE0H).
La terminarea programului, faţă de fişierele .EXE există următoarele deosebiri:
- redarea controlului MS-DOS se realizează cu instrucţiunea RET înaintea terminării procedurii
principale, care are ca efect un salt la primul byte din prefixul programului unde se găseşte
instrucţiunea INT 20H memorată la începutul prefixului de program;
- instrucţiunea END trebuie să identifice eticheta punctului de intrare la deplasarea 100H.
La execuţia editării de legături se va semnala o eroare ce se ignoră, cu privire la nedeclararea
segmentului de stivă SS.
4.4.3. Alocarea memoriei pentru programe şi execuţia lor
Având în vedere organizarea logică a memoriei interne la PC - uri (fig.4.4.), sistemul de
operare MS-DOS divide memoria de 640 K în două zone:
- prima zonă începe la adresa 0000:0000H şi conţine:
* vectorii de întrerupere;
* tabela vectorilor de întreruperi;
* zonele tampon;
* nucleul sistemului de operare (partea rezidentă);
- a doua zonă - zona de tranzienţe - conţine programele şi informaţii de context pentru aceste
programe (environment); fiecărui program i se atribuie la cerere, blocuri de memorie ce sunt

52
Sisteme operaţionale
precedate de un bloc de control de 16 bytes care conţine:
* identificatorul blocului - byte 0;
* adresa de segment pentru PSP-ul programului căruia i-a fost atribuit acest bloc (blocurile
eliberate conţin valoarea 0) byte 1 şi 2;
* dimensiunea blocului de memorie exprimată în multipli de 16 bytes, fără a lua în
considerare memoria ocupată de blocurile de control - byte 3-4;
* zona liberă - byte 5-15.
32M
16M/4

Memoria
extinsă
HMA
Memorie
IM FFFFF
expandată
Comp. ROM
BIOS de pe (Împărţită în
placa de bază pagini logice şi
E0000
896K relocate în
fereastra EMS)
Fereastra EMS

832K 64K
Mem. ROM de
pe placa
de bază
768K BFFFF

Memoria
RAM video

640K A0000

192K
Memoria
convenţională
……………

128K

64K

16K
DOS
Rutine BIOS
Tabelă vectori 128K
întreruperi 64K
0K 0 0K

Fig. 4.4. Organizarea logică a memoriei interne la PC-uri

53
Capitolul 4 – Componenta ROM-BIOS şi întreruperi MS-DOS
Nu există prevăzut un mecanism de compactare a spaţiului de memorie disponibil. Astfel,
dacă sunt eliberate anumite zone de memorie fără ultima zonă ocupată iniţial, atunci aceste zone se
utilizează numai dacă o nouă cerere de memorie solicită aceste zone, fenomen ce poate conduce şi
la fragmentarea memoriei.
Încărcarea şi execuţia unui program se realizează prin execuţia funcţiei EXEC prin care
programul încărcător va solicita sistemului de operare alocarea a două blocuri de memorie:
- un bloc de memorie pentru program;
- alt bloc de memorie, pentru contextul acestuia.
Un program care se execută poate să lanseze în execuţie un alt program pentru care trebuie
să-i pregătească argumentele (lansarea în execuţie se face cu funcţia DOS 4BH) într-un bloc de
parametri, în vederea construirii prefixului programului ce se execută (fig.4.5.):

Memoria convenţională

Vector întreruperi

Tabele sistem de întreruperi

Buffere

Nucleul sistemului de operare


(rezident)

Tranziente
- programe şi informaţii de control
asociate
Solicitare
blocuri de
memorie

Adresa 0
a programului Bloc de Bloc de Bloc de
memorie control memorie
pentru 16 bytes pentru
context program

Lansare alt
program în
execuţie

pregătire parametri
într-un bloc de
parametri

Sfârşit Segment Deplasare al Segment Deplasare Segment Deplasare Adresă


context bloc Control doilea bloc bloc control primul bloc linie de pentru linia segment de
FCB-2 de control FCB-1 de control comandă de comandă context

Fig. 4.5. Alocarea memoriei pentru programe

54
Sisteme operaţionale

- adresa segmentului de context care dacă este 0, se consideră contextul programului curent, byte
0-1;
- deplasarea pentru linia de comandă (offset-ul), byte2-3;
- segmentul liniei de comandă ce conţine numărul de caractere, textul şi 0DH, byte 4-5;
- deplasarea pentru primul FCB (File Control Block), byte 6-7;
- segmentul blocului de control al fişierului (primul FCB), byte 8 şi 9;
- deplasarea pentru al doilea FCB, byte 10-11;
- segmentul celui de-al doilea FCB, byte 12-13;
Conţinutul blocurilor de control sunt copiate în zone corespunzătoare din PSP-ul
programului lansat în execuţie. Dacă programul apelat nu lucrează cu FCB sau şi le pregăteşte
singur, atunci în bytes de la 6 la 13(0DH) se va transmite valoarea 0.
Prin funcţia 4DH, programul care a apelat funcţia EXEC poate obţine informaţii despre
modul de terminare al programului executat:
mov ah,4dh
int 21h
iar codul de terminare se află în registrul în AH:
0 terminare normală;
1 terminare cu CTRL/C;
2 eroare acces memorie externă;
3 terminare cu rămânere program rezident.

Sfârşitul contextului se face cu 2 bytes având valoarea zero, iar un nou context trebuie să
conţină cel puţin definirile pentru COMSPEC, PATH, PROMPT.
Înainte de apelul funcţiei EXEC, trebuie salvate toate registrele ce conţin informaţii utile şi
a conţinutului registrelor SP şi SS în memoria programului apelant. La revenirea din programul
apelat se refac registrele salvate.

4.4.4. Programe rezidente (TSR)


Programele rezidente (TSR Terminate and Stay Resident) sunt o manieră rudimentară de
exploatare multitasking la MS-DOS, ce constă în existenţa în RAM a mai multor programe care sunt
activate prin producerea unui eveniment extern, putându-se comuta rapid de la un program la altul
şi creând astfel iluzia de multitasking.

Un program rămâne în RAM la terminarea execuţiei prin apelul funcţiei DOS 31H.

Pentru activarea unui program TSR trebuie să aibă loc un eveniment extern (combinaţii de
taste), fiind astfel necesară utilizarea unei secvenţe ce tratează întreruperea de nivel 9, activare ce
nu trebuie să afecteze execuţia altor programe care se mai execută (chiar alte TSR). Din acest motiv
la activarea întreruperii 9 se execută:
- salvarea stării curente;
- salvarea codului de scanare curent;
- dacă are loc un eveniment extern atunci se execută TSR, altfel se tratează întreruperea de
nivel 9 şi se reface starea salvată.

55
Capitolul 4 – Componenta ROM-BIOS şi întreruperi MS-DOS
Deoarece un program TSR poate conţine funcţii DOS şi MS-DOS nu este reentrant, activarea
programelor TSR se va face numai dacă nu este în execuţie o funcţie DOS sau sistemul de operare
nu este în tratarea unei erori critice.
Dacă programul TSR realizează operaţii cu discuri, e necesară salvarea adresei PSP a
programului întrerupt şi a adresei zonei de transfer a discului (DTA Disk Transfer Area) urmând ca
la sfârşitul execuţiei programului TSR, să se realizeze operaţia inversă.
Un program TSR conţine trei secvenţe de program distincte:
- instalarea programului (iniţializarea), ce constă dintr-o secvenţă ce creează legăturile programului
cu sistemul de operare (INT 35H şi INT 25H):
INT 35H permite obţinerea şi salvarea ultimei adrese de tratare a întreruperii;
INT 25H pentru crearea noii legături.
- programul TSR ce conţine secvenţa de program propriu-zisă;
- dezafectarea legăturilor TSR- MS-DOS şi refacerea vechilor legături.

56
Sisteme operaţionale

EXERCIŢII

1. Să se explice de ce apar întreruperile şi care sunt etapele prelucrării lor.

2. Cum sunt protejate programele de aplicaţie între ele şi cum se evită interferenţa lor cu programele
sistemului de operare la PC -uri ?

3. Să se pună în evidenţă deosebirea dintre întreruperi şi excepţii.

4. În ce constă tabela vectorilor de întrerupere ? Să se identifice elementele la un PC.

5. Care sunt întreruperile BIOS şi ce semnificaţie le este atribuită fiecăreia ?

6. Să se identifice etapele de dezvoltare ale unui program de aplicaţie la MS-DOS, program scris în
diverse limbaje de programare, relevând rolul fiecărei componente a sistemului de operare.

7 Care este structura fişierelor executabile .EXE şi .COM ? Având acelaşi nume de fişier, un
executabil .COM se lansează în execuţie înaintea unui executabil .EXE; justificaţi afirmaţia.

8. Cum alocă MS-DOS memorie pentru programe ? Care este mecanismul de apel al unui alt
program ?

9. Ce reprezintă un program TSR ? Să se identifice la PC pe care se lucrează programele TSR.

10. Să se specifice avantajele şi dezavantajele oferite de încărcarea în memorie a programelor TSR.

57
WINDOWS

5.1. Arhitectura mediului windows

Arhitectura mediului Windows a fost proiectată astfel încât să fie asigurată protecţia
taskurilor executate simultan. Protecţia se bazează pe ”ierarhia de tutelă” potrivit căreia un task
poate să acceseze numai taskurile situate pe un nivel superior (fig. 5.1.)

3
2 1
0

Fig. 5.1. Nivelurile ierarhiei de tutelă

Nivelul 0 este asociat sistemului de operare, iar nivelul 3, programelor de aplicaţie;


nivelurile 1 şi 2 conţin drivere de echipamente neincluse în nivelurile 0 sau 5.
Acest mod de aşezare a taskurilor asigură faptul că orice încercare de acces neautorizat, va
genera o excepţie care va lansa rutina de violare a inelului de protecţie.
Windows 95 şi Windows NT 4.0 spre deosebire de versiunile precedente, utilizează
modelul de memorie nediferenţiat. Modelul este suportat pe PC-urile AT386 sau superioare. Prin
aceasta nu se elimină mecanismul de segmentare, însă sistemul de operare ignoră această
capacitate.
În cazul memoriei segmentate, procesorul menţinea controlul prin intermediul tabelei de
selectori, un selector adresând un segment de 64 K. Adresa liniară se determina prin însumarea
adresei de bază din tabela de descriptori accesată de selector, cu deplasarea (ambele pe 32 de
biţi) – fig. 5.2.
În modul de adresare nediferenţiat, fiecare registru conţine o adresă pe 32 de biţi divizată
în trei câmpuri, fiecărui câmp corespunzându-i un anumit nivel de protecţie (fig. 5.3.):
1) localizarea tabelei de pagini, care solicită volumul total de memorie necesar; numărul
de pagini din tabel corespunde cu numărul de pagini de 4 K alocate aplicaţiei (o aplicaţie ce
solicită 100 K de RAM, are 25 de intrări);
2) localizarea paginii în tabela de pagini;
3) localizarea oricărui byte din pagina de 4 K, prin adunarea deplasării (off set) - biţii 0-11.

58
Sisteme operaţionale

15 0
31 0 31 0
CS
Selector de 16 biţi DS
(conţine o intrare SS Deplasare (o locaţie din
în tabela de ES interiorul unui segment)
descriptori) FS
GS

Tabela de descriptori

31 0

Descriptor de segment (adresa de


bază a unei zone de memorie de 64 K) +

Adresa liniară
Fig. 5.2. Adresarea în modul protejat pe 32 de biţi

5.1.1. Arhitectura de bază


Arhitectura de bază şi componentele mediului Windows sunt redate în fig. 5.4.
Sistemul VM ( Virtual Mode )
Sistemul VM furnizează majoritatea funcţiilor destinate utilizatorului; este alcătuit din
următoarele componente :

31 22 21 12 11 0
Pointer în catalogul Pointer într-o tabelă de Deplasare de pagină
tabelelor de pagini pagini

Intrare în catalog
Intrare într-o Adresă fizică
tabele pagină
tabelă de pagini

Catalog tabele de pagini


Tabelă de pagini Cadru de pagină

Fig. 5.3. Modul de adresare nediferenţial

59
Capitolul 5 - Windows
• aplicaţii Windows pe 32 de biţi care pot fi executate în multitasking preemptiv utilizând
modelul de adresare nediferenţiată a memoriei (prin acest mod de adresare, se reduce
semnificativ timpul de acces la memorie ); fiecare task primeşte câte o parte egală din interfaţa
Shell alcătuită din Windows Explorer;
• aplicaţii pe 16 biţi care sunt executate de Windows într-un spaţiu de adrese comun ca un
singur task, utilizând astfel un multitasking cooperativ, nepreemptiv.
Windows constă dintr-o combinaţie de aplicaţii pe 16 biţi şi 32 de biţi; pentru a permite
comunicaţia între cele două categorii de aplicaţii, Windows foloseşte un strat de conversie (thunk
layer), constituind o stivă aferentă sensului de comunicaţie ( fig. 5.5 ). Alături de stratul de
conversie, asemănător altor sisteme de operare ce execută multitasking (OS/2,UNIX), Windows
foloseşte pentru realizarea legăturii între aplicaţii fişiere DLL (Dynamic Link Library).
Există două forme de legare ( linking ) sub Windows (sau OS/2 sau UNIX). Prima
legătură combină toate modulele obiecte necesare pentru a crea o aplicaţie unică; legarea are loc
după ce programatorul termină de copiat codul. Al doilea ciclu de legare are loc atunci când
utilizatorul trece la încărcarea aplicaţiei .Aici este momentul în care intervine DLL. Fiecare
aplicaţie Windows are referinţe nerezolvate la funcţii (numite apeluri de biblioteci de import).
Aceste apeluri încarcă un fişier DLL care conţine codul necesar pentru. a satisface acel apel de
funcţie .

Sistemul VM
(Virtual Mode) Maşină virtuală
DOS
Aplicaţii Interfaţa Aplicaţii
Win. 32 biţi Shell pe 16 biţi Calculator
virtual
Spaţiu de adresare Spaţiu comun de adresare MS-DOS
Multitasking controlat utilizat partajat
(preemptiv) Multitasking cooperativ

API
Interfaţa cu componente Interfaţa
Kernel hardware utilizator
KRNL 386.EXE (GDI.EXE, GDI USER.EXE,
KERNEL.DLL 32.DLL) USER 32.DLL

Nivelul 3 de protecţie - aplicaţii

Nivelul 1, 2 – drivere de echipamente neincluse

Sistemul de bază
(1) – Controlul fişierelor pe HD, FD, CD-ROM, reţele şi alte dispozitive
(2) – Servicii de reţea: securitate comunicaţii
(3) – Servicii pentru sistemul de operare: conectare, funcţionare
(4) – Controlul maşinii virtuale: control memorie, servicii V×D, încărcător dinamic,
gestiune maşină virtuală DOS, server DPMI
(5) – Drivere pentru echipamente: interfaţă dintre Windows şi echipamentele
conectate la PC
Nivel 0 de protecţie – servicii sisteme de operare
Fig. 5.4. arhitectura şi componentele mediului Windows

60
Sisteme operaţionale
Dacă fişierul DLL se află în memorie atunci când este apelat, Windows decrementează
nivelul de utilizare; când controlul de utilizare ajunge la 0, Windows poate să-l descarce din
memorie. Utilizarea fişierelor DLL poate duce la salvarea unei cantităţi destul de mari de
memorie atunci când se încarcă aplicaţii multiple .
Maşina virtuală DOS
Fiecare maşină virtuală dispune de propriul său spaţiu de memorie şi acces la
echipamentele de sistem, Windows creând impresia că este singura aplicaţie care se execută pe
sistem (cerinţă MS-DOS).
O maşină virtuală DOS rulează în mod 86 virtual creând în memoria protejată mai multe
maşini 8086 a câte 1 M fiecare. Unele aplicaţii DOS utilizează extensii compatibile DPMI care le
permit rularea în mod protejat .

Aplicaţii
Windows

Kermel Interfaţa Interfaţă Apeluri mixte


de grafică utilizator 16 – 32 biţi 32 biţi

Strat de conversie

Subsistem Tratarte funcţii specializate Fişiere executabile


Windows pe 16 biţi 32 biţi 16 biţi

Shell Kernel Interfaţa Interfaţă


de grafică utilizator

Cod sistem (primitive)


VMM V×D

Fig. 5.5. Interacţiunea aplicaţiilor pe 16 şi 32 de biţi

API (Application Programming Interface )


Fiecare aplicaţie Windows capătă acces la sistemul de operare utilizând o interfaţă API.
În esenţă, un apel API face acelaşi lucru ca orice întrerupere: cere sistemului de operare să
execute un task.
Codul pentru API apare în fişierele de sistem (cum este şi cazul sistemului de operare
MS-DOS, al cărui cod este scris în mod real); în Windows, codul API beneficiază de
caracteristica de revenire (reentranţăt) ceea ce îi permite să proceseze simultan mai multe apeluri.

61
Capitolul 5 - Windows
Sistemul Windows utilizează efectiv două API- una pe 16 biţi şi una pe 32 de biţi.
Indiferent ce API utilizează, orice aplicaţie va adresa trei componente de bază: versiunile
pe 16 biţi ale acestor fişiere sunt GDI.EXE, USER.EXE şi KRNL 386.EXE, iar versiunile pe 32
de biţi sunt GDI32.DLL,USER32.DLL şi KERNEL32.DLL:
 Kernel - nucleul Windows (KERNEL386.EXE sau KERNEL32.DLL) furnizează suport
pentru funcţiile de nivel jos de care are nevoie o aplicaţie pentru a rula.
Aceastăăcomponentă nu tratează nici cu mediul şi nici cu echipamentele; ea
interacţionează numai cu Windows însuşi .
 Graphical Device Interface - mediul echipamentelor grafice (GDI.EXE sau
GDI32.DLL).
Ori de câte ori o aplicaţie scrie pe ecran, ea utilizează serviciile GDI. Componenta Windows are
grijă de fonturi, de serviciile de tipărire, de monitor, de administrarea culorilor şi orice alt aspect
artistic al mediului Windows pe care utilizatorii îl pot vedea în timp ce utilizează propria
aplicaţie;
 User - utilizator (USER.EXE sau USER32.DLL).
Windows este bazat în întregime pe ferestre . Are nevoie de un administrator care să urmărească
toate ferestrele create de aplicaţii pentru a afişa diverse tipuri de informaţii. Ori de câte ori o
aplicaţie afişează o pictogramă sau un buton, foloseşte un anumit tip de funcţie inclusă în USER.
Windows se lansează ca o aplicaţie pe 16 biţi pentru a putea implementa standardul Plug
and Play (PNP). Componenta BIOS PNP conţine secţiuni separate pentru modul de lucru real şi
apelurile pe 16 biţi în modul de lucru protejat. Dacă Windows s-ar lansa în modul pe 32 de biţi,
nu ar putea apela componenta BIOS PNP pentru a instala toate componentele fără a fi necesare o
mulţime de acţiuni suplimentare. Configurarea tuturor echipamentelor trebuie să aibă loc înainte
ca Windows să lanseze efectiv interfaţa grafică.
Totuşi, operaţiile pe 16 biţi se termină foarte repede după ce s-a lansat Windows
(programul shell al utilizatorului este o aplicaţie pe 32 de biţi ); de îndată ce nucleul Kernel pe 16
biţi vede apelul pentru shell, lansează o aplicaţie numită VWIN32.386 care încarcă bibliotecile
DLL pe 32 de biţi ce alcătuiesc WIN32 API. O dată ce termină acest task, VWIN32.386 redă
controlul Kernelului pe 16 biţi, care la rândul lui apelează Kernelul pe 32 de biţi. Din acest
moment Windows rulează pe 32 de biţi.
PLUG and PLAY (PNP)
PNP reprezintă lucrul a trei componente de sistem: hardware-ul, componenta BIOS şi
sistemul de operare. El activează lucrurile esenţiale ale sistemului cum ar fi unitatea de disc şi
adaptorul de afişaj. În timpul procesului de iniţiere, sistemul de operare încheie taskul de alocare
a întreruperilor şi a adreselor de porturi ale tuturor componentelor sistemului. El cere
componentei BIOS să furnizeze o listă a alocări anterioare, pentru a nu le mai utiliza încă o dată.
Caracteristici suplimentare oferite de standardul PNP:
 identifică echipamentele instalate
Windows detectează automat toate componentele ataşate la sistem.
 determină necesităţile de resurse ale echipamentelor
Orice echipament instalat pe calculator are nevoie de resurse sub forma ciclurilor procesor,
porturi de intrare / ieşire , canale DMA, memorie şi întreruperi. Windows lucrează cu
componenta BIOS şi echipamentele periferice pentru a veni în întâmpinarea acestor necesităţi
fără nici o intervenţie.
 actualizarea automată a configuraţiei sistemului şi detectarea conflictelor dintre
resurse
Comunicarea dintre echipamentele periferice, BIOS şi sistemul de operare permit mediului
Windows să creeze o configuraţie de sistem fără nici o intervenţie din partea utilizatorului.
Blocurile de configurare din Device Manager (administratorul de echipamente) sunt colorate în
gri deoarece utilizatorul nu mai trebuie să furnizeze această informaţie. Nivelul ridicat al
comunicării permite mediului Windows să sondeze dispozitivele periferice pentru porturi

62
Sisteme operaţionale
alternative şi parametri de întreruperi, atunci când are loc un conflict cu un alt echipament
instalat.
 încărcarea şi descărcarea unui driver de echipament
Fişierele CONFIG.SYS şi AUTOEXEC.BAT conţineau linie după linie, instrucţiuni de lansare a
programelor driver de echipamente şi TSR; Windows poate menţine sau chiar să îmbunătăţească
performanţele unui sistem PNP fără a utiliza un fişier CONFIG.SYS sau AUTOEXEC.BAT.
Compatibilitatea PNP oferă posibilitatea Windows-ului să încarce şi să descarce dinamic orice
echipament de care are nevoie sistemul.
 notificarea schimbării configurării
PNP ar putea modifica configurarea sistemului automat, doar atunci când se modifică eventual
configuraţia sistemului; Windows anunţă acest lucru, afişând o casetă de dialog în care spune ce
s-a modificat.
Sistemul de bază
Sistemul de bază conţine toate serviciile sistemului de operare :
a) controlul fişierelor – oferă o interfaţă pentru toate echipamentele conectate la PC;
b) servicii de reţea – oferă facilităţi de lucru în reţeaua Microsoft şi lucrul în mod
protejat pentru majoritatea produselor LAN;
c) servicii de sistem de operare care includ caracteristicile PNP, solicitări ale
utilizatorului şi ale sistemului de operare;
d) gestiunea maşinii virtuale se ocupă de :
 programarea execuţiei taskurilor;
 lansarea în execuţie şi oprirea oricărei aplicaţii din sistem;
 controlul memoriei virtuale prin intermediul interfeţei API;
 controlul tuturor operaţiilor de alocare a memoriei, inclusiv acţionarea ca un server
DPMI (interfaţa pentru modul protejat DOS) pentru aplicaţii MS DOS care rulează
în mod protejat;
 comunicaţia dintre taskuri care filtrează toate cererile pentru DDE (Data Dynamic
Exchange) şi OLE (Object Linking and Embeding);
e) drivere pentru dispozitive care lucrează în:
 modul real, ceea ce implică o comutare permanentă între modul real şi cel protejat;
 VxD ( Virtual x Driver ) care va comunica cu sistemul fără comutarea în modul
real.
Fişierele de sistem VxD (Virtual x Driver)
Odată cu Windows 95, s-a eliminat adresarea în mod real prin includerea funcţiilor
sistemului de operare într-o arhitectură pe 32 de biţi, utilizând tehnica adresării în mod
protejat VFAT (Virtual File Allocation Table), tehnică ce reduce căderile de sistem şi timpul de
acces la disc (fig. 5.6.):

Windows mod protejat


int 21 h

IFS VFAT IFS Controller Unitate de disc

Aplicaţie BIOS DOS


int 21 h int 13 h
DOS mod real

Fig. 5.6. Tehnica VFAT

63
Capitolul 5 - Windows

Fişierele de sistem Windows sunt organizate în 32 de straturi (layers):


- stratul O este cel mai apropiat de sistemul de intrare / ieşire;
- stratul 31 este cel mai apropiat de hardware.

Fiecare strat oferă posibilitatea de a adăuga fişiere de sistem şi echipamente specifice.


IFS (Installable File System) – programul de gestiune a fişierelor de sistem instalabile, este
stratul superior al fişierelor de sistem. IFS este VxD care asigură interfaţa pentru aplicaţii,
recepţionând solicitările aplicaţiei şi transferând controlul către driverul corespunzător
din fişierele de sistem.
FSD (File System Driver) – driverul fişierelor de sistem, strat ce conţine ca principală
componentă VFAT. FSD – VFAT este un VxD care gestionează toate solicitările
referitoare la unităţile de HD locale.
IOS ( Input Output System) – sistemul de intrare / ieşire este stratul superior destinat
echipamentelor ce realizează transferul pe blocuri (un bloc = 512 bytes), unitatea
organizând blocurile de date în multiplii de 512 bytes; unităţile sunt HD, CD – ROM,
reţea, DSS. Stratul asigură servicii de echipament pentru driverele FSD ca :
- direcţionarea cererilor de la FSD la diverse drivere de dispozitive periferice de intrare
/ieşire;
- recepţionarea informaţiilor de stare de la driverele echipamentelor periferice.
VTD (Volume Tracking Driver) – driverul de evidenţă a volumului, monitorizează starea
unităţilor de memorie externă amovibile şi raportează schimbarea suportului (FD, CD-
ROM)
TSD (Type Specific Driver) – driverul unui tip de dispozitiv: HD, FD, unitate de reţea
VSD (Vendor Supplied Driver) – driver furnizat de producător pentru o unitate nestandard de
CD-ROM, FD optic, ş.a.
PD (Port Driver) – driver pentru comunicarea cu dispozitivul prin intermediul adaptorului
(exemplu PD pentru IDE)
SCSI – limbaj de comand pentru interfaţa SCSI
SCSI Manager – traduce comenzile într-un format recunoscut de driverul de miniport
Miniport Driver – driver de dispozitiv ce recunoaşte utilizarea dispozitivelor SCSI
PMM (Protected Mode Mapper) – configuratorul modului protejat permite utilizarea driverelor
MS-DOS sub Windows 95, făcând un driver în mod real să lucreze aparent în mod protejat.
RMD (Real Mode Driver) – driver de mod real utilizat pentru dispozitive mai vechi.

5.1.2. Arhitectura Windows 98

Arhitectura de bază din Windows 98 oferă numeroase avantaje pentru utilizator :


 sistem de operare pe 32 de biţi în modul protejat, complet integrat – dispare astfel
necesitatea unui exemplar MS – DOS separat ;
 sistem multitasking controlat şi multifir – aceste caracteristici asigura reacţia
corespunzătoare a sistemului şi procesarea în fundal;
 sistem de fişiere instalabile pe 32 de biţi – sisteme cum ar fi VFAT, sistemul de
fişiere pentru CD-ROM (CFS), FAT32 şi redirectoare de reţea, asigură performanţe
superioare, posibilitatea utilizării denumirilor lungi de fişiere şi o arhitectură
deschisă care permite evoluţii viitoare ;
 drivere de dispozitiv pe 32 de biţi disponibile în întregul sistem care asigura
performanţe superioare şi utilizarea eficientă a memoriei;
 nucleu integral pe 32 de biţi cuprinde componente de gestionare a memoriei,
secvenţiator şi componente de gestionare a proceselor;
 soliditate a sistemului şi facilităţi de eliberare a memoriei ceea ce eliberează
memoria la terminarea sau blocarea aplicaţiilor;

64
Sisteme operaţionale
 configurare dinamică a mediului astfel că necesitatea intervenţiei utilizatorului
pentru a-şi configura calculatorul este redusă;
 capacitate superioară a sistemului face ca limitele de acces la resursele sistemului în
cazul rulării simultane a mai multor aplicaţii să fie mai flexibile.

Sarcina sistemului de operare este de a furniza servicii pentru aplicaţiile aflate în


derulare, iar într-un mediu multitasking, de a asigura facilităţi care să permită rularea simultană a
mai multor aplicaţii.
Windows 98 nu are nevoie de fişiere separate CONFIG.SYS sau AUTOEXEC.BAT, în
schimb foloseşte driverele şi parametrii necesari, încărcând automat fişierele driverului adecvat
sau stabilind configuraţia corespunzătoare în timpul procesului de iniţializare.

Windows 98 oferă următoarele servicii de sistem:


 gestionarea proceselor şi firelor de execuţie;
 comunicaţii şi sincronizare între procese;
 subsistem Win32 complet controlat;
 servicii I/O pentru CD-ROM şi hard disc;
 servicii I/O de reţea;
 servicii de tipărire;
 operaţii grafice de nivel înalt;
 gestionarea ferestrelor.

Pentru a răspunde cerinţelor de compatibilitate cu aplicaţiile şi driverele existente, de


micşorare a dimensiunii setului de lucru al sistemului de operare şi îmbunătăţire a performanţelor
sistemului, Windows 98 foloseşte o combinaţie de cod pe 32 de biţi şi pe 16 biţi. În general,
codul pe 32 de biţi este folosit în Windows 98 pentru a îmbunătăţi performanţele sistemului, în
timp ce codul pe 16 biţi răspunde cerinţelor de reducere a dimensiunii sistemului şi de menţinere
a compatibilităţii cu aplicaţiile şi driverele existente (fig. 5.7.).
Driverele de dispozitiv virtual din Windows 98 preiau funcţionalităţile unor drivere de
dispozitiv în modul real sub MS-DOS, eliminând necesitatea încărcării lor MS-DOS. Această
tehnică asigură o amprentă minimă în memoria convenţională, performanţe ridicate, precum şi
fiabilitatea respectiv stabilitatea sistemului.
Windows 98 asigură compatibilitatea cu magistralele USB, cu interfeţele pentru
controllerele-gazdă Universal şi Open şi cu dispozitivele USB pentru intrări de la utilizator.
Arhitectura integrată a sistemului de operare Windows 98 permite rularea de aplicaţii sub
MS-DOS, Win16 şi Win32. Componentele sistemului sunt împărţite între nivelul 0 şi nivelul 3,
realizând diferite niveluri de protecţie ( fig. 5.8.)
Nivelul 3 este protejat de alte procese în derulare, prin serviciile asigurate de arhitectura
procesorului Intel. Nivelul 0 este format din serviciile de nivel scăzut ale sistemului de operare
cum ar fi gestionarea sistemului de fişiere şi a componentelor virtuale.
Aplicaţiile sub Win16 folosesc facilităţile de multitasking controlat ale altor componente,
inclusiv subsistemele pe 32 de biţi pentru tipărire şi comunicaţii şi beneficiază de soliditatea şi de
protecţia oferită de nucleul sistemului Windows 98.
Facilităţile pentru aplicaţiile, driverele de dispozitiv şi programele TSR sub MS-DOS sunt
preluate şi în sistemul de operare Windows 98. Funcţiile asigurate într-un sistem virtual MS-
DOS sunt cele din ultima versiune a acestui sistem de operare, permiţând utilizatorilor s
lanseze aceleaşi comenzi şi programe utilitare.
În Windows 98, aplicaţiile sub Win32 prezintă următoarele avantaje faţ de aplicaţiile sub
Win16: multitasking controlat, şiruri separate de mesaje, spaţiu de adres plat, compatibilitate
cu Windows NT, acceptarea denumirilor lungi de fişiere, protejarea memoriei, soliditate
superioară.

65
Capitolul 5 - Windows

partea pe 32 biţi partea pe 16 biţi

USER 16
Serviciile de gestionare a
USER 32 Stratul de conversie ferestrelor şi meniurilor existente
în Windows 5.1., plus câteva
facilităţi noi (modelul cu intrări
asincronice, noi stiluri etc.)

GDI 32 GDI 16
Sistem raster pentru Sistemul de gestionare a
fonturi True Type, graficii existent în
subsistem pentru tipărire, Windows 5.1., plus noul
spooler, mecanism sistem Bezier, căi, EMF
universal de grafică etc.
(Dib Engine)

Keme 132
Servicii pentru fire de execuţie,
elemente de sincronizare,
(Sens unic)
gestionarea memoriei, fişiere Keme 116
mapate în memorie, sistem I/O
pentru fişiere, servicii de
depanare, consolă, comunicaţii
etc.

Fig. 5.7. Codul pe 16 şi 32 biţi la Windows 98

Facilităţile din Windows 98 care asigură soliditatea sistemului de operare sunt:

 mai bună reiniţializare locală:


 eliberarea firelor de execuţie ale driverelor de dispozitiv virtual la încheierea
procesului;
 urmărirea stării firelor de execuţie;
 validarea parametrilor driverelor de dispozitiv virtual.

66
Sisteme operaţionale

Nivel 3 (Sistem VM)

Aplicatii Servicii
Win32 de sistem
Aplicatii
Win16 Nivel 3 Nivel 3
Aplicatii kemel (MS-DOS VM) (MS-DOS VM)
Win32 grafica
Aplicatii
Win16
Aplicatii gestionarea
Win32 ferestrelor

Nivel 0
Sistem de fisiere in modul Sistem de gestionare a masinii virtuale:
protejat :VFAT, CDFS, SCSI, Retea Pager, Secventiator, server DPMI

Fig. 5.8. Nivelurile de protecţie la Windows 98

Fiecare aplicaţie sub MS-DOS rulează într-un sistem virtual separat şi este preconfigurată
pentru a executa operaţiile în mod controlat şi a rula în fundal atunci când este activată o altă
aplicaţie.
Fiecare sistem virtual este protejat faţă de alte operaţii derulate în sistem, astfel încât
eventualele erori din aplicaţiile sub Win16 sau sub Win 32 să nu poată bloca o aplicaţie sub MS-
DOS şi reciproc.
Windows 98 asigură protecţia memoriei pentru rularea aplicaţiilor sub MS-DOS,
împiedicând aplicaţiile să suprascrie zona de sistem MS-DOS în modul real.
La închiderea unui sistem virtual sub Windows 98 – fie prin procedura normală când
utilizatorul părăseşte aplicaţia sau solicită o reiniţializare locală, fie accidental când se blochează
aplicaţia, sunt eliberate toate resursele alocate sistemului virtual.
Windows 98 asigură facilităţi pentru aplicaţiile sub Win16 şi compatibilitatea cu aplicaţiile
sub Windows existente, menţinând solicitările de memorie la un nivel redus.
Aplicaţiile sub Win 32 beneficiază şi de sistemul de multitasking controlat, de un spaţiu de
adresă liniar (nu segmentat) şi de un set API cu numeroase facilităţi.
Aplicaţiile sub Win32 folosesc şiruri separate de mesaje pentru a asigura soliditatea
sistemului.
Sistemul preia mesajele din şirul de intrare şi le transmite aplicaţiei corespunzătoare sub
Win32 sau sub sistemului Win16, în cazul în care mesajul este destinat unei aplicaţii sub Win16
(fig. 5.9.).
Dacă o aplicaţie sub Win32 se blochează şi numai acceptă sau nu mai prelucrează mesajele
primite, celelalte aplicaţii sub Win16 şi Win32 aflate în derulare nu vor fi afectate.
Dacă o aplicaţie sub Win32 se închide sau dacă utilizatorul solicită o reiniţializare locală
pentru o astfel de aplicaţie, şirurile de mesaje separate contribuie la soliditatea sistemului de
operare, simplificând procesul de eliberare a resurselor folosite de aplicaţie.
De asemenea, ele asigură o fiabilitate şi o capacitate mai mare de refacere în cazul blocării
unei aplicaţii.

67
Capitolul 5 - Windows

Intreruperi determinate
de mouse

Unitate de Intrari brute


prelucrare a Mesaje pentru fire
intreruperilor de executie
Intreruperi determinate
de tastatura

Sir de Sir de Sir de Sir de


mesaje mesaje mesaje mesaje
Subsistemul
Win 16 Aplicatie Aplicatie Aplicatie
sub Win 32 sub Win 32 sub Win 32
Aplicatii
sub
Win 16 Aplicatii
sub
Win 16

Fig. 5.9. Distribuirea mesajelor pe 16 şi 32 de biţi

5.2. Noi caracteristici la Windows 98

Noile caracteristici ale sistemului de operare Windows 98 pot fi clasificate în:


 platforma pentru inovaţii;
 simplitate, viteză şi putere;
 fiabilitate şi posibilităţi de administrare superioare;
 integrare Internet.

Platformele pentru inovaţii includ îmbunătăţirile hardware şi software pentru Windows 98.

Win32 Driver Model (WDM) este un nou model de driver universal pentru Windows 98 şi
Microsoft Windows NT 5.0 şi permite ca noile dispozitive să aibă un singur driver pentru ambele
sisteme de operare.

FAT32, versiunea îmbunătăţită a sistemului de fişiere FAT (tabela de alocare a fişierelor)


permite formarea discurilor de peste 2 G ca o singură unitate.
Pentru mai multă flexibilitate, Windows 98 conţine şi un utilitar de conversie grafica

FAT32, care poate converti rapid şi sigur o unitate de disc de la versiunea FAT iniţială, la
FAT32.
Windows 98 include suport pentru interfaţa de configurare avansată şi de gestionare a
consumului (Advanced Configuration and Power Interface-ACPI). În afară de facilitatea ACPI,

68
Sisteme operaţionale
Windows 98 oferă suport pentru extensiile Advanced Power Management (APM) 1.2, inclusiv
pentru oprirea hard discului, pentru interfaţa PCMCIA, pentru dezactivarea modemului şi
reluarea funcţionării în cazul apelului telefonic.

Cu interfaţa integrată pentru Internet din Windows 98, accesul la Internet devine o parte
integrantă a interfeţei cu utilizatorul.
Windows 98 permite executarea unui set de comenzi (script) direct prin interfaţa cu
utilizatorul sau din linia de comandă. Suportul pentru această funcţionalitate este oferit prin
intermediul aplicaţiei Windows Scripting Host (WSH) şi permite administratorilor şi
utilizatorilor, să economisească timp prin executarea automată a numeroaselor acţiuni de la
nivelul interfeţei, cum ar fi crearea unei comenzi rapide, conectarea sau deconectarea la un server
de reţea. WSH este o aplicaţie extrem de flexibilă, incluzând suport pentru scripturi Microsoft
Visual Basic sau Java şi o arhitectură independentă de limbaj.
Îmbunătăţirile aduse parametrilor de afişare oferă posibilitatea schimbării dinamice a
rezoluţiei ecranului şi a profunzimii culorilor.
Aplicaţia Internet Connection Wizard (ICW) pune la dispoziţia utilizatorilor sistemului
de operare Windows 98, toate elementele funcţionale necesare pentru conectarea rapidă şi simplă
la Internet.
Noul mecanism Microsoft Intellimouse le permite utilizatorilor să se concentreze mai
mult asupra documentului sau a foii de calcul, decât asupra mutării mouse-ului pe pictograme
sau barele de derulare, pentru a se deplasa în cadrul programului.
Aplicaţia Dial-Up Networking inclusă în Windows 98 a fost actualizată pentru a fi
compatibilă cu Dial-Up Scripting, prin care poate fi automatizată operaţia de conectare la
sistemul de buletine informatice (BBS) şi la alte servicii on-line.
Noua aplicaţie Disc Defragmenter Optimization Wizard foloseşte procesul de

defragmentare a discului pentru a mări viteza de rulare a aplicaţiilor utilizate frecvent. În acest
scop, aplicaţia Wizard creează un fişier jurnal (log), cu ajutorul căruia identifică programele
folosite cel mai des. Prin plasarea tuturor fişierelor unei aplicaţii în aceeaşi zonă de pe hard disc,
se va îmbunătăţi viteza de rulare a aplicaţiei respective.
Aplicaţia Windows Tune Up Wizard permite planificarea unei zile şi a unei ore în
fiecare săptămână, în care calculatorul să efectueze singur o operaţie de "curăţare", adică să
şteargă fişierele inutile şi să efectueze defragmentarea discului pentru aplicaţiile folosite
frecvent, astfel încât acestea să ruleze cât mai rapid.
Windows 98 este compatibil cu standardul Infrared Data Association (IrDA) pentru
conectare fără fir. Suportul pentru IrDA le permite utilizatorilor sistemului de operare Windows
98, să se conecteze cu uşurinţă la dispozitivele periferice sau la alte calculatoare, fără a folosi
cabluri de conectare. Acest set de drivere asigură calculatoarelor portabile (laptop) sau de birou
(desktop) dotate cu echipament pentru conectare prin radiaţii infraroşii, posibilitatea de lucru în
reţea, de transfer de fişiere şi de tipărire fără fir, prin intermediul altor dispozitive compatibile
IrDA care lucrează pe bază de radiaţii infraroşii.
Point-to-point Tunneling Protocol (PPTP) oferă posibilitatea de a utiliza reţele de date
publice, cum este Internet, pentru a crea reţele virtuale private prin conectarea unor calculatoare-
client cu serverele de reţea. PPTP furnizează un sistem de încapsulare a protocolului în scopul
folosirii protocoalelor multiple prin intermediul legăturilor TCP/IP şi criptării datelor pentru
garantarea confidenţialităţii, transmiterea de informaţii prin reţele neprotejate devenind în acest
fel mai sigură.

69
Capitolul 5 - Windows
Windows 98 conţine toate componentele necesare pentru a permite utilizarea
calculatorului ca server accesibil de la distanţă. Clienţii se vor putea conecta prin linia telefonică
la un calculator cu Windows 98 pentru accesul la resurse locale ori la o reţea IPX/SPX sau
NetBEUI.

ActiveMovie este o nouă arhitectură multimedia pentru Windows, prin care se obţine o
redare video de o calitate ridicată şi un set extensibil de interfeţe cu ajutorul cărora se poate crea
aplicaţii şi instrumente media.

Windows 98 oferă suport pentru programele realizate de alte firme care folosesc
extensiile Intel Pentium Multimedia Extensions (MMX) pentru a beneficia de facilităţile audio şi
video ale noii generaţii de procesoare Intel Pentium.
Windows 98 oferă servicii client pentru reţele NetWare care sunt compatibile cu Novell
NetWare Directory Services (NDS). Aceste servicii le permit utilizatorilor mediului Windows 98
să se conecteze la servere Novell NetWare 4.x rulând NDS pentru a obţine accesul la fişiere şi la
resurse de tipărire.
Aplicaţia Internet System Update este un nou serviciu bazat pe Web care scanează
calculatorul pentru a afla componentele hardware şi software instalate, iar apoi compara aceste
informaţii cu cele dintr-o bază de date actualizată, pentru a stabili dacă există drivere sau fişiere
de sistem mai noi. În cazul în care găseşte drivere sau fişiere de sistem mai recente, acest
serviciu poate să le instaleze în mod automat. Există chiar şi o funcţie de anulare (rollback), care
poate elimina driverul instalat automat de Internet System Update.
System File Checker este un nou utilitar care furnizează o modalitate simplă de a
verifica dacă fişierele de sistem din Windows 98 nu au fost modificate sau alterate. El include şi
un mecanism simplu pentru refacerea versiunilor originale ale fişierelor de sistem, în cazul în
care acestea au fost modificate.
Utilitarul Microsoft System Information colectează informaţii despre starea
componentelor unui calculator. Informaţiile colectate se pot referi la hardware sau software, la
driverele de dispozitiv sau la resursele utilizate în mod curent. Ele pot fi extrem de valoroase
pentru identificarea, detectarea şi rezolvarea problemelor legate de hardware, de software sau de
configuraţie.
Windows 98 conţine şi o versiune îmbunătăţită a utilizatorului Dr. Watson. Dacă este
activat, atunci când intervine o defecţiune generată de program (eroare de protecţie, blocare sau
altă întrerupere), Dr. Watson o interceptează şi indică programul care a cauzat-o şi motivul. În
plus, Dr. Watson colectează informaţii detaliate despre starea sistemului în momentul apariţiei
defecţiunii. Acestea sunt înregistrate pe disc şi pot fi afişate pe ecran pentru a ajuta
administratorul sau personalul care acordă asistenţă pentru produsul respectiv să determine cauza
defecţiunii.
În Windows 98 a fost introdusă o funcţie pentru rularea automată a aplicaţiei ScanDisk
în situaţia în care sistemul de operare este închis într-un mod incorect sau dacă hard discul
generează o eroare. Această facilitate îl va ajuta pe utilizator să se asigure că unităţile de hard
disc funcţionează corect şi nu au clusteri lipsă, fişiere suprapuse sau alte defecţiuni.
Includerea programului Microsoft Internet Explorer 4.0 în Windows 98 oferă cel mai
simplu, mai rapid şi mai recreativ mod de navigare prin Web.

70
Sisteme operaţionale

Windows 98 conţine o gamă largă de instrumente pentru comunicarea on-line:


- Microsoft Outlook Expres, o aplicaţie client cu toate facilităţile pentru e-mail şi citirea
mesajelor
- Microsoft NetMeeting, o soluţie completă pentru conferinţe în Internet care oferă
funcţionalităţi bazate pe standarde audio, de date şi video
- Microsoft NetShow, care permite urmărirea transmiterii radio /TV în direct sau
înregistrate, fără aşteptare pentru încărcare sau reducerea performanţelor reţelei
- Microsoft FrontPad, un editor HTML de tip WYSING (what you see is what you get)
bazat pe versiunea completă a programului Microsoft FrontPage97, care oferă facilităţi de editare
HTML, ce permit chiar şi utilizatorilor începători să creeze cu uşurinţă pagini Web
- Personal Web Server care furnizează o modalitate simplă de publicare a paginilor Web în
reţele locale sau în Internet.

5.2.1. Interfaţa Windows 98


Indiferent de suprafaţa de lucru folosită (cea standard din Windows sau Active Desktop),
Windows 98 conţine versiuni îmbunătăţite ale instrumentelor prezentate pe suprafaţa de lucru în
Windows 95, mai exact bara de taskuri şi meniul Start.

Fig. 5.10. Interfaţa grafică Windows 98


Windows 98 îşi propune să introducă în Windows 95 facilităţi pentru Internet, fără ca
acesta să necesite o nouă instruire a utilizatorului. În acest scop, My Computer, Network
Neighborhood, meniul Start şi alte elemente ale interfeţei cu utilizatorul s-au îmbogăţit cu
elemente Web. În loc să afişeze funcţii suplimentare în fruntea sistemului de operare şi să

71
Capitolul 5 - Windows
modifice interfaţa cu utilizatorul, Windows 98 oferă o metodă unică, mai simplă, pentru accesul
la informaţii indiferent dacă acestea sunt stocate în calculator, în reţeaua locală (LAN) sau în
Internet.
Windows 98 introduce elemente de conectare la Web prin îmbunătăţirile aduse meniului
Start şi barei de taskuri.
Principalele funcţionalităţi adăugate meniului Start şi barei de taskuri sunt:
- meniul Start execută taskuri Web – în meniul Start apar noi comenzi pentru Favorites
şi o nouă comandă Find, numită On The Internet, care ajută la găsirea siteurilor
vizitate frecvent.
- personalizarea meniului Start – acum se poate personaliza meniul Favorites, întregul
meniu Programs şi chiar partea superioară a meniului Start, prin manevre de tragere şi
plasare cu mouse-ul
- posibilităţi de extindere a barei de taskuri – bara de taskuri a devenit deschisă şi
expandabilă, cu o bară de adrese prestabilite pentru introducerea adreselor Web.

Butonul Start din Windows 98 este mult mai mult decât un simplu lansator de programe.
Meniul Programs derulat din butonul Start permite lansarea programelor la fel de rapid ca şi până
acum, precum şi modificarea ordinii în care sunt afişate programele şi grupurile de programe.

72
Sisteme operaţionale
Meniul Favorites afişează site-urile favorite din Internet şi alte dosare sau fişiere pe care
utilizatorul le deschide în mod frecvent.
Meniul Documents afişat de butonul Start conţine o listă cu ultimele 15 documente
deschise. Acest meniu oferă acces rapid la informaţiile cu care s-a lucrat recent, evitând căutările
care necesită timp şi răbdare.
Meniul Settings afişat de butonul Start prezintă noua comandă Settings Wizard, alături de
comenzile Control Panel şi Printers din Windows 95.
Comanda Find din meniul Start al mediului Windows 98 conţine două elemente noi:
comenzile “On The Internet” şi “People”, alături de comenzile: ”Files Or Folders” şi “Computer”
care existau în Windows 95.
Caseta de dialog Find pentru fişiere şi dosare conţine următoarele opţiuni pentru căutare:
- căutări pe baza denumirilor parţiale
- căutări pe baza ultimei modificări
- căutări pe baza unui text
- salvarea rezultatelor căutării
- gestionarea fişierelor în panoul cu rezultatele căutării.
Sistemul de asistenţă a fost revizuit pentru Windows 98 şi este uşor accesibil cu butonul
Start. Interfaţa cu utilizatorul s-a modificat faţă de formatul Help standard, semănând acum cu o
interfaţă pentru Web. Acest nou format conţine legături către sistemele Help existente în
Internet.
Comanda Run lansată de butonul Start oferă posibilităţi superioare de utilizare, de tip
linie de comandă.
Comanda Log Off ajută la schimbarea rapidă a utilizatorului, şi înlocuieşte vechea
opţiune “Close All Programs And Log On As a Different User” existentă în caseta de dialog
Shutdown din Windows 95.

Opţiunea Shutdown oferă un acces simplu şi sigur la comenzile Shut Down, Restart şi
Restart In MS-DOS Mode.

Meniul Start mai include două îmbunătăţiri:


- posibilitatea utilizării tehnicii de tragere şi plasare
- afişarea unui meniu de comenzi rapide
Sarcina barei de taskuri este de a face comutarea între diverse aplicaţii, o operaţie la fel
de simplă ca şi schimbarea canalelor de televizor. Fiecare fereastră deschisă are un buton pe bara
de taskuri. Comutarea între aplicaţii este o operaţie simplă, care constă în executarea unui clic pe
“canalul” corespunzător de pe bara de taskuri.

În Windows 98, în afară de butoanele pentru rularea aplicaţiilor şi pentru deschiderea


dosarelor, bara de taskuri poate conţine mai multe bare cu instrumente. Butoanele barei de
taskuri sunt redimensionate în mod automat, în funcţie de numărul de aplicaţii active.
Windows 98 include o serie de opţiuni pentru lucrul cu barele de instrumente de pe bara
de taskuri:

73
Capitolul 5 - Windows
- crearea unei noi bare cu instrumente
- modificarea aspectului butoanelor din barele cu instrumente
- redimensionarea barelor cu instrumente de pe bara de taskuri
- poziţionarea barelor cu instrumente de pe bara de taskuri
- combinarea barelor cu instrumente provenite de pe bara de taskuri

Cu un singur program Microsoft Explorer, procesul de găsire a unor informaţii este


unificat, astfel încât se pot vizualiza date din calculatorul propriu, din reţea, din intranet şi din
Internet, folosind acelaşi instrument.
Windows Explorer este acum un program puternic, flexibil, eficient şi extensibil. Dintre
cele mai importante caracteristici din Windows Explorer pot fi enumerate:
- afişarea unei multitudini de informaţii într-o singură fereastră
- flexibilitate şi adaptabilitate (se poate opta pentru a vedea conţinutul dosarelor în
mai multe feluri, inclusiv în modurile de afişare Large Icon, Small Icon şi Details)
- o bogăţie de informaţii despre obiecte în modul de afişare Details
Navigarea prin reţea se realizează cu ajutorul aplicaţiei Network Neighborhod, accesibilă
de pe suprafaţa de lucru.

empty full

Fişierele şterse din Windows 98 sau din casetele de dialog obişnuite ale aplicaţiilor de
care aparţin ajung în Recycle Bin, de unde pot fi recuperate. Aplicaţia Recycle Bin indică în mod
grafic dacă este gol coşul de gunoi sau conţine ceva.
Windows 98 are o funcţie “undo” cu mai multe niveluri, care permit anularea a uneia sau
a mai multor acţiuni anterioare (ştergerea, redenumirea, mutarea sau copierea fişierelor).

Sistemul de asistenţă on-line din Windows 98 aduce câteva elemente noi. Fişierele Help
din Windows pot fi scrise acum ca pagini HTML, cu toate atributele controalelor ActiveX, cu
animaţii şi legături. Cele mai importante caracteristici ale sistemului Help din Windows 98 sunt:
- interfaţa tip Web
- eticheta Contents
- etichete Index
- butoanele Hide şi Show
- butonul Print
- butoanele de comenzi rapide
- butonul What’s This ?

74
Sisteme operaţionale

Fig.5.11. Fereastra Control Panel la Windows 98

Fereastra Control Panel (fig.5.11.) concentrează toate comenzile, controalele şi funcţiile


de configurare într-un singur loc. Instrumentul Display din Control Panel controlează
configuraţia interfeţei grafice a mediului Windows 98, permiţând personalizarea acesteia de către
utilizator.
Dosarul Printers oferă posibilitatea selectării rapide a opţiunilor de administrare şi
configurare a imprimantei.
Dosarul Fontts din directorul Windows reprezintă unicul loc unde pot fi instalate sau
manipulate toate fonturile utilizate de sistem. Operaţiile cu fonturi pot fi efectuate în acelaşi mod
ca şi în cazul altor obiecte de tip fişier de sistem.

5.2.2. Facilităţi pentru lucrul în reţea


Windows 98 a fost construit pentru a răspunde cerinţelor administratorilor de reţea din
cadrul firmelor, având o arhitectură de reţea pe 32 de biţi, bine integrată, cu performanţe
superioare.
Windows 98 este orientat şi spre utilizator, astfel că accesul şi controlul reţelei se
desfăşoară coerent, iar căutarea şi tipărirea în reţea sunt operaţii uşor de executat. În plus,
Windows 98 răspunde nevoii de mobilitate a utilizatorului, permiţând accesul la reţea de la
distanţă, prin calculatoare portabile.
Unul dintre obiectivele principale ale sistemului de operare Windows 98 în privinţa
reţelelor este asigurarea compatibilităţii. Compatibilitatea implică atât continuarea asigurării
suportului pentru componentele existente, în modul real, cât şi asigurarea compatibilităţii între
noile componente din Windows 98, pe 32 de biţi, în modul protejat, şi aplicaţiile şi driverele pe
16 biţi sub MS-DOS, precum şi cu aplicaţiile şi bibliotecile DLL pe 16 biţi sub Windows.
Principalele facilităţi pentru reţea din Windows 98 sunt următoarele:
- arhitectură de reţea pe 32 de biţi, robustă, deschisă, de înaltă performanţă, cu
software client pe 32 de biţi pentru reţea, software pe 32 de biţi pentru partajarea
fişierelor şi pentru tipărirea în reţea, protocoale de reţea pe 32 de biţi şi drivere pe 32
de biţi pentru plăcile de reţea;

75
Capitolul 5 - Windows
- posibilitatea de a folosi simultan mai multe redirectoare, mai multe protocoale şi mai
multe drivere pentru plăcile de reţea, care facilitează integrarea suprafeţei de lucru
într-un mediu eterogen de reţea;
- suport pentru conectivitate pe baza standardelor industriale şi soluţii de gestionare a
sistemelor, inclusiv TCP/IP, IPX, SNMP şi DMI;
- integrarea completă cu Novell NetWare, inclusiv software client compatibil
NetWare, pe 32 de biţi, în modul protejat, pentru conectarea la servere NetWare 5.x
şi 4.x şi partajare în mod peer-to-peer în medii NetWare;
- integrare completă cu Microsoft Windows NT Server cu posibilitatea utilizării unei
soluţii client/server puternice;
- facilităţi integrate pentru gestionarea sistemului, inclusiv posibilitatea de
administrare de la distanţă, monitorizare şi urmărire a configuraţiei calculatoarelor
din reţea;
- posibilitate de acces la reţea prin acces telefonic, oferind acces de la distanţă în
servere din reţele Microsoft, Novell NetWare şi UNIX şi suport pentru protocoale de
acces de la distanţă, cum ar fi PPP, PPTP şi SLIP;
- simplitatea conectării şi configurării imprimantelor pentru tipărirea în reţea.

Windows 98 poate să lucreze simultan cu până la 10 clienţi de reţea pe 32 de biţi, în


modul protejat, prin intermediul interfeţei NPI (Network Provider Interface). Aceasta defineşte
un set de interfeţe API, folosite de Windows 98 pentru accesul la reţea şi executarea unor
operaţii cum ar fi deschiderea unei sesiuni de lucru a serverului, căutarea în servere, conectarea
la servere.
Arhitectura de reţea din Windows 98 asigură facilităţi pentru lucrul în reţea şi integrare
de nivel superior. Elementele chieie ale arhitecturii de reţea din Windows 98 sun următoarele
(fig.5.12.):
- drivere rapide pe 32 de biţi pentru dispozitive virtuale (VxD) – componentele de
reţea din Windows 98 sunt incluse ca drivere VxD pe 32 de biţi, cu amprenta zero în
memoria convenţională, şi sunt încărcate dinamic atunci când sunt necesare
sistemului;
- fiabilitate – conflictele din memorie sau încercările de înlănţuire exclusivă a aceluiaşi
set de întreruperi, care conduc de regulă la blocări de sistem sau la mesaje de eroare,
nu apar şi la componentele de reţea în modul protejat, deoarece Windows 98
arbitrează alocarea resurselor hardware;
- design modular, deschis – arhitectura de reţea din Windows 98 este modulară şi
conţine o interfaţă Network Provider Interface, o interfaţă IFS (Installable File
System) şi versiunea 4.1 a specificaţiei NDIS (Network Driver Interface
Specification);
- suport pentru mai multe tipuri de reţele – Windows 98 acceptă diferiţi furnizori de
reţea, diferite redirectoare de reţea, concepute pentru interfeţe IFS şi diferite drivere
NDIS. Windows 98 acceptă utilizarea simultană a mai multor clienţi de reţea pe 32
de biţi în modul protejat şi a unui client de reţea în modul real;
- suport pentru mai multe protocoale – Windows 98 include suport pentru IPX/SPX,
TCP/IP şi NetBEUI;
- Plug and Play – toate componentele de reţea din Windows 98 sunt concepute pentru
autoconfigurare dinamică.

76
Sisteme operaţionale

Interfaţă
de aplicaţie Win 32 Winnet interface Win 32 print APIS

Furnizori de Net Ware Windows


Winnet 16
servicii de reţea NP/PP NP/PP

IFS Manager
Redirectoarele
Windows networking NetWare-compatible
Interfaţa de (SMB) (NCP)
programare a transferurilor
Windows Sockets
Protocol de transfer
NetBIOS
Interfaţa pentru
driverele de dispozitiv NetBEUI IPS/SPX TCP/IP

NDIS 4.1

NDIS 2.0 ODI

Fig. 5.12. Arhitectura de reţea Windows 98

Windows 98 are o interfaţă modulară, deschisă, numită Network Provider Interface


(NPI), care permite instalarea simultană sub Windows 98 a mai multor reţele.
Interfaţa NPI prezintă următoarele avantaje:
-interfaţa deschisă permite producătorilor de software să realizeze programe bine integrate în
Windows pentru serverele lor de reţea
-toate reţelele acceptate sunt accesate şi administrate în mod similar, prin interfaţa cu utilizatorul
Network Neighborhood din Windows 98.

5.2.3. Servicii multimedia

Windows 98 este o platformă multimedia completă, care permite transformarea oricărui


calculator într-un aparat multimedia uşor de utilizat. Arhitectura Plug and Play simplifică
instalarea şi utilizarea dispozitivelor compatibile multimedia, fiind totodată compatibil cu
programele şi instrumentele multimedia create pentru versiunile anterioare de Windows.
Windows 98 permite creatorilor de software recreativ să realizeze repede şi uşor jocuri
distractive, moderne, rapide, cu caracteristici grafice deosebite. Sistemul de operare oferă suport
pentru tehnologii de ultimă oră din domeniul graficii de tip rastru 2-D, al randării tridimensionale
şi al sonorizării digitale, care reprezintă elementele cheie în dezvoltarea jocurilor pe calculator.
Pentru programatori, Windows 98 reprezintă o platformă puternică pentru crearea unor
aplicaţii multimedia profesionale. Arhitectura pe 32 de biţi a mediului Windows 98 exploatează
la maximum posibilităţile oferite de calculatoare în domeniul multimedia, astfel încât
programatorii pot căpăta imagini video şi sunete digitale de o calitate superioară.
Arhitectura multitasking din Windows 98 constituie un mediu de lucru convenabil pentru
creatorii de multimedia. Arhitectura modernizată a subsistemului din Windows 98 pentru fişiere
video şi audio digitale, pentru interfaţa MIDI şi pentru gestionarea fişierelor, le permite autorilor

77
Capitolul 5 - Windows
şi creatorilor de instrumente să realizeze efecte sonore, video şi de animaţie de calitate
profesională.
Tehnologia multimedia din Windows 98 este complet compatibilă cu programele
multimedia pe 16 biţi. Facilităţile Plug and Play din Windows 98 simplifică procesul de instalare
a unui nou dispozitiv multimedia în calculator, inclusiv instalarea dispozitivelor multimedia mai
vechi, prin includerea de instrumente care permit identificarea şi rezolvarea conflictelor între
dispozitivele de tip mai vechi care nu sunt compatibile cu standardul Plug and Play.
Printre îmbunătăţirile tehnologiilor multimedia pot fi amintite facilităţile: AutoPlay,
facilităţile integrate pentru un sistem video digital, precum şi facilităţile integrate pentru sunet şi
fişiere MIDI.
Aplicaţia CD Player în Windows 98 oferă multe din facilităţile unor aparate CD Player
complexe, cum ar fi redarea aleatorie, programarea ordinii de redare şi posibilitatea de salvare a
acestei programări.
Windows 98 cuprinde şi un sistem de fişiere pe 32 de biţi (CDFS) pentru citirea fişierelor
din unitatea de CD-ROM cât mai rapid şi cât mai eficient posibil.
Windows 98 cuprinde un set de interfeţe API pentru aplicaţii grafice, Microsoft Direct
X5. Interfeţele API din pachetul Direct X5 permit accesul la noi funcţionalităţi hardware, cum ar
fi utilizarea mai multor monitoare, a unei magistrale seriale universale pentru jocuri şi
dispozitive audio, soluţii de optimizare MMX, accelerator de sunet 3-D, facilităţi de randare cum
ar fi netezirea şi filtrarea texturilor anizotrope.
În afară de faptul că permite utilizatorilor să asculte compact-discurile muzicale preferate,
Windows 98 este compatibil cu noul format CD Plus, conceput de Sony Corporation şi Philips
International, care permite integrarea pieselor muzicale şi a datelor pe acelaşi CD. Formatul CD
Plus beneficiază de seria de facilităţi integrate în Windows 98 pentru a face domeniul
multimedia mult mai atractiv, inclusiv de facilitatea AutoPlay şi de subsistemele multimedia pe
32 de biţi care permit o redare de înaltă fidelitate.
DirectShow este o nouă arhiectură Windows pentru transmisii în flux care permit redări
video de înaltă calitate, asigurând în acelaşi timp un set extensibil de interfeţe pentru dezvoltarea
aplicaţiilor şi instrumentelor de multimedia.
Facilităţile integrate în Windows 98 pentru MIDI fac şi platforma Windows o soluţie
viabilă pentru producţiile audio şi pentru controlul echipamentelor.
WinToon este un instrument pentru redarea animărilor sub Windows 98, care permite
crearea unor prezentări multimedia animate, cu afişare pe întreg ecranul, îmbunătăţind calitatea
şi viteza de redare. Programul poate fi încorporat uşor în aplicaţiile multimedia de pe CD-ROM..
Pentru a simplifica problema stocării şi redării secvenţelor sonore din cadrul aplicaţiilor,
Windows 98 include un set de tehnologii pentru comprimarea sunetului. Aceste codecuri pot fi
împărţite în două mari grupe: codecuri pentru muzică (care permit comprimarea unui sunet
apropiat de calitatea CD la circa un sfert din volumul său iniţial ) şi codecuri pentru voce ( care
permit o comprimare extrem de eficientă a datelor referitoare la voce ).
Sistemul multitasking face din Windows 98 o platformă atractivă pentru producţii
multimedia. Crearea unui material multimedia solicită intens Windows 98, creatorii pot păstra
controlul asupra calculatorului, chiar şi atunci când este în desfăşurarea unui proces complicat de
comprimare.
Subsistemele din Windows 98 pentru video digital, audio digital, MIDI şi pentru
gestionarea fişierelor reprezintă o platformă ideală pentru realizarea unor efecte video, audio şi
de animaţie de înaltă calitate. Deoarece în Windows 98 datele pot fi scrise pe disc mult mai
repede, creatorii pot capta secvenţe video de calitate superioară – mai mari, cu mai multe cadre
pe secundă, şi mai colorate.
Windows 98 include facilităţi pentru dispozitive specifice creaţiei multimedia, cum ar fi
discurile laser şi video recordere. Aceste facilităţi simplifică procesul de configurare a sistemului
pentru “capturare secvenţială”, un procedeu prin care creatorul capturează date video digitale
pentru câte un cadru , urmând ca acesta să fie comprimate. Capturarea secvenţială este un proces

78
Sisteme operaţionale
lent, dar reprezintă cea mai buna metodă pentru capturarea unor imagini video digitale de înaltă
calitate.
Windows 98 este compatibil cu dispozitivele DVD, incluzând tipurile audio, video şi de
sistem. Windows 98 include o aplicaţie DVD Player, care poate fi folosită pentru a vizualiza
datele de pe discuri DVD.
Utilizatorii care au o placă NTSC (National Television System Committee) sau PAL
(Phase Alternation Line) instalată în calculator, pot să urmărească programele TV într-o fereastră
de pe suprafaţa de lucru.
Microsoft Windows 98 conţine o aplicaţie numită TV Viewer, care furnizează
software-ul necesar pentru recepţionarea semnalelor TV pe ecranul calculatorului. Semnalele pot
proveni de la un post de emisie TV prin antenă, de la o reţea de televiziune prin cablu sau de la
un satelit de transmisie directă DIRECTIV (DBS – direct broadcast satellite). Pentru a folosi
toate facilităţile oferite de TV Viewer, trebuie ca utilizatorul să fie conectat la DIRECTIV.
Meniul TV poate fi folosi pentru:
 afişarea programului TV;
 subscrierea în vederea urmăririi programelor TV;
 introducerea unor restricţii pentru utilizatorii softului;
 crearea unei liste personale cu canale;
 selectarea rapidă a canalului preferat;
 adăugarea sau eliminarea unor canale;
 solicitarea de asistenţă.
Subscrierea în vederea urmăririi emisiunilor TV este importantă în cazul în care au fost
introduse restricţii pentru utilizarea softului de către unii membrii ai familiei. Dacă s-au stabilit
restricţii şi cineva urmăreşte emisiunile TV fără să subscrie, o face în calitate de invitat.
Un invitat are cele mai restrictive privilegii de vizionare şi nu poate urmări decât
emisiunile accesibile tuturor.
Program Guide reprezintă programul emisiunilor de televiziune şi conţine o grilă în care
toate canalele sunt afişate în partea stângă şi orele de transmisie în partea superioară.
Ghidul TV poate fi parcurs pentru a vedea ce emisiuni sunt transmise sau poate fi căutat
un anumit program executând clic pe Search.
Există posibilitatea de a căuta reluările unor emisiuni şi de a insera signete pentru
programe care îl interesează pe utilizator.
După ce utilizatorul începe să urmărească emisiunile TV pe calculator, i se oferă
posibilitatea de a încărca ghidul TV pentru programe locale.
Ghidul TV afişează emisiunile difuzate la ora curentă a zilei respective, precum şi
emisiunile din ziua următoare sau din altă zi a săptămânii.
Aplicaţia TV Viewer poate afişa o serie de pictograme, care reprezintă modalitatea
grafică de a oferi informaţii rapide, fără a distrage atenţia. De asemenea, are o serie de controale
care pot fi folosite în timpul vizionării.
Ghidul TV oferă o metodă pentru găsirea rapidă a unei anumite emisiuni, fără a derula
toată lista de programe. Se poate căuta o anumita emisiune, o categorie de emisiuni sau un
anumit canal.
După ce TV Viewer afişează rezultatele căutării, acesta pot fi ordonate fie în ordine
alfabetică, după titlul emisiunilor, fie cronologic, după oră şi dată.
Se poate crea o listă personală de canale care conţine canale accesibile fiecărui
telespectator. Înainte de a fi modificată, lista include toate canalele din toate sursele video
disponibile (reţea, cablu sau satelit). Dacă se introduc restricţii pentru vizionarea, lista de canale
va conţine numai canalele accesibile fără restricţii.În bara cu instrumente TV pot fi incluse cinci
dintre canalele preferate pentru a avea acces rapid la ele.
În Program Guide pot fi incluse signete care să semnalizeze următoarele tipuri de
emisiuni: o emisiune specială, o emisiune zilnică, o emisiune din zilele de lucru sau o emisiune

79
Capitolul 5 - Windows
săptămânală. Signetul poate fi stabilit să apară pe ecran cu 5 sau 10 minute înainte de ora de
începere a emisiunii.
Dacă utilizatorul are probleme la rularea aplicaţiei TV Viewer, poate consulta secţiunea
Troubleshooting din sistemul de asistenţă on line.

5.3. Windows 2000

Windows 95/98 şi NT despărţite în ultimii ani, sunt combinate în noul produs universal
Windows 2000, dotat pentru aplicaţii profesionale, multimedia, jocuri cu o mare amprentă asupra
securităţii datelor. Windows este considerat cel puţin începând cu versiunea 98, ca un sistem de
operare destul de stabil. La Windows NT, acest lucru a stat în fruntea priorităţilor dezvoltatorilor,
chiar începând cu versiunea 5.1.
Producătorii au încercat să elimine din Windows 2000, ecranul albastru la declanşarea
unor erori vitale (suprnumit şi Blue Screen of Death) folosind verificarea automată a registrelor,
realizând automat un backup al celor mai importante DLL-uri, afectând domenii strict delimitate
pentru aplicaţiile încărcate şi implementând noile sisteme de fişiere FAT 32 şi NTFS 5.
Din experienţa câştigată cu Windows 95/98 şi NT, una dintre priorităţile din Windows
2000 a fost interzicerea suprascrierii fişierelor de sistem. Aplicaţiile şi driverele de la terţi
producători, îşi vor stoca fişierele de sistem în directori proprii, de unde vor putea fi şterse
ulterior. Microsoft a prevăzut toate fişierele de pe CD-ul Windows 2000 cu o semnătura digitală
pe care o verifică sistemul de operare la instalare. În cazul în care se folosesc drivere
suplimentare care nu deţin aceasta semnătura, va apărea un mesaj de avertisment; se poate
dezactiva verificarea semnăturii fişierelor, sau se poate seta în aşa fel încât Windows să nu
accepte driverele nesemnate. Ideea este de a minimiza pericolul blocărilor ca urmare a driverelor
care nu funcţionează. Aceasta este o problemă majoră în Windows 95/98, unde blocarea
sistemului de operare se datora uneori, driverelor provenite de la diverşi furnizori.
În timp ce Windows NT oferă pentru un start sigur modul VGA şi revenirea la ultima
configuraţie funcţională recunoscută, în Windows 2000 există un meniu de boot extins care apare
la start după ce se apasă tasta F8. Aceasta constă în principal din aceleaşi înregistrări ca şi în
meniul din Windows 95/98:
 Safe Mode (încarcă Windows cu o configuraţie minimală a driverelor);
 Safe Mode cu drivere de reţea (încarcă în plus suportul de reţea pentru Windows 2000);
 Safe Mode cu solicitare de introducere a datelor (porneşte Windows 2000 cu o
configuraţie minimală a driverelor şi renunţă la încărcarea interfeţei grafice, ajungându-se
în modul linie de comandă);
 activare protocol de start (lansarea şi executarea serviciilor şi a driverelor);
 activarea modului VGA (lansează Windows cu driverul standard VGA);
 ultima configuraţie funcţională cunoscută (foloseşte setările ultimului proces de boot
reuşit);
 restaurarea serviciului de directoare (controller de domeniu Windows 2000 care activează
noile servicii directoare din Windows 2000 e posibilă astfel accesarea sistemului prin
intermediul unei reţele);
 lansarea normală (Windows bootează cu toate driverele şi uneltele de sistem).
Deşi Windows 2000 oferă posibilitatea creării unei dischete de boot, se pot accesa datele
de pe o partiţie NTFS şi cu ajutorul unei dischete DOS şi al unui program suplimentar precum
NTFS Dos. Pentru a împiedica un acces neautorizat, a fost integrată funcţia de criptare în timp
real a directoarelor şi fişierelor. Aceasta este asemănătoare cu funcţia de comprimare existentă în
NT 4. Se activează atributul corespunzător din Properties din meniul contextual al unui fişier sau
director, iar în final toate fişierele din directorul respectiv vor fi criptate automat. Windows 2000
foloseşte un generator de cod aleator. Utilizatorul autorizat va putea accesa apoi fişierele la fel ca
înainte. Dacă se copiază ulterior şi alte fişiere in acest director, Windows le va codifica şi pe
acestea. Criptarea funcţionează numai cu cel mai nou sistem de fişiere NTFS 5, nu şi cu FAT si

80
Sisteme operaţionale
FAT 32. Sistemul creează automat un certificat de securitate pentru utilizatorul actual, cu
ajutorul căruia va putea cripta fişierele sale. În cazul în care este permis accesul mai multor
utilizatori la acelaşi fişier criptat, respectivul certificat poate fi transmis şi acestora.
Microsoft a integrat NTFS 5 în Windows 2000 incompatibil cu predecesorul sau NTFS
din Windows NT 4. Cu Windows 2000, administratorul are posibilitatea de a acorda fiecărui
utilizator un anumit spaţiu de stocare pe partiţie. Înainte de epuizarea acestui spaţiu, utilizatorul
este avertizat. După aceea, sistemul nu mai acceptă stocarea datelor utilizatorului respectiv.
De asemenea, este posibilă codificarea directoarelor şi fişierelor automat si in timp real.
Sistemul de operare poate atribui o unitate de disc oarecare unui director vid dintr-o partiţie
NTFS. În acest fel se poate atribui, de exemplu unitatea CD-ROM directorului
C:\CDROM.
Este anulata astfel limitarea la cele 26 litere ale alfabetului pentru unităţile de disc. Un alt
lucru important introdus de noul sistem de fişiere este USN-Journal (Update Sequence Number)
ce reprezintă un cod care preia modificările fiecărui fişier şi director; codurile sunt stocate în
Windows 2000 într-o baza de date şi anume USN-Journal, care este utilizabil pentru orice
program. Cu ajutorul acestui jurnal pot fi realizate de exemplu, programe de backup eficiente.
Un utilizator obişnuit, cu drepturi limitate în Windows 2000, nu va simţi o prea mare diferenţă
faţă de Windows 95/98. Exista în continuare obişnuitul taskbar (bara de lucru) şi butonul de start.
Nici în ceea ce priveşte desktop-ul nu sunt modificări, făcând abstracţie de pictogramele care au
suferit unele modificări. În schimb, un administrator va trebui sa se adapteze cu noua configurare
a sistemului, mai clară decât Windows NT şi cu mai multe posibilităţi; funcţiile însă, nu se mai
găsesc în acelaşi loc.
Nucleul administrării Windows 2000 îl reprezintă Microsoft Management
Console(MMC) care se găseşte sub denumirea de Computer Management, apelabil din Control
Panel/Administrative Tools, ori prin intermediul meniului contextual din My Computer. MMC
reuneşte sub o singură interfaţă Device Manager , informaţiile de sistem din Windows 95/98 şi
programele de configurare care se află în Windows NT, directorul Administrative
Tools(Common). MMC este împărţit în trei domenii:
 System Tools
 Storage
 Services and Aplications
Există însă posibilitatea adăugării de snap-in-uri.
Din System Tools fac parte:
 Event Viewer
 System Information
 un nou director
 Performance Logs and Alerts
 directorul Shared Folders(permite controlul partajării resurselor pe fiecare disc)
 Device Manager
 Local Users and Groups, corespunzător utilizatorilor din NT.
În Storage se găseşte:
 managerul de hard disc
 programul de defragmentare nou ataşat
 privirea de ansamblu asupra unităţilor logice (Logical Drives) şi directorul
Removable Storage care permite gestionarea comună a unităţilor CD-ROM, DAT,
ZIP şi a celorlalte unităţti de acest fel.
Services and Aplications conţine alături de o privire de ansamblu asupra serviciilor şi a
noii funcţii de indexare, instrumentaţia de administrare Windows(Windows Management
Instrumentation-WMI), care se referă la achiziţia on-line de date despre dispozitive şi
posibilitatea monitorizării funcţionării acestora.
O serie de programe incluse în MMC apar şi separat, în meniuri contextuale pe desktop,
în meniul de Start şi în Control Panel.

81
Capitolul 5 - Windows
Windows 2000 este optimizat pentru utilizarea în reţea, incluzând noi funcţii, în idea de a
securiza conexiunile de reţea cu utilizatorii aflaţi la distanţă mare. Astfel, este integrat protocolul
PPTP (Point-to-Point Tunneling Protocol) şi L2TP (Layer 2 Tunneling Protocol), ceea ce
permite crearea reţelelor private virtuale(VPN).
Conexiunea on-line comună începând de la grupuri de lucru mai mici este permisă deja în
Windows 98 SE prin Internet Connection Sharing, ea găsindu-se şi în Windows 2000. Cu
ajutorul acestei funcţii este posibilă realizarea de conexiuni la Internet printr-un modem utilizat
în comun.
Pentru administrarea reţelelor mari sunt importante Active Directory şi IntelliMirror:
 Active Directory permite în căutarea de calculatoare, imprimante sau persoane în
întreaga reţea sau în imediata apropiere;
 IntelliMirror permite atât deservirea de la distanţă a workstation-urilor, cât şi
stocarea pe server de profiluri detaliate de utilizatori.
Reţeaua poate fi configurată în aşa fel încât fiecare utilizator poate găsi pe orice
calculator setările personale. În momentul în care se conectează în reţea, Windows 2000
configurează atât desktop-ul personalizat cât şi aplicaţiile (Microsoft a unificat setările de reţea
Dial-up Networking şi accesul RAS care pot fi accesate prin Properties din meniul contextual al
Network Neighborhood), astfel încât configurarea reţelei cu adaptor, protocoale, etc., nu mai
poate fi accesată direct prin meniul contextual din Network Neighborhood, ci numai prin Local
Area Connection/Properties din acest meniu.
Astfel, la conectarea cu alte calculatoare din reţea, este posibilă alegerea unui alt nume de
utilizator şi a parolei; nu este necesară conectarea la propriul calculator cu numele de utilizator
corespunzător care să fie acceptat şi de către calculatorul respectiv.
Microsoft a extins grupul de accesorii în Windows 2000; sistemul este dotat şi cu Internet
Explorer 5, Outlook Express 2000, un nou program de fax (care însă conţine numai funcţiile de
bază), Media Player versiunea 6.4 care poate rula majoritatea formatelor video şi audio
răspândite, printre care se numără şi fişierele MP5. O noutate este Audio-CD-Player-Deluxe,
care oferă numeroase setări pentru redare (cum ar fi modul Shuffle), susţinând chiar şi anumite
opţiuni precum identificarea CD-urilor prin baze de date din Internet şi căutarea recenziilor pe
site-urile revistelor „Rolling Stone” şi „Billboard”.
O altă noutate este programul de defragmentare. El se bazează pe shareware-ul
Diskkeeper Lite şi lucrează cu fişiere atât de pe partiţii NTFS, cât şi pe unităţi FAT şi FAT32.
Programul de backup din NT este înlocuit printr-un program cu facilitatea de control a
discurilor de stocare ce pot fi scoase din sistem şi posibilitatea de verificare a fişierelor mai rar
folosite; acesta permite un control programat în timp al backup-urilor. Programul creează
opţional şi o dischetă de recuperare a informaţiilor vitale prezente în sistem.
Funcţia de căutare rulează printr-o interfaţă HTML şi utilizează opţional pentru
accelerare, un index care preia conţinutul fişierelor pe unitatea locală. Acest lucru funcţionează
însă numai pe partiţii NTFS.
În funcţie de sistemul Windows rulat pe calculator resursele vor fi următoarele:
[ Windows 2000 Professional: procesor Pentium la 133 MHz, 64 M RAM, 650 M spaţiu liber de
stocare pe un hard disc de minim 2 G;
[ Windows 2000 Server: procesor Pentium la 133 MHz, 256 M RAM, 1 G spaţiu liber de stocare
pe un hard disc de 2 G;
[ Windows 2000 Advanced Server: procesor la 133 MHz, 256 M RAM, 1 G spaţiu liber de
stocare pe un hard disc de cel puţin 2 G.
Windows 2000 este un sistem de operare multiprocesor, suportând 2,4 şi 8 procesoare pe
acelaşi calculator; Windows 2000 conţine în versiunea completă drivere pentru hardware
obişnuit, ceea ce înseamnă chip-uri grafice 3D moderne, unităţi DVD, plăci de sunet sau diferite
chipseturi de plăci de bază. În plus, există posibilitatea de a verifica produsele care sunt
compatibile cu Windows 2000. Driverele pentru hardware-ul nou urmează modelul WDM
(Win32 Driver Model), care permite utilizarea software-ului şi sub Windows 98. În afară de

82
Sisteme operaţionale
driverele WMD, Windows 2000 suportă şi drivere scrise pentru Windows NT 4, dar pentru acest
hardware nu oferă suport Plug&Play.
Dintre facilităţile multimedia, Windows 2000 poate configura redarea digitală a CD-
urilor audio. Astfel, datele de sunet nu mai ajung prin cablul analogic la placa de sunet, ci prin
bus-ul PCI sau ISA. Cablul audio nu mai este necesar, dar este nevoie ca şi unitatea CD-ROM să
suporte această facilitate. Sunt recunoscute fără probleme o mulţime de componente care apoi
sunt integrate în sistem. În plus, faţă de Windows NT, există şi suport pentru joystick.
Pentru instalarea scanerelor şi a camerelor digitale, există o înregistrare în Control Panel
de unde poate fi apelată o listă cu aparate suportate (circa 50 de modele). Integrarea unui nou
hardware se efectuează mult mai rapid comparativ cu Windows 98. Numai în câteva cazuri este
necesară o repornire a sistemului. Aceasta nu este solicitată nici la adăugarea unui protocol sau la
modificarea unui driver pentru placa de reţea.
Funcţiile din Windows 95/98 şi NT pentru sincronizarea fişierelor cu un Notebook au
fost extinse şi în Windows 2000. Nu mai există Briefcase, în schimb la accesarea directorului
Network Neighborhood în meniul contextual al Explorer-ului se găseşte comanda Make
Available Offline.
Prin intermediul comenzii Synchronize din meniul Start poate fi reglementată
sincronizarea datelor şi actualizarea de pagini Web.
Pentru utilizarea pe notebook-uri, Windows 2000 pune la dispoziţie standardul ACPI.
Setările corespund în mare celor din Windows 98, dar au fost extinse cu alte scheme de
energie pentru un consum minim al bateriei; o noutate o constituie modul Hibernate care
salvează stadiul actual al aplicaţiilor deschise, restaurându-l automat la repornirea Windows-ului.
Pentru cei care călătoresc în SUA există posibilitatea de tipărire prin Internet. Acolo
există mai multe hoteluri care oferă clienţilor o imprimantă de reţea care poate fi controlată
printr-un URL.
În ceea ce priveşte aplicaţiile multimedia şi jocurile, Windows 2000 are cea mai nouă
versiune de Direct X, lucrează cu plăci de sunet noi şi recunoaşte un număr însemnat de
joystick-uri. Singurul impediment îl constituie jocurile DOS care nu mai pot rula şi în Windows
2000, pentru că acesta nu mai acceptă compatibilitatea cu programele DOS (amănunte despre
facilităţile Direct X pentru Windows 2000 poate apela programul DxDiag.exe din directorul
WINNT/System32).
Cu toate că Windows 2000 rulează bine pe calculatoare cu mai mult de 300 MHz,
software-ul de player DVD integrat poate fi instalat numai dacă sistemul recunoaşte o placă
MPEG. Help-ul din Windows recomandă pentru DVD instalarea unei plăci MPEG sau trecerea
la un decodor software, lucru care nu este necesar în cazul procesoarelor Pentium III.
Windows 2000 reuneşte securitatea şi stabilitatea din Windows NT cu facilităţile
multimedia şi confortul din Windows 98. Comenzile şi funcţiile care se leagă din punct de
vedere tematic, se găsesc în acelaşi director. Căutarea unui dialog pentru instalarea unui nou
driver a fost eliminată. Device Manager din Windows NT a fost înlocuit cu cel din 98 mult mai
intuitiv.
În Windows 2000, Microsoft a unificat elemente din sistemele de operare Windows 95/98
şi NT. Dacă programele pentru Windows 95/98 erau destinate în special utilizatorilor particulari,
NT este dedicat în primul rând profesioniştilor care au nevoie de o securitate crescută a datelor şi
care lucrează într-o reţea.
Avantajele oferite de Windows 2000 pentru utilizatorii Windows 95/98 se pot rezuma
astfel:
[ Sistemul de operare va rula fără probleme pe un calculator cu dotare modernă şi toate
componentele vor fi recunoscute şi integrate în sistem. Nu sunt necesare alte investiţii pentru
hardware;
[ Setup-ul şi instalarea altor componente se va desfăşura mai simplu decât în Windows 98,
datorită facilităţilor Plug&Play îmbunătăţite; există o serie de asistenţi care oferă ajutor în caz de
nevoie;

83
Capitolul 5 - Windows
[ Conexiunea la Internet sau chiar la o mică reţea este simplificată;
[ Windows 2000 oferă facilităţi multimedia îmbunătăţite faţă de Windows 98;
[ Interfaţa nu presupune o perioada de acomodare, fiind asemănătoare cu cea din Windows 98 cu
Internet Explorer 5;
[ Blocările sunt rare datorită mecanismului de protecţie, sistemul rezistând la instalarea unor
programe obscure, care puneau în pericol versiunile anterioare;
[ Datorită profilurilor de utilizatori departajate, Windows 2000 este mai bine protejat împotriva
comenzilor eronate, iar datele importante pot fi bine protejate împotriva ştergerii lor; totodată,
accesul la Internet poate fi limitat pentru anumite persoane.
Dezavantajele folosirii Windows 2000 în cazul utilizatorilor Windows 95/98 va fi:
[ Windows 2000 costă mult mai mult ca Windows 98;
[ Noile funcţii de administrator sunt mai greu de înţeles de către neiniţiaţi;
[ Windows 2000 lucrează mai lent decât 98 ţinând cont de cerinţele hardware mai ridicate;
[ Jocurile DOS nu rulează sub Windows 2000, iar pentru jocurile 3D nu există încă drivere
Direct3D pentru toate plăcile grafice.
Avantajele aduse pentru utilizatorii care au folosit anterior Windows NT:
[ Interfaţa cu utilizatorul nu s-a prea modificat, ceea ce elimină o nouă şcolarizare a personalului;
[ Windows 2000 se instalează mai rapid şi mai simplu ca Windows NT;
[ Configurarea şi întreţinerea calculatoarelor Windows 2000 este mai simplă şi mai uşor de
urmărit;
[ Windows 2000 oferă posibilităţi îmbunătăţite de administrare în reţea. O serie întreagă de
sarcini pot fi rezolvate central, economisindu-se astfel timp;
[ Funcţiile pentru utilizarea pe un notebook au fost îmbunătăţite, sincronizarea datelor fiind mai
simplă şi mai confortabilă;
[ Power Managementul din Windows 2000 este mult îmbunătăţit faţă de cel din NT, crescând
astfel timpul de lucru al unui notebook ce nu este conectat la o reţea;
[ Legăturile cu celelalte calculatoare, prin reţea sau Dial-up Networking, sunt concepute astfel
încât datele confidenţiale sunt mai bine protejate;
[ Datele confidenţiale pot fi protejate foarte uşor prin noul sistem de fişiere NTFS5 şi prin
funcţia sa de criptare;
[ Programul de back-up integrat, permite salvarea automată a datelor de pe workstation-uri pe
server, fără să fie nevoie de programe suplimentare;
[ Conexiunile în reţea a diferitelor staţii de lucru între ele sau cu serverul, sunt mai flexibile decât
în Windows NT;
[ Va exista o versiune în mai multe limbi a lui Windows 2000, destinată utilizării în întreprinderi
mixte, permiţând apelarea meniurilor şi a funcţiei de help în orice limbă.
Dezavantajele regăsite de utilizatorii Windows NT pentru trecerea la Windows 2000,
constă în:
[ Dotarea actuală a calculatoarelor, insuficienţa staţiile de lucru având nevoie de mai multă
memorie. Achiziţionarea de calculatoare Pentium II/III sau Athlon este costisitoare. Pentru lucrul
mobil, este nevoie de notebook-uri noi sau de upgrade-uri la cele vechi, iar sistemele server au
nevoie de mai multă memorie.
[ Funcţiile de administrare extinse presupun o şcolarizare a personalului de întreţinere pentru
suportul de reţea.

84
SISTEMUL DE OPERARE UNIX

UNIX este un sistem de operare time -sharing universal. Principala


sa caracteristică este portabilitatea - disponibilitatea sa pentru majoritatea
sistemelor de calcul (supercalculatoare, mainframes, minicalculatoare,
sisteme de birotică, microcalculatoare).
Oportunitatea apariţiei acestui sistem de operare a constat din:
- necesitatea standardizării şi unificării sistemelor de operare, în
special a interfeţei cu utilizatorul;
- păstrarea în condiţiile transferului pe alte sisteme de calcul, a
structurii volumelor şi fişierelor;
- asigurarea unor niveluri superioare de portabilitate a produselor
- program;
- posibilitatea interconectării de sisteme cu arhitecturi, tipuri şi
puteri diferite, sub acelaşi sistem de operare.
- independenţa software-ului de aplicaţii, faţă de evoluţia
hardware.

6.1. CARACTERISTICI ŞI COMPONENTE MAJORE

6.1.1. Evoluţie şi caracteristici


În anul 1969 apare prima versiune experimentală scrisă în limbaj de asamblare pentru
minicalculatoarele PDP-11, al firmei DEC (Digital Equipment Corporation) pentru un singur
utilizator (monouser); odată cu primul compilator pentru limbajul C (1972), UNIX a fost rescris
în acest limbaj cu scopul asigurării portabilităţii. În 1978 s-a realizat prima implementare
comercială IS/1 (Interactive System One), urmată la scurt timp de versiunea XENIX a firmei
Microsoft. În 1980, UNIX s-a impus ca principală soluţie de standardizare in domeniul sistemelor
de operare, reprezentând o modalitate de realizare a sistemelor deschise pentru toate categoriile de
sisteme de calcul.
După 1981, firma AT&T elaborează versiunile UNIX System III şi V, iar firma Berkeley
Software Distribuitors (BSD) realizează standardele BSD 1,2,3 urmate de BSD 4.2, 4.3 şi din 1993
BSD 4.4
Companiile SUN şi AT&T au dezvoltat versiunea System V.4 în 1988, iar IBM, DEC şi
Hewlett Packard au format Open Software Foundation (OSF) independent de AT&T (fig. 6.1.).

86
Sisteme operaţionale

AT & T Bell Laboratories

Versiunea 6 –1975

BSD Versiunea 6 –1979

Xenix

System III –1982

1984 – BSD 4.2 System V.2 –1984

AT&T + SUN
1985 – BSD 4.3 System V.3 –1986

BSD 4.4 OSF /1 System V.4 –1988

1993 1992
influenţe
descendenţi direcţi

Fig. 6.1. Evoluţia sistemelor de operare UNIX

Dintre principalele raţiuni de utilizare se pot specifica:


- existenţa unui limbaj de comandă simplu, logic şi consistent, prin care utilizatorul comunică cu
sistemul de calcul, indiferent din ce categorie de sisteme de calcul face parte;
- oferirea de servicii pentru dezvoltarea interactivă de programe scrise în majoritatea limbajelor de
programe de nivel înalt, pentru baze de date, reţele locale (LAN) şi generale (WANG), inteligenţă
artificială, statistică, simulare, etc.;
- portabilitatea pe toată gama sistemelor de calcul ce lucrează sub UNIX, deci independenţa de
hardware;
- posibilitatea de a executa mai multe sarcini simultan, pentru mai mulţi utilizatori concomitent,
asigurând exploatarea eficientă a capacităţii de prelucrare puse la dispoziţie.
Caracteristicile de bază se pot sintetiza astfel:
- este un sistem de operare time - sharing, multiuser şi multitasking;
- asigură protecţia fişierelor şi execuţiei, prin existenţa unor parole şi drepturi de acces;
- dispune de intrări/ieşiri generalizate prin care operaţiile de intrare/ieşire sunt integrate în sistemul
de fişiere;
- existenţa unui sistem de întreruperi logice pentru sincronizarea proceselor reentrante şi asincrone
multiple;
- managementul spaţiului afectat execuţiei proceselor şi controlul timpului de acces la procesele în
aşteptare, se face prin transferul de pagini între memoria RAM şi cea externă;
- existenţa unei interfeţe simple şi interactive (SHELL) prin care se asigură dialogul utilizatorului
cu sistemul de operare;
- caracterul de sistem deschis este conferit de asigurarea atât a portabilităţii sistemului de operare,
cât şi a software-ului de aplicaţie;
- acoperirea unei vaste game de aplicaţii: compilatoare, sisteme de gestiune a bazelor de date

87
Capitolul 6 – Sistemul de operare UNIX
(Oracle, Gupta), reţele de calculatoare, inteligenţă artificială, simulare, gestiune, statistică, instruire
asistată de calculator, etc.;
- permite execuţia aplicaţiilor în MS-DOS, în paralel cu execuţia de procese sub UNIX (submeniu
pentru MS-DOS);
- întreţinere şi dezvoltare facilă.

6.1.2. Arhitectura sistemelor de calcul ce lucrează cu UNIX


Arhitectura unui sistem de calcul din punct de vedere al funcţionalităţii, se prezintă sub
formă stratificată pe trei niveluri (fig.6.2.).

Software de aplicaţii Proc. tab Proc. texte


Aplicaţie … Aplicaţie
utilizator utilizator SGBD CAD/CAM GAMES

Software de aplicaţii

Compilatoare Interpreter
Utilitare
Linkeditoare comenzi

Sistem de operare
NUCLEU (KERNEL)

Hardware
Nivel Dispozitive Microprograme Limbaj
fizic fizice - microcod maşină

Fig. 6.2. Arhitectura sistemelor ce lucrează sub Unix


Cel mai inferior nivel este nivelul fizic -nivelul la care operează hardware-ul, acesta
incluzând dispozitivele fizice, microcodul şi limbajul de asamblare.
Următorul nivel -software-ul de bază sau software-ul de sistem are ca principală
componentă sistemul de operare având la bază nucleul (Kernel) alături de editoare de texte,
compilatoare, interpretere de comenzi şi utilitare.
Nivelul superior materializat prin software-ul aplicativ, cuprinde practic, o gamă infinită de
aplicaţii.
Este de remarcat faptul că orice nivel comunică numai cu nivelul imediat inferior sau
superior, furnizând servicii pentru nivelul imediat superior.
Scopul principal al sistemului de operare fiind acela de a controla resursele hardware ale
sistemului, se poate aprecia că sistemul de operare acţionează ca o interfaţă între utilizator
reprezentat prin programele de aplicaţie pe care acesta le lansează în execuţie şi componenta
hardware (fig. 6.3.).

Software de aplicaţie

Utilizator Interpretor de comenzi Nucleu Nucleu

Utilitare

Fig. 6.3. Sistemul de operare UNIX - interfaţă între hardware şi utilizator

88
Sisteme operaţionale

Interpretorul de Utilizator
comenzi
Shell

Programe
aplicative
Utilitare
Dispozitive
periferice de
intrare/ieşire Programe
gestiune operaţii
de intrare/ieşire

Fig. 6.4. Componentele majore ale sistemului de operare UNIX

Nucleul (Kernel) este componenta care asigură servicii de sistem pentru programele de
aplicaţii asigurând gestiunii proceselor, a memoriei, a intrărilor / ieşirilor şi a timpului;
Shell - interpreterul de comenzi, reprezintă mecanismul prin care sistemul de operare
realizează interfaţa între utilizator şi sistemul de calcul; interpreterele de comenzi existente pe
sistemele de operare Unix sunt:
* Bourne Shell (bsh) şi Bourne Again Shell (bash) al cărui producător este firma AT&T; bsh a fost
prima variantă a interpreterelor de comenzi;
* C Shell (csh) elaborat de firma Sun Microsystem; interpreterul are o sintaxă a comenzilor similară
cu cea a limbajului C;
* Korn Shell (ksh) ce se constituie ca o îmbinare a variantelor anterioare.
Sistemul de fişiere cuprinde programe utilitare, aplicative şi de gestiune a operaţiilor de
intrare/ieşire.
Interfeţele disponibile utilizatorului sunt organizate pe trei niveluri:
* nivelul exterior nucleului, care poate fi accesat de către utilizator prin intermediul utilitarelor;
* nivelul intermediar, accesat prin funcţii din biblioteca limbajului C;
* nivelul inferior, a cărui accesare se realizează prin funcţiile de sistem (System Calls).
Asemănător MS-DOS-ului care în cursul dezvoltării sale a fost dotat cu interfeţele grafice
Windows, UNIX-ul a încorporat ca principale interfeţe grafice:
* X/Windows al firmei MIT, folosită şi de SCO în versiunile Open DeskTop (ODT);
* Open Look al cărei producător a fost firmele AT&T şi SUN;
* DEC Windows a firmei DEC.
Prin urmare, există o ierarhizare a straturilor ce se interpun între utilizator şi nucleul
sistemului de operare redată în fig. 6.5.

89
Capitolul 6 – Sistemul de operare UNIX

Kernel
Drivere periferice
Comenzi şi utilitare

Shell
Ferestre şi interfeţe grafice
Utilizator

Fig. 6.5. Straturile interpuse între utilizator şi nucleul sistemului de operare UNIX

6.1.4. Tipuri de sisteme de operare UNIX


Principalele variante de sisteme de operare UNIX existente astăzi în domeniul software-ului
de sistem precum şi sistemul de bază pe care sunt fundamentate sunt redate în fig. 6.6.

BSD System V.3

OSF/1 System V.4


Sun OS SCO

Linux

DEC
AIX HP-UX Solaris Irix
OSF/1

Fig. 6.6. Principalele variante de sisteme de operare UNIX

UNIX SYSTEM V RELEASE 4


UNIX SYSTEM V RELEASE 4 cuprinde:
- linia AT&T System V.3;
- linia Berkeley BSD 4.3 şi Sun OS 4.0;
- linia Xenix - Xenix V a lui Microsoft;
- interfeţele grafice cuprind principalele funcţiile din interfeţele X/Windows şi Open Look;
- Shell-urile: Bourne, Korn, C;
- suport pentru conectare la reţea:
* protocolul TCP/IP;
* interfaţă pentru comunicarea între procese;
* gestiunea fişierelor distribuite (NFS);

90
Sisteme operaţionale
- interfaţă binară de aplicaţii (ABI).

SCO Santa Cruz Corporation dispune de două variante:


- ODT - Open DeskTop;
- Open Server Release 3.
Sistemul de operare UNIX varianta SCO Open DeskTop 2.0, este bazat pe Unix System V Release
3.2. cu interfaţă grafică X-DeskTop; elemente mai semnificative care-l caracterizează:
- dispune de un instrument grafic de poştă electronică, protocol TCP/IP şi NFS;
- suportă MS-DOS;
- este emulată interfaţa grafică Windows;
- poate accesa partiţii DOS multiple mai mari de 32 Mb.

SUN OS
Sistemul de operare Unix SUN OS este destinat pentru staţiile de lucru SUN, inclusiv pentru
SUN 386; a fost proiectat având la bază UNIX V Release 3 şi BSD 4.2 şi 4.3.
Cuprinde:
- sistemul de fişiere al reţelei (NFS);
- interfaţă grafică utilizator SunView;
- suport pentru operare fără disc pe reţea (Diskless Operation);
- nucleul are circa 200 funcţii sistem, biblioteci cu rutine pentru programe de aplicaţie (rutine
matematice şi aplicaţii reţea);
- Shell Bourne şi C;
- poate rula simultan şi aplicaţii DOS care au acces la fişierele din reţeaua Sun Os.

SOLARIS
Sistemul de operare UNIX varianta Solaris al firmei SUN, cuprinde următoarele
componente semnificative:
- Sun Os 5.0 bazat pe Unix System V Release 4;
- ONC Distributed Computing Platform -colecţie de protocoale de intercomunicare şi servicii
distribuite;
- sistemul de vizualizare OpenWindows V 3;
- interfaţa grafică OpenLook;
- Deskset V3- set de instrumente pentru activitatea de desktop.
Începând cu versiunea Solaris 2.6, sistemul de operare are ca principale noutăţi, un set de
bază pentru servicii de reţea, inclusiv propriul server Web şi browser. Îmbunătăţirile noii versiuni
au condus la următoarele constatări:
- cel mai rapid mediu Java;
- suport pentru fişiere mari;
- creşterea cu cca 35 % a performanţelor pentru baze de date;
- creşterea cu 350 % a performanţelor pentru Web.

HP - UX
HP - UX Hewlett Packard Unix este versiunea Unix System V care încorporează o serie de
caracteristici ale OSF/1:
- HP - UX 9 poate fi asimilat cu Unix System V.3, dispunând suplimentar de câteva
extensii;
- HP - UX 10 este un Unix System V.4.

DEC - OSF/1
DEC - OSF/1 Digital Equipment Corporation este versiunea OSF/1 a firmei DEC
implementată pe DEC ALPHA STATION 600.

91
Capitolul 6 – Sistemul de operare UNIX
IRIX
IRIX include majoritatea caracteristicilor de la BSD, av având la bază Unix System V.4.

AIX
Sistemul de operare UNIX varianta AIX a fost proiectat de corporaţia IBM, fiind bazat pe
versiunea UNIX System V BSD şi OSF/1; este disponibil pe calculatoare IBM PS/2 (modelul
Power PC- versiunea AIX 3.x şi AIX 4.1.1) şi compatibile, respectiv pe mainframe având
implementate microprocesoare RISC-6000 versiunea AIX 4.1.3.

UNIX WARE
Unix Ware este o variantă având la bază versiunea UNIX System V Release 4, rezultată
dintr-o colaborare UNIX şi Novell.
Componente esenţiale:
- nucleul din Unix System V Release 4.2;
- sistemul de operare de reţea locală Netware;
- interfeţe grafice utilizator disponibile sunt: Openlook şi OSF/Motif.

LINUX
Linux este sistemul de operare Unix pentru procesoarele Intel, care a oferit software gratuit.
Linux include esenţialul variantei BSD, fiind destinat utilizării individuale de către profesionişti
Unix. Este o soluţie acceptabilăpentru conectarea la Internet şi poate fi utilizat ca X terminal în
siteurile Unix.

6.2. Sistemul de fişiere UNIX SYSTEM V

Fişierele reprezintă din punct de vedere logic, unitatea elementară de memorare pe suportul
magnetic.

6.2.1. Tipuri de fişiere


Sistemul de operare UNIX System V lucrează cu următoarele tipuri de fişiere:
- fişiere obişnuite
Aceste fişiere sunt constituite dintr-un şir de bytes (memoraţi de obicei pe disc) terminat cu
un marker de sfârşit de fişier (EOF). Şirul este divizat în linii de text terminate cu caracterul "new
line" (CR). Restricţiile de lungime, format, utilizat;
- fişiere speciale
Fişiere speciale se constituie ca o interfaţă între programele utilizator şi rutinele nucleului sistemului
de operare, ce lucrează direct cu dispozitivele periferice de intrare/ieşire. Astfel, utilizatorul va trata
perifericele de intrare/ieşire ca fişiere, activarea unui astfel de fişier coincizând cu activarea
driverului dispozitivului periferic asociat. La rândul lor, fişiere speciale sunt de 3 categorii:
* fişiere speciale de tip caracter sunt fişierele care transferă un byte printr-o operaţie de
intrare/ieşire;
* fişiere speciale de tip bloc sunt fişierele care transferă un bloc printr-o operaţie de
intrare/ieşire;
* fişiere speciale de tip pipe sunt fişiere ce constituie canale de comunicaţie între 2 procese;
comunicaţia între două procese se poate realiza în memorie prin fişiere pipe obişnuite, sau pe disc
prin aşa zisele fişiere pipe (named pipe).
-cataloage de fişiere (directori)
Directorii sunt cataloage de fişiere ce conţin numele fişierelor componente şi adresa fizică pe unitate
simbolizată prin:
. (un singur punct) identifică numele directorului propriu, numit Home directory (2 bytes);
.. (două puncte) identifică numele directorului părinte ân care fişierul cu un anumit index

92
Sisteme operaţionale
(inod) apare ca subdirector (14 bytes).
Aceste fişiere nu se pot citi/scrie direct de utilizator, operaţiile efectuându-se prin directive de
sistem.

6.2.2. Structura arborescentă a sistemului de fişiere


Sistemul de fişiere UNIX System V este organizat într-o structură arborescentă sub formă
de directori şi subdirectori conectaţi la directorul rădăcină (/root). Restricţia de parcurgere este ca
un director să nu fie legat la nivelul superior decât printr-o singură legătură.
Pentru fiecare utilizator, administratorul de sistem creează câte un director propriu ce poate
conţine subdirectori sau fişiere obişnuite. Identificarea în cadrul structurii arborescente se realizează
prin numele fişierului precedat de calea în care se află; specificarea căii se poate realiza în două
moduri:
- absolut, pornind din directorul rădăcină /root;
- relativ, pornind de la directorul curent.
Schimbarea directorului curent se realizează prin intermediul comenzii:
$cd cale
unde cale poate fi specificată:
- spre extremităţile arborelui, prin specificarea subdirectorului dorit;
- spre baza arborelui, ceea ce presupune specificarea completă a căii;
Spre deosebire de MS-DOS, la UNIX nu apare la prompter calea curentă; determinarea căii curente
se face prin comanda:
$pwd
(print work directory) care va afişa calea completă;
Prin comanda
$cd
se revine în directorul utilizatorului atribuit la începutul sesiunii de lucru de către administratorul
de sistem (Home directory).
Crearea unui director (este permisă numai în directorul propriu atribuit de administratorul
sistemului) se va specifica prin comanda:
$mkdir nume_director
Ôtergerea unui director se efectuează prin comanda:
$rmdir nume_director
Operaţia este validată numai dacă directorul este vid şi utilizatorul are acest drept la calea
respectivă.
Listarea conţinutului unui director se realizează prin comanda:
$ls [-opţiuni] [nume_director]
unde nume_director este numele directorului al cărui conţinut se va afişa pe monitor; implicit este
listat conţinutul din directorul curent;
opţiuni prin intermediul opţiunilor se pot solicita informaţii suplimentare cu privire la
conţinutul directorului respectiv; opţiunile vor fi precedate de caracterul "-"; dintre opţiunile mai
semnificative:
-l oferă informaţii de detaliu ce privesc: tipul fişierului, protecţie, proprietar, dimensiune,
data ultimei modificări, nume;
-a solicită specificarea tuturor intrărilor în director; fiecare intrare va fi precedată de unul
din următoarele caractere având semnificaţia:
d subdirector;
- fişier obişnuit;
b,c fişiere speciale de tip bloc (b) sau caracter (c);
. directorul curent;
.. directorul părinte;
-i numărul de inod;
-t afişarea conţinutului sortat după timpul ultimei modificări;

93
Capitolul 6 – Sistemul de operare UNIX

6.2.3. Structura standard a sistemului de fişiere


O structură standard a unui sistem de fişiere UNIX conţine următorii directori având în
componenţă:

/ dev fişiere speciale pentru dispozitivele periferice: consola sistem,


terminale, discuri, imprimantă, etc.;
/ bin utilitare în formă executabilă: compilatoare, asambloare, instrumente
pentru dezvoltarea programelor;
/ lib biblioteci pentru limbaje de programare şi utilitare;
/ etc programe pentru administrarea sistemului: fişiere cu parole, comenzi
de iniţializare;
/ tmp spaţiu temporar de manevră folosit de programele de sistem;
/root / unix nucleul sistemului de operare, direcţionând sistemul către
/aixps2/unix.std;
/ u director în care se creează Home directory pentru fiecare utilizator;
/ local partiţia activă (de aici se face bootarea);
/ lost+found director unde se ataşează fişierele şi directorii găsiţi ca
nefăcând parte din nici un sistem de fişiere;
/ usr alte programe necesare utilizatorilor;
/ bin utilitare nefolosite frecvent;
/ tmp fişiere temporare mai puţin utilizate;
/ lib fişiere de bibliotecă utilizate mai rar;
/ dict lista de cuvinte, despărţirea în silabe;
/ man directori de fişiere text conţinând manualul complet de
utilizare.
/ spool -at timpul la care se prelucrează;
-lpd director imprimantă;
/ user_1
/ ... ¦ structuri de directori
/ ... ¦
/ ... ¦ ai utilizatorilor
/ user_n

6.2.4. Protecţia fişierelor şi drepturi de acces


Sistemul de operare UNIX dispune de 3 drepturi de acces la fişiere:
- dreptul de citire read (r);
- dreptul de scriere write (w);
- dreptul de execuţie execute (x);
De asemenea, recunoaşte următoarele categorii de utilizatori:
- proprietarul (u);
- grupul de utilizatori (g);
- ceilalţi utilizatori (o).
De aici decurg cele 3x3 posibiliţăţi pentru precizarea completă a drepturilor de acces.
Vizualizarea drepturilor de acces se realizează prin operaţia de listare a conţinutului directorului.
Exemplu
Dacă se va introduce comanda:
$ls -al
efectul va fi afişarea la monitor a conţinutului directorului curent cu toate intrările şi informaţii de
detaliu:
total 24 reprezintă numărul de blocuri de 512 bytes ocupate
drwxrwxr-x 6 ase info 687 Apr 28 17:13 . directorul curent

94
Sisteme operaţionale
drwxrwxr-x 9 ase infocib 212 Ian 12 10:22 .. directorul părinte
drwxrwxr-x 1 ase stud1 43 Mar 11 15:50 fisier1
-r-wxr-x--- 2 ase stud3 8822 Feb 14 12:09 fişier2
(1)(2) (3) (4) (5) (6) (7) (8) (9)
unde (1) tipul de fişier;
(2) drepturile de acces ale proprietarului (u);
(3) drepturile de acces ale membrilor grupului (g);
(4) drepturile de acces ale altor utilizatori (o);
(5) numărul de directori în care apar fişierele (numărul de legături);
(6) numele proprietarului şi grupului;
(7) numărul de caractere din fişier;
(8) data ultimei modificări;
(9) numele directorilor şi fişierelor existente în directorul curent.

6.2.5. Modificarea drepturilor de acces


La crearea unui fişier, se asociază atât un identificator de proprietar (uid) cât şi un
identificator de grup (gid), ambele atribuite de către administratorul de sistem.
Cuvântul care păstrează fişierele şi drepturile de acces are următorul format:
15 13 12 10 9 7 6 5 4 3 0
xwr xwr xwr sticky sgid suid tip fişier
o g u
Fişierele executabile preiau la execuţie uid-u//gid-ul celui care le lansează; dacă biţii sunt
setaţi pe 1, se preia uid-ul/gid-ul proprietarului fişierului respectiv, iar la comanda ls apare opţiunea
s în loc de x la dreptul de execuţie al proprietarului
Setarea bitului sticky produce rămânerea în memoria internă a fişierului executabil - în zona
de evacuare (swapping); este utilizat pentru fişiere de comenzi sau comenzi apelate frecvent (TSR).
Schimbarea proprietarului (owner-ului) anumitor fişiere se face prin intermediul comenzii:
$chown nume_nou_proprietar fis_1 fis_2 ... fis_n
unde nume_nou_proprietar devine noul proprietar al fişierelor fis_1 fis_2 ... fis_n specificate.
Exemplu
Prin comanda:
$chown radu fis1.x fis2.x
radu devine noul proprietar al fişierelor fis1.x şi fis2.x.
Schimbarea grupului care deţine anumite fişiere se realizează cu ajutorul comenzii:
$chgrp nume_nou_grup fis_1 fis_2 ... fis_n
prin care nume_nou_grup devine deţinătorul fişierelor fis_1 fis_2 ... fis_n.
Adăugarea unui nou grup la sistemul de fişiere UNIX se efectuează prin comanda:
$newgrp nume_grup_adaug
în urma căreia nume_grup_adaug este ataşat la sistemul de fişiere existent.
Schimbarea drepturilor de acces la un fişier se poate realiza numai de către proprietarul
acestuia (eventual, de către administratorul sistemului-superuser) cu comanda:
$chmod {cine} {permis}{drept_acces} fis_1 fis_2 ... fis_n
unde cine poate fi:
u user login (proprietarul);
g group (grupul);
o others (alţi utilizatori);
a all (toţi utilizatorii).
permis stăbileşte accesul sau neautorizarea acestuia prin:
+ permisiune;
- neautorizarea accesului;
= permisiune absolută.

95
Capitolul 6 – Sistemul de operare UNIX

drept_acces sunt drepturile de citire (r), scriere(w) sau execuţie (x);


fis_1 fis_2 ... fis_n fişierele asupra cărora se aplică modificarea.
Exemple:
1) Comanda:
$chmod a+rx prog
permite tuturor utilizatorilor (a) să citească (r) şi să execute (x) fişierul prog.
2) Comanda:
$chmod u-w prog
nu permite proprietarului fişierului prog să facă modificări în conţinutul acestuia.
3) Prin comanda:
$chmod o-r mail
nu se permite altor utilizatori (o) să citească (r) fişierul mail.
Observaţie: modificarea drepturilor de acces se poate realiza şi absolut prin însumarea
următoarelor valori:
4000 setare uid
2000 setare gid
1000 setare bit sticky
400 drept de citire pentru proprietar;
200 drept de scriere pentru proprietar;
100 drept de execuţie pentru proprietar;
40 drept de citire pentru grup;
20 drept de scriere pentru grup;
10 drept de execuţie pentru grup;
4 drept de citire pentru alţi utilizatori;
2 drept de scriere pentru alţi utilizatori;
1 drept de execuţie pentru alţi utilizatori;
Exemplu
Comanda:
$chmod 755 prof
modifică drepturile de acces pentru permisiune la citire, scriere, execuţie proprietar 700
(400+200+100), citire, execuţie pentru grup 50 (40+0+10), şi citire, execuţie pentru alţi utilizatori
5(4+0+1).
Informaţiile despre utilizatori şi grupurile de utilizatori sunt cuprinse în fişierele
/etc/passwd, /etc/shadow şi /etc/group.
Utilizatorii au acces la comenzile generale situate de regulă în căile /bin şi /usr/bin, aceştia
având posibilitatea să-şi modifice propria parolă cu comanda:
$passwd parola
care va solicita introducerea noii parole de două ori.
Orice utilizator are acces la fişierul /etc/passwd, în timp ce la fişierul ce conţine parolele
(/etc/shadow), nu are acces decât numai utilizatorul cu drept deplin la root (administratorul
sistemului).
Fişierul /etc/passwd conţine câte o linie pentru fiecare utilizator, având următoarea
structură:
- numele de conectare (login);
- X parola invizibilă;
- numărul de identificare al utilizatorului uid (user identification);
- numărul de identificare al grupului gid (group identification);
- numele proprietarului (name owner);
- directorul atribuit la conectare (home directory);
- numele interpreterului de comenzi (shell).

96
Sisteme operaţionale

La execuţia oricărui program, acestuia i se atribuie patru identificatori:


1.uid-ul real din /etc/passwd;
2.gid-ul real din /etc/passwd;
3.uid-ul efectiv al programului;
4.gid-ul efectiv al programului.
Accesul programului la un fişier va fi determinat de uid-ul şi gid-ul efective astfel:
- programul are aceleaşi drepturi de acces la un fişier ca şi proprietarul fişierului dacă uid-ul efectiv
este identic cu uid-ul fişierului;
- dacă uid-ul efectiv al programului nu este identic cu uid-ul fişierului, dar gid-ul acestuia coincide
cu gid-ul fişierului, programul are aceleaşi drepturi de acces ca şi grupul asociat fişierului;
- dacă uid-urile şi gid-urile efective ale programului şi fişierului sunt diferite, programul va avea
aceleaşi drepturi de acces la fişier ca şi ceilalţi utilizatori.
Pentru un fişier, pot fi poziţionate (setate) două drepturi speciale de acces:
suid (set uid) şi sgid (set gid) care, la fişierele executabile au atribuite implicit drepturile pe care
le are utilizatorul atunci când le lansează:
- dacă suid a fost setat, atunci programul care accesează un fişier va avea uid-ul efectiv cu cel al
proprietarului, dar numai pe durata execuţiei programului.
Exemplu
Prin comanda:
$chmod u+s fis
se stabilesc drepturile proprietarului asupra fişierului fis, când acesta este accesat; efectul comenzii
este:
-rws-x proprietar grup fis
deci, orice membru al grupului poate accesa fişierul specificat prin fis.
Informaţii despre numerele şi numele de identificare ale utilizatorilor şi a grupurilor se pot
obţine cu comanda $id, iar numele utilizatorului curent prin comanda $logname.

6.2.6. Montarea volumelor în structura arborescentă a sistemului de fişiere


Dispozitivele periferice de intrare/ieşire se pot ataşa sistemului de fişiere în UNIX, sub
forma unor fişiere speciale ce trebuie constituite ca o structură arborescentă de root, director,
subdirector, simpla montare fizică nefiind suficientă; montarea semnifică în acest caz accesul la
dispozitivul periferic.
Comenzile specifice vor fi menţionate cu scopul cunoaşterii manierei de abordare a
dispozitivelor periferice de către sistemul de operare UNIX, dar ele nu pot fi executate decât dacă
sunt date de către superuser (comenzi privilegiate).
Un sistem de fişiere poate fi înregistrat pe diferite volume logice materializate pe variate
suporturi fizice, dar pentru a opera sub sistemul UNIX, toate trebuie să se găsească într-un volum
unic denumit root, volum ce conţine programul de încărcare a sistemului de operare. Sistemul de
fişiere poate fi utilizat doar dacă este încorporat în structura de fişiere accesibilă la pornirea
sistemului; operaţia se poate realiza prin legarea sistemului de fişiere respectiv, la un director al
sistemului de fişiere accesibile- operaţia se numeşte montare. În momentul montării celelalte fişiere
devin transparente pentru sistem până la realizarea comenzii inverse (demontare).
Montarea unui volum se realizează cu comanda:
$/etc/mount [-r] /dev/tip_dispozitiv /nume_director
unde tip_dispozitiv reprezintă numele fişierului special asociat dispozitivului fizic care se află
în directorul /dev;
-r protejat la scriere;
nume_director este numele directorului ce va fi substituit de directorul rădăcină al volumului;
acesta trebuie să fie creat în prealabil ca director vid);
/etc este directorul în care se află comanda mount.
Demontarea unui volum se realizează cu comanda:

97
Capitolul 6 – Sistemul de operare UNIX
$/etc/umount /dev/tip_dispozitiv /nume_director
De remarcat că atât montarea cât şi demontarea volumelor se poate realiza şi prin directive
de sistem ce pot fi apelate din programele utilizatorilor.
Pentru crearea unei structuri arborescente de director pentru volum se foloseşte comanda:
$/etc/mkfs /dev/nume_fis_special dimensiune_fis
care şterge tot conţinutul volumului, creând o structură de director pentru volumul ce se va indica
prin numele asociat (nume_fis_special); dimensiunea fişierului (dimensiune_fis) se specifică prin
numărul de blocuri ocupate de fişier;
/etc directorul în care se găseşte comanda mkfs;
/dev directorul în care se află numele fişierului special.
Exemple
1) Prin comanda:

$/etc/mkfs /dev/dsk1 2000


se crează un sistem de fişiere UNIX pe floppy-disk-ul montat în unitatea 1, cu un singur director,
şi cu 2000 sectoare, iar prin:
$/etc/mount /dev/fd1 /user
se montează sistemul de fişiere UNIX de pe floppy-disk-ul din unitatea 1, în directorul /user/ al
sistemului de fişiere de pe discul principal (fig.6.7.).

/ dev / bin / ctc . . . / user

...
/ bin / tmp / user 1

/ fd 1
...

Fig. 6.7.

2) Comanda:
$/etc/mount -r /dev/rz4c /radu
montează un disc optic prin intermediul interfeţei de disc SCSI, în directorul /radu protejat la
scriere.
3) Crearea unui fişier special asociat unui dispozitiv periferic se face prin comanda:
$/etc/mknod /dev/nume_fis_special {c/b} nr_maj nr_min
unde c/b tipul fişierului special:
- fişier special de tip caracter (c);
- fişier special de tip bloc (b);
nr_major, nr_minor reprezintă tipul dispozitivului (nr_major), respectiv numărul acestuia
(nr_minor) ambele specificate în octal, numerele depinzând esenţial de sistemul de operare UNIX.

98
Sisteme operaţionale

Exemplu
Comanda:
$/etc/mknod /dev/tty4 c 3 4
crează fişierul asociat terminalului tty4 de tip caracter (c) în calea /dev,
tipul dispozitivului fiind 3 (nr_major) iar numărul dispozitivului este 4 (nr_minor).
Iniţializarea unui disc se efectuează prin comanda:
$diskformat /dev/tipdisc [-size s] [-dens d] [-il i]
unde s numărul de bytes/sector;
d densitate de înregistrare;
f factorul de întreţesere;
Exemplu:
Comanda:
$diskformat /dev/fd0 -dens 1 -size 128 il 3
formatează floppy-disk-ul fd0 simplă densitate, cu 128 bytes pe sector, factor de întreţesere 3.
Pentru a converti un fişier pe un floppy disk se utilizează comanda:
$tar nume_fişier /dev/fd1 135 ds 120 nume_nou_fişier

6.2.7. Implementarea sistemului de fişiere UNIX pe disc


Orice volum de disc este iniţializat ca un sistem de fişiere, conţinând un număr de blocuri
adresabile (de la 0 la valoarea maximă dată la iniţializare) organizate astfel:
Bloc 0: Boot
Bloc 1: Superbloc
Bloc 2: Zona de inod-uri
Bloc 3:
.
. Blocuri de date
.
.
Bloc n: Zona de evacuare temporară (swapping).

Blocul Boot conţine codul încărcătorului părţii rezidente a sistemului de operare (în general
primul sector care este rezervat pentru programul de boot-are şi pentru informaţii despre
partiţionarea discului).
Superblocul conţine informaţii generale despre sistemul de fişiere:
- dimensiunea sistemului de fişiere împreună cu numărul de blocuri libere, tabloul ce conţine
blocurile libere, indexul următorului bloc liber din tablou;
- dimensiunea zonei de inod-uri, numărul de inod-uri libere, tabloul ce conţine inod-urile libere,
indexul următorului inod liber din tablou;
- câmpurile neautorizate la scriere pentru tablourile ce conţin blocuri şi inod-uri libere.
Superblocul este copiat în memoria internă, iar nucleul actualizează permanent superblocul,
pentru a asigura corespondenţa reală cu sistemul de fişiere (există un flag care este setat la fiecare
modificare a superblocului).
Zona de inod-uri conţine câte un inod pentru fiecare fişier de pe disc (eticheta de fişier).
Reprezentarea internă a unui fişier este specificată prin inod-ul asociat; acesta reprezintă o intrare
în lista de indecşi a unui volum, care conţine:
- poziţia pe disc a datelor din fişier (adresa);
- proprietarul fişierului;
- momentul ultimei accesări a fişierului sau ultima modificare a fişierului sau inod-ului.
Un fişier are asociat un singur inod, dar poate avea mai multe nume, fiecare dintre acestea fiind în
relaţie cu acelaşi inod. Relaţiile dintre nume şi inod se numesc legături.
Fiecare inod are asociat un număr de ordine i-number care desemnează în mod unic numele interne

99
Capitolul 6 – Sistemul de operare UNIX
ale fişierelor, iar directorii conţin tocmai tabela de traducere a numelui extern al fişierului, în
numărul de ordine asociat.
Conţinutul unui inod este modificat în momentul schimbării proprietarului, a drepturilor de
acces sau a numărului de legături; astfel, modificarea conţinutului unui fişier implicând automat
modificarea inod-ului asociat. Modificarea inod-ului însă, nu implică neapărat şi o modificare a
conţinutului fişierului.
Ştergerea unui inod se realizează cu comanda:
$clri /dev/nume_fis_special i_number
care şterge din sistemul de fişiere asociat unui dispozitiv periferic (nume_fis_special), inodul
specificat prin număr (i_number).
Exemplu
Prin comanda:
$clri /dev/fd0 5
se va şterge inod-ul 5 din sistemul de fişiere asociat floppy-disk-ului fd0.
Structura zonei de inod-uri cuprinde:
- numărul de identificare proprietar şi grup;
- tipul fişierului şi atributele de acces;
- lista blocurilor fizice ale fişierului compusă din 13 intrări:
10 constituie adresele primelor 10 blocuri de date;
11 bloc de simplă adresare indirectă;
12 bloc de dublă indirectare;
13 blocul de tripla indirectare;
- numărul de legături la fişier, indicând numărul directorilor care au referinţe la acest fişier;
- data ultimei accesări, a ultimei modificări şi data creării.
La deschiderea fişierului, inod-ul este copiat în memoria internă de către nucleu,
adăugându-i-se şi alte informaţii.
Blocurile de date conţin informaţia utilă a fişierelor organizate în blocuri:
- fiecare bloc are mărimea de 512 sau 1024 bytes;
- alocarea se face dinamic, pe baza listei blocurilor libere din superbloc.
Zona de evacuare temporară (swapping) conţine imaginile proceselor utilizator, atunci
când acestea sunt temporar eliminate din memoria internă.
Prin comanda:
$fsck [-sX][-D][nume_fis_special]

el poate testa şi repara sistemul de fişiere specificat prin nume_fis_special; maniera de testare şi
reparare este interactivă. Testarea constă în verificarea consistenţă între valorile parametrilor
memoraţi în tabelele Superblocului şi Zona de inod-uri. Dacă nu sunt depistate erori, atunci se va
afişa:
- numărul de fişiere;
- numărul de blocuri utilizate;
- numărul de blocuri libere.
-s ignoră lista de blocuri libere existentă şi reconstituie o nouă listă, prin rescrierea
Superblocului sistemului;
-D realizează verificarea directorilor în vederea depistării eventualelor blocuri defecte.
Comenzile de afişare a informaţiilor de pe disc:
$du [-ar][f1 f2 ...fn]
afişează numărul de blocuri conţinute în fiecare fişier f1 f2 ...fn; implicit, se
afişează directorul curent;
-a afişează şi numărul de blocuri conţinute în fişiere; implicit, se
afişează numai directori;
-r afişează mesaje de eroare pentru directorii care nu pot fi citiţi.

100
Sisteme operaţionale

Exemplu
$du -a /usr/radu
afişează directorii inclusiv fişierele conţinute cu numărul de blocuri ocupate din directorul
/usr/radu;
$df [nume_fis_special]
afişează numărul de blocuri şi inod-urile libere pentru sistemul de fişiere specificat prin
nume_fis_special; implicit, se afişează pentru toate sistemele de fişiere montate.

6.3. Interpretorul de comenzi shell

Dintre principalele componente ale sistemului de operare UNIX, o poziţie privilegiată o au


componentele Kernel şi Shell; Kernel este sistemul supervizor care încarcă toate procesele şi le
execută în manieră proprie la un moment dat iar Shell este singura cale prin care utilizatorul poate
comunica cu Kernel-ul cu privire la:
- care programe să le execute;
- cine să le execute;
- ce să facă cu ieşirea;
- alte servicii utilizator;
- comunicarea dorinţelor utilizatorului către Kernel.
Shell primeşte comenzile de la utilizator, le decodifică şi comunică dorinţele acestuia la
Kernel, deci toate comunicaţiile dintre utilizator şi Kernel sunt conduse prin Shell.

6.3.1. Comenzi Shell


După conectarea utilizatorului la o sesiune de lucru, este invocat automat Shell-ul (prin apariţia
prompter-ului $), care informează utilizatorul că aşteaptă comenzi ce se vor introduce de la
tastatură. În continuare interpreterul de comenzi Shell execută următoarele activităţi:
- decodifică linia de comandă (caută programul);
- anunţă Kernell să execute programul şi aşteaptă (sau nu) terminarea execuţiei;
- primeşte răspunsul Kernell şi afişează răspunsul şi prompterul $;
- reia ciclic secvenţa, până la introducerea CTRL/D pe care o
interpretează ca "sfârşit transmisie de la tastatură";
- anunţă Kernell să deconecteze utilizatorul.
Comenzile practic, sunt programe executabile pe care Shell le caută în ordinea: directorul
curent, /bin, /usr/bin unde acestea se regăsesc ca fişiere normale.
Linia de comandă are forma:
$comandă argumente
unde argumente pot fi:
- nume de fişiere, eventual calea în care se găsesc;
- opţiuni urmate imediat după comandă şi precedate de - (specifice fiecărei comenzi).
De exemplu:
$comp -s nf1 nf2
compară f1 cu f2 şi suprimă imprimarea (care este implicită).
Se puteau folosi şi alte opţiuni ca:
-l indică forma lungă a unui serviciu efectuat de comandă;
-sl serviciu lung, fără imprimare.

6.3.2. Fişiere standard. Redirectare şi extensii


Shell deschide implicit trei fişiere standard:

- tastatura, ca fişier de intrare standard având atribuit descriptorul asociat 0 (stdin);


- monitorul, ca fişier standard de ieşire având asociat numărul 1 (stdout);

101
Capitolul 6 – Sistemul de operare UNIX
- fişierul de afişare a erorilor cu descriptorul asociat 2 (stderr).
Pentru a redirecta intrarea/ieşirea standard se pot folosi caracterele:
< pentru redirectare intrare standard;
> pentru redirectare ieşire standard;
>> pentru redirectare ieşire şi adăugare la fişierul existent.
De exemplu
$ls -l > nf1
listare directori forma lungă în nf1 care pierde conţinutul iniţial;
$ls -l >> nf1
idem, dar conţinutul iniţial nu se pierde.
Caracterele speciale (wildcards) "*" şi "?" au aceeaşi semnificaţie ca la MS-DOS, operatorul
de negare fiind "!".
[..] specifică o listă de caractere ordonate sau identificate individual (separate prin virgulă).
De exemplu
$rm stud. [!a-m][2,4,9]
şterge fişierele cu numele stud ce nu conţin la extensie una din literele de la a la m urmate de 2, 4,
9 (exemplu: stud.x9)
Toate intrările de la tastatură sunt intorduse într-o zonă de buffer (arie de memorie rezervată
pentru stocarea caracterelor recepţionate) până când sunt solicitate de Shell, deci Shell nu
prelucrează imediat intrările; la un moment dat Shell va decodifica aceste intrări, pe parcursul căreia
nu va desfăşura alte activităţi; se poate astfel imagina că Shell execută două activităţi distincte
conectate printr-o conductă având rolul de:
- preluarea caracterelor de la tastatură şi memorarea lor ântr-un buffer;
- citirea caracterelor din buffer şi decodificarea lor.
Observaţie: Shell nu poate primi şi decodifica mai puţin de o linie de comandă completă. Bufferul
acceptă maxim 256 de caractere de la tastatură şi prin acţionarea tastei Enter se indică terminarea
liniei de comandă; în acel moment primul program are ieşirea gata, iar al doilea program are
intrările în aşteptare (sunt astfel satisfăcute cerinţele conductelor); când începe decodificarea, până
la terminarea acestuia (marcată prin $ la monitor), utilizatorul poate introduce caractere de la
tastatură în continuare, ele intrând în buffer; dacă se depăşesc 256 de caractere, se vor ignora fără
nici un avertisment.
Efectuarea corecţiilor pentru caracterele introduse, se poate realiza prin operaţii de:
- ştergere a unui caracter (prin "#" sau backspace introduse imediat după caracterele ce se
vor şterge);
- ştergerea unei linii (prin "@" sau CTRL/X după linia introdusă).
Prin comanda:
$stty erase % kill &
se pot înlocui caracterele de ştergere "#" cu "%" şi "@" cu "&".
Dacă se va introduce comanda:
$stty
în urma execuţiei, se va afişa:
- viteza terminalului exprimată în bauds (bytes/s) care poate fi modificată;
- caracterele de ştergere erase='#', kill='@';
- verificarea imparităţii, a terminatorului de linie şi a ecoului caracterelor introduse.

6.3.3. Multitasking şi aşteptare


Comanda
$who
arată care utilizator este conectat, pe ce terminal şi la ce moment.
UNIX permite multitasking (mai multe task-uri ce se execută concomitent) ceea ce implică
apariţia prompter-ului $ fără a aştepta execuţia completă a task-ului lansat în execuţie şi
posibilitatea lansării altei comenzi; pentru a specifica execuţia (fără aşteptarea terminării) unui task

102
Sisteme operaţionale
se foloseşte caracterul & astfel:
$comanda1 &
31
$comanda2
la care Kernel arată numărul de identificare al procesului (pid-process identification), de exemplu
31; fără a aştepta terminarea execuţiei comandă1 Shell furnizează prompterul $ pentru a introduce
altă comandă, comenzile 1 şi 2 executându-se concomitent.
Dacă prima comandă este un task în execuţie iar comanda2 este un program interactiv (de
exemplu, editorul vi), comanda2 se va încheia de către utilizator când va termina editarea, iar
task-ul lansat prin comanda11 este neinteractiv (se mai numeşte proces background deoarece
execuţia sa este invizibilă în timpul cât utilizatorul este ocupat cu editorul vi).
Dacă utilizatorul doreşte oprirea task-ului background va specifica acest lucru prin
comanda:
$kill 31
unde 31 este numărul de identificare al procesului (pid-ul).
Observaţie: pot fi lansate în execuţie mai multe procese background.
Comanda
$ps (process status)
arată ce procese au fost lansate în execuţie, prin ce comandă şi cât timp au fost executate, care sunt
în execuţie, pentru care utilizator, etc.

6.3.4. Conducte şi linii de conducte


Shell permite comunicarea între procese prin conducte (pipes). Conductele sunt canale de
date ce conduc ieşirea unui program către intrarea altui program, fără crearea unor fişiere
intermediare; se utilizează în acest scop caracterul "¦".
De exemplu
$who¦lpr
ieşirea la imprimantă (prin spooler-ul imprimantei -lpr) a utilizatorilor conectaţi, echivalează cu
secvenţa:
$who > fis
$lpr < fis
$rm fis
Atunci când se specifică o conductă (două sau mai multe procese), Kernell startează
execuţia ambelor procese ca şi cum ar fi procese background, cele 2 procese executându-se
sincronizat, aşteptând ieşirile pentru intrări.
De exemplu
$who¦sort¦lpr
reprezintă o linie de conducte (pipeline) unde:
who va produce la ieşire toţi utilizatorii conectaţi;
sort sortează alfabetic;
lpr scrie la imprimantă prin spooler.

6.3.5. Limbajul de programare Shell


O secvenţă de comenzi Shell poate fi constituită ca program (numit procedură Shell) care
poate fi memorat în fişiere asemănător programelor scrise în diverse limbaje şi executate la cerere.
Prin comanda:
$sh [nf]
este apelată o procedură Shell ce conţine intrările în fişierul specificat prin numele nf;
- dacă nf lipseşte, implicit se consideră fişierul standard de intrare (tastatura);
Această comandă implică două copii Shell: una la pornirea sistemului, iar cealaltă la solicitarea
execuţiei procedurii (prima procedură Shell preia intrări de la tastatură, iar a doua procedură preia
intrările din fişierul nf).

103
Capitolul 6 – Sistemul de operare UNIX
O variabilă Shell se poate declara prin:
$variabila=valoare
iar referirea variabilei se face prin includerea înaintea numelui ei, a caracterului "$".
De exemplu:
$ruta=/usr/user1
$cd $ruta
unde $ruta este o variabilă ce substituie calea /usr/user1.
Utilizarea Shell-ului ca limbaj de programare permite execuţia condiţionată a unor comenzi,
ce se realizează prin testarea indicatorilor de stare poziţionaţi după execuţia unei comenzi în funcţie
de care (True, False) se execută o acţiune.
Structura alternativă if:
if grup_condiţii
then grup_comenzi_1
[elif grup_comenzi_2]
else grup_comenzi_3
fi
ude fi este identificatorul de încheiere a structurii alternative;
Structura alternativă case:
case variabilă in
varianta 1)grup_comenzi_1;;
varianta 2)grup_comenzi_2;;
.
.
.
varianta n)grup_comenzi_n;;
esac
Structura repetitivă for:
for variabilă [in valoare1 valoare2 ... valoaren]
do
grup_comenzi
done
unde variabilă ia valori din lista specificată prin valoare1 valoare2 ... valoaren; dacă valoare1
valoare2 ... valoaren lipsesc, variabilă va lua pe rând valorile specificate în procedură ca
parametrii; done este terminator de buclă.
Structura repetitivă while:
while grup_condiţii
do
grup_comenzi
done
unde done este terminator while;
Structura repetitivă until:
until grup_condiţii
do
grup_comenzi
done

6.3.6. Fişiere de comenzi indirecte


Una dintre cele mai importante funcţii ale Shell-ului o constituie executarea fişierelor de
comenzi indirecte (numite şi script-uri).
Un fişier de comenzi indirecte este o procedură Shell constituită ca un fişier text, care
conţine comenzi similare ce pot fi introduse interactiv.
Avantajul utilizării unui astfel de fişier constă în execuţia unui set complex de comenzi prin

104
Sisteme operaţionale
simpla introducere a numelui fişierului care se comportă ca orice fişier executabil, fără a avea cele
trei forme (sursă, obiect, executabil).
Puterea limbajului de comandă constă în posibilitatea de a utiliza diferite programe -tratate
ca instrucţiuni, împreună cu mecanismele de interconectare puse la dispoziţie de către Shell.
Un program lansat în execuţie primeşte anumite şiruri de caractere ce formează mediul
asociat; prin Shell, se pot introduce şi alte şiruri de caractere în mediu.
Mediul curent ce aparţine interpreterului de comenzi se afişează cu comanda:
$env
(environment-echipament)
ce conţine următoarele valori mai semnificative:
- $HOME= referă catalogul alocat utilizatorului (home directory);
- $SHELL= interpreterul de comenzi utilizat;
- $LOGNAME= numele utilizatorului în sistem;
- $PATH= defineşte lista directorilor ce sunt parcurşi de Shell în
căutarea fişierelor executabile corespunzător comenzii
introduse;
- $MAIL= numele fişierului ce conţine mesajele primite de utilizator
prin e-mail;
- $TERM= tipul terminalului;
- $PS1= defineşte prompter1 asociat interpreterului (implicit este
caracterul "$");
- $PS2= stabileşte al doilea prompter de continuare a unei comenzi
(implicit este caracterul ">").
Într-o linie de comandă construcţiile prefixate cu $, sunt înlocuite cu valorile variabilelor
de mediu sau variabile Shell; interpreterul Shell conţine şi anumite variabile predefinite, având
următoarea semnificaţie:
- $0 este numele Shell-ului sau fişierului de comenzi indirecte, ca procese
curente în curs de execuţie;
- $1, $2, ... , $9 sunt parametrii transmişi procedurilor Shell pe linia de
comandă;
- $# numărul de parametri poziţionali ai unei proceduri Shell;
- $? codul de stare al ultimei comenzi executate;
- $$ identificator de proces al Shell;
- $! identificatorul ultimului proces lansat în background;
Exemplu
$PS1="$LOGNAME@`hostname`>"
va avea ca efect afişarea prompter-ului:
userlogin@hostname>

$PS1="`pwd`>"
va seta prompter-ul la afişarea căii curente asemănător cu MS-DOS.
Observaţii:
- cuvintele precedate de $ sunt înlocuite cu valoarea variabilei respective (substituirea variabilelor)
incluzându-le şi pe cele încadrate de ` `(substituirea comenzilor);
- rezultatul oricărei comenzi setează variabila de mediu $? prin:
0 - execuţie normală;
=0 - eroare de execuţie.
Este posibil a se solicita execuţia unei liste de comenzi ca un proces separat prin:
(listă_comenzi)
De exemplu:
$pwd;(cd /usr/user1;pwd);pwd
prin care efectul comenzii cd este anulat de întâlnirea parantezei închise, deoarece cd a schimbat

105
Capitolul 6 – Sistemul de operare UNIX
calea numai pentru subprocesul lansat pentru executarea acelei liste de comenzi.
Dacă se doreşte execuţia listei de comenzi în cadrul unui proces curent, atunci se va specifica acest
lucru prin:
{listă_comenzi}
Exemplu:
$pwd;{cd /usr/user1;pwd);pwd
prin careefectul comenzii cd se păstrează şi după terminarea listei de comenzi cuprinse între
acolade.
Prin:
nume () {listă_comenzi}
se poate defini o funcţie Shell compusă dintr-o listă de comenzi inclusă între acolade; apelul funcţiei
în acest caz se face prin
nume [parametru]
când parametrii poziţionali $1, $2, ... , $9 sunt iniţializaţi cu valorile parametrilor actuali din linia
de comandă.
Exemple
1) Pentru afişarea conţinutului unui director al cărui nume este transmis ca parametru,
unscript posibil ar putea fi:
$dir (){
>if [ $1 ==] then
>echo "Apel incorect"
>return 1
>else
>(cd $1;pwd)
>ls -al $1
>return 0
>fi
>}
care se va utiliza prin:
$dir /usr/user1
2) Secvenţa următoare încearcă să lanseze în execuţie prog1.x; dacă nu-l găseşte, se va afişa
mesajul "Nu exista fisierul prog1.x"
if [-x $HOME/prog1.x]
then
$HOME/prog1.x
else
echo "Nu exista fisierul prog1.x"
fi
[-x] afişează comenzile şi argumentele rezultatelor execuţiei, prin substituiri efectuate înaintea
execuţiei.
3) Secvenţa:
case $1 in
a)x=alfa;;
b)x=beta;;
g)x=gamma;;
*)x=$1;;
esac
echo $x
va afişa ce se va afla în parametrul specificat prin execuţia procedurii ($0 procedura, $1 primul
parametru):
alfa dacă parametrul conţine a;
beta dacă parametrul conţine b;

106
Sisteme operaţionale
gamma dacă parametrul conţine g;
conţinut $1 dacă parametrul nu conţine a, b sau g;
4) O secvenţă pentru anumită opţiune:
$echo "introduceti Da sau Nu ?:\c"
read raspuns rest
case raspuns in
[Dd] *) echo "Ati raspuns cu Da";;
[Nn] *) echo "Ati raspuns cu Nu";;
*) echo "Nu ati raspuns nici Da nici Nu";;
esac
read a1 [a2...] citeşte o linie de la fişierul standard de intrare, a1 primind valoarea primului cuvânt
din linia de comandă, a2 pe al doilea, ultimul argument primind restul liniei (rest).
5) Copierea a 3 fişiere specificate în apelul procedurii se poate realiza pe baza secvenţei:
for i in 1 2 3
do
cp fis$1 /tmp
done
6) Afişarea parametrilor poziţionali:
while [ $1 != ]
echo $1
shift
done
7) Exemplu de comandă vidă ca argument al buclei while care va returna codul 0 de eroare:
while:
do
if whoăgrep $1 /dev/null
then
echo "$1 este prezent"
exit
else
sleep 120
fi
done
Se va executa bucla al cărei nume este dat de primul argument al procedurii
Prezentarea interpreterului de comenzi Shell a avut la bază varianta clasică: Bourne Shell în care
sunt scrise majoritatea fişierelor de comenzi.
CShell (csh) are o sintaxă mai apropiată de limbajul C oferind faţă se Bourne Shell (sh)
posibilitatea de a lucra cu variabile structurate, capacitatea de a memora şi reutiliza ultimele
comenzi introduse, precum şi posibilitatea de a defini şi utiliza pseudonime pentru facilitarea
introducerii unor comenzi mai complexe.
De exemplu comanda:
%alias lista ' ls -aFx \!*'
introduce pseudonimul lista în locul comenzii ls -aFx, pseudonim ce poate fi utilizat ulterior ca o
comandă.
O altă facilitate importantă o constituie posibilitatea trecerii unui proces din foreground la
background prin utilizarea comenzilor fg (foreground) respectiv bg (background).
KornShell (ksh) derivat din sh, a preluat o serie de caracteristici ale csh; printre facilităţi
se pot menţiona:
- editarea liniilor de comandă similar cu editarea textelor la vi sau emacs;
- utilizează pseudonimelor din csh, extinzând sfera de cuprindere şi la subprograme constituite din
funcţii Shell;
- grad înalt de portabilitate;

107
Capitolul 6 – Sistemul de operare UNIX
- posibilitatea utilizării de variabile structurate asemănător csh.

6.4. Nucleul sistemului de operare UNIX (KERNEL)

Aşa cum s-a menţionat în acest capitol, o parte a programelor de comandă şi control sunt
rezidente în RAM alcătuind nucleul sistemului de operare (Kernel) încărcat odată cu pornirea
sistemului de calcul.
Nucleul sistemului se operare UNIX este acea parte a programelor de comandă şi control
care activează şi controlează:
- alocarea timpului maşină;
- spaţiul de memorie;
- canalele de comunicaţie către diverse taskuri executate de utilizator la un moment dat.

6.4.1. Structură şi funcţii


Nucleul sistemului de operare este alcătuit din următoarele componente:
- programul supervizor central;
- rutine de serviciu pentru o serie de activităţi cum ar fi de exemplu, scrierea în memorie, gestiunea
ceasului sistem, etc.
În mod normal, utilizatorul foloseşte comenzile Shell care dirijează execuţia programelor
dorite sub supervizorul Kernel, acesta fiind astfel invizibil utilizatorului. Pentru utilizator, sistemul
de operare UNIX apare ca fiind alcătuit din:
- un set de programe, fiecare corespunzând unei anumite comenzi;
- Shell-ul care dirijează comenzile şi coordonează execuţia programelor utilizatorului.
Practic însă, sistemul de operare UNIX este compus din :
- un set de programe de servicii care execută funcţiile legate de sarcinile hardware şi software;
- Kernel-ul care coordonează execuţia programelor de servicii, specificate sub forma unor comenzi
adresate către Shell.
Programele de servicii sunt apelate atunci când sunt necesare (zona de tranziente), în timp
ce supervizorul este rezident în RAM, constituind mediul software de bază pentru orice evenimente
din sistem.

Principalele funcţii îndeplinite de nucleul sistemului de operare:


- planificarea, coordonarea şi gestionarea execuţiei proceselor;
- furnizarea de servicii de sistem cum sunt: tratarea operaţiilor de intrare/ieşire şi gestiunea
fişierelor;
- manipularea operaţiilor dependente de hardware, întreruperile şi funcţiile de sistem;
- gestiunea memoriei.
Nucleul UNIX este alcătuit din aproximativ 10000 de linii ce constituie codul programului
care, în funcţie de sistem, se transformă într-un număr mai mare sau mai mic de cuvinte maşină (sau
bytes); dintre acestea, 5 - 10% din totalul codului programelor (Shell, utilitare, KERNEL şi
celelalte) este variabil funcţie de sistemul de calcul şi de setul de utilitare (fig. 6.8.).
Aşa cum rezultă din fig. 6.8, o mare parte din aceste programe este destinată gestiunii
memoriei şi gestiunii proceselor, această parte evidenţiind:
- conţinutul stivei;
- conţinutul registrelor sistemului;
- detalii de mediu, când procesele sunt introduse în memorie şi răspund la întreruperile
procesorului.
Această parte conţine 7 - 8000 linii codul programelor scrise în limbajul C (deci portabilă
pe orice sistem de calcul). Includerea acestei părţi în nucleu se justifică prin necesitatea unui

108
Sisteme operaţionale
răspuns foarte rapid.

Programe utilizator

Limbaj de asamblare Limbajul C

Biblioteci

Interfaţa cu funcţiile
de sistem (apeluri)

Sistem de gestiune
a fişierelor (SGF)
Sistem de
gestiune a
Gestiunea tampoanelor proceselor
cache

Gestiunea
Module de control memoriei
periferice
Bloc Caracter

Module de control
hardware

Programe utilizator

Fig. 6.8. Structură Kernel


Altă parte a Kernel-ului conţine driverele dispozitivelor periferice de intrare/ieşire
constituite din programe ce realizează:
- controlul adreselor de citire/scriere, adresarea registrelor de date ale perifericelor de
intrare/ieşire;
- manipularea întreruperilor generate de aceste dispozitive;
- efectuarea recuperării erorilor.
Conţine aproximativ 1000 linii codul programelor scrise tot în limbajul C, dar acest număr
este variabil în funcţie de numărul perifericelor de intrare/ieşire.
Primitivele de sistem sunt specifice fiecărui sistem de calcul (scrise în limbaj de asamblare-
aproximativ 1000 linii codul programului), ele conţinând:
- operaţii de intrare/ieşire de bază;
- comutarea execuţiei între procese;
- permiterea sau inhibarea întreruperilor hardware;
- resetarea priorităţilor întreruperilor;
- alte operaţii.
Accesarea primitivelor de sistem se realizează prin apeluri (directive) de sistem (system
calls) din programe în C sau în limbaj de asamblare.
6.4.2. Procese şi stări
Un sistem de calcul poate să lucreze la un moment dat în două moduri:

109
Capitolul 6 – Sistemul de operare UNIX
- utilizator, când execută un program sau proces;
- sistem (Kernel), când execută un cod sistem.
Comutarea între modul utilizator şi KERNEL se realizează prin următoarele mecanisme:
- ceasul- care întrerupe orice alt program cu frecvenţa de 60 Hz, rutina de ceas permiţând
reevaluarea priorităţilor proceselor şi implicit schimbarea procesului; în absenţa altor întreruperi,
ceasul realizează divizarea timpului, ceea ce permite ca sistemul să fie împărţit între mai mulţi
utilizatori;
- apeluri de sistem prin care utilizatorul solicită diverse servicii oferite de sistemul de
operare; cele care realizează operaţii de intrare/ieşire conducând la suspendarea procesului apelator
pe durata transmiterii datelor;
- cereri de serviciu ale perifericelor de intrare/ieşire.
Procesul este conceput fundamental de organizare a sistemului de operare UNIX. În esenţa,
un proces reprezintă un program în execuţie. Pentru un program activ, pot exista mai multe procese
active- numite instanţe:
- din punct de vedere al procesului, operaţiile nucleului sunt prioritare;
- din punct de vedere al nucleului, procesele sunt structuri de date catalogate.
Informaţiile necesare procesului sunt memorate în:
a) tabela proceselor constituită în memorie, ce conţine o intrare pentru fiecare proces detaliind starea
acestuia:
- localizarea procesului;
- adresa de memorie şi adresa de evacuare;
- mărimea procesului;
- numărul de identificare;
- identificatorul utilizat;
b) tabela utilizator, care este ataşată fiecărui proces activ la rutinele nucleului lui (fig.6.9).
Crearea unui proces implică astfel iniţializarea unei intrări în tabela procesului, care
iniţializează o tabelă a utilizatorului creând totodată textul real şi datele pentru proces.

Proces activ

Zona de date şi
Zona de date a
instrucţiuni a
procesului
utilizatorului

Spaţiul de adresă al Spaţiul de adresă al


Kernel-ului utilizatorului

110
Sisteme operaţionale
Fig. 6.9. Iniţializarea tabelei utilizator

Schimbarea stării unui proces (se execută, aşteaptă, este evacuat, este încărcat, primeşte un
semnal) este o activitate ce se focalizează pe tabela procesului (fig. 6.10.):

RUN – mod utilizator


apel sistem
întrerupere READY
Execuţie peemptiv
RUN – mod utilizator preemptiv
întreţinere
planificare
proces
EXIT WAIT READY
RAM
suficient

swap swap
out CREAT fork
in
Memorie internă
RAM
RAM
Memorie externă insuficient
ca suport de WAIT READY
evacuare suspendată suspendată
(swapping)

Fig. 6.10. Tranziţia stărilor unui proces

- terminarea unui proces implică eliberarea intrării sale în tabela proceselor, putând fi folosită pentru
alte procese;
- când procesul este activ, au loc alte evenimente, de exemplu aşteptarea terminării unei operaţii de
intrare/ieţire;
- pe durata suspendării unui proces, tabela utilizatorilor nu este accesată sau modificată;
- dacă procesul este evacuat pe disc, este evacuată şi tabela utilizator în cadrul imaginii procesului;
tabela utilizator (structură a utlizatorului) conţine în acel moment:
- numele de identificare al utilizatorului şi al grupului din care face parte, pentru stabilirea
drepturilor de acces;
- pointerii din tabela de fişiere existente în sistem, pentru toate fişierele deschise;
- un pointer către inod-ul directorului curent în tabela de inod-uri;
- o listă a răspunsurilor pentru diverse semnale.
Informaţia curentă despre un proces se schimbă prin execuţia directivei chdir când este schimbată
valoarea pointerului către inod-ul directorului curent.

6.4.3. Coordonarea şi gestiunea proceselor


Într-un sistem de operare multiutilizator, se pot executa mai multe programe simultan.
Existând o singură CPU, în realitate un singur program se execută efectiv la un moment dat, iar
celelalte se vor executa atunci când CPU le va acorda cuante de timp. În timpul execuţiei unui
program, celelalte programe sunt rezidente în RAM, cu condiţia ca nici unui să nu solicite toată
memoria. De aici decurg 2 sarcini ale nucleului:
- planificarea proceselor - împărţirea de cuante de timp între procese;
- gestiunea memoriei - atribuirea de zone de memorie liberă la procese şi eventuala evacuare

111
Capitolul 6 – Sistemul de operare UNIX
sau încărcare a unui proces în/din disc.

Planificarea proceselor
Iniţierea unui proces poate fi efectuată numai de către un alt proces activ. Când este conectat
primul utilizator, Kernel-ul asigură o copie a Shell-ului ce se rulează doar pentru el, ivindu-se
existenţa unei alte structuri ierarhice de procese create printr-un mecanism numit bifurcaţie (fork)
prin care Kernel înlocuieşte un proces existent, prin două procese:
- procesul iniţial (părinte);
- procesul iniţiat de procesul iniţial (fiu), care împarte (partajează) toate fişierele cu procesul
părinte.
După bifurcaţie, ambele procese se execută independent; excepţie: când se solicită explicit
ca procesul părinte să aştepte terminarea procesului fiu prin directiva WAIT; în continuare, procesul
fiu poate genera la râul lui, o nouă bifurcaţie (fig.6.11.).

fork 0 shell fork 0 shell

fork 1 proces 1
proces 1

fork 2 proces 2

proces 3

Fig. 6.11. Mecanismul fork

De remarcat ca proces3 are acces la toate fişierele deschise de procesele anterioare, în timp
ce invers nu se permite accesul. Prin urmare, fişierele sunt accesibile de pe nivelurile situate la
periferia ierarhiei.
Când Shell iniţiază un proces, bifurcaţia este aranjată astfel încât Shell să aştepte terminarea
procesului (procesul este executat în foreground). Dacă nu aşteaptă, înseamnă că Shell a dat naştere
altor procese mai puţin prioritare (procese executate în background) adăugând după comanda
corespunzătoare semnul &.

Alocarea memoriei
Fiind un sistem de operare multitasking, UNIX ţine evidenţa taskurilor concurente şi
menţine controlul diverselor programe care sunt rezidente în RAM la un moment dat, furnizând şi
informaţii privind suficienţa spaţiului de memorie:
- în mod normal, fiecare program este încărca în diverse zone de memorie RAM;
- în modul de operare cu divizarea timpului (time-sharing), poate opera fără evacuarea
conţinutului memoriei pe disc; fiecare program se execută în cuanta de timp alocată rămânând în
memorie numai programele a căror execuţie nu s-a încheiat (practic, numai registrele sistemului
sunt divizate între programe, astfel că evacuarea programelor implică de fapt, numai evacuarea
conţinutului registrelor);
- pe durata execuţiei proceselor, UNIX alocă porţiuni distincte de RAM pentru:
* segmentul de cod (instrucţiunile programului) protejat la scriere;
* segmentul de date ce conţine toate datele definite de utilizator: valori, variabile, etc.;
* segmentul de stivă care conţine toate informaţiile de sistem necesare menţinerii intacte a unui
proces, atunci când este evacuat din RAM pe disc sau când este încărcat în RAM de pe disc.
Această divizare este realizată din două motive:
- evacuarea segmentului de cod implică reducerea cantităţii de informaţii necesară a fi evacuate;

112
Sisteme operaţionale
fiind de tip read-only, acesta este identic cu imaginea sa din disc, deci nu trebuie rescris când se
evacuează;
- Shell este încărcat pentru fiecare utilizator, deci există atâtea copii Shell, câţi utilizatori sunt
conectaţi; dacă mai mulţi utilizatori solicită un program (segment de cod), nu este necesară copierea
acestuia deoarece el poate fi folosit simultan; este suficient să se creeze şi când este necesar, să se
evacueze un segment de date şi un segment de stivă pentru fiecare utilizator.

Divizarea timpului şi resurselor


În sisteme de operare multitasking, procesele individuale nu sunt executate până la
terminare, având alocate cuante de timp de către procesor într-o planificare de tip Round- Robin;
cuantele de timp nu sunt egale, lungimea depinzând de prioritatea taskului, de accesibilitatea datelor
de intrare solicitate şi a perifericelor de ieşire.
Alocarea se face având în vedere maximizarea utilizării resurselor hardware, cu respectarea
priorităţii taskurilor critice.
Priorităţile sunt periodic reînnoite astfel:
- taskurile cu timp de execuţie mai mare, vor avea prioritate mai scăzută;
- taskurile de tip întrebare-răspuns vor avea răspuns instantaneu;
- taskurile ce constă în schimbarea de caractere au cea mai scăzută prioritate.
După expirarea timpului alocat, taskul este evacuat într-un fişier de evacuare pe disc unde
va rămânea până i se dă din nou controlul; în acel moment, imaginea salvată anterior se reîncarcă
în RAM; ea va cuprinde:
- conţinutul părţii de memorie inscriptibilă;
- conţinutul registrelor;
- numele directorului curent;
- lista fişierelor deschise de procesul considerat.
În acest sens, sunt utile prezentarea apelurilor de sistem:
i=fork()
care permite crearea unui nou proces fiu, având active procesele părinte şi fiu. Practic, se introduce
un nou proces în tabela de procese a sistemului UNIX, dar nu se lansează în execuţie nici un
program. Se crează astfel o bifurcaţie în care procesul fiu este realizat ca o copie a procesului
părinte, nefiind necesară evacuarea programului din memorie ci doar
copierea zonelor de date.
j=execl(nume,arg1,arg2,...,argn,o)
solicită execuţia unui alt program; nume,arg1,arg2,...,argn sunt pointeri către şiruri de caractere
care specifică numele programului şi numele argumentelor sale; o - pointer către o zonă de pointeri,
fiecare din ei punctând câte un şir din mediu.
Prin acest apel, nucleul va determina ce program original să fie înlocuit cu alt program.
Secvenţa fork-execl crează o copie a procesului părinte, apoi înlocuieşte procesul fiu cu programul
care doreşte să-l execute (procesul fiu nu este alterat de execl).
k=wait(status)
determină procesul părinte să aştepte terminarea execuţiei procesului fiu;
status este pointer la o valoare întreagă, iar k - valoarea returnată ca număr de identificare al
procesului fiu terminat.
O aplicaţie frecventă a lui execl se întâlneşte la înlănţuirea programelor; de exemplu, o
compilare în mai mulţi paşi implică încărcarea programului şi datelor pentru execuţie la primul pas;
în continuare, se procedează asemănător şi la al doilea pas; o dată ce primul pas a fost executat
complet, nu există nici un motiv de a se întoarce la el, deci a se suprascrie memoria ocupată la prima
trecere cu programul şi zona de date.
Înlănţuirea ne este totdeauna practică pentru secvenţe în care părţi din program solicitate
sunt dependente de date; astfel, procesul părinte crează un proces fiu (prin fork) cu cerere de
aşteptare (wait); procesul fiu va exista ca proces evacuabil şi va avea acces la acelaşi spaţiu de
memorie ca şi procesul părinte; prin execl, procesul fiu poate executa următorul program, putând

113
Capitolul 6 – Sistemul de operare UNIX
el însuşi să fie rescris; deci, când procesul fiu modificat şi suprascris va fi încheiat, controlul va
reveni procesului părinte.
Deoarece numărul de procese concurente nu este limitat, această schemă permite execuţia
unui mare număr de programe cu condiţia să fie posibil a se divide în programe şi date astfel încât
fiecare execuţie să încapă în RAM.

6.4.4. Sincronizarea proceselor


Sincronizarea proceselor poate fi sub controlul sistemului de operare prin intermediul
conductelor de comunicaţie (pipe) sau al utilizatorului, prin intermediul evenimentelor care
reprezintă modul de determinare al momentului în care un proces devine gata pentru execuţie
(READY).
La un moment dat un proces se află în execuţie; blocarea procesului se poate realiza prin
funcţia sleep, moment în care nucleul trece toate procesele care îndeplinesc condiţii stabilite, în
starea gata de execuţie; dintre acestea, numai un singur proces se va lansa în execuţie, celelalte fiind
trecute din nou în starea de blocare.
Mecanismele de sincronizare prin intermediul evenimentelor privesc sincronizarea prin
intermediul semnalelor sau al semafoarelor, respectiv al directivelor de sistem.

Sincronizarea prin intermediul semnalelor


Aşa cum s-a menţionat anterior, la îndeplinirea condiţiilor prestabilite pentru lansarea în
execuţie, nucleul trece procesele în starea gata de execuţie prin intermediul funcţiei wakeup.
O altă modalitate de sesizare a unor evenimente apărute în sistem o constituie plasarea unor
biţi de atenţie (lock-bit) în tabela de procese, nucleul efectuând verificarea activării bitului
corespunzător care se asimilează cu emiterea unui semnal la trecerea din modul sistem în modul
utilizator înainte, respectiv după blocarea fiecărui proces.
La apariţia unui semnal se pot ivi următoarele acţiuni ce se execută în continuare:
- terminarea procesului, când se afişează de regulă, şi imaginea procesului în memorie în
fişierul core;
- acţiuni specifice care sunt desemnate prin funcţia:
signal(nr_semnal,nr_rutină_tratare_semnal)
De remarcat că după tratarea semnalului, se revine la valorile standard ale acţiunilor ce se
vor executa ulterior.
Un caz particular îl constituie utilizarea funcţiei de sistem wait, care permite blocarea unui
proces până la terminarea unuia dintre fiii acestuia sau până la recepţionarea unui semnal:
p=wait(&stare)
unde p reprezintă valoarea returnată a funcţiei (identificatorul de proces al fiului):
-1 dacă s-a recepţionat un semnal, o eroare sau s-a terminat deja execuţia fiilor procesului;
-numărul de identificare al fiului a cărui execuţie s-a terminat;
stare adresa unde se specifică modul de terminare al execuţiei iniţiate de fiu.
Pentru sincronizarea procesului cu un anumit fiu se poate folosi:
while(wait(&stare)!=pid)
care reia ciclic testarea terminării execuţiei acţiunii fiului cu identificatorul pid, ceea ce evident
implică blocarea procesului apelant (tatăl).

Sincronizarea prin semafoare


Particularitatea sincronizării prin intermediul semafoarelor constă în aceea că se pot executa
operaţii pe o mulţime de semafoare print-un singur apel de funcţie. Structurile de date asociate
semafoarelor sunt constituite din:
- identificatorul mulţimii de semafoare;
- descrierea mulţimii de semafoare care include:
* utilizatorii care au acces la mulţimea de semafoare;
* numărul de semafoare al mulţimii;

114
Sisteme operaţionale
* momentul ultimei accesări şi al ultimei actualizări al mulţimii semafoarelor;
- descrierea semaforului care cuprinde:
* valoarea semaforului;
* identificatorul ultimului proces care a accesat semaforul;
* numărul proceselor care aşteaptă ca valoarea semaforului să devină mai mare decât valoarea sa
curentă;
* numărul proceselor care aşteaptă ca valoarea semaforului să devină zero.
Algoritmul de execuţie al unei operaţii pe semafoare se desfăşoară astfel:
a) dacă semaforul operaţiei este mai mare ca zero, atunci acesta se va aduna la valoarea semaforului;
b) dacă semaforul operaţiei este zero atunci:
- dacă valoarea semaforului este zero, funcţia se termină imediat;
- dacă valoarea semaforului este zero şi indicatorii de condiţie (flags) arată NOWAIT, funcţia
se termină imediat; în caz contrar:
* se incrementează numărul de procese care aşteaptă ca valoarea semaforului să fie zero;
* se suspendă procesul curent până când valoarea semaforului devine zero (prin decrementarea
numărului de procese ce aşteaptă ca valoarea semaforului să fie zero) sau se primeşte un semnal
prin care se efectuează aceeaşi decrementare şi se reia procesul.
c) dacă semaforul operaţiei este mai mic decât zero şi:
- dacă valoarea semaforului este mai mare sau egală cu modulul semaforului operaţiei,
atunci din valoarea semaforului se va scădea valoarea absolută a semaforului;
- dacă valoarea semaforului este mai mică decât modulul semaforului operaţiei şi indicatorii
de condiţie specifică NOWAIT, funcţia se va termina imediat; în caz contrar:
* se incrementează numărul proceselor care aşteaptă ca valoarea semaforului să devină mai mare
ca valoarea sa curentă, suspendându-se procesul curent până când valoarea semaforului devine mai
mare sau egală cu valoarea absolută a semaforului operaţiei (când numărul de procese ce aşteaptă
ca valoarea să devină mai mare ca valoarea curentă se decrementează, iar din valoarea semaforului
se va scădea valoarea absolută a semaforului operaţiei sau se primeşte un semnal (când numărul de
procese care aşteaptă ca valoarea semaforului să devină mai mare decât valoarea curentă se
decrementează, iar procesul suspendat se reia).

Sincronizarea prin directive de sistem


Sincronizarea se poate realiza şi printr-o serie de funcţii disponibile utilizatorului cum sunt:
kill(identificator_proces,număr_semnal);
care realizează trimiterea unui semnal pentru un proces;
pause();
realizează blocarea procesului curent până la primirea unui semnal;
allarm (număr_secunde);
trimite un anumit semnal (întrerupere de ceas) după intervalul de timp specificat în număr de
secunde.

6.4.5. Comunicaţia între procese


La sistemele de operare UNIX este necesară realizarea unor modalităţi practice de
comunicaţie între procese; mecanismele actuale permit alternativele prezentate în continuare.

Comunicaţia prin fişiere


Comunicaţia prin intermediul fişierelor oferă avantajul simplităţii de realizare şi o
modalitate directă prin care se poate efectua comunicarea.
Dezavantajul constă în aceea că este sarcina programatorului să controleze accesul
concurent, prin testarea ciclică a momentului eliberării zonei critice.
Exemplu
while ((f=creat("fişier",0111))<0) sleep(2);
< zona critică >

115
Capitolul 6 – Sistemul de operare UNIX
unlink("fişier");
prin care primul proces care reuşeşte să creeze fişierul, va trece la execuţia instrucţiunilor din
regiunea critică; până ce nu va executa funcţia unlink, orice alt apel al funcţiei de creare a unui fişier
(creat), va bloca procesul prin apelul funcţiei sleep.

Comunicaţia prin fişiere de tip pipe


Fişierele de tip pipe sunt fişiere obişnuite la care însă operaţiile de citire/scriere se realizează
într-o ordine prestabilită FIFO (First Input First Output); aceste fişiere sunt tranzitorii, datele citite
într-o manieră stricta a ordinii în care au fost scrise respectând regula de sincronizare
producător/consumator (o dată citită dintr-un fişier nu mai poate fi reluată, iar memorarea se face
ca la orice fişier utilizând însă numai blocuri adresate direct).
La UNIX există două tipuri de fişiere pipe, fiecare generând anumite particularităţi ale
modului în care se realizează comunicaţia:
1) fişiere fără nume care se crează cu directiva
pipe(p)
unde p reprezintă descriptorul de fişier astfel:
p[0] pentru citire
p[1] pentru scriere.
De remarcat că în blocurile alocate fişierelor (de regulă numai primele 10 blocuri de disc) alocarea
se realizează conform algoritmului Round-Robin.
Scrierea măreşte dimensiunea fişierului iar citirea o micşorează; dacă un proces încearcă să
scrie un articol ce depăşeşte capacitatea fişierului, nucleul execută transferul până la umplerea
acestuia, apoi blochează procesul; când se citeşte din acest fişier se poate scrie din nou, dar s-ar
putea să existe mai multe procese care aşteptau scrierea în fişier ducând la apariţia competiţiei.
Comunicaţia prin fişier pipe fără nume se poate realiza numai între un proces şi fiii săi,
deoarece fişierul pipe nu se identifică decât prin descriptorul său şi intrările în tabela cu fişiere
deschise în zona de procese ale utilizatorului, aceasta fiind moştenită de către fiii săi; astfel, zonele
de date ale proceselor nu pot fi partajate în mod normal.
2) Fişierele pipe cu nume oferă câteva facilităţi comparativ cu fişierele pipe fără nume:
- se crează într-un director ca orice fişier obişnuit prin directiva mknod cu tipul fişierului
010000;
- la deschiderea sa prin directiva open, se poate specifica blocarea procesului ce încearcă să
deschidă pentru citire un fişier pipe nedeschis anterior pentru scriere;
- se va şterge explicit prin directiva unlink;
- datorită unui nume de identificare este permisă accesarea lui de către orice procese
independente.
Comunicarea prin zone de memorie comune
Zonele de memorie comune permit proceselor să utilizeze în comun, o zonă de memorie prin
transferul unei zone din spaţiul virtual al proceselor; accesul este controlat integral de programator.
O zonă de memorie comună este definită prin:
- identificator;
- segment de memorie;
- o structură de date ce include:
* numărul de identificare al utilizatorului care a creat zona, al utilizatorului curent şi al grupului;
* dimensiunea segmentului;
* identificatorul procesului care a accesat zona de memorie;
* numărul de procese care partajează această zonă;
* alte informaţii.
Comunicarea prin cozi de mesaje
Principiul de comunicaţie prin intermediul cozilor de mesaje constă în comunicarea prin
intermediul unei cozi circulare de mesaje gestionată de nucleul sistemului de operare.
Transmiterea se realizează cu sincronizare, deci procesele ce solicită primiri de mesaje se

116
Sisteme operaţionale
vor bloca până ce recepţionează mesajul solicitat, iar cele ce doresc să emită, se vor bloca dacă nu
există nici un proces care să recepţioneze iar coada de mesaje este plină.
Mesajele ce se transmit sunt caracterizate printr-un tip (reprezentat printr-un număr la
alegere), iar recepţia se poate face prin specificarea tipului.

6.4.6. Gestiunea fişierelor speciale


Toate operaţiile de intrare/ieşire sunt privite ca operaţii cu fişiere, Shell nerecunoscând
existenţa unităţilor periferice, deci Kernel ascunde unităţile fizice reale sub forma unor fişiere
aparente.
Fiecare unitate fizică este înzestrată cu un program special (driver) care translatează
acţiunile solicitate de unităţile virtuale astfel încât utilizatorul poate comunica cu orice unitate
ataşată sistemului fără nici o deosebire, dacă aceasta dispune de driverul corespunzător.
Deoarece aceste fişiere sunt deosebite de fişierele utilizator, ele sunt referite ca fişiere
speciale de tip caracter sau bloc, fiind recunoscute două tipuri de unităţi periferice (disc şi
terminal) a căror inod-uri conţin:
- numărul major- indică tipul dispozitivului;
- numărul minor- indică numărul unităţii.
Fişierele disc sunt organizate fizic în blocuri de 512 bytes, fiecare fişier având alocat un
număr întreg de blocuri. Blocurile nu trebuie să fie neapărat contigue pe disc, spre deosebite de alte
sisteme ce impun acest lucru. Atribuirile standard pentru fişiere implicit sunt:
0 fişier standard de intrare - tastatură;
1 fişier standard de ieşire - ecranul terminalului;
2 ecranul de intrare al terminalului, ce serveşte gestionării mesajelor de eroare şi a
informaţiilor de diagnostic.
Identificarea fişierelor se realizează prin:
- intrările din directori care identifică fişierele printr-un număr de index asociat fiecărui fişier;
numărul de index pentru orice volum fizic, este punctator într-o altă tabelă rezidentă pe volum
(index-listă);
- intrările în lista de indecşi ale fiecărui volum, conţin un număr de intrări numite inod-uri, motiv
pentru care lista de indecşi se mai numeşte tabelă de inod-uri;
- un inod conţine o serie de informaţii cu privire la fiecare fişier:
* numărul de identificare al user care a creat fişierul;
* starea de protecţie a fişierului (ReadOnly,Open,etc);
* 13 cuvinte ce arată blocurile unităţii ocupate de fişier;
* dimensiunea fişierului;
* data la care a avut loc ultima modificare;
* de câte ori a fost referit în directori;
* biţii de identificare a directorilor, fişierelor speciale şi a fişierelor mari.
Tabela
I - list fişierelor
Director
Nume Număr
fişier index inod } 64 bytes
64
bytes

Fig. 6.12. Identificarea unui fişier pe disc

Corespondenţa nume fişier-index este disponibilă prin comanda ls-i şi se numeşte legătură
(link), aceasta servind drept mijloc de identificare şi gestiune a fişierului; alte comenzi ce afectează
legăturile:
mv - mută legătura;

117
Capitolul 6 – Sistemul de operare UNIX
ln - crează o legătură;
rm - şterge o legătură;
Când se lucrează cu un fişier în program, în RAM există o altă structură ce aparţine
nucleului (File Table) unde se copiază un inod din i-LIST, dar zona alocată în memorie va avea 64
B ai inod-ului plus o zonă ce conţine informaţii necesare în timpul lucrului (pointeri de
citire/scriere, contor pentru procesele ce folosesc fişierul, etc.).
Ca şi în MS-DOS, fişierele se identifică în program printr-un FD (File Descriptor). Fiecare
proces are o zonă de informaţii în care se păstrează toate FD - urile pentru fişierele deschise în
timpul lucrului şi o zonă de cod a procesului neaparţinând nucleului ci în UOF (User's Open File).
Accesul la sistemul de fişiere se face la trei nivele:
1) prin utilitare - nivelul 1;
2) prin funcţii de bibliotecă <stdio.h> - nivelul 2 care apelează 3);
3) prin apeluri de sistem - nivelul 3: open, close, read, write prin care se gestionează fişierele la cel
mai scăzut nivel.
Pentru reducerea numărului operaţiilor de intrare/ieşire la periferice ce lucrează la nivel de
bloc, nucleul organizează în memoria internă o zonă de tampone cache (structuri de date software)
diferite de memoria cache.
Tampoanele cache sunt organizate în două liste dublu înlănţuite (unele putând face parte din
ambele); lista tampoanelor în uz este organizată conform unei funcţii de dispersie (hashing) ce ţine
seama de numărul logic al dispozitivului periferic şi numărul blocului al cărui conţinut se încarcă
în zona de date ataşată tamponului. Funcţiile sunt apelate de nivelul inferior al sistemului de
gestiune al fişierelor (SGF).

118
Sisteme operaţionale

EXERCIŢII

1. Care sunt principalele aspecte ce justifică oportunitatea sistemului de operare UNIX ?

2. Să se efectueze o comparaţie între MS-DOS şi UNIX la nivelul caracteristicilor generale.

3. Să se identifice principalele componente ale sistemelor de operare MS-DOS şi UNIX prin


analogie.

4. Ce tipuri de fişiere recunoaşte UNIX spre deosebire de MS-DOS ?

5. Care sunt componentele nucleului la UNIX ? Se regăsesc acestea şi la MS-DOS ? Motivaţi


răspunsul.

6. Identificaţi stările unui proces la UNIX şi a modului prin care un proces trece dintr-o stare în alta.

7. Cum se execută planificarea proceselor la UNIX ?

8. Specificaţi mecanismele de sincronizare a proceselor la UNIX; în ce constă fiecare dintre acestea


?

9. Prin ce modalităţi practice se asigură comunicaţia dintre procese la UNIX ?

10. În ce constă gestiunea fişierelor speciale la UNIX ?

119