S.O.

     Generalitati despre SO(sistemul de operare)



 Un sistem de operare este un set de programe care:
a) asigura gestionarea resurselor unui sistem de calcul, implementând algoritmi care trebuie sa maximizeze performantele acestuia;
b) realizeaza o interfata între utilizator si sistem de calcul, extinzând dar si simplificând setul de operatii disponibile.
Sistemul de operare se interpune între programele de aplicatii (aflate pe nivelul cel mai de sus într-o structura stratificata a unui calculator) si BIOS, care este deasupra nivelului hardware al sistemului de calcul (nivelul cel mai de jos). 
  BIOS (basic input/output system) reprezinta software-ul de nivelul cel mai de jos care controleaza hardware-ul calculatorului.

Combinatia dintre BIOS-ul placii de baza (ROM BIOS), BIOS-ul modulelor adaptoare si driverele încarcate de pe disc alcatuiesc întregul BIOS.
Un PC contine o structura sub forma a patru straturi: 
-hardware
-BIOS
-Sisteme de operare
-Programe de aplicatii


Scopul acestui concept, de echipament stratificat, este de a permite unui anumit sistem de operare si aplicatiilor sa ruleze pe structuri hardware diferite.

De exemplu, daca o aplicatie cere sistemului de operare salvarea unui fisier, aplicatia nu trebuie sa stie cum sa salveze pe disc. Ea este izolata de hardware, poate fi rulata pe orice echipament, comunicând cu sistemul de operare. Sistemul de operare comunica apoi cu BIOS-ul sau cu driverele.
Producatorii de hardware sunt cei care care realizeaza driverele necesare. Ele sunt de obicei specifice sistemului de operare. Totusi acestea sunt grupate astfel: pentru Windows 95/98/ Me sau pentru Windows NT, 2000, XP.
Deoarece BIOS-ul arata la fel pentru toate sistemele de operare, indiferent de hardware-ul cu care face legatura, acelasi sistem de operare poate sa lucreze pe o varietate de sisteme hardware.
   BIOS-ul din ROM-ul placii de baza contine driverele initiale pentru pornirea corecta a sistemului de operare. Primele variante de BIOS contineau drivere pentru componentele initiale ale sistemului: tastatura, unitatea de discheta, unitatea de hard disc. Ulterior calculatorului i s-au adaugat componente hardware pentru care nu existau drivere în BIOS-ul placii de baza: adaptoare video, unitati CD-ROM, hard discuri SCSI, porturi USB.
Pentru rezolvarea acestei situatii a fost mai simplu ca noile drivere sa fie copiate pe hard disc si sa fie încarcate odata cu sistemul, decât sa se construiasca BIOS-uri noi pe placile de baza. Aceste drivere nu trebuie sa fie active în timpul încarcarii sistemului.
Afisarea pe monitor este însa necesara înainte de încarcarea sistemului de operare.
Având în vedere acest lucru, s-a ajuns la ideea ca programul din ROM-ul placii de baza sa poata scana sloturile pentru depistarea modulelor adaptoare pe care exista ROM. În momentul identificarii unui astfel de modul, programul din acel ROM este executat, înainte de încarcarea sistemului de operare. În acest fel, ROM-ul placii de baza nu mai trebuie modificat.
În afara de adaptorul video, alte module adaptoare care contin ROM sunt adaptoarele SCSI, placile de retea (pentru terminale fara hard disc) sau module adaptoare IDE. 
   BIOS-ul placii de baza are în principiu urmatoarele 4 functii principale:
1.POST (Power-On Self Test) Programul POST testeaza procesorul memoria, cipset-ul, adaptorul video, unitatile de disc, tastatura.

În principiu, programul POST realizeaza urmatoarele actiuni:
-determina daca exista vreun circuit BIOS pe placa video; daca exista, executa programul respectiv, având ca efect initializarea placii video, încât aceasta poate fi folosita pentru comanda monitorului în vederea afisarii; ca prim mesaj, pe monitor apare o notita referitoare la drepturile de autor, (contine informatii despre BIOS: producator, an, serie, etc), numita si ecranul Startup;
-determina daca alte dispozitive au BIOS propriu, de exemplu hard discul;
-verifica memoria principala, pentru a afla marimea ei si daca functioneaza corect;
-verifica si celelalte dispozitivele standard (tastatura, mouse, porturi) ale PC-ului, pentru a vedea daca exista si functioneaza normal; daca BIOS-ul accepta standardul Plug and Play, detecteaza si configureaza dispozitivele Plug and Play.
-ofera utilizatorului posibilitatea de a modifica parametrii pentru dispozitivele standard care exista în PC, prin intrarea în programul CMOS Setup (în acest scop trebuie apasata o tasta, de exemplu Delete sau F2, în functie de versiunea BIOS-ului); acesti parametri (date) sunt înscrisi într-o zona de memorie numita RAM CMOS, cu o capacitate de 64 octeti; aceasta memorie contine un circuit integrat de tip CMOS alimentat de la o baterie, pentru a memora informatiile când calculatorul e deconectat de la tensiunea de alimentare; tot acest circuit contine ceasul care masoara data si ora;
-construieste câteva tabele de date care pastreaza o evidenta clara a numarului de porturi seriale si paralele, a unitatilor de stocare magnetica si a celorlalte dispozitive standard din PC;
În final, cauta sistemul de operare si îl încarca în memoria principala, dupa care acesta preia controlul asupra calculatorului.

2.CMOS setup. Acest program permite configurarea parametrilor placii de baza si ai cipset-ului, a datei, orei, parolelor, unitatilor de disc, precum si succesiunea unitatilor de încarcare.

3.Bootstrap loader. Este o rutina care cauta pe unitatile de disc din sistem un sector principal valid de încarcare. Daca este gasit, programul pe care îl contine este executat. Apoi, programul din sectorul principal de încarcare continua procesul de încarcare cu sectorul de încarcare al sistemului de operare.
4.BIOS. Contine colectia de drivere utilizate ca o interfata între sistemul de operare si hardware-ul sistemului, la încarcare si în timpul functionarii. Când se ruleaza în modul DOS sau Windows în Safe Mod (un mod de lucru în care se încarca doar driverele de baza), se ruleaza numai aceste drivere pentru ca de pe disc nu se încarca nici unul.

Pe tot parcursul rularii programului BIOS, pot fi afisate mesaje corespunzatoare când sunt detectate erori, în unele cazuri programul putându-se opri din rulare. Daca erorile se refera la placa video, nu pot fi afisate mesaje de eroare, folosindu-se semnalizarea sonora.

    Responsabilitati ale unui sistem de operare:
a) Interfata cu utilizatorul. Exista doua componente ale acestei interfete: comenzile si apelurile sistem. Comenzile sunt introduse direct de utilizatori si sunt prelucrate de
interpretorul de comenzi. Apelurile sistem sunt folosite indirect de utilizatori, se declanseaza în timpul executiei programelor.
Din acest punct de vedere exista sisteme de operare cu interfata grafica sau cu interfata prin linie de comanda. Primele au ca elemente de baza ferestrele, simbolurile grafice (pictograme sau iconite), sau meniurile. Pentru selectarea diferitelor variante se foloseste mouse-ul, combinatii de taste sau tastele sageti. SO cu interfata prin linia de comanda folosesc exclusiv tastele pentru introducerea comenzilor.
b) Gestionarea fisierelor. Fisierele reprezinta modalitatea în care se pastreaza pe termen lung informatia în sistemele de calcul. Uzual acestea sunt memorate pe discuri magnetice sau optice. Gestionarea fisierelor trateaza aspecte legate de: crearea si stergerea fisierelor, controlul accesului la fisiere, citirea si scrierea din/în fisiere, organizarea colectiei de fisiere.
c) Gestionarea perifericelor. Sistemul de operare, nu utilizatorul, este cel care controleaza direct perifericele (imprimanta, tastatura, mouse-ul, monitorul), deoarece utilizatorul nu poate cunoaste toate detaliile referitoare la acestea.
d) Gestionarea memoriei. O prima cerinta este gestionarea memoriei principale (RAM), în care este încarcat însusi SO, dar si programele utilizator. Daca mai multe programe utilizator se afla simultan în memorie, SO trebuie sa rezolve problemele de împartire a memoriei disponibile între programe. În plus, aceasta responsabilitate a SO are în grija si gestionarea memoriei secundare (hard disc), nu atât în ce priveste fisierele, ci referitor la procedeul de memorie virtuala, folosit pentru a extinde memoria principala.
e) Gestionarea proceselor. Un proces reprezinta un program în executie sub controlul SO. Majoritatea SO prevad posibilitatea existentei simultane a mai multor procese. Rezulta necesitatea de a controla modul în care ele fac uz de procesor, încât toate sa progreseze în mod echitabil. Procesele interactioneaza si în vederea utilizarii altor resurse decât procesorul (periferice, memorie).


f) Tratarea erorilor. SO trebuie sa fie pregatit pentru a reactiona la o mare diversitate de erori, care provin atât din hardware cât si din software. SO trebuie sa detecteze erorile, si, în masura posibilitatilor, sa permita continuarea lucrului. Unele erori sunt transparente utilizatorului, iar la altele acesta trebuie sa intervina. Legat de tratarea erorilor sunt conceptele de siguranta în functionare si de protectie a informatiilor dintr-un calculator.
g) Gestionarea sistemului. În aceasta categorie intra instalarea sistemului de operare însusi, ajustarea caracteristicilor sale la un anumit sistem de calcul, pornirea si oprirea functionarii calculatorului.

    Clasificare a sistemelor de operare
   a) Sisteme de operare monoutilizator (single user) si monoproces (single task).Un singur utilizator poate efectua un program la un moment dat. Practic, aceste sisteme de operare sunt de domeniul trecutului.
b) Sisteme de operare monoutilizator si multiproces (multitasking)
Exemple tipice: calculatoare cu Windows sau Macintosh. În acelasi timp sunt în operare mai multe programe. Ex: se editeaza un fisier Word, se descarca un fisier de pe Internet, se tipareste un document la imprimanta, toate în acelasi timp.
c) Sisteme multiutilizator (multiuser)
Un astfel de sistem de operare permite mai multor utilizatori sa foloseasca simultan resursele unui calculator. SO trebuie sa vegheze ca cerintele diferitilor utilizatori sa fie echilibrate, fiecare dintre programele pe care ei le utilizeaza sa aibe suficiente resurse. Unix este exemplu tipic de sistem de operare multiutilizator, la fel ca si Windows NT sau Windows 2000.

     Cea mai importanta parte a unui sistem de operare este nucleul (kernel).
Nucleul este o colectie de functii („apeluri de sistem”) care pot fi executate de programele utilizatorilor si care îndeplinesc functiuni utile. Nucleul unui sistem de operare are privilegii în raport cu programele scrise de utilizatorii obisnuiti. Astfel, anumite operatii sunt permise numai nucleului, în timp ce programele utilizatorilor nu le pot efectua, ci doar beneficiaza de ceea ce face nucleul. De pilda utilizatorii nu pot accesa discul în nici un fel; ei au la dispozitie însa un set de functii ale nucleului care fac tot ceea ce are nevoie utilizatorul: creaza si sterg fisiere, permit scrierea datelor si citirea lor în fisiere, precum si accesul controlat la aceste resurse.

Instructiunile întelese de controlere sunt de nivel extrem de scazut. De exemplu, pentru a scrie un sir de octeti pe disc, trebuie trimis controlerului de disc un program care specifica locul precis pe disc (partitie, cilindru, cap, sector), codul operatiei (scriere), adresa în memorie unde se afla octetii, numarul lor. Dupa terminare trebuie aflat daca totul a mers cum trebuie: pozitia pe disc la care s-a ajuns (daca s-a ajuns în alt loc decît se astepta nu este bine), daca datele s-au scris, daca nu de ce nu (eroare tranzitorie, disc protejat,); daca nu a mers bine trebuie încercat (daca are sens) de mai multe ori, sau trebuie initializat controlerul, sau trebuie trimis capul hard-disc-ului la începutul discului (recalibrare).

Metoda universal folosita actualmente, prin care controlerul atrage atentia procesorului ca s-a petrecut ceva (de exemplu s-a terminat transferul, sau s-a produs o eroare) este întreruperea (a se revedea cap. 3). În cazul exemplului de mai sus, dupa ce a programat controlerul de hard-disc, procesorul face altceva. Cînd controlerul a terminat operatia (indiferent de rezultat), genereaza o întrerupere pentru a atrage atentia asupra sa. În consecinta, procesorul se va ocupa de controler.

Motivatia pentru care accesul utilizatorului este interzis la disc este în principal legata de integritatea discului: daca programe diferite ar vrea sa foloseasca fiecare pentru sine discul într-un alt fel, ar putea sa interfereze între ele. Nucleul ofera un acces limitat la disc. De exemplu, datele scrise în fisiere diferite nu au nici o legatura unele cu altele, pentru ca modificarea fiecaruia dintre fisiere este supervizata atent de nucleu.
Functiile nucleului sunt comune tuturor programelor care se executa pe acel calculator, fie ca programele se executa unul dupa altul sau simultan. De fapt una din misiunile esentiale ale nucleului este lansarea programelor în executie (se numesc procese) si controlarea executiei lor. El trebuie sa gaseasca pentru noul proces un loc în memorie, sa citeasca întregul fisier, si apoi sa sara la prima instructiune citita
Toate nucleele moderne suporta executia simultana a mai multor procese (ceea ce se numeste multitasking sau multiprogramare). Multiprogramarea poate fi reala, în cazul în care calculatorul are mai multe procesoare, sau simulata prin ceea ce se numeste „time-sharing” (punerea în comun a timpului): oprirea unor programe din executie temporar pentru a executa altele. Ratiunea principala pentru time-sharing este una economica: nu toate partile unui calculator functioneaza cu aceeasi viteza, deci daca doua dintre ele comunica, cea mai rapida trebuie sa astepte dupa cea mai lenta (discul de pilda este de cam un milion de ori mai lent decît procesorul).

Procesoarele au o facilitate care faciliteaza activitatea nucleului: contin niveluri  de securitate numite inele:

Inelul interior (0) are cele mai multe drepturi, iar cel exterior (3) cele mai putine.
Procesele care ruleaza în Ring 0 au acces la toate instructiunile procesorului si la memorie.
Aici opereaza nucleul. Driverele de dispozitive ruleaza în Ring 1 si Ring 2. Procesele care ruleaza în Ring 3, corespunzatoare programelor aplicatie nu pot accesa hardware-ul decât prin
intermediul lui Ring 0. Faptul ca driverele ruleaza în inele cu drepturi mari este principala cauza a blocarilor sistemului de operare. O scoatere a lor pe Ring 3 ar face sistemul mai stabil, dar mai lent. Aceasta idee sta la baza cercetarilor care se fac în aceasta perioada în laboratoarele Microsoft Research pentru a dezvolta un nou sistem de operare, numit Singularity.O varianta de test poate fi descarcata de la adresa:
www.codeplex.com/singularity.

     Calculatoarele de tip PC folosesc sisteme de operare Windows. Cele de tip Macintosh folosesc sistemul OS X. Calculatoarele de tip server ale multor companii sunt dotate cu sisteme de operare UNIX.
  Primul calculator IBM PC (1981) era dotat cu un sistem de operare MS-DOS. Acesta continea un interpretor de linie de comanda (Shell), cu multe caracteristici împrumutate de la Unix, era monoutilizator si rula pe 16 biti.
Urmatoarele tipuri de PC-uri au fost înzestrate cu variante superioare de DOS. Apoi, inspirati de succesul lui Macintosh, producatorii au decis sa doteze DOS-ul cu o interfata grafica numita Windows, în 1985. Primele 3 variante, pâna la Windows 3.11 nu erau sisteme
de operare reale, ci doar interfete grafice pentru utilizator, care rulau peste MS-DOS, care detinea controlul asupra calculatorului. Toate programele rulau în acelasi spatiu de memorie si o eroare aparuta în oricare dintre ele putea bloca întregul sistem.

Windows 95, aparut în 1995 nu a eliminat MS-DOS, introducând versiunea 7.0 a acestuia. Cele doua contineau împreuna majoritatea caracteristicilor unui sistem de operare
complet (memorie virtuala, gestiunea proceselor). Era folosit vechiul sistem de fisiere de la DOS (FAT-Fat Allocation Table 16), singura îmbunatatire majora fiind numele lungi de fisiere (254 de caractere) în locul variantei de 8 caractere permisa de DOS.
Varianta Windows 98 continea (înca) o versiune de DOS (7.1), dar a introdus un alt standard de organizare a informatiei pe discuri, FAT 32, care permitea gestionarea unor hard discuri de capacitati mai mari. Avea în plus o interfata cu utilizatorul îmbunatatita care îngloba facilitati pentru Internet si multimedia.


Ultima varianta, îmbunatatita, a lui Windows 98 a fost Windows ME (Milenium Edition). Acesta a prezentat o gama larga de functii pentru multimedia si imagini. 
Aceste trei tipuri de Windows (95, 98, Me) nu mai aveau nevoie de DOS, dar îl foloseau pentru unele operatii sau programe mai vechi. Trucurile de gestionare necesare pentru rularea aplicatiilor DOS, a vechilor aplicatii Windows pe 16 de biti, precum si a celor noi pe 32 de biti pe aceeasi platforma hardware duceau la frecvente reîncarcari si blocari ale sistemului.

Între timp, Microsoft lucra la un alt produs: Windows NT (New Technology). Acesta se dorea un înlocuitor pentru celelalte versiuni de Windows, dar aparitia sa a întârziat mult (prima versiune, NT 3.1 a aparut în 1993, iar a doua NT 4.0 în 1996), fiiind apoi dirijat catre utilizatorii profesionali. Acesta era un sistem de operare complet nou, pe 32 de biti, care nu folosea DOS ca fundatie. Folosea un sistem de fisiere de asemenea complet nou, NTFS (New Technology File System). A avut doua variante: server si statie de lucru (workstation). Versiunea server este conceputa pentru calculatoare care lucreaza ca servere într-o retea locala. La un astfel de server pot fi conectati mai multi utilizatori care pot rula programe, pot accesa fisiere sau pot tipari la imprimanta. A avut ca puncte forte stabilitatea si securitatea. Accepta însa un hardware multimedia mai redus decât Win 98 si nu avea suport pentru Plug
and Play.


Windows 2000, lansat la începutul anului 2000, a fost un continuator al lui NT în ce priveste securitatea si stabilitatea, dar a luat multe caracteristici de la Windows 98 (Plug and Play, Multimedia). Continea suport pentru porturile si dispozitivele USB si IEEE 1394. A introdus o versiune a sistemului de NTFS avansata, care accepta comprimarea si criptarea fisierelor, si de asemenea accepta sistemul FAT 32. Windows XP (eXPerience) este o varianta de Windows complet noua în raport cu celelalte. Poate fi descris ca o combinatie între caracteristicile de securitate, stabilitate si lucru în retea din Windows 2000 si caracteristicile multimedia si de tratare a erorilor din Windows Me. Are o interfata grafica noua si o varianta îmbunatatita de Internet Explorer. Contine suport pentru scrierea CD si DVD. Contine de asemenea noi faciltati pentru reactualizarea (UpDate) driverelor de dispozitiv prin Internet. (Un driver de dispozitiv este un program care permite sistemului de operare sa comunice cu un anumit dispozitiv hardware: imprimanta, mouse, tastatura).



Windows XP contine circa 40 milioane linii de program. Comparativ, Win2000 contine 29 milioane de linii iar Win 98 contine 13 milioane de linii.
Alte facilitati ale Windows XP:


-contine drivere pentru sute de dispozitive hardware; daca nu poate localiza driverul corespunzator pentru un anumit dispozitiv hardware, verifica automat situl Web Microsoft Windows Update;
-este mai stabil decât toate celelate versiuni de Windows; în acest sens, proiectarea interna protejeaza nucleul sistemului; acesta nu are niciodata o interfata directa cu aplicatiile sau cu componentele hardware, care ar putea bloca sau deteriora sistemul; aplicatiile si componenetele hardware fac cereri catre subsisteme care apoi solicita atentia nucleului.
Cele mai recente sisteme de operare de tip Windows sunt Windows Vista, aparut în 2007 si, respectiv, Windows 7, lansat recent, în octombrie 2009.


Nucleul Windows XP ca si cel din Windows 2000 îsi au radacinile în Unix. Unix este un sistem de operare multitasking foarte popular, dezvoltat de Bell Labs la începutul anilor ’70. A fost conceput de programatori pentru programatori. De fapt, limbajul C a fost dezvoltat doar pentru scrierea sistemului de operare Unix.

Unix a fost sistemul de operare predominant pentru statiile de lucru conectate la servere, în special datorita posibilitatilor de lucru multiutilizator si performantelor solide.
Nucleul Unix a fost initial suficient de mic pentru a putea fi cunoscut de o singura persoana. Facilitatile de comunicare în retea si mai apoi facilitatile pentru interfata grafica l-au marit considerabil dar totusi a ramas suficient de mic astfel ca acest lucru îl face foarte potrivit pentru servere de retea.
Ca si varianta de Unix se poate mentiona FreeBSD (Berkley Software Distribution), bazat pe versiunea Berkeley 4.4. De-a lungul anilor au aparut mai multe versiuni asemanatoare cu Unix. Neavând licente, aceste versiuni nu au putut fi numite Unix ci sisteme de operare de tip Unix (Unix like). În 1984 a fost creata o singura specificatie Unix, în speranta de a crea o piata mai coerenta.

Varianta de Unix cu cost redus, numita Linux, a revitalizat Unix-ul pe toate
platformele. Acesta a fost introdus de un finlandez, Linus Torvalds, în 1991. Evolutia sa este spectaculoasa, fiind considerat în prezent un rival pentru sistemele de tip Windows. Are multe
dintre caracteristicile din Windows NT/2000/XP cum ar fi multitasking real, memorie virtuala, conectare la retea prin protocolul TCP-IP. Linux este un sistem deschis, care se dezvolta prin contributia voluntara a unui numar tot mai mare de programatori, care promoveaza ideea de software gratuit (free software-open source). Pe lânga varianta de fisier executabil care permite instalarea, exista disponibil si codul sursa (la nivel de linie de program) care poate fi înteles, modificat si facut apoi disponibil pentru dezvoltari ulterioare.

Un dezavantaj al sistemelor Linux o reprezinta faptul ca nu exista aplicatii similare celor din Windows care sa ruleze sub Linux. Cu oarecare întârziere, au aparut totusi aplicatii de baza pentru Linux: WordPerfect Office 2000 for Linux, StarOffice 5.2, OpenOffice.org sunt produse similare cu Microsoft Office. De asemenea, o alta aplicatie este Corel DRAW for Linux. Un alt dezavantaj al Linux-ului comparativ cu Windows-ul îl reprezinta numarul mult mai mic de drivere cu care este înzestrat.
Scurta comparatie Windows XP-Linux
-Windows XP necesita un calculator relativ recent, cu cel putin 128 MB de RAM, în timp ce Linux poate rula cu succes chiar si pe sisteme 486.
-Windows XP este disponibil în numai doua versiuni (Home si Professional), iar Linux este disponibil în mult mai multe variante
-Windows XP este un sistem de operare bazat pe o interfata grafica cu utilizatorul (GUI), în timp ce Linux se bazeaza în principal pe linia de comanda (desi are doua interfete mai cunoscute, KDE si Gnome).
-Windows-ul contine mai multe divere decât orice varianta Linux.
În ultimul timp au aparut numeroase variante de Linux, numite si distributii Linux: Red Hat, Fedora, Linux Mint Gloria, Ubuntu. Pentru instalare pe hard disc, acestea au nevoie de cel putin 2 partitii una pentru sistemul de operare si una pentru memoria virtuala (partitia swap). Exista mai multe posibilitati de a rula un astfel de sistem de operare:
1. Instalare sub Windows (ca o aplicatie)
2. Instalare duala alaturi de Windows (doua sisteme de operare). În acest caz este nevoie de cel putin 2 partitii (una pentru sistemul de operare) si una pentru memoria virtuala (partitia swap).
3. „Live” CD sau Live memory stick USB. Permit rularea sistemului de operare direct de pe suportul amovibil (CD sau memoria USB) fara instalare instalare pe hard disc. În acest fel, sistemul de operare deja instalat nu este afectat.