Nucleu (sistem de operare)
Nucleul (engleză kernel) unui sistem de operare este componenta fundamentală a acestui sistem. Nucleul controlează accesul la diferitele resurse ale calculatorului și permite celorlalte componente — hardware și software — să interopereze.
Nucleul oferă mecanisme de abstractizare a resurselor hardware (materiale), în special în ceea ce privește memoria, procesor, și transferurile de informație între programe și perifericele materiale.
Nucleul unui sistem de operare este el însuși un program, dar nu poate utiliza mecanismele de abstractizare pe care le oferă celorlalte programe utilizator. Diferite motive justifică această limitare. Printre alte cauze, gestiunea întreruperilor, a spațiului de adresă a memoriei virtuale. Rolul său central îi impune exigențe de performanță ridicate. Aceasta face din nucleu partea cea mai critică a unui sistem de operare și face ca și conceperea și implementarea sa să fie cât se poate de delicată. Un exemplu din comunitatea open-source este nucleul Linux.
Funcțiile unui nucleu
modificare- Gestiunea resurselor hardware - Nucleul alocă unui program memorie internă și dispozitivul periferic prin care sunt furnizate datele necesare prelucrării.
- Gestiunea operațiilor de intrare/ieșire la nivel hardware și software - La nivel hardware sunt asigurate operațiile de intrare/ieșire cu echipamentele periferice prin care se realizează citirea/scrierea datelor pe hard disk, acționându-se direct asupra dispozitivului periferic. Sunt asigurate operațiile de intrare/ieșire cu echipamentele periferice la nivel logic. Prin aceste operații se realizează organizarea, accesul, stocarea și regăsirea datelor pe suportul HDD.
- Gestiunea datelor (fișierelor) - Programele sistemului de operare asigură transferul de date cu echipamentele periferice și realizează o interfață între aplicații și sistemul de intrare/ieșire. Modulele de program care realizează transferul de date există o singură dată în sistem ca și componente ale sistemului de operare, și nu în fiecare program de aplicație care utilizează transferuri cu un anumit echipament periferic.
- Sesizarea evenimentelor deosebite care apar în timpul execuției și tratarea acestor evenimente - În timpul executării unor programe (de aplicație sau de sistem) pot să apară evenimente deosebite ca de exemplu scrierea pe un CD-ROM iar acesta nu este montat, scrierea la imprimantă iar aceasta nu este conectată sau nu a fost alimentată cu hârtie, executarea unei operații aritmetice iar rezultatul depășește capacitatea zonei de memorie alocată, etc. Evenimentele sunt sesizate de circuitele de control ale dispozitivelor periferice și transmise unor componente ale nucleului care tratează aceste evenimente. Pentru a rezolva apariția unor stări conflictuale între mai multe evenimente, acestea sunt grupate în clase cărora li se atribuie priorități.[1]
- Apeluri de sistem - Nucleul autorizează de asemenea solicitări ale programelor software prin apeluri de sistem. Aceste apeluri de sistem sunt realizate cu întreruperi software și realizează transferul controlului la nucleu. Protecția proceselor se realizează prin user mode și kernel mode. Un proces pe parcursul execuției își poate schimba modul de execuție. Când are nevoie de resurse trece în modul kernel, iar când termină, revine în modul user.[2]
Dacă un virus reușește să ruleze în modul kernel, acesta poate prelua controlul asupra computerului, adică citește fișierele, șterge informații sau monitorizează rețeaua. De exemplu, dacă un „rootkit” infectează nucleul, se folosește de autoritatea nucleului de a accesa orice resursă a calculatorului. Deoarece virusul rulează în cel mai înalt nivel de privilegii, face ca eliminarea lui să fie foarte dificilă.
Tipuri de nuclee
modificareExistă patru tipuri majore de nuclee:
Nucleu monolitic
modificareUn nucleu monolitic este o arhitectură de nucleu în care întregul nucleu rulează în spațiul nucleului și în mod administrator. Fiecare parte a nucleului poate schimba registrele hardware și accesa toată memoria. În nucleul monolitic toate driverele sunt compilate împreună pentru a forma un singur program.
Principalele dezavantaje ale nucleelor monolitice sunt dependențele dintre componentele sistemului, o eroare într-un driver de dispozitiv ar putea bloca întregul sistem.
Exemplu:
Micronucleu
modificareMicronucleul este un nucleu de dimensiuni mici, care asigură minimul de servicii ale sistemului de operare. Micronucleele au mult mai puține linii de cod decât sistemele monolitice și sunt folosite în special pentru implementare în sisteme de operare înglobate.
Nucleu hibrid
modificareUn nucleu hibrid sau modular este un tip de arhitectură a nucleului care combină caracteristicile micronucleului și ale celui monolitic.
Ideea din spatele unui nucleu hibrid este aceea de a avea o structură similară cu cea a unui micronucleu, dar de a pune în aplicare în maniera unui nucleu monolitic. Într-un nucleu hibrid, serviciile sistemului de operare sunt încă în spațiu de nucleu și nu în zona utilizatorului.
Avantajele nucleului modular:
- capacitatea de funcționare a driverelor în cadrul modulelor este mai rapidă. Nu este necesară repornirea calculatorului pentru testare.
- nucleul nu trebuie recompilat pentru a adăuga drivere sau subsisteme noi.
- integrare rapidă a tehnologiilor de tip „third party”.
Exemple:
- Windows NT,
- XNU (utilizat în Mac OS X)
- DragonFlyBSD
- BeOS, Darwin, ReactOS
Exonucleu
modificareÎntr-un exonucleu (exo = în afară) sistemul funcționează în spațiul utilizatorului și nu în spațiul nucleu. Studiul și dezvoltarea acestui tip de nucleu a început în 1995 la Massachusetts Institute of Technology (MIT), pentru ExOS și recent XOK. [3]. Un alt concept numit Nemesis a fost dezvoltat de universitățile din Cambridge și Glasgow, Cisco Systems și Institutul Suedez de Informatică.
Exonucleul se limitează la cât mai puține abstracțiuni posibil. În acest mod, nucleul este aproape complet eliminat, mutînd toate funcțiile acestuia în biblioteci (Library Operating System - LibOS) ca legate de procesele utilizatorilor similar cu cel al sistemelor de operare convenționale, dar mai flexibil. Aceasta permite programelor să acceseze direct blocurile de memorie, zonele de hard disk etc, toate operațiile se pot executa la întreaga viteză a microprocesorului, fără apeluri de sistem. Exonucleul are volumul de cod foarte mic, sub 5000 de linii. [4]
Referințe și note
modificare- ^ Curs de informatică și tehnologia informației - Cap.5 ebooks.unibuc.ro
- ^ Bazele sistemeleor de operare#Nucleu Arhivat în , la Wayback Machine. upm.ro
- ^ MIT Exokernel Operating System pdos.csail.mit.edu
- ^ M.I.T. Laboratory for Computer Science. Exokernel: An Operating System Architecture for Application-Level Resource Management. flint.cs.yale.edu