Universitatea Politehnica Bucuresti
Facultatea de Electronica, Telecomunicatii si Technologia Informatiei
Drivere fizice
Proiect pentru cursul Sisteme de Operare Avansate
Profesor Coordonator: prof. univ. dr. ing. Ştefan Stăncescu
Student: Grigore Mihai Daniel
IISC – anul I
Anul universitar 2016-2017
Cuprins
1. Definitie driver....................................................................................3
2. Drivere generice si specifice................................................................3
3. Functionalitate drivere........................................................................4
4. Avantajele driverelor...........................................................................5
5. Definitie Kernel...........................................................................6
6. Instalarea un driver pe sistemul de operare...................................6
7. Driverele si operatia de Input/Output............................................7
8. Driverele in procesul de boot-are.................................................9
9. Metode de a limita impactul driverelor cu erori............................10
10. Concluzii ................................................................................11
11. Bibliografie si Referinte poze.....................................................12
1 . Definitie driver
În sistemele de operare, driverul este un program software care are rolul de a
actiona ca o interfață între o componentă hardware și sistemul de operare.
Comenzile pentru componentele hard sunt trimise de la diferite programe cu
ajutorul sistemului de operare. Scopul driverului este acela de a transmite
comenzile de la sistemul de operare către componenta hardware. Daca driverul
este bine conceput, atunci performanta hardware creste. Un driver comunica
cu dispozitivul tinta prin un bus al calculatorului sau prin un subsistem de
comunicatii.
2. Drivere generice si specifice
O clasificare a driverelor in functie de producator este: drivere generice si
drivere specifice.
Primul tip de driver generic este driverul scris de compania producătoare de
chip-ul hardului. Aceste drivere sunt cele mai eficiente, pentru că programatorii
au acces direct la specificațiile tehnice ale hardware. Specificatiile de multe ori
nu sunt publice. Se pune accent pe stabilitate, performanță și pe
compatibilitate cu sistemul de operare. Aceste drivere se utilizeaza pentru
toate componentele pe care se află chip-ul, nu este relevanta compania care
construieste hardware-ul. Acesta este cazul chipurilor de la Nvidia.
Al doilea tip de drivere generice sunt creeate de compania care a lansat
sistemul de operare. Pentru acest produs se pune accent pe compatibilitate cu
sistemul de operare, pe fiabilitate. Este mai putin importanta performanța
componentei hard. Aceste drivere nu sunt atat de eficiente pentru că
programatorii nu au acces la specificatiile tehnice secrete ale componentei
hard. Driverele generice sunt lansate pentru a permite utilizarea tuturor
componentelor hard detectate de OS. Daca userul adaugă o componentă nouă,
sistemul de operare va căuta în libraria sa de drivere. Dacă găsește unul
potrivit, îl instalează, In caz contrar, cere utilizatorului să instaleze driverul de
pe un disc furnizat de producătorul componentei.
Driverele specifice sunt lansate de către companiile care asamblează hardware
pentru calculator. Ele pleaca ca concept de la driverele generice de tipul I.
Dezavantajul acestor drivere este că ele sunt lansate dupa driverele generice de
tipul I.De multe ori este posibil să fi apărut altă versiune actualizata a driverelor
facuta firma producătoare a chipului
3. Functionalitate drivere
Exista patru mari tipuri de drivere clasificate dupa functionalitate [5]:
BIOS
Este prin definitie cel mai simplu driver de calculator si este folosit pentru a fo
primul program care booteaza atunci cand aprindem un calculator. BIOS-ul este
stocat pe o memorie integrata in placa de baza si este folosit pentru a boot-a
hardware-ul conectat la PC, incluzant driverele hard, iesirea video, mouse-ul
sau tastatura.
Driverele Placii de baza
Driverele placii de baza sunt programe de mici dimensiuni care sunt citite de
sistemul de operare si sunt folosite pentru functii de baza in sistemul de
operare. Aceste drivere se adreseaza pentru porturile broadband, porturile
USB, I/O ports pentru mouse si tastatura. In functie de producatorul placii de
baza, aceste drivere se pot adresa si hardware-ului de video/audio. BIOS-ul nu
este acelasi lucru ca driverele placii de baza.
Driverele fizice (Hardware drivers)
Driverele fizice sunt programe care dau posibilitatea unor echipamente
hardware sa functioneze pe PC. Acestea ar fi placi video, audio, placi de retea,
aparate foto.
Drivere virtuale ( Virtual Device Drivers)
Aceste tipuri de drivere emuleaza hardware si il determina pe PC sa considere
ca foloseste hardware real, desi acesta este virtual. Un exemplu de driver ar fi
fisierele .iso fara existenta unui disc DVD/CD fizic.
4. Avantajele driverelor
Arhitectura celor mai multe calculatoare la nivelul limbaj de masina este
primitiv si este dificil de programat , mai ales pentru input/output. De
exemplu, pentru hard disk-urile de tip SATA, programarea acestuia la nivel
hardware este complexa. Driverul de disk propune o interfata de citire si scriere
cu disk-ul, care simplifica programarea discului SATA. Un sistem de operare
contine mai multe drivere.
Totusi, mai este necesar un nivel de abstractizare, iar acesta este fisierul.
Folosind aceasta abstractizare, programele pot sa creeze, scrie si citi fisiere fara
a intra in contact direct cu hardware-ul.
5. Definitie Kernel
Kernel-ul este un program de calculator care este principala componenta a
sistemului de operare, cu un control complet fata de tot ce e in sistem. Este
primul program care este incarcat. El este responsabil pentru restul procesului
de start-up si de cererile de input/output de la software, trasnformandu-le in
instructiuni pentru CPU. Kernel-ul se ocupa si de memorii sau periferice [1].
Fig 1. Kernel
6 nstalarea un driver pe sistemul de operare I
Sata a fost cel mai folosit tip de disc pe calculatoare. Acest tip de device este
ascuns in spatele unui controller. Sistemul de operare vede numai interfata cu
controller-ul, care este diferita de interfata cu device-ul.
Pentru ca fiecare tip de controller e diferit, este nevoie de tipuri diferite de
software. Software-ul care discuta cu controller-ul se numeste device driver.
Fiecare controller foloseste un driver, iar acesta functioneaza separat pentru
fiecare sistem de operare in parte. De exemplu, o imprimanta are cate un
driver pentru fiecare OS Windows sau Linux.
In cele mai multe cazuri, driverul este pus in sistemul de operare ca sa
functioneze in kernel mode. Totusi, unele drivere pot sa functioneze in afara
kernelului , iar sisteme de operare ca Linux sau Windows ofera suport acum
pentru acest lucru. Cu toate astea, cele mai multe drivere functioneaza in
modul kernel. Doar cateva sisteme, cum ar fi MINIX 3 ruleaza driverele in
spatiul de utilizator. Driverele in spatiul utilizator trebuie sa fie lasate sa
comunice cu dispozitivul intr-un mod controlabil, ceea ce este greu.
Exista trei modalitati ca un driver sa fie pus in kernel:
- Se integreze noul driver in kernel si apoi sa se restarteze sistemul. Multe
sisteme de operare UNIX vechi lucreaza asa.
- Se face o cerere pentru un driver si apoi se reseteaza sistemul. Dupa
bootare, sistemul de operare gaseste driverul de care are nevoie si il
incarca. Sistemul Windows functioneaza in acest fel.
- Se instaleze driver-ul fara a fi nevoie de o resetare a masinii. Aceasta
modalitate era rara in trecut, dar acum este foarte populara. Se foloseste
la instalarea driverelor USB.
7. Driverele si operatia de Input/Output [4]
Fiecare controller are un numar mic de registrii care sunt folositi pentru a
comunica. De exemplu, un controller de disk are registrii pentru a specifica
adresa discului, adresa memoriei, directia de scriere sau citire. Pentru a activa
controller-ul, driver-ul ia comanda de la sistemul de operare, apoi o
translateaza in valorile necesare pentru a o scrie in registrii dispozitivului.
Colectia tuturor registrilor dispozitivului formeaza spatiul portilor I/O.
Pe unele calculatoare, registrii device-ului sunt mapati in spatiul de adrese al
sistemului de operare ( adresele pe care le poate folosi) , astfel incat sa poata
sa citeasca si scrie la fel ca cuvinte din memorie. Pe aceste tipuri de
calculatoare, nu e nevoie de instructiuni speciale I/O si programele
utilizatorului pot fi tinute departe de hardware nedand acces acestora la
adresele de memorie. Pe alte calculatoare, registrele device-ului sunt puse intr-
un spatiu special I/O , cu fiecare registru avand cate o adresa de port. Pe aceste
masini sunt folosite instructiuni speciale de IN si OUT in modul kernel care dau
voie driver-elor sa citeasca si sa scrie registrii. Prima metoda elimina nevoia de
instructiuni speciale I/O dar foloseste spatiul de adrese. A doua metoda nu
foloseste spatiul de adrese, dar are nevoie de instructiuni speciale.
Inputurile si Outputurile pot fi de trei tipuri [2]:
- Kernel-ul ii transmite driverului un o sarcina de la un program de
utilizator. Apoi driver-ul incepe I/O si asteapta pana cand se termina
transferul. Atunci cand I/O s-a terminat, driver-ul pune data unde e
nevoie. Aceasta metoda se numeste „busy waiting” si are dezavantajul ca
tine CPU ocupat pentru mult timp.
- In a doua metoda, driver-ul deschide device-ul si ii cere sa ii dea o
intrerupere cand termina transferul. Astfel, driver-ul poate sa returneze
datele. Atunci cand controller-ul detecteaza sfarsitul transferului,
genereaza o intrerupere. In figura 2 se poate vedea modalitatea in care
functioneaza intreruperea:
Fig 2 Intreruperi
In fig 2. (a) se poate vedea ca exista un proces in patru pasi:
o Pasul 1: Driver-ul spune controller-ului ce sa faca scriind in registrii
lui. Controller-ul apoi deschide device-ul.
o Pasul 2:Atunci cand controler-ul a terminat sa citeasca sau sa scrie
numarul de bytes pe care trebuie sa il transfere, el semnalizeaza
controller-ul de intreruperi.
o Pasul 3: Daca controller-ul de intreruperi este gata sa accepte
intreruperea, ii spune CPU-ului.
o Pasul 4: Controll-erul de intreruperi pune numarul device-ului pe
bus astfel incat CPU poate sa il citeasca si sa stie ce dispozitiv
tocmai a finalizat.
In fig. 2 (b) se poate observa procesarea intreruperii. Se ia intreruperea,
se ruleaza handler-ul de intrerupere si se returneaza la programul de
utilizator.
- A treia metoda de a face I/O foloseste un hardware special :DMA (Direct
Memory Acces). Acesta poate controla directia bitilor intre memorie si
controller-e fara interventia constanta a CPU. CPU seteaza DMA,
spunand-ui cati bytes sa transfere, device-ul si adresele de memorie
implicate si directia. Apoi DMA lucreaza singur. Atunci cand DMA este
gata, cauzeaza o intrerupere care este procesata ca in figura 2 (b).
8. Driverele in procesul de boot-are
Sistemul de operare cere BIOS sa ia informatiile de configurare. Pentru fiecare
dispozitiv, verifica sa vada daca exista un driver. Daca nu, roaga utilizatorul sa
instaleze acel driver. Dupa ce are toate driver-ele, sistemul de operare le
incarca in kernel. Apoi sistemul de operare initializeaza tabelele, procesele de
background si incarca GUI.
9.Metode de a limita impactul driver-elor cu erori
Unele drivere prezinta erori. Pentru a minimiza efectele unui driver cu bug-uri ,
se folosete design-ul cu microkernels. Microkernel-urile se folosesc in situatiile
in care este nevoie de fiabilitate mare. Sistemul de operare se imparte in
module mici in care doar unul ruleaza ca kernel si restul lucreaza ca procese de
utilizator. Daca apare un bug in drivere, microkernel-urile garanteaza ca vor
exista probleme numai cu redarea sunetului, dar buna functionare a masinii de
calcul nu va fi pusa in pericol, cum ar fi in cazul unui sistem de operare
monolitic. Un driver audio cu probleme nu poate sa scrie pe disc. Un exemplu
ar fi sistemul de operare MINIX 3. In afara de driverele de Clock, restul de
drivere sunt in modul utilizator Fig.3.
Fig 3.
10.Concluzii
• Driverul este un software care are rolul de a actiona ca o interfață între o
componentă hardware și una software.
• O clasificare a driverelor in functie de producator este: drivere generice
si drivere specifice.
• Cele mai cunoscute tipuri de drivere (clasificate dupa functionalitate)
sunt: BIOS , driverele de pe placa de baza, driverele fizice, driverele
virtuale.
• Inputurile si Outputurile pot fi de trei tipuri: busy waiting, cu intreruperi,
DMA.
• Se folosesc microkernel-uri pentru a evita erori de sistem.
11.Bibliografie si Referinte poze
Sursa Poze:
Fig 1:
https://upload.wikimedia.org/wikipedia/commons/8/8f/Kernel_Layout.svg
Fig 2: Andrew Tanenbaum, Herbert Bos, Modern Operating systems, Forth
edition, pag.30
Fig.3 Andrew Tanenbaum, Herbert Bos, Modern Operating systems, Forth
edition, pag.67
Bibliografie:
1. https://en.wikipedia.org/wiki/Kernel_(operating_system)
2. Andrew Tanenbaum, Herbert Bos, Modern Operating systems, Forth
edition, pag.28-32
3. Wikipedia, „Device Driver” https://en.wikipedia.org/wiki/Device_driver
4. Kadav,Swift,” Understanding Modern Device Drivers”, University of
Wisconsin-Madison, Computer Science department.
5. Oracle Drivers Documentation
Top Related