ComputerCei mai mulţi utilizatori au o idee despre ce înseamnă un sistem de operare. Dar experienţa comună cu sistemul de operare înseamnă ecranul iniţial, desktopul. În acest articol vom privi "în spatele cortinei", pentru a înţelege cum funcţionează de fapt un sistem de operare.

 

 

Cum funcţionează computerul

Funcţiile unui sistem de operare

Un sistem de operare execută mai multe tipuri de management: al proceselor, al fişierelor, al memoriei, al evenimentelor, al dispozitivelor de ieşire, al securităţii, al aplicaţiilor şi al datelor de sistem.

Managementul proceselor

Sistemele de operare vechi permiteau executarea unui singur program la un moment dat (batch processing); cele moderne permit multitaskingul, adică rularea mai multor programe în acelaşi timp (e-mail, browser, un program de grafică etc.). Chiar şi atunci când utilizatorul crede că foloseşte un singur program, în fapt sistemul de operare gestionează mai multe sarcini. Un exemplu obişnuit este rularea unui program ce primeşte datele trimise de diverse programe spre a fi printate, care se numeşte print spooler. Acest program este intermediar între o aplicaţie şi imprimantă, fiind necesar pentru că imprimantele pot accepta doar o anumită cantitate de informaţie la un moment dar, iar, dacă, de exemplu, programul Word ar aştepta până ceea ce a trimis spre imprimantă se printează, atunci ar fi indisponibil pentru o vreme.

Un sistem de operare gestionează procese, nu programe ori sarcini. Atunci când o aplicaţie este iniţiată de utilizator, pentru sistemul de operare este vorba de un proces. Dacă aplicaţia este deschisă de 2 ori 3 ori, sistemul de operare are de gestionat 3 procese, chiar dacă sunt asociate aceleiaşi aplicaţii.

Un procesor, în realitate, nu poate gestiona mai mult de un proces la un moment dat, exact cum un om nu poate fi atent la două lucruri într-o unitate de timp. Dar sistemul de operare poate efectua multitaskingul printr-o tehnică numită "împărţirea timpului" (time-slicing). Această tehnică permite executarea unui anumit proces pentru o perioadă foarte scurtă, apoi executarea altuia şamd, fără ca utilizatorul să poate sesiza acest lucru. Această împărţire a timpului între procese este o sarcină dificilă şi importantă. Deşi este eficient ca perioadele asociate unui anumit proces să fie cât mai lungi (pentru că trecerea de la un proces la altul înseamnă timp pentru procesor), perioade prea lungi sunt contraindicate, pentru că pot afecta utilizarea computerului (utilizatorul dă o comandă, iar computerul răspunde târziu la aceasta). Sistemul de operare prioritizează procesele; cele care la terminarea timpului de procesor alocat sunt deja executate vor fi puse în lista de aşteptare undeva cât mai în spate, pe când un proces ce încă se execută când i se termină perioada de procesor alocată este pus în coadă, către mijlocul cozii de procese ce aşteaptă să fie executate de procesor.

 

 

Managementul fişierelor

Capacitatea de management al fişierelor se referă la abilitatea de a citi şi modifica fişiere de pe mediile de stocare, precum şi cea de a crea şi şterge fişiere.

Un fişier poate fi răspândit, funcţie de gradul de fragmentare al dispozitivului de stocare, pe mai multe sectoare ale acestuia. Sarcina de a-i depista toate părţile ce constituie fişierul revine sistemului de operare.

Mediile de stocare au o structură logică (ceea ce vede utilizatorul, adică structura de directoare) şi o structură fizică (unde pe mediul de stocare se află în fapt un fişier). Faptul că două fişiere se află în acelaşi director, nu înseamnă că ele se află unul lângă altul pe hard-disk ori orice alt mediu de stocare. O sarcină importantă a sistemului de operare este să stabilească şi să menţină corespondenţa dintre structura logică şi cea fizică. Există un director pe fiecare mediu de stocare menţinut de sistemul de operare în scopul reţinerii tuturor datelor privind fiecare fişier, precum şi pentru ţinerea evidenţei fiecărui spaţiu liber de pe mediul de stocare. Programele care au acces la diverse fişiere au acces doar la structura logică a acestora, aspect care face ca atunci când ştergeţi un fişier de pe hard-disk, în realitate să operaţi doar modificări la nivelul acestui director special, care este modificat de sistemul de operare, în sensul că menţionează că un anume fişier nu mai există, deşi el, fizic, continuă să fie pe mediul de stocare, până la rescrierea spaţiului pe care-l ocupă.


Managementul memoriei


Toate procesele ce rulează la un moment dat, dar şi sistemul de operare în sine, au nevoie de memoria principală, dat fiind că de aici se ajunge la executarea de către procesor a diverselor sarcini. Managerul de memorie al sistemului de operare are sarcina dificilă de a decide care adrese de memorie sunt asociate cu care proces la un moment dat. Acesta se ocupă şi de alocarea dinamică a memoriei, care se referă la gestionarea cererilor suplimentare de memorie ale unui program aflat deja în execuţie. Apar complicaţii când programele nu dezalocă memoria folosită atunci când nu mai au nevoie de aceasta, întrucât ocupă spaţiu de memorie în mod inutil, rezultând ceea se numeşte memory leak (un bloc de memorie alocat, dar nefolosit).

Astăzi utilizatorii, graţie multitaskingului, rulează mai multe programe concomitent. Mai mult, multe programe sunt de dimensiuni foarte mari. Pentru a nu rămâne fără memorie, sistemul de operare foloseşte o tehnică numită "memoria virtuală", care presupune simularea unei memorii de o mai mare dimensiune decât cea RAM prin folosirea, pe post de memorie, unei anumite zone de pe hard-disk. Sistemul de operare dispune de o tabelă care ţine evidenţa fiecărei adrese simulate a unui program şi adresele fizice de memorie asociate.

Iată un exemplu de folosire a memoriei virtuale. Utilizatorul deschide un anumit program care are 1 Mb. Sistemul de operare ia o porţiune din acesta, să zicem 10 kb şi decide să o stocheze în memoria principală, începând cu adresa numărul 1.000.000. Programul rulat nu ştie nimic despre porţiunea de memorie alocată lui. În tabela memoriei virtuale amintite mai sus se reţine programul care rulează, plaja de adrese virtuale ocupate de acesta (de la 0 la 10000 (pentru cei 10 mii de biţi)) şi plaja de adrese fizice (de la 1.000.000 la 1.010.000). Dar e posibil ca programul să necesite executarea unei porţiuni de cod care se află în plaja de adrese (virtuale) de la 10.000 la 15.000, care nu se află stocată în memoria RAM (se numeşte "page fault" când se întâmplă astfel). Sistemul de operare îi alocă o plajă de adrese fizice (să zicem de la 30.000 la 35.000) şi notează aceasta în tabela sa, pentru a avea mereu o evidenţă a tuturor părţilor programului rulat, indiferent de plaja de adrese fizice de memorie alocate.

Blocurile de memorie fizică pe care sistemul de operare le foloseşte se numesc "pagini" (eng.pages, şi de aici şi "page fault"). Sistemul de operare menţine pe hard-disk o zonă specială, de regulă fiind o zonă continuă de spaţiu către mijlocul hardului (pentru acces uşor, oriunde ar fi capul de citire), denumită "swap file", pentru stocarea temporară a paginilor.

Atunci când vedeţi ledul hard-diskului aprins, deşi nu executaţi nicio comandă, este posibil ca managerul memoriei virtuale să lucreze, gestionând modul în care programele deschise primesc spaţii în memoria principală.


Managementul evenimentelor

Un eveniment reprezintă o acţiune ce generează o anumită reacţie a unui program. Atunci când, de pildă, daţi clic-dreapta în interiorul unui program (ceea ce, pentru sistemul de operare, constituie un eveniment), se poate deschide o fereastră cu anumite opţiuni. De exemplu, când daţi clic-dreapta pe o pagină web în browserul Firefox, veţi afişa un meniu contextual cu diverse comenzi. Clicurile mouse-ului ori apăsarea unor taste ale tastaturii reprezintă evenimente generate de utilizator. Sunt şi evenimente generate chiar de sistemul de operare, cum ar fi actualizarea ceasului din dreapta-jos a desktopului sistemului de operare Windows.

Sistemul de operare direcţionează evenimentele către programe, întrucât programele nu comunică direct cu mouse-ul ori tastatura. Pentru ca sistemul de operare să înţeleagă semnalele trimise de mouse ori tastele tastaturii se foloseşte de un mijlocitor esenţial: driverele. Fără drivere potrivite diverse dispozitive nu sunt "văzute" de sistemul de operare ori, deşi sunt identificate, nu sunt utilizate toate caracteristicile (de exemplu, o placă grafică (care are cel mai solicitat driver) poate fi "văzută" de sistemul de operare, dar fără un driver adecvat, doar anumite opţiuni (rezoluţii ale ecranului, de pildă) pot fi accesate, deşi sunt disponibile mai multe.


Managementul dispozitivelor de ieşire


Sistemul de operare este mijlocitor între diverse programe (de exemplu Microsoft Word) şi diverse dispozitive de ieşire (de exemplu, o imprimantă). Imprimanta dispune şi ea de un driver care-i permite să înţeleagă mesajele specifice transmise de un anumit program (printare ori anularea printării), prin intermediul sistemului de operare.

"Aventura" unei litere, de la apăsarea tastei până la afişarea pe monitor

Iată o poveste interesantă: ce se întâmplă atunci când, folosind un procesor de text (ca Notepad++, editorul nostru favorit...), apăsăm o anumită tastă (tasta X, de exemplu)?

Şirul de acţiuni gestionat de sistemul de operare este următorul:
- utilizatorul apasă tasta X;
- driverul tastaturii comunică apăsarea tastei X sistemului de operare;
- sistemul de operare determină cărui program aparţine această apăsare de tastă (în cazul nostru, Notepad++) şi o transmite către acesta;
- programul determină că X-ul trebuie să apară pe ecranul computerului în poziţia în care se află cursorul;
- comunică acest lucru sistemului de operare;
- sistemul de operare transmite cererea de afişare primită de Notepad++ driverului plăcii grafice;
- driverul plăcii grafice comunică solicitarea de afişare plăcii, care, în fine, generează afişarea literei X pe ecran. Desigur, totul durează o fracţiune de secundă. Complicat, nu?


Managementul datelor de sistem ori datelor aplicaţiilor

Sistemul de operare are sarcina de a stoca date referitoare la sistemul informatic pe care rulează: procesorul computerului, mărimea hard-diskului, tipul plăcii grafice (cu toate opţiunile şi rezoluţiile disponibile), driverele diverselor dispozitive conectate la sistem şamd. Diverse date despre utilizatori (datele de logare ale acestora ori diverse preferinţe ale lor) ori despre setări ale diverselor aplicaţii instalate sunt, de asemenea, stocate de către sistemul de operare.


Componente şi interoperabilitate

O problemă serioasă pentru dezvoltatorii de software este interoperabilitatea dintre softurile care sunt utilizate împreună. De exemplu, un program de gestionare a e-mailurilor are nevoie de un editor de text. În loc să dezvolte propriul editor de text, compania care furnizează o soluţie pentru e-mail va prefera, probabil, încorporarea în propriul soft a unei componente, după cum este denumirea sa, care să execute sarcina de editare. Unul dintre avantajele certe ale folosirii componentelor este că acestea sunt deja testate şi validate de utilizatori. Aceste componente, pentru a asigura interoperabilitatea între diverse softuri, trebuie să respecte diverse standarde.


COM - Component Object Model

Soluţia Microsoft pentru interoperabilitate este numită COM şi permite crearea unor aplicaţii folosind componente realizate de diverse companii. Pentru că este un soft Microsoft, acesta este cumva centrat pe tehnologia Windows.

CORBA

CORBA (Common Object Request Broker Architecture) este un standard deschis, sprijinit de către o organizaţie nonprofit, OMG (Object management Group). Programatorii pot contribui la dezvoltarea acestui standard.

Programarea computerelor. Fundamente

Bibliografie:
Computer Science Made Simple de V. Anton Spraul