You are on page 1of 119

Sisteme de operare

SISTEMUL DE OPERARE
Orice sistem de calcul electronic nu poate sa asigure prelucrarea automata fara existenta unui sistem de operare. Sistemul de operare este partea de software de baza care asigura gestiunea tuturor resurselor unui sistem de calcul. Evolutia starilor unui sistem de calcul se face pe baza execuiei unui program aflat n memoria intern a calculatorului. Un program este o succesiune de instructiuni care materializeaza un algoritm si care converg catre solutia problemei ce se cere rezolvata. Lansarea n executia a oricarui program este fcut de catre sistemul de operare. Dupa lansare, sistemul de operare preda controlul programului utilizator. La sfrsitul executiei programul reda obligatoriu controlul sistemului de operare. Sistemul de operare este si el o colectie de programe (rutine si subrutine) care asigura functionarea eficienta a sistemului de calcul. O secven de instruciuni posed controlul atta timp ct microprocesorul execut instruciuni din secvena respectiv. Exista trei categorii importante de programe: A. Programe de aplicatie care asigura rezolvarea unor probleme specifice si care se numesc si programe utilizator; aceste programe asigura efectuarea calculelor si prelucrarea datelor n concordanta cu algoritmii de rezolvare a problemelor practice. Ele fac parte din software-ul aplicativ. B. Programe de sistem care au rolul de a coordona ntreaga activitate a sistemului de calcul, asigurnd comanda electronica a tuturor circuitelor hardware care compun sistemul. Ele constituie software-ul de baza si sunt elementele care dau viata unui sistem de calcul. Totalitatea acestor programe alcatuiesc sistemul de operare al calculatorului. Fara sistem de operare calculatorul nu este dect un instrument mort, inutilizabil. Sistemul de operare este proiectat sa faciliteze utilizarea eficienta a calculatorului si sa asigure dezvoltarea si executia programelor de aplicatie. C. Programe utilitare care au rolul de a asigura servicii rapide de exploatare si gestiune a unor resurse fizice ale calculatorului. Ele se situeaza undeva ntre programele de aplicatie si cele de sistem. Pe msur ce aceste programe se dovedesc a fi extrem de utile, ele pot fi introduse n software-ul de baz. Sistemul de operare este scris pentru un anumit tip de calculator, prin urmare ele nu pot fi folosite pe orice sistem, ci numai pe platforma hardware pentru care a fost proiectat.

Sisteme de operare

Orice sistem de operare este constituit dintr-o colectie integrata si unitara de programe de sistem care ofera utilizatorului toate facilitatile de dezvoltare a programelor de aplicatie, precum si facilitati de folosire eficienta a ntregului arsenal hardware a calculatorului. Sistemul de operare este interfata dintre hardware-ul calculatorului si utilizatorul reprezentat de programele sale de aplicatie. Sistemele de operare sunt organizate pe doua niveluri: a. Nivelul fizic care asigura comanda electronica, fizica, a tuturor compunentelor sistemului de calcul electronic. Acest nivel este cel mai apropiat de partea electronica si se realizeaza printr-un sistem de ntreruperi (o ntrerupere este materializata de un semnal electronic) care semnalizeaza aparitia anumitor evenimente n sistemul de calcul si care da controlul automat unor rutine de tratare a ntreruperilor situate pe nivelul logic. Rutinele de tratare a ntreruperilor proceseaza ntreruperile prin analiza, semnalarea si diagnosticarea lor. Utilizatorul are acces direct la acest nivel doar prin intermediul limbajului de asamblare (la PC cu ajutorul instruciunii int nh, unde n este numrul ntreruperii exprimat n hexazecimal), sau prin intermediul limbajelor care permit prelucrarea secventelor de asamblare.
MEMORIA INTERNA HARDWARE
SISTEM DE OPERARE PROGRAME APLICATIE

UTILIZATOR

Intreruperi

Comenzi Macroinstructiuni Limbaje de programare Mesaje

Program de aplicatie 1 ............ ............ Program de aplicatie n

Figura 1. Nivelurile la care lucreaz Sistemul de operare Sursa: R. Mranu Sistemele de operare MS-DOS i UNIX, Ed. Tehnic, Bucureti 1995, pag.18 b. Nivelul logic este cel mai apropiat de utilizatorul sistemului de calcul si interfateaza cu acesta prin:

Sisteme de operare

- comenzi adresate sistemului de operare, comenzi care specifica executia imperativa a anumitor functii sau subfunctii ale sistemului de operare; - macroinstructiuni care sub controlul sistemului de operare se expandeaza n programe de aplicatie sau a unor macrodefinitii care au functii speciale; - limbaje de programare; - mesaje destinate utilizatorului. Utilizatorul reprezentat de programele de aplicaie aflate n memoria intern, poate introduce comenzi, da macroinstruciuni de executat, fie prin intermediul unor limbaje de programare, primind eventuale mesaj de rspuns (sau de eroare) de la sistemul de operare, care face ca partea de hardware a sistemului de calcul s rspund nevoilor proprii (aceste lucruri pot fi observate n sinteza oferita de figura 1).

Sisteme de operare 1. Func iile sistemului de operare

Un sistem de operare de foarte bun calitate trebuie sa asigure simultan ndeplinirea urmatoarelor functii, pentru a-i ndeplini rolul su de interfa ntre hardware i utilizatori: 1. Gestionarea resurselor calculatorului si alocarea resurselor necesare executiei programelor de aplicatie si a programelor utilitare prin: - identificarea programelor ce urmeaza a fi executate, identificarea resurselor necesare executiei corecte a acestor programe; - alocarea statica sau dinamica a memoriei interne si a dispozitivelor periferice necesare executiei; - identificarea datelor si protectia colectiilor de date necesare executiei programelor; - compresia si decompresia automata a memoriei externe. 2. Asigurarea si acordarea unor facilitati de interes general cum sunt: - conversii de suporturi de informatii; - sortarea datelor; - interclasarea datelor; - catalogarea i ntreinerea bibliotecilor; - capturi de imagini i sunet etc. 3. Planificarea executiei programelor dupa criterii de deservire care sa duca la utilizarea eficienta a unitatii centrale de prelucrare a datelor, asigurarea condiiilor de securitate i confidenialitate a datelor. 4. Multitasking adica executia simultana a mai multor programe. Gestiunea executiei mai multor programe se face prin urmarirea modului de executie a instructiunilor care compun programele, acordnd timpul unitatii centrale n functie de politica de deservire proprie sistemului de operare. 5. Depistarea, diagnosticarea si traterea erorilor prin utilizarea unor rutine specializate specifice sistemului de operare respectiv. 6. Lansarea n executie, la nivel fizic, a operatiilor de intrare/iesire si de-pistarea erorilor n lucrul cu periferia. 7. Asistarea executiei programelor de aplicatie prin asigurarea comunicatiei calculator-utilizator att la nivel hardware ct si software. 6

Sisteme de operare

8. Protectia informatiilor i securitatea datelor pe toate tipurile de suporti de informatii. 9. Adaptarea din mers a configuratiei hardware a sistemului de calcul n functie de posibilitatile financiare de care dispune utilizatorul. 10. Asigurarea posibilitatilor de pregatire, lansare si executie a programelor de aplicatie prin oferirea unui: - editor de texte pentru introducerea si modificarea comenzilor sau programelor sursa; - limbaj de programare pentru obtinerea modulelor obiect; - editor de legaturi pentru legarea modulelor obiect (provenite din compilarea n diverse limbaje) si obtinerea formatului executabil; - ncarcator care sa asigure ncarcarea programului n memoria interna si lansarea lui n executie; - bibliotecar care sa permita retinerea n biblioteci specializate de diferite formate a modulelor obiect sau executabile. Aceasta ultima functie este prezentata n figura 2.

Sisteme de operare

ALTE DISPOZITIVE PERIFERICE DE INTRARE

EDITOR TEXTE

PROGRAM SURSA COMPILATOR/ TRANSLATOR

CORECTII

ERORI?

PROGRAM OBIECT EDITOR DE LEGATURI

BIBLIOTECI UTILIZATOR

BIBLIOTECI SISTEM

PROGRAM EXECUTABIL

INCARCATOR

LANSARE IN EXECUTIE

Figura 2. Dezvoltarea programelor Sursa: R. Mranu Sistemele de operare MS-DOS i UNIX, Ed. Tehnic, Bucureti 1995, pag.19

Sisteme de operare 2. Componentele unui Sistem de operare

Un sistem de operare este constituit din doua componente importante: 1. Nucleul sistemului de operare care ndeplineste principalele functii curente . 2. Rutinele de comanda si control (RCC) care ndeplinesc celelalte functii ale sistemului de operare. La aceste componente unii autori mai adauga si programele utilitare pe care le numesc programe de serviciu. O parte din componentele sistemului de operare sunt pastrate n memoria interna pe toata durata sesiunii de lucru, iar o alt parte sunt ncarcate dupa necesitatile curente dictate de evolutia sistemului n spatiul starilor. Componentele care se afla n permanenta n memoria interna se numesc componente rezidente, iar restul sunt componente tranzitorii. Sistemele de operare permit utilizatorului sa-si realizeze propriile programe care pot fi rezidente, n rest toate programele utilizator sunt programe tranzitorii (vezi figura3).
MEM ORIA EXTERNA MEM ORIA INTERNA NUCLEUL (Componenta rezidenta) COMPONENTE TRANZITORII ALE SO Program de aplicatie (Tranzitoriu) Program de aplicatie (Rezident) - TSR Alte programe de aplicatie

Figura 3. ncrcarea componentelor din memoria extern n memoria intern Functiile care revin rutinelor de comanda si control RCC sunt: a. Administrarea resurselor fizice hardware ale sistemului de calcul; b. Planificarea, lansarea si urmarirea executiei lucrarilor; c. Depistarea, diagnosticarea si tratarea evenimentelor deosebite (ntreruperi si semnale de eroare) care pot apare n timpul executiei programelor.

Sisteme de operare

Toate aceste functii sunt supervizate si controlate de nucleul (rezident) al sistemului de operare. Acesta este motivul pentru care nucleul mai este numit supervizor sau monitor.

10

Sisteme de operare 3. Sisteme de operare pentru microcalculatoarele PC

Din punct de vedere al numrului de programe simultan aflate n execuie, pentru microcalculatoarele PC exista doua tipuri principale de sisteme de operare: A. Monotasking sisteme de operare care sunt capabile sa execute la un anumit moment doar un singur task (sarcina sau program). Un astfel de sistem de operare are ca principale functii: - ncarcarea, lansarea si executia programelor; - oferirea de facilitati pentru lucrul cu dispozitivele periferice ale sistemului; - asigurarea posibilitatii de dialog cu utilizatorul prin intermediul interpretorului de comenzi (subcomponenta a nucleului). B. Multitasking sisteme de operare care asigura partajarea resurselor ntre mai multe task-uri (programe) care se executa simultan. Un astfel de sistem de operare are ca principale functii: - ncarcarea, lansarea si executia programelor; - oferirea de facilitati pentru lucrul cu dispozitivele periferice ale sistemului; - asigurarea posibilitatii de dialog cu utilizatorul prin intermediul interpretorului de comenzi (subcomponenta a nucleului); - gestiunea alocarii resurselor hardware si software ale sistemului de calcul etc. Cele mai cunoscute sisteme de operare pentru calculatoarele PC sunt: M MS-DOS MicroSoft Disk Operating System este cel mai vechi si mai raspndit sistem de operare pe platformele INTEL; M DR-DOS Digital Research Disk Operating System utilizat pe calculatoare avnd microprocesoare INTEL; M OS/2 Operating System 2 fiind o colaborare a firmelor IBM si MicroSoft (momentan intrat n con de umbra); M Apple DOS utilizat pe calculatoare Apple, este mono user monotasking; M MacIntosh DOS proiectat pentru PC-uri de tip Apple MacIntosh implementate cu microprocesoare MOTOROLA din seria 68XXX, care permit lucru n regim multitasking si memorie virtuala; M UNIX creat initial pentru minicalculatoare, este portabil pe toata gama de sisteme de calcul, permite lucrul cu memorie virtuala, multitasking si

11

Sisteme de operare

multiuser. Exista mai multe implementari pe PC dar nu dintre cele mai facile pentru utilizatorii obisnuiti. Versiunile care lucreaza cu interfata XWINDOWS sunt foarte utilizate; M WINDOWS 9X (95, 97, 98 si 2000) sunt cele mai raspndite sisteme de operare la ora actuala. Sunt sisteme multitasking si multiuser. M WINDOWS NT este cel mai complet sistem de operare cu larga utilizare, existent la dispozitia tuturor utilizatorilor, a cariu caracteristici semnificative sunt: - sistemul de operare WINDOWS NT precum si serverul WINDOWS NT, la fel si aplicatiile existente pe piata proiectate pentru el, l ridica la rangul de cel mai deschis, cel mai puternic si cel mai fiabil sistem client-server; - lucreaza la fel de bine si pe platforme INTEL obisnuite (de la 80386 pna la Pentium III) si pe platforme RISC; - poate lucra cu 650 de imprimante, 50 de dispozirive periferice pe statie, mai multe adaptoare de retea, adaptoare video VGA, SVGA, XVGA; - lucreaza si cu mono procesor si cu multiprocesor. Pentru alegerea unui sistem de operare adecvat, utilizatorul trebuie sa se orienteze dupa ndeplinirea urmatoarelor criterii: - existenta aplicatiilor software compatibile; - facilitatile oferite utilizatorului si programatorului; - viteza de operare; - multitasking si multiuser; - compatibilitati hardware; - posibilitatea extensieu si acceptarii de echipamente specifice.

12

Sisteme de operare 4. Tehnici de exploatare a sistemelor de calcul electronic

Rolul principal al unui sistem de operare este de a utiliza eficient fiecare resursa hardware oferita de sistemul de calcul electronic. Prin utilizarea eficienta a unui sistem de calcul ntelegem executarea unui volum ct mai mare de lucrari, cu o configuratie hardware minima. Aprecierea eficientei se face prin analizarea costului sistemului de calcul si a software-ului, n directa concordanta cu obtinerea rapida a rezultatelor. Proiectantii sistemelor de operare se straduie sa le realizeze astfel nct sa utilizeze cat mai eficient fiecare resursa a sistemului de calcul: timpul unitatii centrale, spatiul de memorie interna, spatiul de memorie externa, periferia de intrare si de iesire etc. Indicatorii utilizati pentru aprecierea performantelor unui sistem de calcul electronic sunt: - raportul cost/performanta ct mai redus; - fiabilitatea si stabilitatea sistemului ct mai mare; - timpul de raspuns, socotit ca perioada de timp scursa ntre momentul lansarii cererii si momentul obtinerii raspunsului, care trebuie sa fie ct mai redus; - volumul de lucrari si date intrate n sistem sa fie ct mai mare; - accesibilitatea ridicata si interfata prietenoasa cu utilizatorul; - conectivitate marita att la nivel local ct si la distanta; - protectie si securitate sporita a informatiilor. Pentru optimizarea ncarcarii la maximum a unitatii centrale si a procesoarelor de intrare/iesire, fiecare sistem de operare foloseste o politica de planificare riguroasa specifica lui. La alegerea strategiilor de planificare a lucrarilor trebuie cunoscute foarte exact obiectivele de realizare simultana: - reducerea timpilor de asteptare a unitatii centrale (timpi morti) prin ececutia unor lucrari cu volum mare de calcule (care utilizeaza UC-ul) si cu un numar mic de operatii de intrare/iesire (care pun n asteptare UCul); - executia unui numar mare de lucrari n unitatea de timp prin lansarea n executie a lucrarilorcu timp redus de executie; - ncarcarea la capacitate maxima a dispozitivelor de intrare/iesire prin rularea unor lucrari avnd volum mare de operatii de intrare/iesire si calcule mai putine. ntre aceste limite este nevoit proiectantul sa-si stabileasca strategia de proiectare, lucru extrem de greu de facut, ceea ce explica si plaja extrem de variata de tipuri si versiuni de sisteme de operare. Pentru a complica si mai mult

13

Sisteme de operare

lucrurile factorul concurenta este extrem de important. Proiectantii care au stiut sa tina seama cel mai bine de aspectele anterioare sunt astazi lideri mondiali n materie de sisteme de operare. Pentru timpilor de asteptare a unitatii centrale, sistemele de operare folosesc: monoprogramare, multiprogramarea, spooling-ul, time-sharing-ul si multiprelucrarea. 4.1. Monoprogramarea Monoprogramarea este o tehnica folosita de unele sisteme de calcul care presupune executia secventiala (seriala) a unor lucrari pe un anumit sistem de calcul. Sistemul de operare are n evidenta la un moment dat un singur program, caruia-i sunt alocate toate resursele hardware ale sistemului de calcul electronic. Aceste resurse constau n: memoria disponibila pentru executia programelor utilizator, toate echipamentele periferice din configuratia calculatorului, unitatea centrala etc. Singurele procese care pot exista simultan nstrun sistem de operare bazat pe monoprogramare sunt:procesul curent de calcul si unul sau mai multe procese de intrare/iesire.
UC

t1 Canal

t2

t3

t4

t1

t2

t3

t4

Figura 4. Monoprogramare
Sursa: R. Mranu Sistemele de operare MS-DOS i UNIX, Ed. Tehnic, Bucureti 1995, pag.33

ntr-un sistem de operare cu monoprogramare, un program solicita pe parcursul executiei sale diferite operatii de intrare/iesire, supravegheate de catre procesorul de comunicatii (controller), timp n care UC-ul asteapta finalizarea operatiilor cu perifericele. La ntlnirea unei operatii de intrare/iesire UC-ul da controlul procesorului specializat n astfel de intrari/iesiri care efectueaza transferul n/din memoria interna. La terminarea operatiei de intrare/iesire, procesorul specializat va transmite o ntrerupere catre UC pentru a-l anunta de terminarea operatiei si pentru ca UC-ul sa continue executia secventei de instructiuni a programului aflat n executie curenta. Acest lucru se poate vedea n figura 4, unde se poate vedea sincronizarea UC-ului cu canalul n cazul

14

Sisteme de operare

monoprogramarii. Daca notam cu t1 momentul n care UC-ul initiaza o operatie de intrare/iesire, cu t2 momentul n care UC-ul are nevoie de datele solicitate dispozitivului periferic (operatia efectiva de intrare/iesire nefiind nca terminata), cu t3 momentul n care UC-ul va relua executia programului (avnd de data aceasta datele necesare) si cu t4 momentul n care se ncheie programul, putem calcula randamentele de utilizare ale UC-ului, respectiv a canalului, cu formulele (1).

t ( t 3 t 2) * 100 UC = 4 t4 t [ t1 + ( t 4 t 3)] * 100 Canal = 4 t4

(1)

Se constata o simultaneitate a activitatii UC-ului si a canalului, lucru care ameloireaza partial productivitatea. Cu toate acestea monoprogramarea impune o utilizare ineficienta a resurselor calculatorului si se apreciaza ca aproximativ 80% din timpul total de prelucrare, unitatea centrala nu este utilizata. Sistemele de operare din aceasta categorie (n care se ncadreaza DOS-ul) sunt cele mai putin eficiente. Ineficienta monoprogramarii este mai accentuata n cazul programelor de aplicatie care lucreaza cu date multe (memorate n memoria externa) dar cu calcule foarte putine, asa cum este cazul aplicatiilor financiar-contabile. La astfel de aplicatii timpul de utilizare al UC-ului este sub 5% sau chiar mai putin. n astfel de cazuri UC-ul someaza nejustificat de mult, lucru agravat si de faptul ca UCul este cea mai costisitoare componenta a unul calculator electronic. 4.2. Multiprogramarea Sistemele de operare care lucreaza n multiprogramare se numesc si sisteme multitasking. Acest tip de sisteme de operare gestioneaza un singur UC si asigura executia ntretesuta a doua sau mai multe programe (task-uri, procese). Termenul de multiprogramare este utilizat, n mod uzual, pentru a desemna prelucrarea ntr-un sistem de calcul electronic care dispune de un singur procesor central (UC). Executia ntretesuta trebuie nteleasa astfel: n fiecare moment al prelucrarii n regim de multiprogramare, un singur program poate fi executat, dar mai multe alte programe se afla n curs de executie, adica, o parte dintre instructiunile lor au fost executate, iar n momentul respectiv asteapta sa fie relansate n executie sau sunt n asteptarea producerii unor evenimente externe. n acest fel task-urile folosesc partajat UC-ul, ele aflndu-se ntr-o continua competitie sau concurenta. n realitate, partajarea UC-ului se realizeaza pe 15

Sisteme de operare

intervale de timp distincte, numite cuante de timp. Conceptual, multiprogramarea este o tehnica de exploatare a unui sistem de calcul electronic care simuleaza existenta a n procesoare virtuale pe un singur procesor fizic. Tehnica aceasta presupune existenta simultana n memorie a n programe. Multiprogramarea este caracterizata de: - existenta simultana a n programe ncarcate n memoria interna; - existenta unui mecanism trecere a controlului de la un program la altul, pentru a se putea executa toate cele n programe; - existenta unu imecanism de protectie ntre cele n programe care sa permita executia unui program, fara perturbarea celorlalte n-1 programe coexistente simultan n memoria interna; - existenta unui mecanism de gestiune a resurselor, att fizice ct si logice, pe care le solicita programele aflate n executie. ntreteserea executiei task-urilor creaza ilizia simultaneitatii. Simultaneitatea executiei presupune, n cazul existentei unui singur procesor (UC), distribuirea timpului-procesor mai multor task-uri asa cum se observa n figura 5.
Initierea operatiei I/O pentru Task1 UC Task1 Intrerupere terminare I/O Task1 Terminarea executiei celor 3 task- uri t Initierea operatiei I/O pentru Task2 UC Task2 Intrerupere terminare I/O Task2 Initierea operatiei I/O pentru Task3 UC Task3 Inactivitate a UC-ului Inactivitate canal Intrerupere terminare I/O Task 3 t

t Inactivitate canal Canal Inactivitate canal Inactivitate canal t

Operatie I/O pt. Task1 t2 t3 t1

Operatie I/O Operatie I/O pt. Task2 pt. Task3 t10 t11 t4 t5 t6 t7t8 t9

t12

t13

t14

t15

t16

t17

t18

Figura 5. Sincronizarea UC-ului cu activitatea Canalului pentru 3 Task-uri


Sursa: R. Mranu Sistemele de operare MS-DOS i UNIX, Ed. Tehnic, Bucureti 1995, pag.36

Notam cu: t1 - momentul n care se solicita initierea unei operatii de intrare/iesire (canalului) de catre unitatea centrala n favoarea lui Task1, t2 momentul n care Task1 ar avea nevoie de datele solicitate Canalului (dar nca nu le are disponibile, motiv pentru care controlul UC-ului se da lui Task2), t3 16

Sisteme de operare

momentul n care se termina operatia de intrare/iesire (datele ar putea fi folosite de Task1, dar controlul se afla la Task2 din care se executa secvential instructiuni) finalizarea operatiei se va manifesta printr-o ntrerupere adresata UC-ului, t4 momentul n care se solicita initierea unei operatii de intrare/iesire canalului de catre unitatea centrala n favoarea lui Task2 (Canalul fiind disponibil sa execute operatia de intrare/iesire), t5 - momentul n care Task2 ar avea nevoie de datele solicitate Canalului (dar nca nu le are disponibile, motiv pentru care controlul UCului se da lui Task3), t6 - momentul n care se solicita initierea unei operatii de intrare/iesire canalului de catre unitatea centrala n favoarea lui Task3 (canalul fiind ocupat, operatia se trece n coada de asteptare), t7 - momentul n care se termina operatia de intrare iesire initiata de Task2 (Canalul devine disponibil si se poate lansa operatia de intrare/iesire initiata de Task3 si aflata n coada de asteptare a Canalului) finalizarea operatiei se va manifesta printr-o ntrerupere adresata UC-ului, t8 - momentul n care se lanseaza operatia aflata n coada de asteptere (n favoarea lui Task3), t9 - momentul n care UC se elibereaza de Task3 (care ar avea nevoie de datele operatiei de intrare/iesire care tocmai este n curs) n acest caz Task1 avnd deja datele solicitate nca de la momentul t3 - se va relua executia instructiunilor din Task1, t10 - momentul n care se ncheie executia lui Task1 si controlul este predat lui Task 2 (care are dej datele solicitate Canalului), t11 - momentul n care se ncheie executia lui Task2 (UC-ul devine diaponibil dar trebuie sa someze deoarece operatia de intrare/iesire initiata de Task3 nu este finalizata), t12 - momentul n care se ncheie operatia de intrare/iesire initiata de Task3 (se reda controlul UC-ului lui Task3 continundu-se secventa de instructiuni a acestuia) finalizarea operatiei se va manifesta printr-o ntrerupere adresata UC-ului si t13 - momentul terminarii executiei tuturor task-urilor si predarea controlului UC n favoarea executiei rutinei din nucleul sistemului de operare care este capabila sa lanseze alte tascuri n executie. i n cazul multiprogramarii se pot calcula randamentele pentru UC si Canal dupa expresiile (2). Aceste randamente sunt exprimate n procente. Procesul de planificare a predarii controlului UC-ului este facut de catre nucleul sistemului de operare care dispune de doua funtii importante: - asigurarea unei ordini de prioritati, dupa o politica de deservire proprie sistemului de operare; - alocarea resurselor hardware care utilizeaza respectiva prioritate.

17

Sisteme de operare

t ( t12 t11) * 100 UC = 13 t13 t [ t + ( t 4 t 3) + ( t13 t12)] * 100 Canal = 13 1 t13

(2)

Algoritmii de planificare a task-urilor presupun ordonarea acestora pe baza de prioritate, sub forma unor fire de asteptare (din acest punct de vedere acestea sunt considerate procese de nastere si moarte). La ora actuala exista sisteme multiprogramare care inplementeaza unul din algoritmii (politicile) de deservire: - SFT - Shortest processing Time First - se aplica politica de deservire, pentru lansarea prioritara n executie, a lucrararii care necesita cel mai scurt timp de prelucrare, urmarindu-se minimizarea timpului de trecere prin sistemul ce calcul electronic; - LTF - Longest processing Time First - se aplica politica de deservire, pentru lansarea prioritara n executie, a lucrararii care necesita cel mai lung timp de prelucrare, urmarindu-se minimizarea timpului total; - SMF - Smallest Memory requirment First - se aplica politica de deservire, pentru lansarea prioritara n executie, a lucrararii care necesita cel mai mic spatiu de memorie; - LMF - Largest Memory requirment First - se aplica politica de deservire, pentru lansarea prioritara n executie, a lucrararii care necesita cel mai mic spatiu de memorie; - FCFS - First Come, First Served - se aplica politica primul sosit primul servit sau FIFO (First Input, First Output); - FCLS - First Come, Last Served - se aplica politica primul sosit ultimul servit sau FILO (First Input, Last Output); - LCFS - Last Come, First Served - se aplica politica ultimul sosit primul servit sau LIFO (Last Input, First Output); - LCLS - Last Come, Last Served - se aplica politica ultimul sosit ultimul servit sau LILO (Last Input, Last Output); - Round Robin - se aplica politica de deservire circulara acordndu-se cte o cuanta de timp fiecarui task aflat n executie. Precizam nca o data ca n sistemele de operare multiprocesor este vorba de executia mai multor task-uri si nu de executia lor simultana. O simultaneitate a executiei lor presupune existenta mai multor procesoare care ar executa 1/1 (un task executat pe un procesor) aceste lucrari. O astfel de abordare ar duce la 18

Sisteme de operare

existenta unul sistem de calcul complex, multiprocesor care presupune executia paralela a task-urilor si care efectueaza calcul paralel (procesare paralela) si care introduce n sfera calculatoarelor paralele. Procesarea paralela nefacnd obiectul actual al interesului nostru, sa ne concentram asupra conceptului de multiprogramare vazut (asa cum am precizat) ca o dulce iluzie, n asteptarea viitoarelor progrese tehnologice care, sa speram, vor fi pe masura buzunarului nostru. Multiprogramarea este usor de observat de catre utilizator ndeosebi la prelucrarea textelor, cnd editorul de texte este ocupat cu asteptarea tastarii continutului textului, din partea operatorului uman. Avnd n vedere timpii de comutare ntre task-uri, de ordinul milisecundelor, orice om orict de rapid (fie chiar si celebrul personaj din Mask) va crea ntre doua tastari succesive niste mici vesnicii care ar crea o risipa inutila a timpului de procesare. Din acaest motiv se are grija ca unui task sa-i fie alocat un timp de procesor numai atunci cnd task-ul nu asteapta producerea unui eveniment extern (de exemplu, terminarea unei operatii de intrare/iesire, apasarea unei taste, miscarea mouse-ului etc.). Acest lucru presupune neaparat cunoasterea de catre sistemul de operare a demararii fiecarei operatii de itrare/iesire si carui proces i este destinat, pentru a se astepta la evenimente externe care sa consemneze terminarea operatiilor de transfer. De exemplu, la sistemul de operare WINDOWS, asteptarea producerii evenimentelor externe este sesizata de rutina de tip SHELL. n cadrul acestui sistem de operare, programele de aplicatie, constituite ca task-uri distincte, vor interoga totdeauna sistemul de operare cu privire la producerea unui eveniment extern. Fiecarui task i este asociat cte un TCB (Task Control Block) care tine evidenta evolutiei task-ului. Un TCB contine: un pointer de nlantuire la task-ul urmator, numele task-ului, numarul de identificare al task-ului, prioritatea taskului, starea task-ului si un pointer la zona de date asociate task-ului respectiv. Diagrama de tranzitie a task-urilor este data n figura 6.

19

Sisteme de operare

NUCLEUL SISTEMULUI DE OPERARE

TASK1 Pointer TASK2 Nume TASK1 Nr.Idetific.TASK1 Prioritate TASK1 Stare TASK1 Pointer DATE1 TCB1

TASKi Pointer TASKi+1 Nume TASKi Nr.Idetific.TASKi Prioritate TASKi Stare TASKi Pointer DATEi TCBi

TASKn NIL Nume TASKn Nr.Idetific.TASKn Prioritate TASKn Stare TASKn Pointer DATEn TCBn

Figura 6. nlnuirea TCB-urilor

Orice program (task) care se executa sub un sistem cu multiprogramare se afla n una din starile: - program n asteptare - este task-ul care se afla n starea de asteptare a terminarii unui eveniment extern, care-i va influenta evolutia executiei ulterioare; - program n executie - este task-ul care tocmai are acces la resursa oferita de UC, adica, task-ul a carui secventa de instructiuni se executa n momentul curent (programul su tascul activ); - program pregatit - este task-ul care doreste sa obtina resursa de UC, dar care nu o poate obtina pentru ca este mai putin prioritar dect task-ul activ. Pentru realizarea comutarii task-urilor dintr-o starea n alta, orice SHELL a sistemului de operare care lucreaza n regim de multiprogramare dispune de un modul software specializat numit modul distribuitor sau modul dispecer, care aplica politica de deservire a sistemului de operare. Asupra modulului distribuitor revine sarcina ca, n cazul opririi executiei unui task, sa salveze n zona de memorie a TCB-ului respectiv toate informatiile necesare reluarii n orice moment a tascului n cauza. Aceasta operatie se numeste salvarea contextului de reluare. Datele salvate individualizeaza (personalizeaza) task-ul deoarece printre infirmatiile salvate se afla si continutul registrilor generali, a indicatorilor de conditii (registrul stare program) precum si adresa viitoarei instructiuni ce urmeaza a fi executata dupa reactivarea task-ului. n felul acesta se obtine o

20

Sisteme de operare

fotografie din momentul opririi task-ului. Dupa efectuarea salvarilor pentru task-ul oprit, se va face restaurarea informatiilor din TCB-ul nominalizat de modulul distribuitor pentru a fi activat, astfel ncat executia instructiunilor sa se faca exact din locul n care a fost oprit anterior. Prin restaurarea informatiilor din TCB-ul curent se reface contextul de activare a task-ului curent. Schema cu starile de existenta ale unui task sunt prezentate n figura 7.
Elibereaz PROGRAM N A TEPTARE Pred Porne te Ordoneaz Termin Blocheaz

PROGRAM PREG TIT

PROGRAM N EXECU IE

Figura 7. Strile unui task Pentru tranzitia de la o satare la alta, nucleul (din care face parte si distribuitorul) sistemului de operare realizeaza urmatoarele operatiuni: - porneste - demareaza activitatile de creare a TCB-ului asociat task-ului, n momentul lansarii n executie a unui program si includerea acestui TCB n firul de executie gestionat de sistemul de operare; - termina - scoate din firul de executie TCB-ul asociat tascului care tocmai si-a finalizat executia; - ordoneaza - aranjarea n ordinea prioritatilor de deservire, pentru lansarea task-ului cel mai prioritar aflat n starea pregatit; - preda - se preda controlul controlul unui program pregatit daca politica de deservire este LIFO; - blocheaza - se blocheaza programul aflat n executie si se trece n asteptare daca se executa o operatie de intrare/iesire, sau daca a aparut un program mai prioritar si care respecta politica de deservire a sistemului de operare; - elibereaza - cand se cere restartarea unui program aflat n depanare. Momentul n care intervine dispecerul sistemului de operare este stabilit ca urmare a deciziei unei functii apartinnd sistemului de operare numita scheduler, functie care este da fapt un planificator. Planificatorul decide care dintre task-urile aflate n gestiunea lui urmeaza sa fie lansat n executie si cte cte coante de timp sa-i fie alocate. Pentru asi asigura o viziune de ansamblu asupra tuturor task-urilor, scheduler lucreaza de odicei cu liste ordonate ordinea unor prioritati. Daca la un anumit moment este n executie task-ul i si a expirat cuanta de timp afectata

21

Sisteme de operare

lui, atunci scheduler-ul testeaza daca nu cumva task-ul i+1se afla n asteptare si n caz afirmativ se trece la testarea starii task-ului i+2, s.a.m.d., pna la gasirea primului primului task aflat n starea pregatit. Este de la sine nteles ca aceste testari sunt consumatoare de timp de UC, ceea ce divedeste ca aceasta solutie nu este cea mai eficienta. Aceeasi pierdere de timp apare si cnd s-a produs un eveniment extern, de pilda n defavoarea task-ului i-1 pe care-l aduce n starea pregatit, dupa care se parcurge lista de TCB-uri executndu-se task-ul cel mai prioritar aflat n starea pregatit. Daca n timpul executiei task-ului i se ajunge la exectia unei operatii de intrare/iesire, atunci scheduler-ul blocheaza task-ul salvndu-i contextul n TCBi, pe care-l trece n stare de asteptare (pna la terminarea evenimentului extern) si preda controlul urmatorului task aflat n starea pregatit din lista de prioritati. n acest fel se produce o baleere circulara a listei de task-uri. Acest mecanism este cunoscut sub numele de Round Robin, iar nucleul acestui sistem de operare poarta numele de preemption (dislocare sau nlocuire) si asigura de fapt nlocuirea unui task, al carui timp atribuit s-a epuizat, cu un alt task caruia I se va atribui o cuanta de timp. Acest mecanism se poate observa n figura 8. Pentru evitarea pierderilor de timp datorate salvarilor/restaurarilor separate ale contextului curent de executie, unele sisteme de operare gestioneaza liste separate pentru task-urile n asteptare, n pregatire si n executie. Lista task-urilor aflate n executie prezentnd interes practic doar n cazul calculatoarelor paralele (multiprocesor). Un mecanism complementar celui Round Robin este mecanismul strategiei de urgenta. n cadrul acestui mecanism, lista de task-uri este sortata n ordinea prioritatilor de executie, adica task-ul activ este lasat sa se execute, urmnd ca urmatorul task prioritar sa fie executat doar n momentul n care task-ul curent s-a terminat. Pentru acest tip de mecanism sunt specifice doua tipuri preemption: - nlocuire la aparitia unui task nou cu prioritate mai mare dect a task-ului n curs de executie, atunci noul task va nlocui task-ul curent; - sistem cu interogare periodica pentru depistarea task-urilor noi si alcatiurea unei statistici care sa duca la redistribuirea dinamica a prioritatilor, acest lucru fiind justificat prin faptul ca un task fiind mereu n asteptare n mod natural nu se grabeste prea mult si deci poate sa-si reduca prioritatea , urmnd sa fie nlocuit de un alt task cu prioritate mai mare. Este usor de nteles ca sistemul de operare trebuie sa mpiedice accesul simultan a doua task-uri la o resursa unica. Nu este greu sa ne nchipuim ce

22

Sisteme de operare

splendida babilonie ar rezulta daca doua task-uri ar tipari la aceeasi imprimanta doua texte diferite (eventual n limbi deosebite), imprimand fiecarea cte o lirera sau un grup de litere. Pentru rezolvarea acestei probleme , n general, se folosesc doua strategii: - strategia exluderii reciproce (mutual exclusion) caz n care sistemul de operare asigura distribuirea drepturilor de acces la respectiva resursa; - strategia accesului exclusiv (exclusive access) caz n care task-ul este nevoit sa solicite, respectiv sa predea, dreprul de acces la resursa unica.
TASK2 Pointer TASK3 Nume TASK2 Nr.Idetific.TASK2 Prioritate TASK2 Stare TASK2 Pointer DATE2 TCB2 TASK3 Pointer TASK4 Nume TASK3 Nr.Idetific.TASK3 Prioritate TASK3 Stare TASK3 Pointer DATE3 TCB3

TASK1 Pointer TASK2 Nume TASK1 Nr.Idetific.TASK1 Prioritate TASK1 Stare TASK1 Pointer DATE1 TCB1 TASK4 NUCLEUL SIS TEMULUI DE OPERARE Pointer TASK5 Nume TASK4 Nr.Idetific.TASK4 Prioritate TASK4 Stare TASK4 Pointer DATE4 TCB4

TASKn Pointer TASK1 Nume TASKn Nr.Idetific.TASKn Prioritate TASKn Stare TASKn Pointer DATEn TCBn

TASKi Pointer TASKi+1 Nume TASKi Nr.Idetific.TASKi Prioritate TASKi Stare TASKi Pointer DATEi TCBi

Figura 8. Mecanismul Round Robin Aceste solicitari trebuie sa constituie una din componentele de baza ale comunicarii inter-task-uri, care se face prin asa-numitele mesaje, motiv pentru care anumite rutine si/sau subrutine trebuie vazute de catre programator ca taskuri cooperante. Tot sistemul de operare asigura rolul de coordonator n comunicarea mesajelor, rol extrem de complicat. De exemplu, pot aparea scurtcircuite (deadlock) de forma: task-ul i asteapta un mesaj de la task-ul i+1, iar

23

Sisteme de operare

task-ul i+1 asteapta un mesaj de la task-ul i. Rezultatul este un blocaj ilustru, pe care sistemul de operare trebuie sa-l rezolve prin criterii suplimantare de comunicatie. Din pacate sub WINDOWS problema deadlock-urilor trebuie rezolvata de catre programator, lucru greu de rezolvat mai ales n cazul utilizarii functiei Yield() (cedeaza trecerea), functie care opreste tascul curent si-l porneste pe urmatorul aflat n asteptare. Trebuie nsa retinut ca daca un task cedeaza trecerea n timpul preluariii unui mesaj transmis de un alt task, se poate ajunge la un blocaj, daca nu se achita mesajul prin intermediul functiei Reply Message(). Lucrurile se pot simplifica daca utilizam functia In Send Message() care semnaleaza existenta mesajelor neachitate, pe care apoi cu functia Reply Message() le poate achita, evitndu-se astfel blocajele. Multe din blocajele neexplicabile ale WINDOWS-ului se datoreaza nerezolvarii corecte a deadlockurilor. 4.3. Sistemul Spooling Activitatea acestui tip de sistem de operare este ilustrata n figura 9. Prin intermediul acestui tip de sistem de operare se poat suprapune operatiile de intrare, procesare a datelor si iesire prin intermediul tehnicii spooling (Simultaneus Peripherial Operations On-Line). Spooling-ul are principala sarcina eficientizarea sistemului de calcul electronic prin mbunatatirea substantiala a randamentului de rulare, largirea benzii de facilitati oferite utilizatorilor si executia dinamica a programelor aflate ntr-un sir de asteptare. Sistemele de operare de tip spooling au urmatoarele caracteristici esentiale: - sunt sisteme care dispun de memorie externa (auxiliara) de foarte mare capacitate, pe discuri magnetice organizate n acces direct; - au implementate tehnica multiprogramarii (multitasking) care permite efectuerea independenta si gestiunea automata a operatiilor de intrare/iesire si procesarea multitaskig a proceselor; - gestioneaza la ntreaga capacitate a dispozitivelor periferice de intrare /iesire; - sistemul de operare gestioneaza mai multe buffere (zone tampon) pentru intrarile si pentru iesirile asociate task-urilor; n acest fel se realizeaza dispozitive virtuale de intrare/iesire care perimit urmatoarele facilitati: - introducerea si ncadrarea ntr-o coada de asteptare a lucrarilor nainte ca ele sa fie efectiv executate;

24

Sisteme de operare

- gestionarea rezultatelor n fire de asteptare la imprimare, n timpul executiei altor lucrari de procesat; - gestiunea planificarii executiei lucrarilor, aflate n firul de asteptare la executie, n ordinea politicii de deservire implementate de sistemul de operare, fara a tine seama de disciplina de sosire; - schimbarea ordinii de executie a task-urilor n functie de criteriul de optimizare a resurselor hardware. Figura 9 prezinta situatia n care: lucrarile P1 si P2 tocmai se introduc de la terminalele CON1 si CON2; P3 si P4 asteapta sa fie ncarcate n memoria interna a sistemului de calcul; P5 , P6 , P7, si P8 se afla n executie concurentiala de tip multitasking n memoria interna a calculatorului ; rezultatele programelor deja terminate P9 si P10 se afla n coada de listare; rezultatele programelor P11 si P12 sunt n plina operatiune de listare.
MEMORIA EXTERN CON1 Buffere pentru intr ri P1 .... P3 P2 .... P4 Buffere pentru ie iri .... .... P9 .... .... P10 LPT1

P11

P1

CON2 Canal P2 MEMORIA INTERN Canal P5 P6 P7 P8 Canal LPT2 P12

Nucleul sistemului de operare

UC Unitatea Central

Figura 9. Organizarea unui sistem Spooling


Sursa: R. Mranu Sistemele de operare MS-DOS i UNIX, Ed. Tehnic, Bucureti 1995, pag.37

25

Sisteme de operare

Un astfel de sistem presupune neaparat exiatenta mai multor terminale de intrare si mai multe dispozitive periferice de iesire, legate la canale de mare capacitate de transfer. 4.4. Sisteme Time-Sharing Principiul Time-Sharing trebuie interpretat ca o partajare a timpului ntre utilizatorii sistemului de calcul electronic. Tehnica consta n a mparti resursele unui calculator , avnd mai multi utilizatori, n asa fel nct fiecare utilizator are impresia ca este singurul utilizator al sistemului. Sistemul de operare TimeSharing se utilizeaza la cele mai mari calculatoare electronice de tip mainframe, la care sute sau chiar mii de utilizatori pot folosi simultan sistemul, fara a-si da seama ca si altii o fac n acelasi timp.

26

Sisteme de operare
Dispozitive periferice de intrare/ie locale ire CON1

Disc utilizatori

Canale de intrare/ie ire

Disc sistem

MEMORIA INTERN C1 1 P1 P2 P3 P4

............ Procesor de comunica ie Nucleul sistemului de operare (monitor de time-sharing)

Cn n

Memoria extern de instan P5 P6

Figura 10. Sistem de operare Time-Sharing


Sursa: R. Mranu Sistemele de operare MS-DOS i UNIX, Ed. Tehnic, Bucureti 1995, pag.40

Este lesne de nteles ca n momentele de vrf ale utilizarii, timpul de raspuns are tendinta evidenta de crestere. Mai trebuie retinut ca aceste sisteme de operare cu divizarea timpului ridica probleme deosebite privind alocarea resurselor hardware ale sistemului, protectia informatiilor si ale utilizatorilor, motiv pentru

27

Sisteme de operare

care sunt utilizate doar n institute mari de cercetare sau n aplicatii speciale, fara interconectare la alte retele. Caracteristicile principale ale sistemelor time-sharing sunt urmatoarele: - partajarea unitatii centrale se face pe baza de cerere, iar planificarea executiei lucrarii se face urmarindu-se un raspuns n timp minim; - lucrarile trebuie executate n mod dinamic, deoarece ele nu au o prioritate prestabilita; - programele de comanda si control sunt capabile sa trateze o multitudine de ntreruperi care apar n procesul de multiplexare a rerurselor care trebuie alocate lucrarilor; - utilizatorii sunt aleatori, lucrnd programe diferite, intrnd si iesind din sistem n deplina independenta unii fata de altii. Din punct de vedere al cerintelor de ordin tehnic care se impun asupra unui sistem de operare de acest tip, precizam urmatoarele trasaturi esentiale: - protectia memoriei este asigurata prin atribuirea unui spatiu de memorie unic, pe durata executiei lucrarii, pentru fiecare utilizator n parte; - independenta utilizatorilor este sigurata prin alocarea unei cuante de timp pentru fiecare utilizator, iar n cazul n care lucrarea nu s-a finalizat se returneaza programul pe memoria externa si este plasat n sirul de asteptare a programelor n executie, ncarcndu-se n memoria interna (din memoria externa) un alt program care va fi lansat imediat n executie s.a.m.d; - alocarea resurselor programelor utilizatorului este efectuata de catre nucleul sistemului de operare numit monitor Time-Sharing si care este rezident permanent n memoria interna, tot monitorul este cel care aloca spatiul de memorie interna, timpul de Unitate Centrala, tratarea ntreruperilor sosite de la terminale, aloca resursele de imprimare etc; - memoriei este efectuata printr-un mecanism de swaping al paginilor de memorie externa si interna si control acestor pagini. Modul de lucru al unui sistem de operare de tip Time-Sharing este ilustrat n figura 10. Caracteristicile hardware ale unui sistem de calcul care sa lucreze cu un sistem operare Time-Sharing sunt urmatoarele: - memoria interna de foarte mare capacitate (de ordinul sutelor TO) si UC-uri ultra-rapide pentru obtinerea unui timp de raspuns minim posibil;

28

Sisteme de operare

- memoria externa cu acces direct, solutia ideala obtinndu-se prin cuplarea n parallel a memoriei externe la UC si perifericele de intrare/iesire, lucru care implica transferul de informatii ntre memoria externa si perifericele de intrare/iesire independent de UC-ul sistemului de calcul electronic; - sistem de comunicatie pentru transferul informatiilor ntre UC-ul sistemului de calcul si perifericele de intrare/iesire, modemuri, concentratoare de date, multiplexoare de date si linii de comunicatii de mare viteza; - ceas de timp real care genereaza ntreruperi pentru comanda comutarii UC-ului de la un program la altul; - terminale si unitati centrale specializate. Caracteristicile software ale unui sistem de operare de tip Time-Sharing sunt urmatoarele: - alocarea si comutarea UC-ului se face de catre planificatorul de lucrari pe baza unui algoritm care trebuie sa asigure simultan: - minimizarea timpului de comutare ntre procese; - reducerea timpului de raspuns al sistemului pentru realizarea lucrarilor n timp minim; - ncarcarea echilibrata a sistemului hardware; - lansarea n executie a lucrarilor n functie de prioritatile fiecarui proces aflat n firul de asteptare la executie; - alocarea dinamica a spatiului de memorie cu precizarea zonei de memorie si a adresei de lansare a programului; - ordonarea fiecarei lucrari, n functie de prioritatea acordata, n firul de asteptare; - gestiunea bazelor de date individualizate prin parola de protectie asociata fiecareia, locul de memorare si adresa pentru regasirea rapida n acces direct a datelor necesare; - asigurarea tratarii ntreruperilor prin detectarea, diagnosticarea si tratarea lor si stabilirea modului de continuare a lucrului. Sistemele de operare de tip Time-Sharing au avantajul folosirii procesarii de mare putere on-line, utilizarea concurenta a resurselor hardware de foarte multi utilizatori aflati local sau la distanta. 4.5. Multiprelucrarea De la nceput trebuie precizat ca exista o diferenta conceptuala ntre multiprogramare si multiprelucrare (sau multiprocesare). n timp ce 29

Sisteme de operare

multiprogramarea este un concept software, multiprelucrarea este un concept hardware. Multiprogramarea presupune existenta n memoria interna a n programe si care partajeaza resursele unui singur UC, n schimb n multiprelucrare cele n programe beneficiaza de aportul a m procesoare n parallel. Un sistem de calcul electronic se considera ca lucreaza n multiprelucrare, daca dispune de cel putin doua UC-uri care lucreaza n parallel. Trebuie remarcat faptul ca n sistemele electronice care sunt exploatate n multiprelucrare, UC-urile pot executa instructiuni n favoarea unui singur program sau pot executa simultan instructiuni din cadrul unor programe diferite. Paralelismul executiei mai multor sarcini definite la nivelul unui program poate fi controlat explicit, daca se utilizeaza un limbaj de programare corespunzator multiprelucrarii, limbaj care permite specificarea lucrarilor paralele, prin instructiuni speciale care se folosesc pentru: a initia executia paralela a sarcinilor, a astepta terminarea executiei lor, a proteja datele utilizate de o sarcina n raport cu alte sarcini aflate n curs de executie, a testa starea unei sarcini etc. A. Sisteme MASTER-SLAVE Cel mai important obiectiv al multiprelucrarii este acela al eliberarii UCului de sarcini precum: editari de texte, ntretinerea fisierelor si ntretinerea bazelor de date. Acest lucru poate fi cel mai elegant rezolvat prin cuplarea la UC-ul obisnuit, care va juca rol de UC-Slave, a uni nou UC numit UC-Master si care are rolul de a gestiona absolut toate intrarile/iesirile n sistem. Rolul UC-ului Slave este acela de a efectua calculele complexe impuse de algoritmul pe care l implementeaza programul. Vazut n ansamblul lui, un sistem Master-Slave trebuie privit ca un ansamblu format din doua entitati de procesare n care Masterul are rol de interfata.

30

Sisteme de operare

UCP -MASTER

DATE, COMUNICA II CONTROL

UCP -SLAVE
Prelucr ri complexe Memoria extern

Figura 11. Sistem Master-Slave (Front-end processor)


Sursa: R. Mranu Sistemele de operare MS-DOS i UNIX, Ed. Tehnic, Bucureti 1995, pag.41

Din punt de vedere functional Master-ul poate fi privit ca: - front-end-processor n care Master-ul se ocupa de operatiile de intrare/iesire iar Slave-ul se ocupa de operatii complexe, n acest caz Master-ul jucnd rolul de interfata ntre didpozitivele de intrare/iesire si Slave (vezi figura 11); - back-end processor n care Master-ul are ca sarcina ntretinerea bazelor de date, existente n memoria externa, asigurnd accesul Slave-ului la aceste colectii voluminoase (vezi figura 12). Fiecare UC poate fi dedicat unor task-uri cu destinatie speciala, specifica, sau pot fi utilizate n bascula, alternativ, pentru a executa un singur task, cu implementarea unui algoritm mai complex si care presupune utilizarea alternativa celor doua procesoare.

31

Sisteme de operare

Memoria extern

UCP -SLAVE
MAINFRAME UCP1 UCP2

UCP -MASTER
DATE, COMUNICA II CONTROL

Alte dispozitive periferice de intrare/ie ire

Figura 12. Modul de funcionare Back-end processor


Sursa: R. Mranu Sistemele de operare MS-DOS i UNIX, Ed. Tehnic, Bucureti 1995, pag.41

B. Clase de sisteme cu multiprelucrare Din punct de vedere al modului de planificare a task-urilor si a modului de comunicatie exista doua clase mari de sisteme cu multiprelucrare: - sisteme cu multiprelucrare care dispun de unitati centrale identice, la care difera doar modul de partajare a memoriei interme si pentru care exista patru tipuri distincte de sisteme Master-Slave: - sisteme cu memorie unica si UC-uri identice, ca n figura 13; - sisteme cu memorie proprie si UC-uri identice, ca n figura 14;

32

Sisteme de operare

- sisteme cu memorie unica si UC-uri Master-Slave, ca n figura 15; - sisteme cu memorie proprie si UC-uri Master-Slave, ca n figura 16; - sisteme cu multiprelucrare avnd unitati centrale diferite, care impun existenta unui numar de UC-uri periferice care proceseaza n paralel si care pot exista ca:
UC1 MEMORIE INTERN UNIC UC2 . .. . .. . UCn

Figura 13. Sisteme cu memorie unica si UC-uri identice

UC1 MEMORIE INTERN UNIC

UC2 . .. . .. . UCn

33

Sisteme de operare

MEMORIE INTERN

UC UCn

UC UCn

MEMORIE INTERN

Figura 14. Sisteme cu memorie proprie si UC-uri identice

UC1 SLAVE UC1 UC1 UC MASTER MEMORIE INTERN INTERN UNIC

UC2 SLAVE UC1 . .. . .. . UC1 UCn SLAVE

Figura 15. Sisteme cu memorie unica si UC-uri Master-Slave

MEMORIE INTERN

UC MASTER UC1

UC SLAVE UC1

MEMORIE INTERN

Figura 16. Ssisteme cu memorie proprie si UC-uri Master-Slave - arie de procesoare care presupune mpartirea unui program n activitati absolut independente si care se pot executa n mod simultan pe UC-urile existente ntr-o configuratie; - pipe (tip conducta) care permite procesarea directa asupra unui sir de vectori de mari dimensiuni; - puternic conectate care sunt individualizate de un volum crescut al lucrarilor executate de sistem, lucru realizat de controlul direct efectuat de UC-urile componente; 34

Sisteme de operare

- slab conectate care sunt caracterizate de faptul ca partajeaza ntre ele: programele de serviciu, sistemul de comunicatii, memoria cu acces direct etc. prin controlul direct al unui alt procesor. Sintetiznd, oportunitatea si necesitatea folosirii multiprelucrarii se realizeaza prin: - separarea diverselor functii ale sistemului prin alocarea cte unui program pentru fiecare functie, separare care trebuie nteleasa inclusiv geografic; - ncarcarea partajata a task-urilor spre ececutie de asa maniera nct fiecare procesor sa aibe acces la firul unic de asteptare a lucrarilor n executie; - cresterea fiabilitatii sistemului prin: - duplexarea sistemelor sau sisteme mirror, situatie n care una sau mai multe componente hardware ale sistemului sunt dublate din punct de vedere fizic, astfel nct o componenta este activa iar dublura ei fiind activata doar n cazul ca prima este defecta; - sisteme duale, situatie n care doua UC-uri prelucreaza simultan acelasi task si n mod periodic se verifica corectitudinea rezultatelor. Cea mai importanta activitate dintr-un sistem de operare cu multiprelucrare este planificarea executiei task-urilor aflate n firul de executie. n functie de tipurile de UC-uri folosite, planificarea lucrarilor n executie se realizeaza n urmatoarele moduri: - n cazul sistemelor cu UC-uri de tip diferit, planificarea executiei lucrarilor se pot realiza: - manual fara o planificare, existnd doar comutarea de la un UC la altul; - ncarcarea echilibrata a sistemului n sensul ca se acorda cte un UC la fiecare task n cazul sistemelor slab conectate, partajarea tuturor UC-urilor Slave n cazul sistemelor MasterSlave. - n cazul sistemelor cu UC-uri de acelasi tip, planificarea executiei lucrarilor se face considerndu-se toate procesoarele de tip Slave si planificarea facndu-se descentralizat. Se creaza o lista interna care contine numele UC-urilor si starea lor, iar n momentul ntreruperii unui task aflat n executie UC-ul care-i este

35

Sisteme de operare

atribuit cauta n lista de UC-uri pentru a gasi un alt task pentru a fi lansat n executie, n conformitate cu acelasi algoritm de planificare.

36

Sisteme de operare

5. Gestiunea resurselor unui sistem de calcul electronic Pentru fiecare componenta hardware a unui sistem de calcul electronic, sistemul de operare trebuie sa dispuna de componente software care sa gestioneze resursele hardware pe cale le ofera, sumultan cu asistarea permanenta a utilizatorului pe toata durata pregatirii, lansarii si executiei programului sau. Prin resurse hardware se ntelege: memoria interna, memoria externa, unitatea centrala, canalele de comunicatie si dispozitivele periferice de intrare/iesire. Sistemul de operare are rolul de a facilita utilizarea eficienta a resurselor hardware si de a solutiona eventualele conflicte care apar n concurenta pentru obtinerea respectivei resurse de catre programe. Ca sa poata sa-si ndeplineasa misiunea de arbitru - coordonator - manager eficient, sistemul de operare trebuie sa realizeze simultan urmatoarele activitati: - sa evidentieze fiecare resursa hardware disponibila n sistem; - sa determine cui, ct si cnd sa aloce fiecare resursa hardware, n conformitate cu politica de deservire a lucrarilor; - la terminarea executiei sa dealoce resursele hardware alocate anterior. Pentru asigurarea acestor activitati, sistemul de operare a unui calculator trebuie sa ndeplineasca urmatoarele functii, grupate n patru categorii: a. Functia de gestiune a memoriei interne care se manifesta prin: - ct si de cine este folosita memoria interna? - ce task, cnd si cta memorie trebuie sa-i alocam? - aloca memoria interna asigurndu-i metoda de acces si protectia zonelor de memorie alocate; - eliberarea memoriei interne la terminarea executiei programului. b. Functia de gestiune a UC-ului care se manifesta prin: - evidenta UC-urilor si a starilor acestora numita si traffic controller; - asigura decizia pentru cine, cnd si pentru ct timp se utilizeaza UC-ul prin processor scheduler; - aloca resursa de timp a UC-ului la un proces prin ncarcare registrelor UC-ului; - daca programul s-a terminat sau s-a depasit timpul de UC alocat, se retrage alocarea resursei. c. Functia de gestiune a dispozitivelor periferice se realizeaza prin urmatoarele activitati:

37

Sisteme de operare

- evidenta dispozitivelor periferice, a adaptoarelor si a canalelor prin I/O Traffic Controller; - daca este necesara utilizarea simultana a acelorasi resurse I/O, decide cine si ct timp foloseste resursa, prin intermediul lui Schedulering I/O; - aloca resursa periferica si initiaza operatia de I/O; - la terminarea operatiei de intrare/iesire dezaloca resursa periferica. d. Functia de gestiune a informatiilor organizate n fisiere si/sau baze de date se realizeaza prin urmatoarele activitati: - evidenta resursei informatie, individualizarea si localizarea ei, utilizarea si consemnarea starii acesteia prin File System; - asigura protectia necesara si ofera rutine de acces, decide cine are acces la resursele de informatii; - asigura resursele informationale necesare deschiderii structurii de date (fisier sau baza de date) prin utilizarea componentei Open; - dezaloca resursele informationale prin utilizarea lui Close pentru a nchide structurile de date anterior deschise. 5.1. Gestiunea proceselor i procesoarelor Atunci cnd se utilizeaza n mod partajat resursele unui sistem de calcul electronic, se poate ajunge la insuficienta resurselor procesor, pentru doua sau mai multe programe aflate n executie, caz n care trebuie sa existe o componenta sistem care sa asigure timp de UC pentru procesele create. Pentru lamurirea acestei probleme sa introducem, prin definitie, urmatoarele notiuni: - task-ul (activitatea, lucrarea sau programul) ca fiind unitatea interna de lucru creata de sistemul de operare n momentul n care accepta spre executie un executabil; - programul este secventa logica de instructiuni care implementeaza un anumit algoritm de calcul, care se considera a fi compus din mai multe procese; - procesul este reprezentat de de un program n curs de executie si care poate fi un program de serviciu, un program de aplicatie sau o rutina a sistemului de operare; - lucrarea este o colectie de activitati sau task-uri care se executa de sistemul de calcul electronic;

38

Sisteme de operare

- procesorul este acea componenta electronica care este capabila sa execute instrictiunile unui program, ntelegem prin procesor UC-ul sau controller-ul de canal. A. Procesele concurente (paralele) si coordonarea proceselor Procesele concurente se numesc si procese paralele. Ele presupun existenta urmaririi de catre sistemul de operare a executiei mai multor programe simultan. Programele existente n executie la un moment dat vor concura la resursele hardware ale sistemului de calcul. Aceasta concurenta se face n doua moduri: - direct prin utilizarea simultana a acelorasi resurse hardware ale sistemului de calcul; - indirect prin concurarea la aceiasi resursa hardware a sistemului de calcul.
INACTIV NELANSAT Lansare PREGATIT INTRERUPT Activare ACTIV Dezactivare

BLOCAT IN ASTEPTARE

Figura 17. Diagrama de tranziie a unui proces


Sursa: R. Mranu Sistemele de operare MS-DOS i UNIX, Ed. Tehnic, Bucureti 1995, pag.46

Gestiunea proceselor concurente este rezolvata de sistemul de operare prin trecerea fiecarui proces, aflat n executie, printr-unul din urmatoarele stari de existenta a unui proces: - inactiv-nelansat n executie, este starea n care se afla un proces n firul de lansare n executie, el fiind ncarcat n memorie si luat n considerare de sistemul de operare n vederea lansarii efective n executie imediat ce conditiile o vor permite; - activ este starea n care se gaseste un proces a carui instructiuni se executa n momentul de fata;

39

Sisteme de operare

- pregatit-ntrerupt este starea n care se afla un proces care momentan ntrerupt de catre un eveniment extern prioritar, dar care este pregatit pentru lansare n executie n orice moment n care vor fi ndeplinite conditiile de relansare; - blocat n asteptare este starea n care procesul asteapta terminarea unei operatii de intrare-iesire care se desfasoara n favoarea sa. ntre aceste patru stari exista un graf de tranzitie care este acelasi pentru orice proces, tranzitie reprezentata n figura 17. Gestiune proceselor concurente implica din partea sistemului de operare urmatoarele doua activitati majore: - determinarea proceselor care asigur independenta sistemului de vitezele relative de executie a componentelor, care trebuie sa conduca la un rezultat unic, altfel sistemul este nedeterminat si n acest caz trebuie introduse resptictii de prioritate prin stabilirea unor grade de precedenta; - interblocarea proceselor care apare atunci cand i procese asteapta un timp nedefinit ntr-un fir de asteptare circular ca un proces sa renunte la aspiratiile de a utiliza o resursa hardware; aceasta problema se rezolva n urmatoarele modalitati: - alocarea controlului n avans de executie; - alocarea n avans a resurselor partajate; - aranjarea cererilor de resurse ntr-o lista secventiala si ierarhizarea resuselor concurentiale pe niveluri, n scopul acordarii resursei doar la nivelele ierarhic superioare; - excluderea mutuala a proceselor care solicita n acelasi timp resurse critice, n sensul de a nu se executa simultan ci n decalaj de timp. B. Sincronizarea procesele Exista situatii cnd un anumit proces trebuie sa fie continuat doar dupa ce un alt proces a ajuns ntr-o anumita faza de executie sau pana ce s-au petrecut anumite evenimente care se afla sub controlul altui proces. Sincronizare ntre procese este impusa si de necesitatea comunicarii ntre aceste procese. Pentru realizarea mecanismelor de sincronizare a proceselor exista urmatoarele facilitati: - biti de atentie, n care fiecarei resurse partajate de i procese i este atasat un bit numit lock-bit care poate avea valoarea 0 pentru resursa partajata disponibila, sau 1 pentru resursa indisponibila (deoarece este

40

Sisteme de operare

utilizata de un alt proces si care la terminare va pune bitul pe 0), timpii de testare a bitului sunt ineficienti; - mecanisme de asteptare si semnalizare care presupune plasarea procesului, solicitant al resursei partajabile, ntr-o lista de procese blocate n asteptarea resursei; - calculul semafoarelor prin operatii P si V n care primitivele P si V modifica semafoarele S (semafor de setare care poate lua valorile 0 sau 1) dupa urmatoare logica: P(S) - decrementeaza valoarea lui S cu 1 si daca S# 0 atunci asteapta; V(S) - incrementeaza valoarea lui S cu 1 si daca S# 0 atunci emite semnal; - comunicarea directa de tip SEND/RECEIVE n care sincronizarea se realizeaza direct prin intermediul primitivelor SEND(Proces1, mesaj) si RECEIVE(Proces2, mesaj); - tehnica cutii postale n care se transmit mesaje prin intermediul unor zone tampon dinamice numite cutii postale si n care fiecare proces creaza cte o cutie postala care va contine informatii (mesaje) care pot fi exploatate de celelalte procese; C. Gestiunea procesoarelor Prin gestiunea procesoarelor ntelegem asigurarea procesoarelor la fiecare din procesele create de sistemul de operare la ncarcarea n memorie a acestora. Gestiunea procesoarelor se desfasoara la: nivelul planificarii lucrarilor, cand sistemul de operare decide care proces devine activ si la nivel de alocare efectiva a procesorului la procesele create de sistemul de operare. Gestiunea procesoarelor se realizeaza prin intermediul urmatoarelor module: modulul de planificare a lucrarilor si modulul de alocare a procesorului. - Modulul de planificare a lucrarilor executa urmatoarele activitati: - evidentiaza starea lucrarilor si gestioneaza cererile de servicii; - alegerea politicii de deservire a lucrarilor dupa prioritati, necesarul resurselor solicitate, ncarcare echilibrata a procesorului, durata estimata de executie; - alocarea resurselor necesare procesului planificat, din punct de vedere al: memoriei interne, memoriei externe, timp de unitate centrala, dispozitive periferice; - eliberarea resurselor prin dezalocarea resursei la terminarea executiei procesului. - Modulul de alocare a procesorului executa urmatoarele activitati: 41

Sisteme de operare

- traffic controller care evidentiaza starea proceselor la un moment dat; - processor scheduler stabileste care proces si pentru ct timp dispune de procesor; - aloca procesorul unui proces efectund si actualizarea continutului registrilor pentru executia procesului care a cstigat competitia; - dezaloca procesorul daca-i expira cuanta de timp acordata, daca a aparut o ntrerupere prioritara sau daca s-a terminat executia procesului. Exista si modele probabilistice pentru planificarea lucrarilor la nivelul procesorului astfel nct exista urmatoarele doua tipiri de sisteme de operare: - sisteme nepreemptive sunt sistemele n care fiecare proces se executa de la cap la coada, prin executia de catre procesor a cererii cele mai prioritare pna la terminarea executiei, chiar daca apar pe parcursul executiei cereri mai prioritare; - sisteme preemptive sunt sistemele n care cererile din diverse etape de executie se adreseaza nucleului care va aloca resursa cererii cele mai prioritare, iar executia procesului curent este ntrerupta si trecuta n asteptare. 5.2. Gestiunea memoriei Prelucrarea informaiilor n sistemele de calcul electronic, presupune pstrarea (stocarea, memorarea) datelor i programelor pe dispozitive de memorare. Acestea sunt organizate pe dou niveluri: memoria intern (RAM sau ROM) i memoria extern (discuri magnetice sau benzi magnetice, CD-uri, streamere etc). Pentru memoria intern se folosete i noiunea de memorie principal, iar pentru memoria extern cea de memorie auxiliar. Fiind o resurs important a sistemului de calcul electronic, memoria (fie ea intern sau extern) trebuie gestionat corect i raional de sistemul de operare. Componenta sistemului de operare care face gestiunea memoriei se numete manager de memorie i are rolul de a asigura decizia organizrii memoriei la cele dou niveluri (intern i extern) i de a stabili i mijloci transferul corect ntre aceste niveluri. Tehnicile de exploatare cum sunt: multiprogramarea, time-sharing, multiproprocesarea etc, impun existena unor implementri de gestiune a memoriei (n sistemul de operare) ca: tehnica alocrii dinamice a necesarului de memorie i

42

Sisteme de operare

tehnica memoriei virtuale. Obiectivul primordial al activitii de gestiune este acela de a oferi o vitez de execuie maxim posibil (n contextul configuraiei hardware existente) pentru programele ce urmeaz a fi executate sub controlul sistemului de operare. Ca regul general, de gestiune a memoriei interne, consemnm meninerea n memoria intern RAM doar a unor pri (sau funcii modulare) cele mai des utilizate de ctre unitatea central, restul modulelor fiind ncrcate n memoria intern (din memoria extern) dup necesitile algoritmilor implementai de programe. n memoria intern coexist att date ct i programe. Sarcina gestiunii corecte a zonelor de memorie revine managementului de memorie asigurat de sistemul de operare. n memoria extern, de asemenea, coexist datele i programele. Programele sunt gestionate de sistemul de operare sub form de fiiere executabile, iar datele sub form de fiiere de date, baze de date sau bnci de date. Gestiunea propriuzis a programelor i datelor din memoria extern este asigurat de sistemul de operare prin componenta sa numit subsistemul de gestiune al fiierelor (tipic fiecrui sistem de operare n parte). Referitor la memoria intern unde pot exista simultan ncrcate mai multe programe, cu funcionalitate mai mult sau mai puin independent, trebuie fiecare n parte s se supun urmtoaerlor operaii: ncrcarea n memoria intern, cnd se evalueaz necesarul de resurse (n cazul nostru de memorie intern), se asigur recalcularea adreselor de lansare n execuie a programului, se stabilesc valorile cu care vor fi ncrcate registrele de control a execuiei, se recalculeaz adresele relocabile etc; protecia programelor ncrcate n memoria intern a calculatorului, astfel nct accesul neautorizat ale unor programe n spaiul unui anumit program s fie blocat, la fel i n ceea ce privete accesul la fiierele altor programe. ntreaga alocare a spaiului de memorie disponibil se face dup politica de deservire (static sau dinamic) implementat n sistemul de operare. Pentru aceasta sistemul de operare trebuie s cunoasc n fiecare moment geografia alocrii spaiului fizic de memorie. Trebuie reinut c n faza de punere la punct i de obinere a programului executabil, se lucreaz cu adrese de memorie logice (adrese de memorie simbolice, exprimate n general prin adrese relative la nceputul segmentelor), dar la ncrcarea programlui n memorie (care poate fi oriunde n spaiul de memorie) trebuie s se precizeze adresa fizic (adresa real) de ncrcare i lansare n execuie. n faza de ncrcare n memoria intern (din memoria extern) a programului, se face translatarea adreselor logice n adrese fizice, translatare care se numete relocarea adreselor. Orice activitate de gestiune a memoriei interne se bazeaz pe trei algoritmi de baz:

43

Sisteme de operare

algoritmul de transfer, care trebuie s determine (n avans) cnd trebuie transferat (din memoria extern n cea intern) un bloc; algoritmul de plasare, care stabilete care zon momentan liber va fi locul n care se plaseaz blocul adus; algoritmul de reamplasare, care va determina care blocuri i n ce moment trebuie reamplasate n memoria intern; pentru a elibera anumite zone care vor fi utilizate n alte scopuri. Activitatea de gestiune a memoriei interne este ilustrat schematic n fig. 18. A. Alocarea dinamic a memoriei Alocare memoriei este operaia prin care se atribuie unui program o anumit zon din memoria intern. Alocarea memoriei interne se poate realiza n dou moduri: alocare static, n care programul este nrcat n prima zon de memorie liber, pe care o va ocupa pn la terminarea execuiei sale; alocare dinamic, n care adresele logice nu sunt relocate la ncrcarea programului n memorie, ci n momentul execuiei instruciunilor. La alocarea dinamic adresele relative (logice) sunt pstrate pentru a se putea realiza deplasarea programului dintr-o zon a memoriei interne ntr-alta, n funcie de politica de alocare a sistemului de operare.

PROCESOR UC

Adrese

MEMORIA INTERNA

Canale de transfer Comenzi de deplasare


MEMORIA EXTERNA

Figura 18. Activitatea de gestiune a memoriei interne B. Memoria virtuala

44

Sisteme de operare

Exist sisteme de operare care privesc memoria intern i cea extern ca una unic, numit memorie virtual. Conceptul de memorie virtual ofer iluzia pentru utilizator, c dispune de o memorie teoretic infinit. Acest lucru poate fi realizat prin efectuarea unui transfer al informaiei din memoria extern n cea intern, i invers, la nivel de multiplu de sector de disc (n*1024 bytes), un asemenea "calup" de transfer se numete pagin. n cadrul acestui concept, programatorul lucreaz cu adrese de memorie virtuale, iar adresa real (numit adres fizic) este calculat de o funcie de translatare a adreselor virtuale.

MEMORIE PROCESOR UC ai Tabela functie de translatare bi

MEMORIA INTERNA

Canale de transfer Comenzi de deplasare

MEMORIA EXTERNA

Figura 19. Dispozitivul de translatare a memoriei Pentru a nelege mecanismul memoriei virtuale s facem urmtoarele notaii: - ai, unde i= 0, 1, 2, ..., n, sunt adrese virtuale; - bj, unde j= 0, 1, 2, .... m, sunt adrese reale; - ft: A(ai)B(bj) este funcia de translaie a adreselor virtuale n adrese reale. Aceste notaii corespund cu figurile 19, 20, 21, 22 i 23. Funcia de transfer, se poate defini ca: 1. ft(ai)=0, dac informaia de la adresa virtual nu se afl n momentul curent n memoria intern;

45

Sisteme de operare

ft(ai)=bj, dac adresa virtual ai este ncrcat n memoria intern. n cazul n care ft(ai)=0 se emite un semnal electronic cu semnificaia nonrezidenei adresei virtuale, se genereaz o ntrerupere de plasare din memoria extern n cea intern, a zonei referite prin ai. Dup terminarea tratrii ntreruperii, care a executat algoritmi de transfer, plasare i reamplasare, funcia ft(ai) devine nenul, adic ft(ai)=bj, i relndu-se execuia programului ntrerupt care necesita zona de memorie translatat. Mecanismul de translatare (numit i dispozitiv de translatare) a memoriei este reprezentat n figura 19. Sistemele de operare existente pn n prezent, au implementate, din punct de vedere al modului de organizare, urmtoarele variante de memorie virtual: memorie virtual organizat la nivel de adres; memorie virtual organizat la nivel de pagin; memorie virtual organizat la nivel de segment; memorie virtual organizat la nivel de segment-pagin; Pentru nelegerea variantelor de memorie virtual s lum pe rnd fiecare dintre acestea i s le comentm.
2.

B.l. Memoria virtual organizat la nivel de adres Aceast memorie virtual este prezentat schematic n figura 20.

PROCESOR UC

RV ai

Tabela FT RM b bi MEMORIA INTERNA

Rezident Acces Depasire DISPOZITIV DE TRANSLATARE

Canale de transfer

MEMORIA EXTERNA

Figura 20. Organizarea la nivel de adresa

46

Sisteme de operare

n aceast figur sunt utilizat urmtoarele notaii: RV - registrul de adres virtual, n care se introduc adresele virtuale ai de care are nevoie procesorul (care execut secvena de instruciuni a programului n lucru i care are nevoia de zona de memorie specificat prin ai); RM - rergistrul de adres al memoriei interne, coninnd adresele fizice (adresele reale) indicate prin bj, din a cror coninut se extrage informaia solicitat de procesor; ACCES - registrul de acces, care dac conine valoarea 1 se iniiaz procesul de translatare, iar dac este pe 0 nu se face translatare; REZIDENT - registrul de stare a rezidenei, care conine valoarea 1 dac blocul de memorie referit prin adresa virtual ai, se afl n memoria intern, iar dac va conine valoarea 0 nseamn c blocul de memorie referit prin ai, nu este rezident n memoria intern; DEPIRE - registrul de semnalare (valoarea 1) a erorilor de depire a spaiului de memorie. S presupunem c procesorul execut instruciunile unui program oarecare. Dac acest program are nevoie de nite date aflate ntr-o zon de memorie virtual definit prin ai , procesorul va introduce adresa ai n registrul de adrese virtuale RV. S presupunem c zona de memorie referit prin ai nu se afl n memoria intern. n acest caz registrul REZIDENT conine valoarea 0, registrul ACCES conine valoarea 1 i prin urmare procesul de translatare se poate iniia i desfura. Dup iniierea operaiunii de translatare, pot aprea urmtoarele situaii: dac adresa virtual ai se afl n domeniul care este definit de intrarea curent n tabela FT, atunci coninutul care se afl n FT se introduce n registrul memoriei interne RM i se va extrage din memoria intern informaia coninut la adresa real bj i solicitat de procesor; dac adresa virtual nu se gsete ntr-o intrare a tabelei FT, atunci RM va conine valoarea 0, registrul REZIDENT se pune pe 1 i se iniiaz algoritmii de transfer, plasare i reamplasare care vor aduce din memoria extern n cea intern informaia solicitat de procesor i actualizeaz tabela de definire i descriere a funciei de translatare ft. Dac se noteaz prin b adresa de baz a blocului de memorie intern i cu d deplasarea n cadrul blocului, atunci adresa real bj se determin prin formula: bj = ft(b) + d Consemnm ca dezavantaj al acestui tip de organizare, faptul c tabela FT ocup un spaiu de memorie destul de mare.

47

Sisteme de operare

B.2. Memorie virtual organizat la nivel de pagin Aceast memorie virtual este prezentat n fig.21. Cu notaiile folosite anterior i cu altele noi se poate prezenta i acest mod de organizare. Astfel, avem: registrul de adrese virtuale devine mai complex prin asocierea perechii de semiregitrii C i P, n care C va conine numrul cuvntului din P, iar P va conine numrul de cuvinte din pagin; registrul de adrese reale RM devine i el mai complex prin asocierea lui C i Q, unde C are semnificaia deja definit iar Q conine o dimensiune de bazare; MPT - dispozitivul (mecanismul) de translatare a paginilor. Acest tip de memorie virtual are avantajul c reduce memoria coninut n tabela ft, pentru c spaiul de adrese este divizat n pagini de dimensiune constant. n general, dimensiunea unei pagini este egal cu dimensiunea unei pagini din memoria intern, lucru care duce la netranslatarea adresei cuvntului de pagin. Cel mai important avantaj este c un program poate fi executat fr a avea toate paginile ncrcate dintr-o data n memoria RAM, ci pe msur ce prelucrarea o cere. Aceast situaie duce la o protecie sporit a accesului i la o utilizare eficient a memoriei interne.

PROCESOR UC

ai

RV C P

MTP Q

RM C bi Q

MEMORIA INTERNA

Canale de Rezident Acces Depasire DISPOZITIV DE TRANSLATARE transfer

MEMORIA EXTERNA

Figura 21. Organizarea la nivel de pagina

48

Sisteme de operare

Dispozitivul de translatare implementeaz o tabel a paginilor (MTP) n memoria intern RAM. Aceast tabel conine informaii utilizate n translatarea adreselor. Pentru fiecare adres virtual ai solicitat de programul aflat n execuie, procesorul va asocia perechea (P,C) n care P va conine numrul cuvintelor din pagin i C numrul de cuvnt referit din P. O pagin conine 0...2P cuvinte. Din cadrul paginii se extrage o component Q de o anumit dimensiune (solicitat de procesor) n urmtoarele dou variante: dac RM(Q) 0, atunci adresa solicitat prin ai se afl ntr-o pagina rezident n memoria intern; dac RM(Q) = 0, adresa solicitat prin ai nu este ntr-o pagin rezident n memorie i se va declana execuia algoritmilor de transfer, plasare i reamplasare, ca urmare se face punerea lui REZIDENT pe 1 i se actualizeaz MTP pentru referirea noii adrese. B.3. Memorie virtual organizat la nivel de segment Aceast memorie virtual este prezentat n fig. 2.2. Notaiile anterioare rmn valabile, ns apar cteva noi: registru buffer, conine adresa extras din tabela de segmente MTS, iar semiregistrul R specific baza segmentului i semiregistrul D specific dimensiunea segmentului; registrul de adrese virtuale RV conine: semiregistrul S care conine numele segmentului i semiregistrul C care conine numele cuvntului din segment; registrul de adrese reale RM conine: semiregistrul C (numele cuvntului din segment) i semiregistrul R (baza segmentului); registrul comparator care efectueaz comparaia ntre C i D. Pentru fiecare adres virtual ai solicitat de programul aflat n execuie, procesorul va introduce n registrul de adrese virtuale: numele segmentului n S i numele cuvntului din cadrul segmentului n C. Adresa de memorie unde ncepe segmentul S se precizeaz ca baz n semiregistrul R, iar n D se va specifica dimensiunea segmentului. Perechea (R, D) va reprezenta o intrare n tabela de translaie MTS. Registrul comparator efectueaz comparaia dintre C i D, obinnduse n final adresa real n registrul RM. Dac R = 0, atunci se va declana execuia algoritmilor de transfer, plasare i reamplasare, cu reactualizarea tabelei MTS i cu punerea la dispoziia procesorului a informaiilor solicitate.

49

Sisteme de operare

PROCESOR UC

ai

RV C S

Comparator MTS R D D R Registru buffer RM C R bi MEMORIA INTERNA

Rezident Acces Depasire DISPOZITIV DE TRANSLATARE

Canale de transfer

MEMORIA EXTERNA

Figura 22. Organizarea la nivel de segment B.4. Memorie virtual organizat la nivel de segment-pagin Aceast memorie virtual este reprezentat n fig. 2.3. Noile notaii care apar aici sunt: registrul de adrese virtuale este format din trei subregitrii: S care conine adresa virtual a segmentului, CP care conine adresa virtual a paginii n segment i CC care conine adresa virtual a cuvntului n cadrul paginii; registrele ACCES PAGIN i ACCES SEGMENT dac conin valoarea 1 permit accesul la pagina sau ia segmentul specificat; RA registrul buffer de acces n tabela MTP, n care subregistrul R conine adresa tabelei de pagini i CP cu semnificaia deja cunoscut. Pentru fiecare adres virtual ai solicitat de programul aflat n execuie, procesorul va introduce n registrul de adrese virtuale RV: adresa virtual a segmentului (n S), adresa virtual a paginii n cadrul segmentului (n CP) i adresa virtual a cuvntului n cadrul paginii (n CC). Prin intermediul valorii din S se caut n tabela MTS dac se gsete ncrcat n memorie zona avnd adresa tabelei de pagini (n R) i dimensiunea segmentului (exprimat n pagini) n D. Cu componenta CP de acces RA i cu R din registrul buffer se extrage din tabela de pagini MTP cuvntul exprimat prin CP i R. Cuvntul selectat are q bii i reprezint

50

Sisteme de operare

una din paginile reale din memoria intern, cuvnt care va fi introdus n registrul adreselor reale RM.

RM PROCESOR UC ai RV CC CP S MTS R D D R Buffer Acces pagina Q RA CP Buffer R MTP

CC Q

bi MEMORIA INTERNA

Canale de transfer

MEMORIA EXTERNA

Depasire segment Rezident

Acces segment DISPOZITIV DE TRANSLATARE

Figura 23. Organizarea la nivel segment-pagina Se vor ntlni urmtoarele situaii: dac adresa virtual a segmentului (cunoscut n S) nu se gsete n nici o intrare n MTS, atunci nseamn c segmentul virtual solicitat nu se afl n memoria intern, sunt declanai algoritmii de transfer, plasare i reamplasare n memoria intern ai segmentului solicitat, actualizndu-se tabela de segmente i punndu-se REZIDENT pe valoarea 1; dac valoarea adresei virtuale a paginii n segment (aflat n CP) este mai mare dect dimensiunea segmentului (exprimat n numr de pagini) din registrul D, atunci exist o depire semnalizat prin punerea pe 1 a valorii din registrul DEPIRE SEGMENT; dup gsirea segmentului se trece la determinarea paginii prin intermediul tabelei MTS.

5.3. Gestiunea dispozitivelor periferice

51

Sisteme de operare

Dispozitivele periferice reprezint o important resurs hardware, resurs care este gestionat tot de sistemul de operare. Problematica ridicat de gestionarea dispozitivelor periferice care bineneles trebuie privit prin prisma unei diversiti tipo-funcionale, diverselor viteze de acces i diverselor tipuri de transfer a datelor. Exist n general, adaptoare, controlere sau interfee hardware specifice fiecrui tip de dispozitiv periferic (DP) n parte. Totui, se pot gsi o multitudine de elemente comune caracteristice dispozitivelor periferice. A. Uniti de control ale dispozitivelor periferice - UCDP UCDP-urile sunt prevzute cu circuite integrate specializate (microprocesoare specializate pe operaii de intrare/ieire, numite microcontrolere) care sunt destinate controlului automat al citirii, respectiv scrierii, pe mediile fizice de stocare a datelor. UCDP-urile ndeplinesc urmtoarele funcii: recunoaterea adreselor fizice ale perifericelor pe care le controleaz; conversia comenzilor primite, de la unitatea de canal, n semnale electronice acceptate de mecatronica perifericului comandat; transmiterea ctre canal a semnalelor electronice standard, privind evoluia operaiilor de intrare/ieire lansate; efectuarea controalelor (n general de paritate) asupra datelor transmise i a informaiilor de control care nsoesc transferul de date; urmrirea ndeplinirii condiiilor de execuie a comenzii; generarea informaiilor de stare ale dispozitivelor periferice i ale unitilor de control, att la iniierea ct i la terminarea transferului de date; conversia formatului datelor din codul perifericului comandat n codul acceptat de unitatea central de prelucrare i invers. Reinem c exist UCDP-uri care asigur conectarea la canal a unui singur periferic sau a mai multor dispozitive periferice (de acelai tip, sau de tipuri diferite). n cazul UCDP-urilor care conecteaz mai multe dispozitive periferice, numrul acestora este limitat de debitul de transfer al canalului i numrului de periferice admis de UCDP-ul n cauz.

B. Canale de transfer

52

Sisteme de operare

Transferul de informaii ntre memoria intern i dispozitivele periferice se poate realiza n urmtoarele dou moduri: continuu, cnd un dispozitiv periferic se conecteaz logic la canalul de transfer i rmne conectat la acesta pn termin operaia de transfer de date (scriere sau citire), fr a permite altui periferic s mai comunice cu canalul pn la terminarea operaiei respective de intrare/ieire; multiplex, cnd mai multe dispozitive periferice vor transmite simultan prin canal, respectnd anumite reguli impuse de multiplexorul electronic implementat. Canalele de transfer asigur dirijarea fluxului de date i de informaii ntre memoria intern i dispozitivele periferice, elibernd unitatea central de procesore a calculatorului de sarcina tratrii operaiilor de intrare/ieire. De aceea, n momentul n care UC-ul ajunge s decodifice o instruciune care cere efectuarea unei operaii de intrare/ieire, unitatea de procesare transmite o comand UCDP-ului care gestioneaz perifericul implicat, pentru a deservi el operaia (timp n care UC-ul "omeaz", sau execut o alt secven de program). Canalele de transfer execut urmtoarele funcii: transformarea comenzii primite de la UC n semnale acceptate de UCDP-ul perifericului n cauz; eliberarea UC-ului i preluarea controlului n totalitate de UCDP pentru transferul de date; dezansamblarea sau ansamblarea datelor transferate ntre dispozitivele periferice i memoria intern; asigurarea sincronizrii transferului de date cu activitatea UC-ului; controlul adresei surs sau destinaie (adres de memorie intern) inclusiv verificarea proteciei de memorie; generarea i gestionarea informaiei de stare a canalului, care reprezint "fotografia" dinamic a evoluiei canalului, pe care o pune la dispoziia UC-ului. C. Descrierea desfurrii proceselor de intrare/ieire Orice operaie de intrare/ieire este iniiat de UC prin execuia unei instruciuni care specific canalul, adresa dispozitivului periferic i adresa de memorie intern la care, sau de la care, se face transferul de date. Comunicarea dintre canalul de intrare/ieire i UC se realizeaz, n general, prin intermediul ntreruperilor. Unitatea central UC i canalele de intrare/ieire sunt n general, proiectate pentru a opera n mod concurent dar ierarhizat (vezi fig. 24).

53

Sisteme de operare

Modurile de organizare a sistemelor de intrare/ieire sunt: un canal de intrare/ieire poate fi partajat de dou UC-uri folosind un controler unic pentru canalul de intrare/ieire, n cazul sistemelor de calcul exploatate n multiprelucrare; o unitate de control UCDP partajeaz mai multe canale, este cazul n care acelai dispozitiv de intrare/ieire este conectat la mai multe ci de acces, iar dou UC-uri partajeaz aceeai unitate de control; DP-ul poate fi partajat ntre mai multe UCDP-uri ataate la diferite canale ale aceluiai UC sau mai multe UC-uri, ca n fig. 2.5. D. Gestiunea dispozitivelor periferice de ctre sistemul de operare Pentru a degreva utilizatorii de scrierea programelor de canal pentru operaiile de intrare/ieire, sistemele de operare dispun de programe specializate pentru controloarele de intrare/ieire. Funciile care trebuie s le asigure gestiunea dispozitivelor periferice sunt: alocarea dispozitivului periferic, a unitii sale de control i a canalului pentru procesul de intrare/ieire; dezalocarea dispozitivului la terminarea operaiei de intrare/ieire; evidena strii tuturor DP-urilor prin blocuri de control asociate fiecrui dispozitiv periferic (DP); decide cu privire la care, ct timp i modul de acordare al dispozitivului periferic.

54

Sisteme de operare

Gestriunea DP prin metode hardware: operarea independent a dispozitivului periferic, existena unui buffer proproiu n DP, ci multiple de acces la DP i multiplexarea canalului de transfer a datelor. Sistemul de operare realizeaz gestiunea dispozitivelor periferice prin urmtoarele module specializate: planificatorul de intrare/ieire (input/output Scheduller) implementeaz algoritmul strategic pentru alocarea canalului, unitii de control UCDP i a dispozitivelor periferice propriu-zise; planificatorul de intrare/ieire este similar cu planificatorul proceselor n sensul c o operaie de intrare/ieire odat lansat n execuie nu poate fi ntrerupt nainte de execuia ei complet; controlerul traficului de intrare/ieire (input/output Traffic Controller) are menirea de evidenia informaiile de stare ale fiecrui dispozitiv periferic, prin construirea unei tabele ce conine un bloc de control pentru fiecare dispozitiv periferic; manipulatorul dispozitivelor de intrare/ieire (input/output Device Handler) are rolul de a crea programul de canal, executnd fizic operaia de intrare/ieire. Exist sisteme n care dispozitivele periferice se utilizeaz partajat "Shared Devices". Aceast partajare impune: protecia mpotriva acceselor neaturizate; interfaarea cererilor din partea proceselor; utilizarea sistemului Spooling pentru gestiunea perifericelor virtuale.

55

Sisteme de operare

6. SISTEMUL DE OPERARE DOS A. Interfaa UTILIZATOR - MS-DOS Sistemul de operare MS-DOS este un sistem care lucreaz n regim monouser (monoutilizator) i mono programare. Interfaa acestui sistem de operare este adaptat regimului de lucru prezentat la paragraful 4.1, fiind o interfa simpl de tip text. Utilizatorul introduce o comand (cu eventuali parametrii) pe care sistemul de operare (prin intermediul interpretatorului de comenzi) o preia, o analizeaz din punct de vedere sintactic i semantic, iar dac totul este corect execut comanda. Orice eroare existent n sintaxa comenzii este semnalat printr-un mesaj de eroare. Utilizatorul introduce secvenial comenzi pe care sistemul de operare le execut. In cazul cnd comenzile sunt introduse printr-un fiier, numit fiier de comenzi, ele se pot executa n mod automat prin simpla invocare a numelui de fiier. Astfel de fiiere de comenzi trebuie s aibe obligatoriu extensia .bat. Programele executabile sunt de format binar avnd extensiile .exe sau .com. Lansarea n execuie a unui fiier executabil (program) se face prin simpla invocare a numelui fiierului, fr a fi obligatorie precizarea extensiei. Orice program executabil este privit ca o comand extern (comand care se afl pe suport magnetic n memoria extern). Dac n acelai director se afl trei fiiere care au numele nume.bat, nume.exe i nume.com, i dac se introduce prin tastare numai nume, atunci ordinea n care se face execuia este .com, exe i .bat. B. Conceptul de ntrerupere Unitatea central de prelucrare asigur urmtoarele funcii, n procesul de execuie a unui program: generarea comenzilor electronice necesare execuiei unei instruciuni; evidena i execuia nlnuirii automate a instruciunilor; evidena evoluiei strii de execuie a instruciunilor printr-un mecansim de evideniere stare-program. Evidena evoluiei strii de execuie a instruciunilor se poate realiza n dou moduri: prin memorarea dinamic a informaiilor de stare a execuiei instruciunii, n cuvntul stare-program; prin sistemul de ntreruperi. Din punct de vedere funcional UC-ul se poate afla ntr-una din urmtoarele dou stri funcionale majore: operaional - atunci cnd execut secvenele de instruciuni n favoarea unui program, sau ale unei rutine a sistemului de operare;

56

Sisteme de operare

neoperational - n situaie de defect sau scos de sub tensiune.

Starea operaional se manifest prin urmtoarele substri generate de procesele la care particip: starea activ; starea n ateptare; starea ntreruptibil (stare n care procesul poate fi ntrerupt); starea nentreruptibil (stare mascat special pentru a nu fi ntrerupt procesul); starea sistem (n care controlul este deinut de sistemul de operare); starea utilizator (n care controlul este deinut de programul utilizator). Cuvntul stare-program are o evoluie dinamic i arat n orice moment funcionarea Unitii Centrale (UC). Acest cuvnt este memorat ntr-un registru al UC-ului numit registrul stareprogram. n cazul cel mai general, registrul stare-program ar trebui s conin urmtoarele informaii: informaii despre modul n care s-a ncheiat execuia instruciunii precedente, ele reflectndu-se n indicatorii de condiie; mtile de ntreruperi (pentru mascarea ntreruperilor nentreruptibile); starea unitii centrale; nivelul de prioritate aflat n execuie; cheia de acces asociat zonei de memorie ocupat de program; adresa urmtoarei instruciuni ce urmeaz a fi executat. n starea operaional UC comut ntre substri prin ntreruperi. n cazul multiprogramrii ntreruperile au un rol esenial pentru comutarea controlului de la un program la altul. Fig. 26. Tratarea ntreruperilor Exist dou niveluri de procesare a ntreruperilor: hardware i software. Din punct de vedere hardware ntreruperile sunt procesate de o component a UCului care creaz un ir de ateptare (ntreruperi n ateptarea tratrii), iar din punct de vedere software ntreruperile sunt procesate de rutinele de tratare a ntreruperilor (specifice fiecrei ntreruperi), rutine care aparin sistemului de operare. ntreruperile sunt de dou tipuri: interne i externe. ntreruperile pot fi generate de:

57

Sisteme de operare

programul aflat n execuie, printr-o instruciune special de generare a unei ntreruperi (de un anumit nivel); o interfa de dispozitiv periferic care semnaleaz terminarea unei operaii de intrare/ieire sau apariia unei erori de transfer cu perifericul; alte sisteme i echipamente de calcul cu care este cuplat sistemul de calcul. Procesarea unei ntreruperi se face n urmtoarele etape: la apariia cererii de ntrerupere, ea va fi luat n considerare dac are cea mai mare prioritate din irul de ateptare; analizarea tipului ntreruperii i salvarea cuvntului stare-program al programului curent ntr-o zon prestabilit din memoria intern; lansarea n execuie a rutinei de tratare a ntreruperii prin ncrcarea cuvntului stare-program a rutinei; execuia rutinei de tratare a ntreruperii; relansarea n execuie a programului ntrerupt, prin rencrcarea cuvntului stare-program salvat anterior n memorie. Prezentm cteva macrouri pentru apelarea unor ntreruperi: 1. ntreruperea 25H
; Citire sectoare de la adresa absoluta disc ABS_DISK_READ macro disk,buffer,num_sectors,first_sector mov al,disk mov bx,offset buffer mov cx,num_sectors mov dx,first_sector int 25H popf endm

2. ntreruperea 26H
; Scriere sectoare la adresa absoluta disc ABS_DISK_WRITE macro disk,buffer,num_sectors,first_sector mov al,disk mov bx,offset buffer mov cx,num_sectors mov dx,first_sector int 26H popf

endm

58

Sisteme de operare
0
Tabela vectorului de ntreruperi Zona de informa BIO/DOS ii BOOT _.................... - punere sub tensiune - buton RESET de pe panou - verific existenpe HD a lui IBMBIO IBMDOS a i - tastatur [CTRL+ALT+DEL] - dac exist ncarcn zona IBMBIO IBMDOS le i - d controlul execu la IBMBIO iei IBMBIO.COM - ini ializ interne, stivbuffere disc ... ri , - ncarc driverele instalabile - ncarc COMMAND.COM - d controlul COMMAND.COM - ului Mesaje de ini ializare C:\> ... IBMDOS.COM

Drivere instalabile
11

BOOT FAT ROOT Fi ierul sistem IBMBIO.COM Fi ierul sistem IBMDOS.COM


Fi ierul sistem COMMAND.COM
Fi utilizator ierul

Partea rezident COMMAND.COM - ului a - citirea execu fi i ia ierului AUTOEXEC.BAT; - garnisire memorie video; - afi prompter (a are teapt comenzi DOS) !!!- A TEPTARE C OMENZI MONITOR (ini ializare sistem terminat )

PSP
Zon utilizator Zona tranzitorie a COMMAND.COM -ului

20 30 K

640 K

1 2 3 4 5 6

A Extensie memorie video B Memoria video C

Extensie ROM hard-disc Rutina de R/W pe hard-disc -

- citire HD - scriere n MEM - RETUR

D E

ializareF Rutina de ini

Programe sistem(ROM)

1M 16 M

HD

- Adr.HD Adr.MEM (BIO/DOS) - CALL Rut.R/W - JMP BIO/DOS JMP

RESET

Execut instruc iunea de la adresa (FFFF0)H (caracteristic familiei de a P)

Figura . ncrcarea sistemului de operare DOS

59

Sisteme de operare

; Macrodefiniii pentru apelul funciilor MS-DOS


; ;******************* ; Intreruperi ;*******************

INTRERUPEREA 25H

; Citire sectoare de la adresa absoluta disc ABS_DISK_READ macro disk,buffer,num_sectors,first_sector mov al,disk mov bx,offset buffer mov cx,num_sectors mov dx,first_sector int 25h popf endm

INTRERUPEREA 26H

; Scriere sectoare la adresa absoluta disc ABS_DISK_WRITE macro disk,buffer,num_sectors,first_sector mov al,disk mov bx,offset buffer mov cx,num_sectors mov dx,first_sector int 26h popf endm

INTRERUPEREA 27H

; Retinere in statut de rezident STAY_RESIDENT macro last_instruc mov dx,offset last_instruc inc dx int 27h endm

; ; ;********************************** *****

60

Sisteme de operare
; Apelarea functiilor MS_DOS ;********************************** *****

APELAREA FUNCTIEI 00H

; Terminarea programului TERMINATE_PROGRAM macro xor ah,ah int 21h endm

APELAREA FUNCTIEI 01H

; Citire cu ecou de la tastatura, daca se detecteaza CTRL+BREAK sau ; CTRL+C se genereaza intreruperea ; INT 23h. In AL se returneaza caracterul citit. READ_KBD_AND_ECHO macro mov ah,01h int 21h endm

APELAREA FUNCTIEI 02H

; Afisarea unui caracter pe monitor DISPLAY_CHAR macro character mov dl,character mov ah,02h int 21h endm

APELAREA FUNCTIEI 03H

; Asteapta introducerea unui caracter de la ; dispozitivul standard auxiliar (AUX = COM1). ; La initializarea ; sistemului DOS avem: v=2400 ; bauds, fara bit de paritate, ; un bit de stop, 8 biti de date; daca se detecteaza ; CTRL+BREAK sau CTRL+C se genereaza intreruperea ; INT 23h. In AL se returneaza caracterul citit. AUX_INPUT macro mov ah,03h int 21h endm

APELAREA FUNCTIEI 04H

; Iesire auxiliara, se transmite caracterul aflat in registrul DL la AUX=COM1 ; daca se detecteaza CTRL+BREAK

61

Sisteme de operare
; sau CTRL+C se genereaza intreruperea INT 23h. AUX_OUTPUT macro mov ah,04h int 21h endm

APELAREA FUNCTIEI 05H

; Tiparirea unui caracter, al carui cod ASCII se ; afla in registrul DL, la LPT1. ; Daca se detecteaza CTRL+BREAK ; sau CTRL+C, se genereaza intreruperea INT 23h. PRINT_CHAR macro character mov dl,character mov ah,05h int 21h endm

APELAREA FUNCTIEI 06H

; Intrare/iesire directa la consola fara ecou. ; Daca registrul DL contine FFh, atunci se citeste un ; caracter de la ; consola in registrul AL (ZF=0), sau nimic (ZF=1). ; Daca in registrul DL se incarca un caracter ASCII el ; este direct afisat pe ecran. DIR_CONSOLE_IO macro switch mov dl,switch mov ah,06h int 21h endm

APELAREA FUNCTIEI 07H

; Citire directa fara ecou de la consola, in registrul AL. ; Nu verifica aparitia CTRL+BREAK sau CTRL+C. DIR_CONSOLE_INPUT macro mov ah,07h int 21h endm

APELAREA FUNCTIEI 08H

; Citire directa fara ecou de la consola, in registrul AL. ; Aceasta functie verifica aparitia CTRL+BREAK sau ; CTRL+C la intrare si genereaza INT 23h. READ_KBD macro mov ah,08h int 21h

62

Sisteme de operare
endm

APELAREA FUNCTIEI 09H

; Afiseaza un sir terminat prin $ ($ nu se afiseaza, ; numai 40h afiseaza si $) pe ecranul sistemului. In DS:DX se ; da sirul de afisat. DISPLAY macro string mov dx,offset string mov ah,09h int 21h endm

APELAREA FUNCTIEI 0AH

; Citeste de la tastatura (cu ecou) un sir de caractere ; pana la intalnirea caracterului CR. Sirul (inclusiv CR) ; este citit si memorat incepand de la deplasamentul 2 ; (octetul 3) al zonei tampon definite de utilizator. ; Adresa zonei tampon se da in DS:DX. ; Daca se detecteaza CTRL+BREAK sau CTRL+C se genereaza ; INT 23h. Se citesc maxin 255 caractere inclusiv CR. GET_STRING macro limit,string mov dx,offset string mov string,limit mov ah,0Ah int 21h endm

APELAREA FUNCTIEI 0BH

; Verifica daca exista un caracter pregatit la intrarea ; standard. Daca se detecteaza CTRL+BREAK sau CTRL+C ; se genereaza INT 23h. Functia returneaza FFh in AL ; daca exista un caracter pregatit, in caz contrar returneaza ; 0. Se recomanda folosirea acestei functii inainte de ; functiile 01h, 07h si 08h. CHECK_KBD_STATUS macro mov ah,0BH int 21H endm

;
; ; ; ; ;

APELAREA FUNCTIEI 0CH


Sterge toate caracterele din zona tampon de intrare si apeleaza functia DOS specificata in AL. AL se poate incarca cu valorile 01h, 06h, 07h, 08h sau 0Ah. Orice alta valoare duce doar la stergerea zonei tampon de intrare.

63

Sisteme de operare
FLUSH_AND_READ_KBD macro mov al,switch mov ah,0Ch int 21h endm switch

APELAREA FUNCTIEI 0DH

; Resetarea discului. Goleste toate zonele tampon de fisiere, ; fara a inchide fisierele. Toate zonele tampon ; modificate sunt scrise si toate zonele tampon ale memoriei ; CACHE sunt marcate ca fiind libere (le elibereaza). ; Aceasta functie se poate utiliza pentru ; tratarea lui CTRL+BREAK. RESET_DISK macro mov ah,0Dh int 21h endm

APELAREA FUNCTIEI 0EH

; Selectarea unitatii de disc implicite prin specificarea ei ; in registrul DL (0=A, 1=B, ...), ca fiind unitate logica ; curenta. SELECT_DISK macro disk mov dl,disk[-65] mov ah,0Eh int 21h endm

APELAREA FUNCTIEI 0FH

; Deschiderea unui fisier, utilizand FCB (File Control ; Block). DS:DX trebuie sa contina un pointer la un FCB ; nedeschis. Functia returneaza in AL, 0h daca s-a gasit ; fisierul sau FFh daca nu s_a gasit. OPEN macro fcb mov dx,offset fcb mov ah,0Fh int 21h endm

;
; ; ; ; ;

APELAREA FUNCTIEI 10H


Inchiderea unui fisier utilizand FCB. In intrare se incarca in DS:DX pointerul la FCB_ul deschis. Functia returneaza valoarea 0 in AL, daca s_a gasit o intrare in directorul specificat, sau valoarea FFh in AL daca nu s_a gasit fisierul.

64

Sisteme de operare
CLOSE mov mov int endm macro fcb dx,offset fcb ah,10h 21h

APELAREA FUNCTIEI 11H

; Cauta in directorul curent primul fisier al carui nume se ; potriveste cu cel specificat in FCB. In intrare se incarca ; DS:DX cu un pointer la FCB-ul nedeschis. Numele fisierului ; din FCB poate contine caracterele "?" sau "*". ; Pentru fisierele ascunse sau sistem, DX obligatoriu trebuie ; sa pointeze primul octet al FCB-ului extins ; (deplasament -07h). AL contine valoarea 0 daca s-a gasit o ; intrare in director pentru fisierul specificat, sau ; valoarea FFh daca nu s-a gasit un astfel de fisier. Daca ; s-a gasit intrarea pentru numele de fisier din FCB, se ; creeaza un FCB nedeschis de acelasi tip la adresa DTA (Disk ; Transfer Address) curenta. SEARCH_FIRST macro fcb mov dx,offset fcb mov ah,11h int 21h endm

APELAREA FUNCTIEI 12H

; Cauta in directorul curent urmatorul fisier al carui nume ; se potriveste cu cel specificat in FCB. In intrare se ; incarca DS:DX cu un pointer la FCB-ul nedeschis. Numele ; fisierului din FCB poate contine caracterele "?" sau ; "*". Pentru fisierele ascunse sau sistem, DX obligatoriu ; trebuie sa pointeze primul octet al FCB-ului extins ; (deplasament -07h). AL contine valoarea 0 daca s-a gasit o ; intrare in director pentru fisierul specificat, sau ; valoarea FFh daca nu s-a gasit un astfel de fisier. SEARCH_NEXT macro fcb mov dx,offset fcb mov ah,12h int 21h endm

APELAREA FUNCTIEI 13H

; Sterge din directorul curent fisierul al carui nume se ; potriveste cu cel specificat in FCB. In intrare se incarca ; DS:DX cu un pointer la FCB-ul nedeschis. Numele fisierului

65

Sisteme de operare
; din FCB poate contine caracterul "?" . AL contine ; valoarea 0 daca s-a gasit o intrare in director pentru ; fisierul specificat, sau valoarea FFh daca nu s-a gasit un ; astfel de fisier. Inainte de stergere fisierele ; trebuie inchise. DELETE macro fcb mov dx,offset fcb mov ah,13h int 21h endm

APELAREA FUNCTIEI 14H

; Citeste secvential un articol din fisier in zona DTA, ; utilizand un FCB pointat de DS:DX. Campul cu ; deplasamentul 0Ch si articolul curent precizat de ; deplasamentul 20h din FCB, sunt incarcate in DTA, dupa care ; cele doua campuri sunt actualizate, in sensul ca sunt ; incrementate. Lungimea articolului se va lua din campul ; de dimensiune a articolului din FCB, care are deplasamentul ; 0Eh. Se returneaza in AL valorile: ; 00h - pentru citire cu succes, ; 01h - pentru citirea unui EOF fara a se citi date, ; 02h - pentru DTA prea mic anulandu-se citirea, ; 03h - pentru citirea unui EOF inaintea citirii unui ; articol intreg, completandu-se articolul cu zerouri. READ_SEQ macro fcb mov dx,offset fcb mov ah,14h int 21h endm

APELAREA FUNCTIEI 15H

; Scrierea secventiala a unui articol in fisier din zona DTA, ; utilizand un FCB pointat de DS:DX. Campul cu ; deplasamentul 0Ch si articolul curent precizat de ; deplasamentul 20h din FCB, sunt incarcate in DTA, dupa ; care cele doua campuri sunt actualizate, in sensul ca sunt ; incrementate. Lungimea articolului se va lua din ; campul de dimensiune a articolului din FCB, care are ; deplasamentul 0Eh. Se returneaza in AL valorile: ; 00h - pentru scriere cu succes, ; 01h - pentru disc plin cu anularea scrierii, ; 02h - pentru DTA prea mic anulandu-se scrierea. ; Este recomandabila punerea pe zero a campului articol ; curent (deplasament 20h in FCB), deoarece functia ; DOS 0Fh nu-l zerorizeaza. WRITE_SEQ macro fcb

66

Sisteme de operare
mov mov int endm dx,offset fcb ah,15h 21h

APELAREA FUNCTIEI 16H

; Creaza un fisier utilizand un FCB pointat de DS:DX pe un ; fisier nedeschis. FCB-ul se completeaza ca la ; functia 0Fh. La revenire AL contine valoarea 00h daca ; fisierul a fost creat, sau valoarea FFh daca nu a fost ; creat. CREATE macro fcb mov dx,offset fcb mov ah,16h int 21h endm

APELAREA FUNCTIEI 17H

; Schimba numele unui fisier existent, utilizand FCB pointat ; de DS:DX, care contine numarul unitatii, vechiul ; nume, urmate la deplasamentul 11h de noul nume si noua ; extensie. La revenire, in registrul AL se returneaza ; valoarea 00h pentru redenumire reusita sau FFh daca ; redenumirea este nereusita sau un fisier cu noul nume ; exista deja. RENAME macro fcb,newname mov dx,offset fcb mov ah,17h int 21H endm

APELAREA FUNCTIEI 19H

; Obtinerea unitatii curente implicite. Returneaza in AL ; numarul unitatii implicite cu unu mai mic ca la ; majoritatea functiilor adica: 0=A, 1=B, 2=C, ... CURRENT_DISK macro mov ah,19h int 21H endm

;
; ; ; ;

APELAREA FUNCTIEI 1AH


Modificarea adresei zonei de transfer a discului DTA, la valoarea avand adresa in DS:DX. La lansarea programului in executie, implicit pentru DTA sunt folositi 128 de octeti, de la deplasamentul 80h din PSP

67

Sisteme de operare
; (Program Segment Prefix). Spatiul rezervat in mod implicit ; este insuficient, de aceea utilizatorul trebuie sa_si ; rezerve o zona proprie DTA care trebuie modificata cu ; functia 1Ah. Retinem ca toate accesele la fisiere ; utilizand FCB_ul se fac prin DTA, iar functiile de ; cautare 11h, 12h, 4Eh si 4Fh isi plaseaza datele in DTA. SET_DTA macro buffer mov dx,offset buffer mov ah,1Ah int 21H endm

APELAREA FUNCTIEI 1BH

; Aflarea informatiilor FAT (File Allocation Table) pentru ; unitatea curenta. Functia returneaza in AL numarul de ; sectoare pe cluster, in CX numarul de octeti pe sector, in ; DX numarul de cluster_e pe unitate, in DS:BX ; returneaza pointer_ul la octetul de identificare FAT, care ; identifica de fapt tipul unitatii. DEF_DRIVE_DATA macro mov ah,1Bh int 21h endm

APELAREA FUNCTIEI 1CH

; Aflarea informatiilor FAT pentru unitatea specificata. ; Functia returneaza in AL numarul de sectoare pe cluster, ; in CX numarul de octeti pe sector, in DX numarul de ; cluster_e pe unitate, in DS:BX returneaza pointer_ul la ; octetul de identificare FAT, care identifica de fapt ; tipul unitatii. DRIVE_DATA macro drive mov dl,drive mov ah,1Ch int 21h endm

;
; ; ; ; ; ;

APELAREA FUNCTIEI 21H


Citirerea in acces direct a unui articol dintr_un fisier. Citirea se face in zona de memorie a DTA_ului curent, DS:DX fiind incarcat cu un pointer la FCB_ul deja deschis. Articolul se va citi la adresa specificata la deplasamentul 21h din FCB, iar dimensiunea se afla la deplasamentul 0Eh din FCB. Functia returneaza in AL

68

Sisteme de operare
; valorile: ; 00h ; 01h ; 02h ; 03h ; READ_RAN mov mov int endm pentru citire cu succes, in cazul citirii unui EOF fara a se citi date, pentru DTA prea mic si anularea citirii, pentru gasirea unui EOF inaintea citirii unui articol intreg. macro fcb dx,offset fcb ah,21h 21h

APELAREA FUNCTIEI 22H

; Scrierea in acces direct, de la adresa DTA, intr_un fisier ; utilizand un FCB deschis a carui adresa este este data ; de DS:DX. Articolul scris este specificat la deplasamentul ; 21h din FCB iar dimensiunea articolului la ; deplasamentul 0Eh din FCB. Functia returneaza in ; AL valorile: ; 00h - pentru scriere incheiata cu succes, ; 01h - pentru disc plin, ; 02h - nu este nici un articol de scris in ; DTA, scriere abandonata. WRITE_RAN macro fcb mov dx,offset fcb mov ah,22h int 21h endm

APELAREA FUNCTIEI 23H

; Ontinerea dimensiunilor unui fisier, utilizand FCB ; nedeschis specificat prin DS:DX. Dimensiunea fisierului ; exprimata in numar de articole (cu rotunjire superioara) se ; precizeaza la deplasamentul 21h din FCB. In AL se ; returneaza valoarea: ; 00h - daca s_a gasit fisierul specificat, sau ; FFh - daca fisierul este inexistent. FILE_SIZE macro fcb mov dx,offset fcb mov ah,23h int 21h endm

APELAREA FUNCTIEI 24H

; Pozitionarea campului "Articol in acces direct" de la

69

Sisteme de operare
; deplasamentul 21h din FCB deschis al carui adresa este ; data de DS:DX. SET_RELATIVE_RECORD macro fcb mov dx,offset fcb mov ah,24h int 21h endm

APELAREA FUNCTIEI 25H

; Pozitioneaza adresa unei intreruperi in tabela vectorilor ; de intrerupere. In AL se incarca numarul intreruperii, ; iar DS:DX este incarcat cu un pointer la rutina utilizator ; de tratare a intreruperii. Se recomanda salvarea inainte ; de apel a vectorului de intrerupere, folosind functia 35h, ; astfel incat programul sa poata reincarca la iesirea din ; rutina utilizator, adresa rutinei originale a vectorului ; de intreruperi. SET_VECTOR macro interrupt,handler_start mov al,interrupt mov dx,offset handler_start mov ah,25h int 21h endm

APELAREA FUNCTIEI 26H

; Crearea unui nou PSP in programul utilizator. PSP_ul ; current avand dimensiunea de 256 octeti este copiat la ; adresa DX:0000, iar noul PSP va fi actualizat, in sensul ; ca adresele rutinelor de tratare a intreruperilor INT ; 22h, INT 23h si INT 24h sunt plasate in PSP si este ; actualizata si locatia 06h din noul PSP cu informatii ; despre memorie. La intrare DX trebuie incarcat cu adresa ; segmentului ce contine noul PSP. CREATE_PSP macro seg_addr mov dx,offset seg_addr mov ah,26h int 21h endm

;
; ; ; ; ;

APELAREA FUNCTIEI 27H


Citeste unul sau mai multe articole dintr_un fisier, in memorie la adresa DTA curenta, utilizand un FCB al carui adresa este precizata de DS:DX, iar in CX se va preciza numarul de articole de citit. Citirea incepe de la articolul specificat la deplasamentul 21h din FCB. Pentru

70

Sisteme de operare
; calcularea numarului de octeti de citit, se inmulteste ; dimensiunea articolului aflat la deplasamentul 0Eh din ; FCB, cu valoarea specificata in CX. Functia returneaza ; in registrul AL urmatoarele velori: ; 00h _ pentru citire cu succes, ; 01h _ pentru EOF gasit fara citire de date, ; 02h _ pentru DTA prea mic si anularea citirii, ; 03h _ pentru citirea unui EOF inaintea unui articol ; intreg, care va fi completat cu zerouri. ; In registrul CX se returneaza numarul de articole citite. RAN_BLOCK_READ macro fcb,count,rec_size mov dx,offset fcb mov cx,count mov word ptr fcb[14],rec_size mov ah,27h int 21h endm

APELAREA FUNCTIEI 28H

; Scrie unul sau mai multe articole intr_un fisier, din ; memoria la adresa DTA curenta, utilizand un FCB al carui ; adresa este precizata de DS:DX, iar in CX se va preciza ; numarul de articole de scris, scrierea se face de la ; articolul specificat la deplasamentul 21h din FCB. Pentru ; calcularea numarului de octeti de scris, se inmulteste ; dimensiunea articolului aflat la deplasamentul 0Eh din ; FCB, cu valoarea specificata in CX. Functia returneaza ; in registrul AL urmatoarele velori: ; 00h _ pentru scriere cu succes, ; 01h _ pentru EOF scris. ; In registrul CX se returneaza numarul de articole scrise. RAN_BLOCK_WRITE macro fcb,count,rec_size mov dx,offset fcb mov cx,count mov word ptr fcb[14],rec_size mov ah,28h int 21h endm

;
; ; ; ; ;

APELAREA FUNCTIEI 29H


Analizeaza un sir de caractere al carui deplasament fata de adresa segment specificata in DS, se afla in registrul SI. Daca sirul specifica un nume de fisier (cu eventuala extensie), atunci va fi creat un FCB nedeschis, intr_o zona de memorie avand deplasamentul fata de adresa

71

Sisteme de operare
; ES:DI. Tot aceasta functie mai permite ; selectarea unui dispozitiv. La intrare se perecizeaza in AL ; bitii de control care au semnificatia: ; -bitul 0: 0 - se opreste analiza la intalnirea unui ; separator de fisier, ; 1 - se ignora separatorii, ; -bitul 1: 0 - pozitioneaza la 0 numarul dispozitivului, ; 1 - lasa neschimbat numarul dispozitivului, ; -bitul 2: 0 - pozitioneaza numele fisierului pe 8 spatii, ; 1 - lasa neschimbat numele fisierului, ; -bitul 3: 0 - pozitioneaza extensia pe trei spatii, ; 1 - lasa neschimbata extensia. ; In DS:SI se da un pointer la sirul de analizat. Functia returneaza in registrul AL: 00h _ pentru succes fara ; intalnirea caracterelor "*" sau "?", 01h _ pentru succes si ; intalnirea caracterelor "*" sau "?", FFh _ pentru ; insucces. In registrul DS:SI se returneaza un pointer la ; octetul imediat urmator sirului curent analizat, iar in ; ES:DI va contine in caz de succes un pointer la un FCB ; nedeschis si in caz de insucces contine al doilea octet ; de la adresa pointata (adica ES:DI+1). PARSE macro string,fcb mov si,offset string mov di,offset fcb push es push ds pop es mov al,0Fh mov ah,29h int 21h pop es endm

APELAREA FUNCTIEI 2AH

; Asigura returnarea date curente din sistem, inclusiv ziua ; din saptamana. Functia returneaza in AL ziua din ; saptamana astfel: 0=duminica, 1=luni, ... , 6=sambata. In ; registrul CX se da anul curent, a carui valoare este ; cuprinsa intre 1980 si 2098. In registrul DH se da luna ; curenta ca o valoare numerica cuprinsa intre 1 si 12, ; unde 1=Ianuarie, 2=Februarie, ... , 12=Decembrie. In ; registrul DL se da ziua curenta care are valori numerice ; cuprinse intre 1 si 31. GET_DATE macro mov ah,2Ah int 21h

72

Sisteme de operare
endm

APELAREA FUNCTIEI 2BH

; Setarea datei curente a sistemului. Pentru apelarea ; functiei se incarca in registrul CX anul curent, al carui ; valoare este cuprinsa intre 1980 si 2098. In registrul DH ; se introduce luna curenta ca o valoare numerica ; cuprinsa intre 1 si 12, unde 1=Ianuarie, 2=Februarie, ... , ; 12=Decembrie. In registrul DL se introduce ziua ; curenta care are valori numerice cuprinse intre 1 si 31. ; Functia returneaza in AH valoarea 00h daca s-a ; specificat o data valida si valoarea FFh daca s-a ; specificat o data invalida, abandonandu_se setarea. SET_DATE macro year,month,day mov cx,year mov dh,month mov dl,day mov ah,2Bh int 21h endm

APELAREA FUNCTIEI 2CH

; Returneaza ora curenta a sistemului de calcul. Functia ; returneaza in registrul CH ora curenta printr_o valoare ; numerica cuprinsa intre 0 si 23. In registrul CL se ; returneaza minutul curent printr-o val. numerica cuprinsa ; intre 0 si 59. In registrul DH se returneaza secunda ; curenta printr-o valoare cuprinsa intre 0 si 59, iar in ; DL se returneaza sutimile de secunda printr-o valoare ; cuprinsa intre 0 si 99. GET_TIME macro mov ah,2Ch int 21h endm

;
; ; ; ; ; ; ; ; ;

APELAREA FUNCTIEI 2DH


Seteaza ora curenta a sistemului de calcul. Functia are nevoie in registrul CH de ora curenta, specificata printr_o valoare numerica cuprinsa intre 0 si 23, iar in registrul CL de minutul curent specificat printr_o valoare numerica cuprinsa intre 0 si 59, in registrul DH de secunda curenta specificata printr_o valoare cuprinsa intre 0 si 59, iar in registrul DL se specifica sutimele de secunda printr_o valoare cuprinsa intre 0 si 99. Functia returneaza in AH valoarea 00h daca s_a specificat o ora

73

Sisteme de operare
; valida si valoarea FFh daca s_a specificat o ora ; invalida, abandonandu_se setarea. SET_TIME macro hour,minutes,seconds,hundredths mov ch,hour mov cl,minutes mov dh,seconds mov dl,hundredths mov ah,2Dh int 21h endm

APELAREA FUNCTIEI 2EH

; Verifica prin citire inapoi, fiecare sector, dupa ce a fost ; scris. Registrul AL este incarcat valoarea 00h pentru ; setarea VERIFY OFF. Registrul AL este incarcat valoarea 01h ; pentru setarea VERIFY ON, asigurandu_se ; maximum de integritate a datelor prin verificare. VERIFY macro switch mov al,switch mov ah,2Eh int 21h endm

APELAREA FUNCTIEI 2FH

; Asigura obtinerea adresei DTA curenta in ES:BX. Trebuie ; mare atentie deoarece se modifica registrul de ; segment ES. GET_DTA macro mov ah,2Fh int 21h endm

APELAREA FUNCTIEI 30H

; Asigura obtinerea versiunii DOS active in momentul ; apelului. Functia returneaza: numarul versiunii de baza in ; registrul AL si numarul versiunii secundare in reg. AH. GET_VERSION macro mov ah,30h int 21h endm

APELAREA FUNCTIEI 31H

; Functia realizeaza iesirea (reintoarcerea) in procesul ; parinte, astfel incat programul din care se revine sa ; ramana rezident dupa terminare (TSR). Functia necesita in

74

Sisteme de operare
; intrare, incarcarea unui cod de retur (sau cod de ; eroare) in registrul AL. Registrul DX trebuie incarcat cu ; dimensiunea memoriei rezidente, exprimata in ; paragrafe, fiecare paragraf avand 16 octeti. Functia nu ; inchide fisierele ramase deschise. KEEP_PROCESS macro return_code,last_byte mov al,return_code mov dx,offset last_byte mov cl,4 shr dx,cl inc dx mov ah,31h int 21h endm

APELAREA FUNCTIEI 33H

; Pozitionarea/Obtinerea starii indicatorului CTRL+C sau ; verificarea introducerii caracterelului CTRL+BREAK ; (pentru sistemele compatibile IBM_PC). Atunci cand starea ; este pe OFF, se verifica introducerea caractelelor ; CTRL+C sau CTRL+BREAK doar in timpul operatiilor de ; intrare/iesire de la echipamentul standard de intrare ; (functiile 01h, 02h, ... , 0Ch. La apelul functiei trebuie ; ca registrul AL sa fie incarcat cu valoarea: 00h _ pentru ; obtinerea starii sau 01h _ pentru pozitionarea starii ; iar in acest ultim caz (AL=01h) DL trebuie incarcat cu ; valoarea numerica: ; 00h - pentru setarea pe OFF sau ; 01h - pentru setarea pe ON. ; Functia returneaza in DL valorile: ; 00h - pentru OFF sau ; 01h - pentru ON; si valoarea ; FFh in registrul AL in caz de eroare. CTRL_C_CK macro action,state mov al,action mov dl,state mov ah,33h int 21h endm

;
; ; ; ; ;

APELAREA FUNCTIEI 35H


Returnarea din tabela de intreruperi vectorul specificat, punandu_se in ES adresa segmentului rutinei de tratare a intreruperii, iar in BX deplasamentul acestei rutine. La apelarea functiei registrul AL se incarca cu numarul intreruperii. Functia returneaza in ES:BX un pointer la

75

Sisteme de operare
; rutina de tratare a intreruperii. GET_VECTOR macro interrupt mov al,interrupt mov ah,35h int 21h endm

APELAREA FUNCTIEI 36H

; Obtinerea spatiului liber pe un disc magnetic, disc ; specificat printr_un numar de unitate incarcat in ; registrul DL. ; Valorile admise pentru numarul de unitate sunt: ; 00h - pentru discul magnetic implicit, ; 01h - pentru discul A, ; 02h - pentru discul B, ... ; Functia returneaza urmatoarele informatii, ; in urmatoarele registre: ; AX - numarul de sectoare pe unitatea de alocare ; (FFFFh - unitate de disc invalida); ; BX - numarul unitatilor de alocare disponibile pe disc; ; CX - numarul de octeti pe sector; ; DX - numarul de unitati de alocare de pe disc. ; Cu aceste informatii utilizatorul poate calcula: ; Spatiul liber in octeti de pe disc = (AX * BX * CX); ; Spatiul total in octeti al discului = (AX * CX * DX). GET_DISK_SPACE macro drive mov dl,drive mov ah,36h int 21h endm

APELAREA FUNCTIEI 37H

; Obtinerea informatiilor dependente de tara, in zona de ; memorie specificata in DS:DX. La apelul functiei in AL ; se incarca urmatoarele valori numerice: ; 00h _ pentru tara curenta ; 01h ... FEh _ pentru codul tarii dorite, sau ; FFh daca codul se va specifica in registrul BX (avand ; valori mai mari de 255). Zona specificata in DS:DX va ; avea maximum 34 octeti, iar DX va fi incarcat cu valoarea ; FFFFh. Functia returneaza in caz de eroare CF=1 ; iar in registrul AH se da valoarea 02h pentru cod de tara ; invalid. Daca nu este eroare CF=0 in BX se da codul ; tarii iar in DS:DX se dau informatii dependente de tara. GET_COUNTRY macro country,buffer local gc_01

76

Sisteme de operare
mov mov cmp jl mov mov mov int endm dx,offset buffer ax,country ax,0FFH gc_01 al,0ffh bx,country ah,37h 21h

gc_01:

APELAREA FUNCTIEI 38H

; Pozitionarea informatiilor dependente de tara, dintr-o zona ; de memorie specificata in DS:DX. La apelul functiei ; in AL se incarca urmatoarele valori numerice: ; 00h - pentru tara curenta, ; 01h ... FEh - pentru codul tarii dorite, sau ; FFh daca codul se va specifica in registrul BX (avand ; valori mai mari de 255). Zona specificata in DS:DX ; va avea maximum 34 octeti, iar DX va fi incarcat cu ; valoarea FFFFh. Functia returneaza in caz de eroare ; CF=1 iar in registrul AH se da valoarea 02h pentru cod de ; tara invalid. Daca nu este eroare CF=0 in BX se da ; codul tarii iar in DS:DX se dau informatii ; dependente de tara. SET_COUNTRY macro country local sc_01 mov dx,0FFFFH mov ax,country cmp ax,0FFH jl sc_01 mov al,0ffh mov bx,country sc_01: mov ah,38h int 21h endm

;
; ; ; ; ; ; ; ; ;

APELAREA FUNCTIEI 39H


Crearea unui nou subdirector (MKDIR), prin utilizarea unei cai de acces de maximum 64 caractere ASCII, a cerei adresa se specifica in DS:DX. La retur, daca CF=1, directorul nu s_a creat si se precizeaza un cod de eroare in AL cu urmatoarea semnificatie: 03h - pentru cazul cand nu s-a gasit calea specificata; 05h _ pentru accesul interzis din cauza lipsei de spatiu, existentei unui subdirector cu alelasi nume sau specificarea unui nume de unitate eronata.

77

Sisteme de operare
MAKE_DIR mov mov int endm macro path dx,offset path ah,39h 21h

APELAREA FUNCTIEI 3AH

; Stergerea unui subdirector (RMDIR) prin utilizarea unui sir ; de maximum 64 caractere ASCII aflate la adresa ; DS:DX, care reprezinta calea de acces la subdirectorul ; respectiv. La retur, daca CF=1 s-a depistat o eroare, ; care nu va duce la stergerea subdirectorului ci la ; returnarea in registrul AX a urmatoarelor coduri de eroare: ; 03h - pentru cazul in care nu s-a gasit calea specificata; ; 05h - pentru acces interzis adica directorul nu este gol ; sau calea specificata nu este valida; ; 06h - calea specifica directorul curent. REM_DIR macro path mov dx,offset path mov ah,3Ah int 21h endm

APELAREA FUNCTIEI 3BH

; Schimbarea directorului curent (CHDIR) prin specificarea ; unui sir de maximum 64 caractere ASCII, ; reprezentand calea de acces, sir a carui adresa se da in ; DS:DX. Daca la retur CF=1 atunci s_a produs o eroare ; care este explicitata prin pozitionarea codului de eroare ; 03h in AX si care semnifica faptul ca nu a fost gasita ; calea specificata. CHANGE_DIR macro path mov dx,offset path mov ah,3Bh int 21h endm

;
; ; ; ; ; ; ;

APELAREA FUNCTIEI 3CH


Crearea unui fisier al carui nume se da prin specificarea unui sir de caractere ASCII, reprezentand numele si calea de acces, sir a carui adresa se da in DS:DX. La intrarea in functie utilizatorul trebuie sa specifice in registrul CX atributele fisierului ce urmeaza a fi creat prin indicarea valorilor: 00h _ pentru fisier obisnuit,

78

Sisteme de operare
; 01h _ pentru fisier de tip "read only", ; 02h _ pentru fisier de tip "headen" (ascuns), ; 04h _ pentru fisier de tip "system". ; Daca la retur CF=1 atunci s_a produs o eroare care este ; explicitata prin pozitionarea codului de eroare 03h in ; AX care semnifica negasirea caii ce acces, 04h in cazul ; cand sunt deschise prea multe fisiere si 05h care ; semnifica faptul ca accesul este interzis, adica mai ; exista un fisier cu acelasi nume dar cu atribute mai ; restrictive decat cel specificat. CREATE_HANDLE macro path,attrib mov dx,offset path mov cx,attrib mov ah,3Ch int 21h endm

;
; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;

APELAREA FUNCTIEI 3DH


Deschiderea unui fisier al carui nume se da prin specificarea unui sir de caractere ASCII, reprezentand numele si calea de acces, sir a carui adresa se da in DS:DX. La intrarea in functie utilizatorul trebuie sa precizeze in AL codul de acces la fisierul respectiv, grupat pe biti in felul urmator: 7 6 5 4 3 2 1 0 M P P P R A A A unde: M este indicator de mostenire (are valoarea 0 daca fisierul este mostenit de catre un process fiu creat cu functia 4Bh si valoarea 1 in caz contrar), PPP este un indicator de partajare a fisierului intre procese, si are valorile: 000 - compatibilitate: pentru deschiderea de catre orice proces; 001 - interzis orice: pentru esuare in acces R/W daca a fost deschis inmod compatibilitate; 010 - scriere interzisa: pentru esuare in scriere de orice alt proces; 011 - citire interzisa: pentru esuare in citire de orice alt proces; 100 - nimic interzis: pentru esuare in caz ca fisierul a fost deschis in mod compatibilitate de orice alt proces, R reprezinta un bit rezervat, AAA este un indicator pentru modul de acces:

79

Sisteme de operare
; 000 _ citire permisa; ; 001 _ scriere permisa; ; 010 _ scriere/citire permisa. ; La retur daca CF=0 in AX se returneaza indicatorul logic al ; fisierului, iar daca CF=1 se returneaza in AL codul ; de eroare: ; 01h - pentru numar de functie invalid, ; 02h - daca nu s_a gasit fisierul, ; 03h - daca nu s_a gasit calea, ; 04h - daca sunt prea multe fisiere deschise, ; 05h - pentru acces interzis si ; 0Ch - pentru mod de deschidere invalid. OPEN_HANDLE macro path,access mov dx,offset path mov al,access mov ah,3Dh int 21h endm

APELAREA FUNCTIEI 3EH

; Inchiderea unui fisier, utilizand identificatorul logic. ; Functia goleste toate buffer_ele atasate fisierului, ; inchide fisierul care a fost deschis cu una din functiile ; 3Ch sau 3Dh, eliberand identificatorul logic si actualizand ; directorul. Identificatorul logic este precizat la intrare ; in registrul BX. La iesirea din functie, daca indicatorul ; CF=1, in registrul AX se da codul de eroare 06h care ; reprezinta identificator logic invalid. CLOSE_HANDLE macro handle mov bx,handle mov ah,3Eh int 21h endm

APELAREA FUNCTIEI 3FH

; Citirea dintr-un fisier sau de la un dispozitiv al carui ; identificator logic se da in registrul BX, cu precizarea ; numarului de octeti de citit in registrul CX iar adresa ; zonei tampon in care se efectueaza citirea se da in ; DS:DX. La retur daca indicatorul CF=0 in AX se da numarul ; de octeti efectivi cititi, iar daca CF=1 in AX se ; returneaza un cod de eroare cu urmatoarea semnificatie: ; 05h - pentru acces interzis, sau ; 06h - pentru identificator logic ; nedeschis sau invalid. READ_HANDLE macro handle,buffer,bytes

80

Sisteme de operare
mov mov mov mov int endm bx,handle dx,offset buffer cx,bytes ah,3Fh 21h

APELAREA FUNCTIEI 40H

; Scrierea intr_un fisier sau de la un dispozitiv al carul ; identificator logic se da in registrul BX, cu precizarea ; numarului de octeti de scris in registrul CX iar adresa ; zonei tampon din care se efectueaza scrierea se da in ; DS:DX. La retur daca indicatorul CF=1 in AX se returneaza ; un cod de eroare cu urmatoarea semnificatie: ; 05h - pentru acces interzis, sau ; 06h - pentru identificator logic nedeschis sau invalid. WRITE_HANDLE macro handle,buffer,bytes mov bx,handle mov dx,offset buffer mov cx,bytes mov ah,40h int 21h endm

APELAREA FUNCTIEI 41H

; Stergerea unui fisier prin invalidarea intrarii din ; director (UNLINK), pentru fisierul al carui nume este ; dat de un sir ASCII precizat in DS:DX, ; in sir pot sa apara si caracterele "*" sau "?". ; La iesire daca CF=1 atunci in AX se ; precizeaza un cod de eroare: ; 02h - pentru fisier negasit, ; 03h - pentru cale de acces invalida sau ; 05h - pentru acces interzis, cum este de exemplu ; stergerea unui fisier "read only". DELETE_ENTRY macro path mov dx,offset path mov ah,41h int 21h endm

APELAREA FUNCTIEI 42H

; Pozitionarea pointer_ului de citire/scriere (LSEEK) al unui ; fisier asociat identificatorului logic precizat in ; registrul BX.

81

Sisteme de operare
; Registrul AL este incarcat cu codul de pozitionare: ; 00h _ fata de inceputul fisierului, ; 01h _ fata de pozitia curenta si ; 03h _ fata de sfarsitul fisierului. ; In CX:DX se incarca deplasamentul, exprimat in octeti, ; fata de pozitia data in registrul AL. Daca la retur CF=0, ; in DX:AX se da noua locatie a pointer_ului, iar daca CF=1 ; in AX se da codul de eroare: ; 01h - functie invalida, adica AL nu contine o ; valoare cuprinsa intre 0 si 2 (inclusiv) sau ; 06h _ pentru identificator logic invalid. MOVE_PTR macro handle,high,low,method mov bx,handle mov cx,high mov dx,low mov al,method mov ah,42h int 21h endm

APELAREA FUNCTIEI 43H

; Obtinerea/Pozitionarea atributelor unui fisier (CHMOD), ; fisier specificat printr-un sir de caractere ASCII al carui ; adresa se afla in DS:DX. In AL se precizeaza codul ; subfunctiei: ; 00h - pentru obtinerea atributelor si ; 01h - pentru pozitionarea atributelor. ; In registrul CX se precizeaza atributele fisierului: ; 00h - pentru fisier de tip obisnuit, ; 01h - pentru fisier de tip "read only", ; 02h - pentru fisier ascuns, ; 04h - pentru fisier de sistem si ; 20h - pentru fisier de tip arhiva. ; La retur, daca CF=0 functia returneaza in CX octetul de ; atribute ale fisierului, iar daca CF=1 in AX se da codul ; de eroare: ; 01h - pentru functie invalida (diferita de 00h sau 01h), ; 02h - pentru fisier negasit, ; 03h - pentru cale negasita sau ; 05h - pentru acces interzis. CHANGE_MODE macro path,action,attrib mov dx,offset path mov al,action mov cx,attrib mov ah,43h int 21h

82

Sisteme de operare
endm

;
; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;

APELAREA FUNCTIEI 4400H,01H


Control intrare/iesire pentru dispozitivele periferice (IOCTRL _ Input/Output Control), pentru obtinerea/ pozitionarea informatiilor despre dispozitiv. Daca AL se incarca cu 00h se returneaza informatii despre dispozitivul sau fisierul atasat identificatorului logic specificat in reg. BX, iar daca AL se incarca cu 01h se pozitioneaza informatiile referitoare la dispozitivul periferic atasat identificatorului logic specificat in BX, DH fiind incarcat cu 00h si DL incarcat cu informatiile ce trebuie setate. La retur, in cazul AL=00h se returneaza in DX unul din urmatoarele doua formate, dupa cum bitul 7 are valoarea 0 sau 1: 1. Daca bitul 7 din DX este 1, atunci in DX se reprezinta starea unui dispozitiv de tip caracter: DX: Descriere: bitul 0 =1 daca este dispozitivul stand.intrare (consola) 1 =1 daca este disp. standard de iesire (consola) 2 =1 daca este dispozitivul NULL 3 =1 daca dispozitivul este ceasul calc.(CLOCK$) 4 rezervat 5 =1 pentru modul binar si = 0 pentru modul ASCII 6 =0 daca_i un EOF la intrare 7 =1 pentru dispozitiv de tip caracter 8-10 rezervati 11 =1 daca disp. intelege instructiuni open/close 12 rezervat 13 =1 disp.suporta iesirea pana cand devine ocupat 14 =1 daca disp. poate prelucra siruri de control 15 rezervat 2. Daca bitul 7 din DX este 0, atunci in DX se precizeaza starea unui fisier pe disc magnetic: DX: Descriere: bitul 0_5 numarul dispoz. de tip bloc, 0 = A, 1 = B, ... 6 =1 daca fisierul a fost scris 7 =0 pentru a indica un dispozitiv de tip bloc (disc) 8_15 rezervati La retur daca CF=1 atunci in AX se da un cod de eroare avand valoarea 06h semnificand un identificator logic invalid sau nedeschis. In cazul in care AL=01h se pozitioneaza informatiile despre dispozitiv in felul urmator: DX: Descriere:

83

Sisteme de operare
; bitul 0 =1 daca este disp. standard de intrare (consola) ; 1 =1 daca este disp. standard de iesire (consola) ; 2 =1 daca este dispozitivul NULL ; 3 =1 daca disp. este ceasul calculatorului (CLOCK$) ; 4 rezervat ; 5 =1 pentru modul binar si = 0 pentru modul ASCII ; 6 =0 daca-i un EOF la intrare ; 7 =1 pentru dispozitiv de tip caracter sau ; =0 pentru un fisier ; 8_15 =00h ; La retur daca CF=1 atunci in AX se da un cod de eroare ; avand valoarea: ; 01h pentru functie invalida, sau valoarea ; 06h semnificand un identificator logic invalid sau ; nedeschis. IOCTL_DATA macro code,handle mov bx,handle mov al,code mov ah,44h int 21h endm

APELAREA FUNCTIEI 4402H,03H

; Citirea/Scrierea de la un dispozitiv de tip caracter atasat ; identificatorului logic precizat in BX. La intrarea in ; functie trebuie ca in registrul AL sa se incarce valorile: ; 02h pentru citire sau 03h pentru scriere. In registrul ; CX trebuie incarcat numarul de octeti de citit/scris ; in/din zona de memorie tampon precizata in DS:DX. La retur ; daca CF=0 in AX se da numarul de octeti efectiv ; transferati, iar daca CF=1 in AX se da un cod de eroare ; care poate avea valorile: ; 01h - pentru a indica faptul ca dispozitivul periferic ; nu permite siruri de control sau ; 06h - pentru a indica faptul ca indicatorul logic este ; invalid sau nedeschis. IOCTL_CHAR macro code,handle,buffer mov bx,handle mov dx,offset buffer mov al,code mov ah,44h int 21h endm

APELAREA FUNCTIEI 4404H,05H

84

Sisteme de operare
; Citire/Scriere de la un dispozitiv periferic de tip bloc (disc magnetic) al carui indicator logic este specificat in ; BL, transferul facandu_se dintr_o zona tampon specificata in DS:DX, transferandu_se un numar de octeti ; precizat in CX. Daca AL=04h se face o citire, iar daca AL=05h se face o scriere. Identificatorul logic al ; dispozitivului se specifica prin introducerea in registrul BL a valorilor: 00h _ pentru discul implicit, 01h _ pentru ; discul A, 02h _ pentru discul B, ... ; La retur daca CF=0 in AX se dau numarul de octeti efectiv transferati, iar daca CF=1 in AX se da un cod ; de eroare care poate lua valorile: 01h _ pentru a specifica faptul ca dispozitivul nu permite siruri de control sau ; 05h _ pentru driver invalid in BL. IOCTL_STATUS macro code,drive,buffer mov bl,drive mov dx,offset buffer mov al,code mov ah,44h int 21h endm

APELAREA FUNCTIEI 4406H,07H

; Obtinerea starii intrarii/iesirii unui dispozitiv periferic ; sau a unui fisier al carui indicator logic este specificat ; in BX. ; Daca AL=06h se solicita ontinerea starii intrarii, iar ; daca AL=07h se solicita obtinerea starii iesirii. ; Identificatorul logic al dispozitivului sau al fisierului ; de pe disc se specifica prin introducerea in registrul BX a ; valorilor: ; 00h - pentru discul implicit, ; 01h - pentru discul A, ; 02h - pentru discul B, ... ; La retur daca CF=1 in AX se da un cod de eroare care ; poate lua valorile: ; 05h _ pentru acces interzis sau ; 06h _ pentru identificator logic invalid sau nedeschis. ; Daca CF=0 in AL se returneaza starea intrarii/iesirii prin ; indicarea valorilor: ; 00h _ pentru dispozitiv nepregatit sau EOF la fisier si ; FFh _ pentru dispozitiv pregatit sau nu ; este un EOF pentru fisier. IOCTL_BLOCK macro code,handle mov bx,handle mov al,code

85

Sisteme de operare
mov int endm ah,44h 21h

APELAREA FUNCTIEI 4408H

; Verifica daca o unitate contine un dispozitiv care poate fi ; schimbat (disc flexibil ori sreamer) sau nu (disc fix). ; La apelul functiei se incarca 08h in AL, iar in BL se ; incarca numarul unitatii: 00h _ pentru unitatea implicita, ; 01h _ pentru unitatea A, 02h _ pentru B, ... ; La retur daca CF=0 in AX se ontine: 00h _ pentru un ; dispozitiv care poate fi schimbat, ori 01h _ pentru ; un dispozitiv care nu poate fi schimbat. Daca CF=1 in AX ; se da un cod de eroare care poate lua valorile: ; 01h _ pentru functie invalida sau 02h _ pentru ; unitate invalida. IOCTL_CHANGE macro drive mov bl,drive mov al,08h mov ah,44h int 21h endm

APELAREA FUNCTIEI 4409H

; Verifica daca dispozitivul logic se afla intr-o retea ; (local) sau este redirectat unui server (la distanta). ; La apelul functiei se incarca valoarea 09h in AL, iar in ; BL se va incarca una din valorile: ; 00h - pentru discul implicit, ; 01h - pentru unitatea A, ; 02h - pentru B, ... ; La retur daca CF=0 in DX se dau urmatoarele informatii: ; bitul 12 pus pe valoarea 1 si restul bitilor pusi ; pe 0, indica faptul ca dispozitivul se afla la distanta, ; iar daca dispozitivul este local in DX se da cuvantul de ; atribuit din rutina de tratare a dispozitivului. ; Daca CF=1 in AX se da un cod de eroare care are valoarea: ; 01h _ pentru functie invalida, sau valoarea 0Fh - pentru ; dispozitiv invalid. IOCTL_RBLOCK macro drive mov bl,drive mov al,09h mov ah,44h int 21h endm

86

Sisteme de operare ; APELAREA FUNCTIEI 440AH


; Verifica daca identificatorul logic, specificat in BX, este ; asociat unui dispozitiv local (retea locala) sau unui ; server aflat la distanta. ; La retur daca CF=0 in DX se dau urmatoarele informatii: ; bitul 15 pus pe valoarea 1 si restul bitilor pusi ; pe 0, indica faptul ca identificatorul logic se afla la ; distanta, iar daca identificatorul logic este local in DX ; se da cuvantul de atribuit din handler-ul ; dispozitivului asociat. ; Daca CF=1 in AX se da un cod de eroare care are valoarea: ; 01h - pentru functie invalida, sau valoarea ; 06h - pentru identificator logic invalid. IOCTL_RHANDLE macro handle mov bx,handle mov al,0Ah mov ah,44h int 21h endm

APELAREA FUNCTIEI 440BH

; Modificarea numarului de intoarceri, in sensul ca se ; specifica in DX de cate ori DOS va trebui sa reincerce ; operatia cu discul care a esuat datorita unei violari a ; partajarii fisierelor, valoarea implicita fiind 3. ; La apelarea functiei in CX se va incarca timpul de ; asteptere maxim dorit de utilizator, iar in AL se va ; incarca valoarea 0Bh. ; La retur daca CF=1 in AX se pune valoarea 01h care ; semnifica functie invalida. IOCTL_RETRY macro retries,wait mov dx,retries mov cx,wait mov al,0Bh mov ah,44h int 21h endm

;
; ; ; ; ; ; ;

APELAREA FUNCTIEI 440CH


Cerere generica IOCTL pentru identificator logic, realizata prin pozitionarea sau returnarea contorului de iteratii la iesire, pentru o imprimanta care permite "Print til busy". Acest contor arata de cate ori driver-ul dispozitivului periferic va astepta semnalul "ready", inainte de a semnala "Device Busy". La apelul functiei pe langa incarcarea valorii 0Ch in AL, se incarca

87

Sisteme de operare
; identificatorul logic al dispozitivului periferic in BX, ; se incarca codul de categorie pentru imprimanta avand ; valoarea 05h in CH, in CL se incarca pentru pozitionare ; valoarea 45h iar pentru returnare valoarea 65h, iar in ; DS:DX se incarca un pointer la zona tampon de date care ; va contine noua valoare a contorului. ; La retur daca CF=1 in AX se da codul de eroare 01h care ; semnifica functie invalida. GENERIC_IOCTL_HANDLES macro handle,Function,Buffer mov ch,05H mov cl,Function mov dx,offset Buffer mov bx,handle mov ah,44h mov al,0Ch int 21h endm

APELAREA FUNCTIEI 440DH

; Cerere generica IOCTL pentru dispozitive periferice bloc ; (disc). La apelul functiei se incarca AL cu valoarea ; 0Dh, in BL se incarca numarul dispozitivului periferic ; (0=implicit, 1=A, 2=B,...), in CH se incarca codul major ; de categorie care are valoarea 08h (pentru disc), iar in CL ; se incarca codul minor corespunzator unei anumite ; subfunctii: ; 40h - pentru pozitionarea parametrilor dispozitivului ; periferic, ; 60h _ pentru returnarea parametrilor dispozitivului, ; 41h _ pentru scrierea unei piste pe dispozitivul logic, ; 61h _ pentru citirea unei piste de pe dispozitivul logic, ; 42h _ pentru formatarea unei piste pe dispozitivul logic si ; 62h _ pentru verificarea unei piste de pe dispozitivul ; logic. GENERIC_IOCTL_BLOCK macro Drive_Num,Function,Parm_Blk mov ch,08H mov cl,Function mov dx,offset Parm_Blk _ 1 mov bx,Drive_Num mov ah,44h mov al,0Dh int 21h endm

APELAREA FUNCTIEI 440EH

; Obtinerea dispozitivului logic la anumite dispozitive bloc ; (disc) care admit mai mult decat o litera de driver

88

Sisteme de operare
; pentru a referi acelasi dispozitiv periferic. Asa de ; exemplu pe sistemele care au numai o unitate flexibila, ; se poate utiliza atat A: cat si B:. La apelul functiei se ; incarca in AL valoarea 0Eh, si in BX se incarca numarul ; driver_ului (0=implicit, 1=A, 2=B,...). ; La retur daca CF=1 in AX se da un cod de eroare care ; poate lua valorile: 01h _ pentru cod functie ; invalida sau 05h _ pentru driver invalid. IOCTL_GET_DRIVE_MAP macro Logical_drv mov bx,Logical_drv mov ah,44h mov al,0Eh int 21h endm

APELAREA FUNCTIEI 440FH

; Selectarea dispozitivului logic, prin schimbarea literei de ; driver cel mai recent utilizata pentru a referi un ; dispozitiv periferic care poate fi specificat prin mai mult ; de o litera de driver. La apelare AL se incarca cu 0Fh, ; iar BX se incarca cu numarul driver_ului care poate lua ; valorile: 00h _ pentru driver_ul implicit, 01 _ pentru A, ; 02 _ pentru B, ... ; La retur daca CF=0 se ataseaza dispozitivlui bloc cea ; mai "inalta" litera: 1=A, 2=B etc. Daca CF=1 in ; AX se da un cod de eroare care poate lua valoarea: ; 01h - pentru cod functie invalid sau 05h _ pentru driver ; invalid. IOCTL_SET_DRIVE_MAP macro Logical_drv mov bx,Logical_drv mov ah,44h mov al,0Fh int 21h endm

APELAREA FUNCTIEI 45H

; Duplicarea identificatorului logic al unui fisier (DUP) ; care este precizat in BX. ; La retur daca CF=0 in AX se da noul identificator logic ; al unui fisier, iar daca CF=1 in AL se da un cod ; de eroare care poate avea valorile: ; 04h - pentru prea multe fisiere deschise sau ; 06h - pentru identificator logic ; de fisier nedeschis ori invalid. XDUP macro handle mov bx,handle

89

Sisteme de operare
mov int endm ah,45h 21h

APELAREA FUNCTIEI 46H

; Redirectarea unui identificator logic de fisier (FORCDUP) ; prin fortarea identificatorului precizat in registrul CX ; sa refaca acelasi fisier ca si un al doilea identificator ; specificat in registrul BX, ambele identificatoare logice ; trebuie sa existe si sa fie deschise. La retur daca CF=1 in ; AX se afla un cod de eroare care poate avea valorile: ; 04h _ pentru prea multe fisiere deschise si ; 06h _ pentru identificator logic de fisier nedeschis ; ori invalid. XDUP2 macro handle1,handle2 mov bx,handle1 mov cx,handle2 mov ah,46h int 21h endm

APELAREA FUNCTIEI 47H

; Obtinerea directorului curent, prin incarcarea in DL a ; numarului dispozitivului periferic si precizarea in DS:SI ; a adresei unei zone de memorie de 64 octeti, in care se ; va returna un sir ASCII cu calea integrala a ; directorului curent, sir terminat cu 0. ; La retur daca CF=1 in AX se da codul de eroare 0Fh care ; semnifica un numar de dispozitiv periferic invalid. GET_DIR macro drive,buffer mov dl,drive mov si,offset buffer mov ah,47h int 21h endm

;
; ; ; ; ; ; ; ;

APELAREA FUNCTIEI 48H


Alocarea dinamica a memoriei pentru procesul curent, prin specificarea numarului de paragrafe, de cate 16 octeti fiecare paragraf, numar precizat in registrul BX. La retur daca CF=1 in AX se da un cod de eroare care are urmatoarele valori: 07h - pentru deteriorarea blocului de control al memoriei de catre un utilizator care a modificat memoria care nu_i apartine si

90

Sisteme de operare
; 08h - pentru memorie insuficienta. ALLOCATE_MEMORY macro bytes mov bx,bytes mov cl,4 shr bx,cl inc bx mov ah,48h int 21h endm

APELAREA FUNCTIEI 49H

; Elibereaza memoria alocata anterior prin functia 48h, ; facand_o disponibila sistemului de operare. In ES se va ; incarca adresa segment a memoriei de eliberat, lungimea ; fiind dedusa de sistem din blocul de control din fata ; zonei de memorie. ; La retur daca CF=1 in AX se da un cod de eroare care ; poate avea valorile: ; 07h - pentru deteriorarea blocului de control al ; memoriei de un program utilizator caruia nu-i ; apartinea zona de memorie, ; 09h - pentru adresa segment incorecta, adica memoria pointata de ES nu a fost alocata cu functia 48h. FREE_MEMORY macro seg_addr mov ax,seg_addr mov es,ax mov ah,49h int 21h endm

APELAREA FUNCTIEI 4AH

; Modificarea alocarii memoriei (SET BLOCK), prin precizarea ; noii dimensiuni, exprimata in paragrafe de 16 ; octeti fiecare, precizata in BX, iar in ES se precizeaza ; adresa segment a zonei de memorie. ; La retur daca CF=1 in BX se precizeaza numarul maxim de ; paragrafe disponibile, iar in AX un cod de eroare ; care poate avea una din valorile: ; 07h - pentru indicarea deteriorarii blocului de control ; al memoriei prin modificarea de catre un ; utilizator a memoriei care nu-i apartine, ; 08h _ pentru memorie insuficienta si ; 09h _ pentru adresa in ES eronata, blocul de memorie ; neputand fi modificat. SET_BLOCK macro last_byte mov bx,offset last_byte

91

Sisteme de operare
mov shr add mov int mov shl mov mov endm cl,4 bx,cl bx,17 ah,4Ah 21h ax,bx ax,cl sp,ax bp,sp

APELAREA FUNCTIEI 4B00H

; Incarcarea si executia unui program (EXEC) al carui nume ; este dat printr_un sir ASCII, terminat cu 0, sir a carui ; adresa se afla in DS:DX. In AL se incarca valoarea 00h. ; Incarcarea si executia se face sub controlul unui bloc ; de parametri care are adresa data in ES:BX si are formatul: ; adresa lungime ; 00h 2 - adresa segment a sirului de mediu (max 34 ; octeti), se va plasa la noul PSP+2Ch; ; 02h 4 - adresa de segment si deplasament a liniei de ; comanda (max 128 octeti), se va plasa ; la noul PSP+80h; ; 06h 4 - adresa de segment si deplasamentul primului ; FCB implicit, se va plasa la noul PSP+5Ch; ; 0Ah 4 - adresa de segment si deplasamentul celui ; de-al doilea FCB implicit, se va plasa la ; noul PSP+6Ch. ; La retur daca CF=1 in AX se afla un cod de eroare care ; poate avea valorile: ; 01h - pentru functie invalida in AL, ; 02h - nu s-a gasit fisierul, ; 03h - nu s-a gasit calea, ; 04h - prea multe fisiere deschise, ; 05h - acces interzis, ; 08h - memorie insuficienta, ; 0Ah - mediu eronat (peste 32 KO), sau ; 0Bh - format eronat, exista un fisier .EXE cu ; informatii inconsistente. EXEC macro path,command,parms mov dx,offset path mov bx,offset parms mov word ptr parms[02h],offset command mov word ptr parms[04h],cs mov word ptr parms[06h],5ch mov word ptr parms[08h],es

92

Sisteme de operare
mov mov mov mov int endm word ptr parms[0ah],6ch word ptr parms[0ch],es al,0 ah,4Bh 21h

APELAREA FUNCTIEI 4B03H

; Incarcarea fara executie a unui program al carui nume ; este dat printr_un sir ASCII, terminat cu 0, sir a carui ; adresa se afla in DS:DX. In AL se incarca valoarea 03h. ; Incarcarea si executia se face sub controlul unui bloc ; de parametri care are adresa data in ES:BX si are formatul: ; Adresa Lungime ; 00h 2 - adresa segment la care va fi incarcat ; programul ; 02h 2 - factorul de relocare al programului, ; doar fisierele .EXE. ; La retur daca CF=1, in AX se afla un cod de eroare care ; poate avea valorile: ; 01h - pentru functie invalida in AL, ; 02h - nu s-a gasit fisierul, ; 03h - nu s-a gasit calea, ; 04h _ prea multe fisiere deschise, ; 05h - acces interzis, ; 08h - memorie insuficienta, ; 0Ah - mediu eronat (peste 32 KO), ; 0Bh - format eronat, exista un fisier .EXE cu ; informatii inconsistente. EXEC_OVL macro path,parms,seg_addr mov dx,offset path mov bx,offset parms mov parms,seg_addr mov parms[02H],seg_addr mov al,3 mov ah,4Bh int 21h endm

APELAREA FUNCTIEI 4CH

; Terminarea procesului (EXIT) si predarea controlului la ; procesorul parinte, pozitionand un cod de retur, inchide ; toate fisierele iar vectorii CTRL+BREAK (Int 23h) si ; Eroare critica (i nt 24H) sunt reincarcati la adresa din ; PSP_ul parinte. Functia nu returneaza nimic. END_PROCESS macro return_code

93

Sisteme de operare
mov mov int endm al,return_code ah,4Ch 21h

APELAREA FUNCTIEI 4DH

; Obtinerea codului de retur al procesului fiu (WAIT), cod de ; retur pozitionat la iesirea din proces prin una din ; functiile 4Ch sau 31H. Functia returneaza in AX ; infotmatiile astfel: ; - in AL codul returnat de catre insusi procesul terminat; ; - in AH un cod care specifica modul de terminare al ; procesului, care poate avea valorile: ; 00h - pentru terminare normala, ; 01h - pentru terminare cu CTRL+C sau CTRL+BREAK, ; 02h - pentru terminarea de catre DOS datorata unei ; erori critice la dispozitivul periferic, si ; 03h - pentru terminarea prin functia 31h. WAIT macro mov ah,4Dh int 21h endm

APELAREA FUNCTIEI 4EH

; Gasirea primului fisier potrivit cu fisierul specificat ; intr-o zona de memorie data de DS:DX (FIND FIRST), sub ; forma unui sir, terminat cu 0, a carui atribute sunt ; precizate in CX. In registrul CX se precizeaza atributele ; fisierului: ; 00h - pentru fisier de tip obisnuit, ; 01h - pentru fisier de tip "read only", ; 02h - pentru fisier ascuns, ; 04h - pentru fisier de sistem si ; 20h - pentru fisier de tip arhiva. ; La retur, daca CF=1 se da un cod de eroare in AX care ; are valoarea: ; 02h - pentru fisier negasit, ; 03h - pentru cale negasita si ; 12h - daca nu mai exista fisiere. FIND_FIRST_FILE macro path,attrib mov dx,offset path mov cx,attrib mov ah,4Eh int 21h endm

94

Sisteme de operare ; APELAREA FUNCTIEI 4FH


; Gasirea urmatorului fisier potrivit cu fisierul specificat ; intr_un apel precedent al functiei 4Eh (FIND NEXT). La ; retur daca CF=0 informatia este depusa in zona DTA curenta, ; iar daca CF=1 se da un cod de eroare in AX ; care are valoarea 12h, indicand faptul ca nu mai ; exista fisiere. FIND_NEXT_FILE macro mov ah,4Fh int 21h endm

APELAREA FUNCTIEI 54H

; Verificarea starii indicatorului VERIFY in operatiile de ; scriere in fisierele aflate pe disc. Functia returneaza in ; registrul AL valorile: ; 00h - pentru VERIFY OFF si ; 01h - pentru VERIFY ON. GET_VERIFY macro mov ah,54h int 21h endm

APELAREA FUNCTIEI 56H

; Schimbarea intrarii intr-un director. Redenumeste un fisier ; existent, specificat printr-un sir ASCII terminat cu car. ; 0 a carui adresa se afla in DS:DX si/sau il muta intr-un ; alt director specificat printr_un al doilea sir, a carui ; adresa se afla in ES:DI. Nu se admit in siruri si ; caracterele "*" sau "?". La retur in caz de eroare se ; pozitioneaza indicatorul CF=1 iar in AX se pune un cod de ; eroare care are urmatoarele valori: ; 02h _ pentru fisier negasit, ; 03h _ pentru cale negasita, ; 05h _ pentru acces interzis sau ; 11h _ pentru dispozitiv periferic diferit de cel ; specificat. RENAME_FILE macro old_path,new_path mov dx,offset old_path push ds pop es mov di,offset new_path mov ah,56h int 21h endm

95

Sisteme de operare ; APELAREA FUNCTIEI 57H

; Obtinerea/Pozitionarea datei si orei ultimei modificari a ; unui fisier descris printr-un identificator logic dat ; in registrul BX. In registrul AL se poate incarca valoarea ; 00h pentru obtinerea datei si orei sau valoarea 01h ; pentru setarea (pozitionarea) datei si orei. Daca AL=01h ; atunci trebuie incarcat registrul CX cu ora de ; pozitionat si registrul DX trebuie incarcat cu data de ; pozitionat. Daca AL=00h atunci functia returneaza in CX ; ora si in DX data. La retur daca CF=1 functia returneaza si ; un cod de eroare in AX care poate avea valoarea: ; 01h - pentru functie invalida sau valoarea ; 06h - pentru identificator logic invalid sau nedeschis. ; Data si ora se calculeaza in felul urmator: ; CX = Ora*2048 + Minut*32 + Secunda ; DX = (An - 1980)*512 + Luna*32 + Zi ; Reprezentati pe biti: ; CX: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ; O O O O O M M M M M M S S S S S ; unde: OOOOO=Ora (0...23), MMMMMM=Minutul (0...59), ; SSSSS=Secunda (0...30), ; DX: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ; A A A A A A A L L L L Z Z Z Z Z ; AAAAAAA=Anul dupa 1980 (0...199), LLLL=Luna (0...12), ; ZZZZZ=Zi (0...31). GET_SET_DATE_TIME macro handle,action,time,date mov bx,handle mov al,action mov cx,word ptr time mov dx,word ptr date mov ah,57h int 21h endm

;
; ; ; ; ; ; ; ; ; ;

APELAREA FUNCTIEI 58H


Obtinerea sau selectarea strategiei de alocare a memoriei interne. La intrare AL se poate incarca cu una din valorile: 00h _ pentru obtinerea strategiei de alocare sau 01h _ pentru selectarea strategiei de alocare. Daca AL este incarcat cu 01h, atunci BX se incarca cu tipul strategiei, care poate fi: 00h - pentru strategia First Fit (alocarea primului bloc disponibil cu adresa cea mai mica),

96

Sisteme de operare
; 01h - pentru Best Fit (alocarea celui mai mic bloc ; care satisface cererea), ; 02h - pentru Last Fit (alocarea blocului disponibil ; de cea mai inalta adresa). ; La retur daca CF=1, in AX se afla valoarea 01h care ; specifica o functie invalida, iar daca CF=0 in AL se : returneaza tipul strategiei de alocare utilizata: ; 00h - pentru First Fit, ; 01h - pentru Best Fit si ; 02h - pentru Last Fit. ALLOC_STRAT macro code,strategy mov bx,strategy mov al,code mov ah,58h int 21h endm

;
; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;

APELAREA FUNCTIEI 59H


Obtinerea informatiilor suplimentare despre o eroare, care a aparut la apelul anterior al unei functii, la apel mai fiind necesar sa se incarce 00h in BX. In patru registre se returneaza codurile de eroare si sursa lor: AX - pentru codul extins al erorii, BH - pentru clasa erorii, BL - pentru actiune sugerata utilizatorului si CH - pentru sursa erorii. Codul extins al erorii dat in AX are valorile: 01h - numar functie invalid 02h - fisier negasit 03h - cale negasita 04h - prea multe fisiere deschise 05h - acces interzis 06h - identificator logic de fisier invalid 07h - blocurile de control ale memoriei sunt distruse 08h - memorie insuficienta 09h - adresa de bloc de memorie invalida 0Ah - mediu invalid 0Bh - format invalid 0Ch - cod de acces invalid 0Dh - data invalida 0Fh - driver de disc invalid 10h - incercare de stergere a directorului curent 11h - dispozitive periferice diferite 12h - nu mai exista fisiere 13h - disc protejat la scriere 14h - unitate necunoscuta

97

Sisteme de operare
; 15h - driver nepregatit ; 16h - comanda necunoscuta ; 17h - eroare de data (CRC) ; 18h - cerere gresita pentru lungimea structurii ; 19h - eroare de cautare ; 1Ah - tip unitate necunoscut ; 1Bh - sector negasit ; 1Ch - lipsa hartiei la imprimanta ; 1Dh - eroare in scriere ; 1Eh - eroare la citire ; 1Fh - eroare generala ; 20h - violarea partajarii fisierelor ; 21h - violarea unui blocaj ; 22h - schimbare de disc invalida ; 23h - FCB indisponibil ; 50h - fisier deja existent ; 52h - nu se poate crea directorul ; 53h _ eroare critica. ; In registrul BH se dau urmatoarele clase de eroare: ; 01h - lipsa de resurse ; 02h - este doar o problema temporara care ; urmeaza a se termina ; 03h - problema de autorizare, de permisiune ; 04h - eroare interna a sistemului de operare ; 05h - eroare hard ; 06h - eroare de sistem care nu se datoreaza ; programului curent ; 07h - eroare a programului aplicativ ; 08h - fisier sau orice alt obiect negasit ; 09h - fisier sau orice alt obiect in format invalid ; 0Ah - fisier sau orice alt obiect interblocat ; 0Bh - problema cu tipul de disc ; 0Ch - contradictie cu un obiect existent ; 0Dh - alta eroare. ; In registrul BL se sugereaza urmatoarele actiuni: ; 01h - reluare ; 02h - reluare, dupa o pauza ; 03h - cerere pentru utilizator de reintroducere data ; 04h - terminare cu curatire ; 05h - terminare imediata, eroare de sistem ; 06h - eroare informationala, se ignora ; 07h - se cere o manevra din partea utilizatorului, ; apoi se reia. ; In registrul CH se indica urmatoarele surse ale erorii: ; 01h - necunoscuta ; 02h - legata de dispozitivul periferic

98

Sisteme de operare
; 03h - legata de retea ; 04h - legata de un dispozitiv periferic serial ; 05h - legata de memoria interna RAM. ; Functia distruge continutul registrilor: ; CL, DX, SI, DI, DS si ES. GET_ERROR macro mov ah,59h int 21h endm

APELAREA FUNCTIEI 5AH

; Crearea unui fisier temporar unic, al carui nume este ; specificat printr_un sir de caractere ASCII, terminat prin ; caracterul \ si urmat de 13 octeti rezervati, sir a carui ; adresa se da in DS:DX. In registrul CX se precizeaza ; atributele fisierului care urmeaza a fi creat: ; 00h - pentru fisier de tip obisnuit, ; 01h - pentru fisier de tip "read only", ; 02h - pentru fisier ascuns, ; 04h - pentru fisier de sistem si ; 20h - pentru fisier de tip arhiva. ; La retur, daca CF=0 functia returneaza in AX identifi; catorul logic al fisierului, iar daca CF=1 in AX see da ; codul de eroare: ; 03h - pentru cale negasita, ; 04h - pentru prea multe fisiere deschise sau ; 05h - pentru acces interzis. CREATE_TEMP macro pathname,attrib mov cx,attrib mov dx,offset pathname mov ah,5Ah int 21h endm

;
; ; ; ; ; ; ; ; ; ; ;

APELAREA FUNCTIEI 5BH


Creaza un nou fisier al carui nume si cale de acces se da printr-un sir de caractere ASCII, sir a carui adresa se precizeaza in DS:DX. In registrul CX se precizeaza atributele fisierului care urmeaza a fi creat: 00h - pentru fisier de tip obisnuit, 01h - pentru fisier de tip "read only", 02h - pentru fisier ascuns, 04h - pentru fisier de sistem si 20h - pentru fisier de tip arhiva. La retur, daca CF=0 functia returneaza in AX

99

Sisteme de operare
; identificatorul logic al fisierului, iar daca ; CF=1 in AX se da codul de eroare: ; 03h - pentru cale negasita, ; 04h - pentru prea multe fisiere deschise, ; 05h - pentru acces interzis sau ; 50h - pentru fisier deja existent. CREATE_NEW macro pathname,attrib mov cx,attrib mov dx,offset pathname mov ah,5Bh int 21h endm

APELAREA FUNCTIEI 5C00H

; Blocheaza accesul la o regiune specificata a unui fisier, ; care este utilizat intr-un mediu multitasking sau retea ; de calculatoare. La apelarea functiei registrul BX se va ; incarca cu identificatorul logic al fisierului, CX:DX va ; contine deplasamentul regiunii in fisier care va fi blocata ; iar SI:DI va fi incarcat cu lungimea acestei regiuni. ; Dupa executia functiei CF = 1 in caz de eroare. ; Explicitarea erorii se deduce din valorile numerice ; continute de registrul AL: ; 01h - pentru cod functie invalid, ; 06h - pentru identificator logic invalid sau ; fisier nedeschis, ; 21h - pentru bolcaj violat adica regiune deja ; blocata, si ; 24h - pentru zona tampon cu intrari de blocaj depasita. LOCK macro handle,start,bytes mov bx,handle mov cx,word ptr start mov dx,word ptr start+2 mov si,word ptr bytes mov di,word ptr bytes+2 mov al,0 mov ah,5Ch int 21h endm

;
; ; ; ; ;

APELAREA FUNCTIEI 5C01H


Deblocheaza accesul la o regiune specificata a unui fisier, care este utilizat intr_un mediu multitasking sau retea de calculatoare. La apelarea functiei registrul BX se va incarca cu identificatorul logic al fisierului, CX:DX va contine deplasamentul regiunii in fisier care va fi

100

Sisteme de operare
; deblocata iar SI:DI va fi incarcat cu lungimea acestei ; regiuni. Dupa executia functiei CF = 1 in caz de eroare. ; Explicitarea erorii se deduce din valorile numerice ; continute de registrul AL: ; 01h - pentru cod functie invalid, ; 06h - pentru identificator logic invalid sau fisier ; nedeschis, ; 21h - pentru debolcaj violat adica regiune deja ; deblocata, si ; 24h - pentru zona tampon cu intrari de deblocaj ; depasita. UNLOCK macro handle,start,bytes mov bx,handle mov cx,word ptr start mov dx,word ptr start+2 mov si,word ptr bytes mov di,word ptr bytes+2 mov al,1 mov ah,5Ch int 21h endm

APELAREA FUNCTIEI 5E00H

; Obtinerea numelui masinii (numele calculatorului local) sub ; forma unui sir ASCII, pe care-l depune intr-o zona ; tampon de 16 octeti aflata la adresa DS:DX. Functia ; returneaza: ; CH = 00h _ daca numele nu a fost definit; ; CL = va da numarul numelui NETBIOS, daca CH nu este 0 ; AX = are semnificatie numai daca CF = 1 (eroare) si el ; poate contine valoarea 01h, indicand faptul ca ; nu a fost incarcat programul de retea. GET_MACHINE_NAME macro buffer mov dx,offset buffer mov al,0 mov ah,5Eh int 21h endm

APELAREA FUNCTIEI 5E02H

; Asigura pozitionarea antetului imprimantei de retea care ; va fi pus la inceputul fiecarui fisier destinat unei ; imprimante aflate in retea. La intrarea in functie BX este

101

Sisteme de operare
; incarcat cu indexul listei de redirectare, CX este ; incarcat cu lungimea sirului de antet care este de maximum ; 64 de octeti iar DS:SI este incarcat cu un pointer ; la o zona tampon care contine in ASCII antetul propriu-zis ; sub forma unui sir. Functia returneaza in caz ; de eroare CF=1 si in AX codul de eroare 01h, care semnifica ; faptul ca programul de retea nu a fost incarcat. PRINTER_SETUP macro index,lgth,string mov bx,index mov cx,lgth mov dx,offset string mov al,2 mov ah,5Eh int 21h endm

;
; ; ; ;

APELAREA FUNCTIEI 5F02H


Obtinerea informatiilor despre lista de intrare in lista de redirectari care a fost creata cu functia 5F03h. Aceste informatii vor fi plasate in zona tampon rezervata de utilizator pentru numele local al carui pointer se

; precizeaza (la intrare in functie) in DS:SI, si numele de ; retea al dispozitivului precizat (tot la intrare) in ; ES:DI. Functia returneaza indicatorul CF=1 pentru ; terminarea cu incident a operatiei, iar in acest caz se dau ; urmatoarele specificatii: ; BX - va contine un flag (fanion) de stare al ; dispozitivului: ; bitul 0 = 0 - pentru dispozitiv valid, ; bitul 0 = 1 - pentru dispozitiv invalid; ; BL - va da tipul dispozitivului: ; 03h - imprimanta, ; 04h - driver de disc. ; Functia altereaza registrii DX si BP. GET_LIST macro I ndex,local,remote mov bx,index mov si,offset local mov di,offset remote mov al,2 mov ah,5Fh int 21h endm

APELAREA FUNCTIEI 5F03H

; Redirectarea unei imprimante sau a unui driver de disc

102

Sisteme de operare
; (denumit dispozitivul sursa) spre un director de retea ; pe care-l vom numi dispozitivul destinatie. La intrare in ; BL se incarca valoarea numerica 3, daca este vorba ; de o imprimanta sau valoarea numerica 4, daca este vorba ; de un driver de disc. DS:SI trebuie sa contina ; un pointer la numele dispozitivului sursa, reprezentat ; printr-un sir ASCII, iar ES:DI va fi incarcat cu un ; pointer la numele dispozitivului destinatie, reprezentat ; tot printr-un sir ASCII. ; Functia returneaza indicatorul CF pozitionat. Daca CF=1, ; atunci operatia s-a terminat incorect si trebuie testat ; codul de eroare care se gaseste in registrul AX si care ; poate lua nalorile numerice: ; 01h - pentru cazul in care nu s-a incarcat programul de ; retea sau valoarea din BL este eronata, ; 03h - pentru indicarea unui director de retea invalid, ; 05h - pentru semnalarea unui acces interzis, ; 08h - pentru semnalarea memoriei insuficiente. REDIR macro local,remote,device,value mov bl,device mov cx,value mov si,offset local mov di,offset remote mov al,3 mov ah,5Fh int 21h endm

APELAREA FUNCTIEI 5F04H

; Anularea unei redirectera care a fost realizata cu functia 5F03h, realizandu_se semnificatia fizica initiala, pentru ; dispozitivul periferic specificat. CANCEL_REDIR macro local mov si,offset local mov al,4 mov ah,5Fh int 21h endm

APELAREA FUNCTIEI 62H

; Obtinerea adresei de segment pentru PSP-ul procesului ; curent, in registrul BX. GET_PSP macro mov ah,62h int 21h endm

103

Sisteme de operare

104

Sisteme de operare
;

; ;*********************** ; MACRO_URI GENERALE ;*********************** ; ; AFISEAZA UN SIR ASCII, TERMINAT PRIN $.


DISPLAY_ASCIIZ macro asciiz_string local search,found_it mov bx,offset asciiz_string search: cmp byte ptr [bx],0 je found_it inc bx jmp short search found_it: mov byte ptr [bx],"$" display asciiz_string mov byte ptr [bx],0 display_char 0DH display_char 0AH endm

; ; MUTAREA UNUI NUMAR DE CARACTERE DINTR-UN SIR SURSA IN ; UNUL DESTINATIE.


MOVE_STRING macro source,destination,count push es push ds pop es assume es:code mov si,offset source mov di,offset destination mov cx,count rep movs es:destination,source assume es:nothing pop es endm

; ; CONVERSIA UNUI NUMAR INTREG INTR-O BAZA PRECIZATA DE ; UTILIZATOR.


CONVERT macro value,base,destination local table,start

105

Sisteme de operare
table start: jmp db push push push mov xor xor div mov mov mov mov mov mov pop pop pop endm start "0123456789ABCDEF" ax bx dx al,value ah,ah bx,bx base bl,al al,cs:table[bx] destination,al bl,ah al,cs:table[bx] destination[1],al dx bx ax

; ; CONVERSIA IN BINAR A UNUI NUMAR.


CONVERT_TO_BINARY macro string,number,value local ten,start,calc,mult,no_mult jmp start ten db 10 start: mov xor mov xor calc: xor mov sub cmp jl push dec mul loop ax,ax al,string[si] al,48 cx,2 no_mult cx cx cs:ten mult value,0 cx,cx cl,number si,si

mult:

106

Sisteme de operare
pop no_mult: add inc loop endm cx value,ax si calc

;
CONVERT_DATE mov mov shr mov and xor mov shr add endm macro dir_entry dx,word ptr dir_entry[24] cl,5 dl,cl dh,dir_entry[24] dh,1FH cx,cx cl,dir_entry[25] cl,1 cx,1980

; ; CONVERSIA UNEI DATE CALENDARISTICE.

PACK_DATE macro date local set_bit ; ; In intrare: DH=ziua, DL=luna, CX=(anul_1980) ; sub cx,1980 push cx mov date,dh mov cl,5 shl dl,cl pop cx jnc set_bit or cl,80h set_bit: or date,dl rol cl,1 mov date[1],cl endm

107

Sisteme de operare

MEMENTO
Comenzi i programme utilitare LINUX1 Nr.crt. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
1

Denumire alias apropos at aumix bash bc bg bunzip2 bzip2 cal cat cc cd cdplay cdrecord change chfn chgrp chkconfig

Funcieie - afieaz sau definete pseudonimele (alias-urile) unor comenzi (alias l l = ' l s - l ' ) . - afieaz paginile de manual referitoare la un termen (apropos chmod). - realizeaz managementul activitilor executate la momente periodice. - controleaz automat sunetul. - reprezint interpretorul de comenzi implicit. - ofer posibiliti de calcul (asemntor calculatorului de buzunar). - trimite un proces pentru a fi executat n fundal, fr interaciune direct cu utilizatorul. - dezarhiveaz fiiere . b z 2 comprimate cu utilitarul bzip2 (bunzip2 documentaii.bz2). - arhiveaz fiiere folosind o metod de compresie foarte bun, dar lent (bzip2 documentaii.bz2 *.pdf *.ps). - afieaz un calendar (cal 06 2009). - concateneaz coninutul mai multor fiiere (cat * .txt). - reprezint compilatorul de C - este echivalent cu gcc. - schimb directorul curent (cd /bin). - realizeaz redarea CD-urilor audio - inscripioneaz CD-uri (cdrecord -eject speed=4 dev=0,1 , 0 thewall. img). - modific atributele de securitate ale utilizatorilor. - modific informaii afiate de finger (adic cele privitoare la utilizator). - modific grupul din care face parte un utilizator. - permite configurarea nivelurilor de execuie n care s

Tabel adaptat dup Drago Acostchioaie i Sabin Buraga - Utilizare LINUX. Noiuni de baz i practic - Editura Polirom Bucureti, ISBN 973-681-542-0, pag. 359 .u.

108

Sisteme de operare Nr.crt. 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 Denumire chmod chown chsh clear cmp cp cut date dd df diff dir du dvipdf dvips dump echo ed eject emacs eog eval Funcieie ruleze serviciile de sistem. - modific permisiunile de acces la fiiere/directoare (chmod +or script. cgi ). - schimb proprietarul fiierelor i grupul din care face parte proprie tarul ( chown horea:profs *. zip ). - modific interpretorul de comenzi implicit al unui utilizator. - terge ecranul (terminalul). - compar (la nivel de octet) coninutul unor fiiere. - copie un fiier la o alt locaie sau sub alt nume (cp /bin/ls ~/tmp). - decupeaz diverse informaii din fiecare linie a unui fiier, pe coloane sau conform unor delimitatori (cut /etc/passwd -d: -fi,5). - afieaz data i timpul curent. - ofer duplicarea coninutului unor fiiere - dispozitive, discuri etc. - afieaz spaiul liber rmas (df /dev/hdal). - compar (la nivel de linie) coninutul unor fiiere. - afieaz informaii privitoare la numele fiierelor dintrun director (dir .*); se prefer utilizarea comenzii ls. - afieaz spaiul ocupat de un director (du /tmp). - transform fiiere .dvi n fiiere .pdf (Portable Document Format) n vederea vizualizrii/tipririi cu xpdf (dvipdf teza.dvi -o teza.pdf). - transform fiiere .dvi n fiiere .ps (PostScript) n vederea vizualizrii/tipririi cu gv (dvips teza.dvi -o teza.ps). - creeaz copii de siguran pentru o scrie de fiiere. - afieaz la terminal (ieirea standard, implicit) un ir de caractere (echo " S a l u t a r e ! " ) . - editeaz la nivel de linie coninutul unui fiier. - demonteaz i elibereaz un mediu de stocare (e.g., CD sau DVD). - reprezint un editor de texte configurabil, deosebit de flexibil i puternic. - vizualizeaz coninutul fiierelor grafice, disponibil n GNOME. - evalueaz o expresie n cadrul interpretorului de

109

Sisteme de operare Nr.crt. 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 Denumire ex expr fc fdisk fg file find finger fortune fsck ftp galeon gcc gdm gfloppy giftrans gimp gnome-cd gnorpm gnozip grecord grep groupadd groupdel groupmod grub Funcieie comenzi. - editeaz la nivel de linie coninutul unui fiier. - evalueaz o expresie (echo expr 10 * 3). - compar fiiere. - partiioneaz discul i modific informaii privitoare la partiiile existente. - trimite un proces pentru a fi executat n prim-plan, interacionnd direct cu utilizatorul. - determin tipul unor fiiere (file ~/Documents/*). - gsete fiiere, conform unor criterii sofisticate (find / -name k* print). - furnizeaz informaii despre utilizatori, eventual pe alte maini (finger bunu@remy.uab.ro). - afieaz aleatoriu o maxim, un aforism sau un citat celebru. - verific sistemele de fiiere ale dispozitivelor (fsck /dev/hda5). - realizeaz o conexiune cu un server FTP, n vederea transferului de fiiere la distan. - este un navigator Web furnizat de GNOME. -reprezint varianta GNU a compilatorului de C (gcc program, c -o executabil). - reprezint managerul de ferestre oferit de GNOME. - reprezint un utilitar grafic oferit de GNOME pentru formatarea dischetelor. - controleaz transparena imaginilor stocate n format GIF. - reprezint un program de realizat grafic raster (bitmap), oferind multe faciliti de prelucrare i filtrare. - realizeaz redarea CD-urilor audio n GNOME. - desemneaz un utilitar pentru managementul grafic al pachetelor .rpm. - reprezint un utilitar grafic pentru managementul arhivelor. - reprezint un program de nregistrat coninut audio. - caut n cadrul fiierelor (la nivel de linie) diverse iruri de caractere (grep "config" *.conf). - adaug un grup de utilizatori (groupadd catedra). - terge un grup de utilizatori (groupdel mate). - modific diveri parametri asociai unui grup de utilizatori (groupmod catedra). - permite ncrcarea unui sistem de operare dintr-o list de

110

Sisteme de operare Nr.crt. 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 Denumire gtkam Funcieie sisteme instalate. - preia fotografii realizate cu camera digital. - dezarhiveaz un fiier .gz compresat cu gzip (gunzip copie .tar .gz). - realizeaz vizualizarea/tiprirea de fiiere .ps (PostScript). -arhiveaz un fiier, crend n locul lui o arhiv .gz (gzip copie.tar). - oprete sistemul de operare. - afieaz primele linii ale coninutului unui fiier (head -3 /etc/ group). - afieaz informaii de ajutor privitoare la interpretorul de comenzi (help exit). - realizeaz managementul istoricului comenzilor introduse. - afieaz informaii privitoare la adresa (simbolic ori IP) a unei gazde (host www .uab. ro). - afieaz informaii privitoare la adresa mainii curente. - ofer informaii privitoare la identitatea unui utilizator. - configureaz interfeele (echipamentele) de reea. - afieaz, formatat corespunztor, codul surs al programelor C sau C++. - ofer informaii privitoare la diverse comenzi i utilitare, n form de hipertext (info mtools). - configureaz firewall-ul. - ofer informaii privitoare la mediile de stocare respectnd standardul ISO 9660 (CD-uri i DVD-uri). - ofer posibiliti de detectare/corecie a erorilor de gramatic. - afieaz procesele lansate n fundal. - reprezint un editor de texte oferind diverse faciliti, bazat pe combinaii de taste WordStar/TurboPascal. - reprezint un editor de texte oferind diverse faciliti (joe cu combinaiile de taste ale editorului de texte pico). - este un program de inscripionare de CD-uri, disponibil n KDE. - reprezint un editor de texte oferit de mediul KDE, utilizat n regim grafic. - reprezint un program de calcul tabelar, parte a suitei de birou KOffice. - reprezint un utilitar de configurare oferit de KDE.

gunzip gv gzip halt head help history host


hostname id ifconfig indent info iptables isoinfo ispell jobs joe jpico k3b kate kcalc kde-config

111

Sisteme de operare Nr.crt. 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 Denumire kde kdf kedit kfloppy kformula khelpcenter kill killall klipper kmail kmix knotes konqueror konsole kpackage kpaint kpersonalizer kppp kscd ksnapshot kuickshow kuser Funcieie - desemneaz managerul de ferestre KDE (The KDesktop Environment), un mediu grafic oferind multe faciliti. - este un utilitar grafic similar cu df i du, parte a sistemului KDE. - desemneaz un editor de texte simplu, oferit de KDE. - reprezint un utilitar grafic oferit de KDE pentru formatarea dischetelor. - reprezint un utilitar de editare de formule matematice, parte a suitei KOffice. - reprezint sistemul de asisten oferit de KDE. - trimite un semnal (implicit de terminare) proceselor existente n sistem (kill -9 -1). - trimite un semnal (implicit de terminare) tuturor proceselor deinute de un utilizator (killall mc). - reprezint clipboard-ul KDE. - reprezint un program KDE pentru managementul potei electronice. - reprezint un utilitar KDE pentru controlul sunetului. - reprezint un utilitar KDE pentru managemenul notielor. - reprezint navigatorul Web i managerul de fiiere oferit de KDE. - reprezint consola KDE (lanseaz diverse interpretoare de comenzi). - este un program KDE care realizeaz managementul pachetelor RPM. - reprezint un program simplu de grafic raster, oferit de KDE. - reprezint un utilitar de personalizare a interfeei KDE. - configureaz legtura cu un furnizor de servicii Internet (client PPP). - realizeaz redarea CD-urilor audio n KDE. - este un program de capturare a ecranului (desktopului). - vizualizeaz coninutul fiierelor grafice, disponibil n KDE. - reprezint un utilitar KDE pentru managementul utilizatorilor.

112

Sisteme de operare Nr.crt. 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 Denumire kview kword kwrite last latex less lilo links linuxconf ln logout lpc lpq lpr lprm ls lynx mail make Funcieie - reprezint un utilitar KDE de previzualizare a coninutului fiierelor. - reprezint un procesor de texte avansat, oferit de suita de birou KOffce. - reprezint un editor de texte, parte a sistemului KDE. - ofer lista ultimelor conectri ale utilizatorilor n sistem (last bunu). - reprezint un procesor sofisticat de texte, bazat pe marcatori i folosit la generarea de fiiere indepen-dente de dispozitiv .dvi (latex articol.tex ). - afieaz paginat coninutul unui fiier, cu posibilitatea derulrii acestui coninut. - permite ncrcarea unui sistem de operare dintr-o list de sisteme instalate. - reprezint un navigator Web rapid, disponibil n mod text sau grafic, cu suport pentru CSS i JavaScript (mbuntire a programului lynx). - reprezint un utilitar complex utilizat la configurarea unui sistem Linux. - realizeaz legturi (scurtturi) ntre dou fiiere ( ln -s /trap /usr /trap). -realizeaz deconectarea unui utilizator (prsirea sesiunii de lucru). - reprezint o interfa pentru administrarea siste-mului de tiprire. - listeaz coada de sarcini de tiprire. - trimite un fiier pentru tiprire, adaugndu-1 la coada de sarcini (lpr curs.ps ). -terge o sarcin din coada de sarcini de tiprire ( lprm -Plaser 210 ). - afieaz n diverse formate lista fiierelor dintr-un director ( ls alf ~/mail ). - reprezint un navigator Web rapid, disponibil n mod text (lynx http://www.uab.ro ). - reprezint un utilitar pentru managementul potei electronice n regim linie de comand ( mail jhorea@uab.ro -sSalutari ). - reprezint un utilitar pentru execuia de programe, conform unor reguli care satisfac diverse dependene.

113

Sisteme de operare Nr.crt. 133 134 135 136 137 138 139 140 141 142 Denumire man2html man mc mcedit mesg mkdir mkfifo mkisofs more mount Funcieie - transform fiiere folosite de man n format hipertext.html . - reprezint principalul program de afiare de pagini de manual privind diverse aspecte ale sistemului: comenzi, apeluri de sistem, funcii, formate de fiiere etc. ( man last). - reprezint managerul de fiiere Midnight Commander , disponibil n mod text, oferind diverse faciliti (cu o interfa inspirat de Norton Commander pentru DOS). - reprezint un editor de texte simplu, parte compo-nent a Midnight Commander. - ofer un comutator pentru inhibarea trimiterii cu write de mesaje ctre un anumit terminal ( mesg n). - creeaz un director ( mkdir copia ). - creeaz un fiier special FIFO (conduct -pipe). - creeaz un sistem de fiiere ISO 9660 - standardul utilizat pentru stocarea informaiilor pe CD. - afieaz paginat coninutul unui fiier. - monteaz n cadrul unui director structura sistemului de fiiere stocat de un dispozitiv: disc, CD/DVD, memorie USB etc. (mount -tvf at /dev/hda1 /mntwin_c ). - este un editor vizual de pagini Web, component (opional) a navigatorului Mozilla. - desemneaz un navigator Web performant, rulnd n medii grafice. - reprezint un utilitar pentru ascultarea de fiiere MPG n linie de comand ( mpgl23 /mnt/cdrom/pink_f loyd/*.mp3 ). - desemneaz un set de utilitare pentru realizarea de operaii uzuale cu dischete formatate DOS: mdir, mcopy, mren, med, mformat etc. (mdir a:, mcopy teza.pdf a : , med a:/copie, mformat a : ). - mut/redenumete un fiier ( mv teza.ps /tmp/de_copiat ). - reprezint clientul utilizat la conectarea la un server MySQL, n vederea realizrii unui dialog prin comenzi SQL (mysql -u busaco -p ). - reprezint un utilitar de administrare a serverului MySQL.

143 144 145 146

mozillacomposer mozilla mpg123 mtools

147 148 149

mv mysql mysqladmin

114

Sisteme de operare Nr.crt. 150 151 152 153 Denumire nautilus netstat nice nohup Funcieie - reprezint managerul de fiiere oferit de GNOME. - ofer informaii privitoare la starea reelei: tipuri de conexiuni, porturi deschise etc. ( netstat -t ). - modific prioritatea relativ a proceselor. - inhib tratarea semnalului HOHUP, astfel nct procesele s poat rula n fundal i dup deconec-tarea utilizatorului ( nohup wget ftp:// f tp .ua b.ro/pub /li nux/ mdk9.2. i so & ). - ofer informaii privind adresele simbolice ale unor calculatoare. - reprezint complexa suit de birou OpenOffice . - realizeaz schimbarea parolei unui utilizator ( passwd horea). - convertete un fiier .pdf n format .ps. - reprezint interpretorul de Perl, un limbaj puternic pentru administrare de sistem i nu numai ( perl admin.pl ). - desemneaz un utilitar care ofer acces la documentaiile Perl (perldoc -f print). - reprezint clientul utilizat la conectarea la un server PostgreSQL n vederea realizrii unui dialog prin comenzi SQL. - reprezint un editor de texte simplu, oferind aceleai combinaii de taste ca utilitarul pine. - reprezint un utilitar pentru verificarea conexiunii cu o alt main (ping horea.uab.ro). - desemneaz o versiune simplificat a utilitarului finger, oferind informaii privitoare la utilizatorii locali (pinky horea). - formateaz un fiier text n vederea tipririi. - configureaz imprimantele ataate, disponibil n Mandrake. - reprezint un program pentru managementul mesajelor de e-mail. - extrage informaiile text dintr-un fiier . p s. - desemneaz un utilitar care convertete fiiere .ps n fiiere .pdf. - afieaz informaii privitoare la procesele din sistem: identificatori, stare, proprietar etc. (ps ux).

154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169

nslookup oofice passwd pdf2ps perl perldoc pgsql pico ping pinky pr printerdrake procmail ps2ascii ps2pdf ps

115

Sisteme de operare Nr.crt. 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 Denumire pstree pwd python reboot redhatconfigprinter redhatconfig-users restore rm rmdir rpm rpmdrakeremove rpmdrake scp script sed serviceconf set sh shutdown sleep Funcieie - ofer o vedere arborescent a proceselor din sistem. - afieaz directorul curent. - reprezint interpretorul de Python, un limbaj puternic pentru realizarea diverselor sarcini de sistem i nu nu-mai (python demontare.py). - restarteaz sistemul de operare. - configureaz imprimantele ataate, disponibil n Fedora/RedHat. - reprezint un instrument de management al utilizatorilor, disponibil n Fedora/RedHat. - restaureaz copiile de siguran create cu dump. - terge fiiere (rm -/temporar/* -Rf). - terge un director (rmdir temporar). - realizeaz managementul pachetelor soft.rpm (RedHat Package Manager). - desemneaz un utilitar de eliminare a unor pachete .rpm, oferit de Mandrake. - desemneaz un utilitar de management al pachetelor .rpm, oferit de Mandrake, utilizat n special la instalarea/actualizarea pachetelor. - reprezint un utilitar pentru copierea de fiiere aflate la distan, n regim securizat (variant sigur a programului ftp). - lanseaz un interpretor de comenzi astfel nct dialogul ntre utilizator i calculator s fie stocat ntrun fiier ' typescript '. - reprezint un editor n linie de comand. - configureaz n mod grafic serviciile de sistem: niveluri de execuie, rularea/oprirea unor servicii etc. - realizeaz managementul variabilelor unei sesiuni de lucru, mai ales al celor de sistem: MAIL, PATH, PS1, TERM etc. - reprezint interpretorul de comenzi clasic" al sistemului (implicit este bash). - realizeaz oprirea sistemului, posibil cu restartarea lui (shutdown -h now). - are scop adormirea" unui proces pentru o durat de timp (sleep 30 ).

116

Sisteme de operare Nr.crt. 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 Denumire sort spell split ssh startx stat stty su switchdesk sync sysctl tac tail talk tar Funcieie - sorteaz coninutul unui fiier ( sort /etc/passwd ). - ofer posibiliti de detectare/corecie a erorilor de gramatic. - divizeaz coninutul unui fiier n fiiere de dimensiuni mai mici. - reprezint un client securizat pentru accesul la distan la un interpretor de comenzi (variant sigur a pro-gramului telnet). - lanseaz sistemul de ferestre XWindow care va oferi suport pentru un manager de ferestre precum KDE sau GNOME . - ofer informaii privitoare la un fiier: permisiuni, dimensiune, pro prietar, data accesrii etc. ( stat /bin/bash ). - ofer posibiliti de setare a terminalului. - substituie un utilizator ( su - horea ). - schimb managerul de ferestre (mediul desktop ) al unui utilizator ( switchdesk KDE ). - sincronizeaz coninutul buffer-elor de memorie, scrieind informaiile pe disc. - modific diveri parametri ai nucleului sistemului de operare. - desemneaz un program similar cu comanda cat, ns concateneaz liniile de la sfritul fiierului ctre nceput ( tac /etc/httpd/logs/ error_log ). - afieaz ultimele linii ale coninutului unui fiier (tail -4 /etc/ mtab). - permite realizarea de conversaii locale sau la dis-tan ntre perechi de utilizatori. - arhiveaz coninutul unui grup de fiiere, prezervndu-le informaiile legate de permisiuni, proprietar, data crerii etc. (creare: tar -cf copie.tar * .ps, dezar-hivare: tar -xf copie.tar). - reprezint un program eare realizeaz conectarea la distan - terminal virtual (telnet localhost 3000). - testeaz diverse condiii: existena unui fiier, tipul unui fiier, valoarea unei variabile de sistem etc. (test -d /tmp && echo "Exista"). - procesor sofisticat de texte, pe baza cruia ope-reaz

205 206 207

telnet test tex

117

Sisteme de operare Nr.crt. 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 Denumire tidy time top totem touch tr traceroute tree troff umask umount unalias uname uniq unset unzip usbview useradd userdel userdrake userinfo usermod users vi Funcieie latex. - este un utilitar de validare (verificare sintactic) a documentelor HTML (tidy index.html). - modific data/timpul de sistem. - realizeaz un top al execuiei proceselor de pe o main. - reprezint un utilitar pentru vizualizarea de coninut video, disponibil n Mandrake. - modific timpul unui fiier la timpul curent sau creeaz fiierul, dac nu exist(touch /etc/issue). - transform iruri de caractere. - determin ruta de la maina curent la un calculator din reea (traceroute www.lug.ro). - afieaz directoarele sub forma unei structuri arborescente (tree / -d -L 1). - reprezint un procesor de texte, oferind diverse posibiliti de formatare a textului. - stabilete permisiunile implicite care vor fi setate la crearea fiierelor i directoarelor (umask 700). - demonteaz un dispozitiv, operaie invers celei de montare cu mount (umount /dev/cdrom). - terge un alias al unei comenzi (unalias 11). - ofer informaii privitoare la maina curent. - afieaz liniile unice ale unui fiier sortat. - elimin o variabil din cadrul unei sesiuni de lucru. - dezarhiveaz fiiere .zip comprimate cu zip (unzip documente.zip). - ofer informaii referitoare la dispozitivele conectate la porturile USB . - adaug un utilizator ( useradd horea ). - terge un utilizator ( userdel ionela ). - reprezint un instrument de management al utilizatorilor, disponibil n Mandrake . - ofer diverse informaii privitoare la un utili-zator, n Mandrake . - modific diveri parametri asociai unui utilizator ( usermod ionela ). - desemneaz un utilitar pentru afiarea utilizatorilor conectai. - reprezint un editor de texte clasic al sistemu-lui

118

Sisteme de operare Nr.crt. 232 233 234 235 236 237 238 Denumire viewres vim vimtutor w wall wc wget Funcieie UNIX . - reprezint un utilitar pentru vizualizarea resurselor sistemului. - reprezint o mbuntire a editorului vi, oferind diverse faciliti. - desemneaz un utilitar pentru nvarea editorului vim. - ofer lista sesiunilor de lucru existente n sistem. - afieaz un mesaj tuturor utilizatorilor din sistem. - numr linii, cuvinte i caractere ale coninutu-lui unor fiiere ( wc -l /etc/group ). - reprezint un utilitar folosit la salvarea local a unor resurse Web : pagini, fragmente de situri sau iruri Web complete ( wget http:// www.uab.ro/-horea/books.html ). - reprezint un utilitar care afieaz locul un-de este stocat un program ( whereis traceroute ). - afieaz paginile de manual desemnnd un anumit cuvnt-cheie (which chmod ). - ofer lista utilizatorilor conectai n sistem i a sesiunilor lor de lucru. - afieaz informaii privitoare la utilizatorul curent. - scrie un mesaj la terminalul unui utilizator. - reprezint un calculator de buzunar, disponibil pentru XWindow . - inscripioneaz CD-uri, oferind o interfa grafic. - reprezint un ceas afiat de sistemul XWindo w. - vizualizeaz fiierele independente de dispozitiv .dvi (xdvi teza.dvi ). - reprezint un editor de texte, disponibil pentru sistemul XWindow . - este varianta XWindow a editorului de texte configurabil emacs . - reprezint un utilitar de divertisment, disponibil pentru XWindow, care afieaz nite ochiori urmrind cursorul mouse-ului. - configureaz sistemul X. - reprezint un program de realizare de grafic

239 240 241 242 243 244 245 246 247 248 249 250

whereis which who whoami write xcalc xcdroast xclock xdvi xedit xemacs

xeyes xf86config xfig

251 252

119

Sisteme de operare Nr.crt. Denumire Funcieie vectorial, specializat n generarea de scheme i diagrame. - reprezint un utilitar pentru vizualizarea de coninut video. - trimite un semnal unei ferestre XWindow, n vederea eliminrii acesteia. - blocheaz sesiunea de lucru XWindow a unui utilizator. - reprezint un utilitar de tip lup" pentru mrirea coninutului grafic dintr-o sesiune XWindow. - desemneaz echivalentul comenzii man, n acest caz n XWindow. - desemneaz un program pentru derularea de coninut multimedia, similar Winamp-ului. - reprezint un utilitar pentru vizualizarea de coninut video. - reprezint un program pentru vizualizarea de fiiere .pdf (xpdf document.pdf). - reprezint un program care lanseaz diverse screensaver-e. - reprezint terminalul XWindow. - reprezint sistemul de asisten folosit de GNOME. - arhiveaz fiiere stocndu-le n formatul .zip, compatibil cu PKZIP din DOS sau WinZIP din Windows (zip -9 document.zip).

253 254 255 256 257 258 259 260 261 262 263 264

xine xkill xlock xmag xman xmms xmovie xpdf xscreensaver xterm yelp zip

120

Sisteme de operare

BIBLIOGRAFIE 1. Andrew S. Tanenbaum - SISTEME DE OPERARE MODERNE, Ediia a II-a, Editura Byblos S.R.L, Bucuresti 2004, ISBN 973-86699-2-8. 2. Abraham Silberchats, Peter Baer Galvin, Greg Garne - Operating Szstem Concepts, Seventh Edition, John Wiley & Sons. INC 2005, ISBN 978-0-471-69466-3. 3. Vasile Lungu - Procesoare INTEL Programare n limbaj de asamblare , Ediia a II-a, Editura Teora, Bucuresti 2006, ISBN 973-20-0099-6. 4. Gabriel Rdulescu - Elemente de arhitectur a sistemelor de calcul. Programare n limbaj de asamblare, Editura MATRIX ROM, Bucuresti 2007, ISBN 978-973-755-1788. 5. Drago Acostchioaie, Sabin Buraga - Utilizare LINUX * Noiuni de baz i practic, Editura POLIROM, Bucuresti 2004, ISBN 978-681-542-0. 6. Mihai Ceapru - PROGRAMMATION EN LANGUAGE D ASSAMBLAGE, Editura MATRIX ROM, Bucuresti 2007, ISBN 978-9390-25-0. 7. Cezar Ungurau, Mirela Petrea, Laureniu Vornicu - nvai rapid LIMBAJUL DE ASAMBLARE pentru procesoare X86 , Editura EduSoft, Bacu 2006, ISBN 97897714-1-2. 8. Gheorghe Musc - Programarea n Limbaj de asamblare, Editura Teora, Bucuresti 1997, ISBN 973-601-480-0. 9. Radu Mrsanu - Sistemele de operare MS-DOS si UNIX , Editura Tehnica, Bucuresti 1995, pag 17-118, 119-135, 174-234. 10. V. Caprariu s.c. - Sistemul de operare DOS * Ghidul programatorului, Microinformatica, Cluj-Napoca 1991, pag. 105- 263. 11. Jolde Remus i Olteanu Emil - Arhitectura calculatoarelor, vol. II, Instruciunile familiei INTEL 80X86, Seria Didactica, Alba Iulia 2006. 12. Jolde Remus, Tulbure Adrian i Colectivul - Limbajul de asamblare prin exemple. ndrumtor, Seria Didactica, Alba Iulia 2008.

121

You might also like