Sisteme de Operare - notiuni generale
Last updated
Last updated
Principalele funcții ale unui sistem de operare includ:
Gestionarea Proceselor: Controlul și coordonarea executării programelor, inclusiv alocarea resurselor necesare.
Gestionarea Memoriei: Alocarea și eliberarea spațiului de memorie pentru programe și date.
Gestionarea Dispozitivelor: Controlul dispozitivelor periferice pentru o comunicare eficientă între hardware și software.
Gestionarea Fișierelor: Organizarea, stocarea, recuperarea și gestionarea accesului la date și fișiere.
Securitatea și Accesul Multiplu: Protejarea datelor și resurselor sistemului într-un context multi-utilizator.
Sistemele de operare oferă diferite moduri de interacțiune cu utilizatorii și aplicațiile, principalele două tipuri fiind:
Interfața API este un set de reguli și definiții care permit programelor de calculator să solicite servicii de la sistemul de operare.
Funcționare:
Programatorul apelează o funcție API specifică, oferind parametrii necesari.
Sistemul de operare execută solicitarea și returnează un rezultat programului.
Beneficii:
Permite programatorilor să acceseze funcțiile avansate ale sistemului de operare.
Simplifică dezvoltarea software-ului, oferind o interfață standard.
Facilitează portabilitatea programelor între diferite sisteme de operare.
Tipuri de API-uri:
API-uri specifice sistemului de operare (ex: Windows API, POSIX API).
API-uri specifice aplicațiilor (ex: API-ul Facebook, API-ul Google Maps).
Exemple de solicitări API:
Deschiderea unui fișier
Crearea unui proces
Trimiterea unui mesaj către o altă aplicație
Accesarea rețelei
Importanța API-urilor:
API-urile sunt elemente fundamentale ale programării moderne. Ele permit programatorilor să se concentreze pe logica specifică a aplicației lor, fără a se preocupa de detaliile implementării specifice sistemului de operare.
Funcționalități principale:
Interpretarea comenzilor: Shell-ul interpretează comenzile introduse de utilizator, le transformă în instrucțiuni inteligibile pentru sistemul de operare și le execută.
Acces la resurse: Oferă acces la fișiere, directoare, programe și alte resurse ale sistemului.
Controlul proceselor: Permite lansarea, oprirea și gestionarea proceselor (programe în execuție).
Comunicarea cu sistemul: Oferă diverse utilitare pentru a configura sistemul, a verifica starea sa și a primi informații.
Automatizarea sarcinilor: Permite scrierea de scripturi shell, care sunt fișiere text ce conțin comenzi ce pot fi executate automat.
Tipuri de shell-uri:
Shell-uri Bourne: Bourne shell (sh) este un shell clasic, disponibil pe majoritatea sistemelor Unix.
Shell-uri C: C shell (csh) oferă o sintaxă mai cizelată și funcții avansate.
Shell-uri Korn: Korn shell (ksh) este un shell puternic, cu caracteristici avansate de programare.
Bash: Bourne Again Shell (bash) este un shell modern, popular și versatil, cu o sintaxă bogată și multe funcții integrate.
Exemple de interacțiuni cu shell-ul:
ls: Listarea conținutului unui director.
cd: Schimbarea directorului curent.
mkdir: Crearea unui director.
cp: Copierea fișierelor.
mv: Mutarea sau redenumirea fișierelor.
rm: Ștergerea fișierelor.
echo: Afișarea mesajelor pe ecran.
grep: Căutarea textului în fișiere.
Avantajele utilizării shell-ului:
Flexibilitate: Permite executarea rapidă a diverselor comenzi și scripturi.
Eficiență: Oferă un mod direct de a interacționa cu sistemul, fără interfețe grafice.
Automatizare: Permite automatizarea sarcinilor repetitive prin scripturi.
Control detaliat: Oferă acces la funcții avansate ale sistemului de operare.
Dezavantajele utilizării shell-ului:
Curba de învățare: Poate fi dificil de utilizat pentru utilizatorii inexperimentați.
Lipsa de interactivitate: Interfața text poate fi mai puțin intuitivă decât interfețele grafice.
Erori: Introducerea greșită a comenzilor poate duce la erori sau probleme.
Concluzie:
Shell-ul este un instrument puternic pentru interacțiunea cu sistemele de operare, oferind flexibilitate, eficiență și control detaliat. Deși poate fi dificil de utilizat pentru incepatori, shell-ul poate fi un instrument esențial pentru administratorii de sistem și utilizatorii avansați.
Kernel-ul este componenta centrală a majorității sistemelor de operare.
Funcții principale:
Gestionarea memoriei: Kernel-ul alocă memorie aplicațiilor în execuție, asigurându-se că datele nu se suprapun și că memoria este eliberată atunci când nu mai este necesară.
Gestionarea proceselor: Se ocupă de crearea, programarea, prioritizarea și terminarea proceselor (programe aflate în execuție). De asemenea, facilitează comunicarea și sincronizarea între procese.
Gestionarea dispozitivelor: Controlează accesul la hardware prin intermediul unor programe specializate numite drivere de dispozitiv, permițând aplicațiilor să interacționeze cu hardware-ul într-o manieră abstractă.
Gestionarea fișierelor: Organizează stocarea și preluarea datelor într-un sistem de fișiere.
Gestionarea rețelei: Permite comunicațiile între sistemul de calcul și alte dispozitive dintr-o rețea.
Securitate: Implementează mecanisme de protecție pentru a controla accesul la resurse și a proteja sistemul împotriva programelor rău intenționate.
Arhitectura:
Kernel-ul operează într-un spațiu privilegiat al sistemului, numit "kernel space". Are acces direct la hardware și la zonele sensibile de memorie.
Aplicațiile de utilizator sunt rulate într-un spațiu separat, "user space", iar comunicarea cu kernel-ul pentru a solicita servicii se face prin "system calls".
Tipuri de kernel-uri:
Monolithic: Încorporează o mare parte din funcționalitățile sistemului de operare în propriul cod, rezultând într-o amprentă mai mare, dar potențial mai rapidă. (Ex: Linux)
Microkernel: Oferă funcții de bază ale kernel-ului (gestionarea proceselor, a memoriei) și se bazează pe alte servicii ale sistemului de operare care rulează în spațiul utilizatorului, având o amprentă mai mică și potențial mai stabilă. (Ex: Minix)
Hybrid Se situează între monolitic și microkernel, adoptând elemente din ambele arhitecturi. (Ex: Windows, macOS)
Concept:
Într-un sistem timesharing, CPU-ul este alocat fiecărui utilizator sau proces pentru o perioadă scurtă de timp, numită "quantum".
Când un quantum se termină, CPU-ul este realocat altui utilizator sau proces care așteaptă.
Acest proces se repetă rapid, creând iluzia că toți utilizatorii sau procesele au acces simultan la CPU.
Beneficii:
Permite mai multor utilizatori să utilizeze un singur sistem de calculator simultan.
Crește eficiența utilizării CPU-ului, reducând timpul de inactivitate.
Îmbunătățește răspunsul sistemului pentru utilizatori, oferind o experiență mai interactivă.
Implementare:
Se utilizează un program special numit "scheduler" pentru a gestiona alocarea CPU-ului.
Schedulerul utilizează diverse algoritmi pentru a determina care utilizator sau proces primește accesul la CPU în continuare.
Algoritmii de scheduling pot lua în considerare factori precum prioritatea utilizatorului, tipul de proces, durata quantum etc.
Tipuri de timesharing:
Preemptive timesharing: Schedulerul poate întrerupe un proces care utilizează CPU-ul și îl poate relua ulterior.
Non-preemptive timesharing: Un proces își păstrează controlul asupra CPU-ului până când renunță voluntar la el.
Exemple de sisteme de operare care utilizează timesharing:
Unix
Linux
Windows
macOS
Considerații:
Timesharing poate introduce o ușoară latență (întârziere) în execuția proceselor.
Este important să se utilizeze algoritmi de scheduling eficienți pentru a optimiza utilizarea resurselor.
Concluzie:
Timesharing este o tehnică fundamentală în sistemele de operare moderne, permițând utilizarea eficientă a resurselor CPU și oferind o experiență interactivă pentru mai mulți utilizatori simultan.
Interfețe bazate pe atingere (Touch-based)
Utilizează ecrane tactile pentru a selecta elemente și a introduce comenzi.
Folosite frecvent pe dispozitive mobile (telefoane, tablete) și laptopuri cu ecrane tactile.
Avantajele includ intuitivitatea și viteza de navigare.
Interfețe activate vocal (Voice-enabled)
Permit controlul vocal al sistemului de operare și al aplicațiilor.
Folosesc tehnologii de recunoaștere vocală pentru a interpreta comenzile utilizatorului.
Exemple: Siri (iOS), Google Assistant (Android), Cortana (Windows).
Avantajele includ comoditatea și accesul hands-free.
Interfețe bazate pe citirea activității creierului (BCI)
Utilizează semnalele cerebrale pentru a controla dispozitivele și a interacționa cu sistemele de operare.
Tehnologie emergentă cu potențial revoluționar pentru persoanele cu dizabilități.
Exemplu: Neuralink de la Elon Musk.
Avantajele includ posibilitatea controlului direct al dispozitivelor prin gândire
Interfețe bazate pe
gesturi
Permit controlul prin gesturi ale mâinilor sau corpului.
Utilizate frecvent în jocuri și realitate virtuală.
Exemple: Kinect de la Microsoft, Leap Motion.
Avantajele includ imersiunea și interactivitatea sporită.
Interfețe bazate pe mișcarea ochilor
Permit controlul prin mișcarea ochilor.
Folosite de persoane cu dizabilități motorii severe.
Exemplu: Eye Gaze de la Tobii.
Avantajele includ accesibilitatea și ușurința de utilizare.
Interfața în Linie de Comandă (CLI)
Oferă o interfață bazată pe text, unde utilizatorii introduc comenzi prin tastatură pentru a executa operații specifice. Este versatila pentru utilizatori avansați și pentru automatizarea sarcinilor prin scripturi. Exemple de interpretoare de comenzi includ Bash pe Linux și macOS, și PowerShell sau Command Prompt pe Windows.
Interfața Grafică cu Utilizatorul (GUI)
Oferă o interfață vizuală, bazată pe ferestre, icoane / simboluri și meniuri, care permite utilizatorilor să interacționeze cu sistemul de operare prin dispozitive de intrare, cum ar fi mouse-ul și tastatura.