+ All Categories
Home > Documents > Drivere fizicestst.elia.pub.ro/news/SOA/Teme_SOA_16_17/GrigoreMihai/G...1 . Definitie driver În...

Drivere fizicestst.elia.pub.ro/news/SOA/Teme_SOA_16_17/GrigoreMihai/G...1 . Definitie driver În...

Date post: 23-Feb-2020
Category:
Upload: others
View: 40 times
Download: 0 times
Share this document with a friend
12
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
Transcript

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


Recommended