Definiție: Sistemul de operare este o aplicație software care joacă rolul de “Master Control Program” și care face legătura între hardware și celelalte aplicații software.

Principalele atribuțiuni ale unui OS sunt:

  • hardware management – gestionarea diferitelor device-uri hardware;
  • process management – executarea diferitelor aplicații software;
  • object management – gestionarea diferitelor obiecte software (fișiere, aplicații, mașini virtuale, hardware virtualizat etc);
  • user interaction management;
  • security management;
  • communication  management;
  • instrumentation and orchestration;
  • application development;
  • audit.

Hardware management

Acesta este rolul primordial al unui OS. Chiar prin definiție rolul său este să facă legătura între hardware și celelalte aplicații software.

Deși putem imagina multe device-uri hardware pe care ar trebui să le cunoască un OS, în fapt, de-a lungul timpului obiectele hardware s-au separat în cîteva categorii bine definite, 10-12 toate. Vom găsi, în ordinea importanței hardware: procesoare, motherboards, RAMi, video, storage, networking, HIDs (human interface devices), audio. Celelalte cad în categorii foarte specializate, rămînînd pentru OS doar sarcina găsirii unor mijloace (aka porturi) de conectare la aplicații. Și porturile hardware au avut aceași evoluție și s-au standardizat, cele mai folosite azi sunt porturile seriale și porturile USB (deși USB este un port hardware și are caracter serial, nu este un port serial, fiind folosit doar pentru transport).

Cel mai mare succes în managementul hardware-ului l-a avut Windows-ul pentru că a introdus un layer de abstractizare (HAL), ceea ce a permis dezvoltarea unitară a drivere-lor hardware. (definiție: driver-ul este o aplicație software specifică unui hardware ce permite sistemului de operare accesul la funcțiile device-ului.) Astfel, aplicațiile au avut o interfață unitară pentru accesul la o întreagă clasă de device-uri fără a-i păsa ce producător a construit-o. Și invers, producătorii de hardware au avut un framework unitar pentru a-și dezvolta driverele, fapt ce i-a ajutat să creeze niște aplicații robuste (fără bug-uri).

Process management

Tot definiția ne îndrumă cătrea al doilea mare rol al unui OS. În process management sistemul încarcă în memorie o aplicație software și execută instrucțiunile sale în limbaj mașină (aka cod mașină). Procesele trebuie să fie izolate, cu acces direct doar la spațiul de memorie alocat. Accesul la resurse nu se face direct, ci prin intermediul serviciilor de sistem (sau funcțiilor de sistem, dar un serviciu, spre deosebire de o funcție, are posibilități de autentificare, de prioritizare și alte atribute moderne). Cea mai mare provocare a acestui proces este de a pune la dispoziția aplicațiilor mecanisme să-și păstreze ACIDitatea (atomice, consistente, izolate și durabile).

Caraterul ACID este dat de:

  • Atomicitate – orice operațiune fie se termină cu succes, fie se termină cu eroare nelăsînd părți modificate;
  • Consitență – orice operațiune trebuie să fie validă, ducînd aplicația dintr-o stare validă într-o altă stare validă (validă din punct de vedere al OS și nu al aplicației pentru că OSul nu poate ști ce e aia stare validă pentru ea);
  • Izolare – OSul trebuie să asigure spațiu de memorie izolat fiecărei aplicații, nepermițînd unui alt software să modifice direct în spațiul dedicat;
  • Durabilitate – odată ce o operație s-a terminat toate efectele sale rămîn, orice altă operațiune ulterioară nemaiavînd acces la datele inițiale.

Object management

Dacă primele două roluri au fost evidente și cam toate sistemele de pînă acum s-au achitat onorabil în implementarea corectă a lor, partea de Object Management a fost PROST gîndită în toate OSurile cunoscute. Daca în vremurile cu hardware scump se putea trece cu vederea lipsa de viziune asupra acestui rol primordial al OSului, azi trebuie să-l avem în centrul atenției pentru că obiectele care există și interacționează într-un OS sunt suficient de complexe și diferite așa încît comunicarea dintre ele să nea de peste cap (să introducă o complexitate nejustificată) multe aplicații propuse.

Abordarea inițială a fost everything is a file și a funcționat o vreme. Prin simplitatea ei a permis orientarea țintelor optimizării software către primele două roluri, ceea ce e de înțeles pentru că hardware-ul era scump și nu așa de rapid. UNIXul a rulat inițial pe hardware de sub 1MHz !!?! Critica principala a acestui model o aduc virușii. Nediferențierea între o aplicație și un fișier de date a făcut posibil ca aplicații malițioase să se camufleze sub formă de date (documente, poze, etc). De asemenea, dacă într-un sistem modern un obiect poate fi izolat doar la acțiuni specifice, în vechime everything is file a permis accesul tuturor aplicațiilor la tot sistemul de fișiere (fie ele de bună credință sau malware). Chiar dacă teoretic sub drepturi de acces, o simplă operațiune ce pretindea drepturi full-admin putea duce la infectarea sau accesul la date confidențiale a unei aplicații răuvoitoare latentă în sistem.

Sistemele moderne trebuie să cunoască natura obiectelor (aplicații, date chioare, hardware virtualizat, video, formulare), să le identifice, să le izoleze și să le permită doar acțiuni specifice. În ziua de azi autentificarea se face ușor prin certificate SSL, prin același mecanism de identificare existent și testat pe internet. Se practică și identificarea sursei de instalare, Apple App Store, Windows Store, GPlay obligînd dezvoltatorii să-și publice aplicațiile în cadrul unor servicii publice unice. Mecanism prin care marii producători pretind că verifică aplicațiile, fapt imposibil dat fiind numărul mare de programe și producători, dar care nu face decît să le dea un control foarte mare asupra distribuției (care azi înseamnă publicitate pe bani mulți).

Tot aici se va asigura comunicarea (standardizarea comunicării) între obiecte. S-au dezvoltat două mari protocoale DCOM și CORBA (după două mari categorii de OSuri, Win și *NIX). Practic un obiect își înregistrează serviciile publice într-un registru gestionat de sistem de unde clienții află de ele și încearcă să le consume. Celebrul Copy/Paste, indispensabil azi, este cel mai bun exemplu de comunicare asigurat de rolul Object Management și care nu era posibil în era EisF.