stst.elia.pub.rostst.elia.pub.ro/.../1_geabaal_tudorio_ilieda_io_2.docx  · web viewatunci cand...

63
Geaba Alin Grupa 431A Notiuni fundamentale 1.1 Sisteme de operare………………………………………………pagina 4 1.2 Tipuri de sisteme de operare ………………………………….. pagina 4 1.3. Proprietatile unui sistem de operare …………………………… pagina 6 1.4. Functionarea sistemelor de operare…………………………..pagina 7 1.5. Tipuri de echipamente I/E ………………………………………pagina 7 1.6. Administrarea I/E………………………………………………..pagina 12 1.7. Bibliografie……………………………………………………….pagina 15 Tudor Ioana Grupa 431A Device drivere – Tastatura 2.1 Introducere……………………………………………………….pagina 16 1 | Page

Upload: haduong

Post on 11-May-2018

216 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

Geaba AlinGrupa 431A

Notiuni fundamentale

1.1 Sisteme de operare………………………………………………pagina 4

1.2 Tipuri de sisteme de operare ………………………………….. pagina 41.3. Proprietatile unui sistem de operare ……………………………pagina 61.4. Functionarea sistemelor de operare…………………………..pagina 71.5. Tipuri de echipamente I/E ………………………………………pagina 71.6. Administrarea I/E………………………………………………..pagina 121.7. Bibliografie……………………………………………………….pagina 15

Tudor IoanaGrupa 431A

Device drivere – Tastatura

1 | P a g e

Page 2: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

2.1 Introducere……………………………………………………….pagina 16

2.2 Tipuri de tastaturi ……………………………………………….pagina 17

2.3 Moduri de conexiune hardware intre tastatura si calculator..pagina 20 2.3.1 Conectorul DIN cu 5/6 pini……………………………..pagina 21 2.3.2 Conectorul PS/2…………………………………………pagina 212.3.3Conectorul USB…………………………………………pagina

222.4 Structura și funcționarea unei tastaturi……………………….pagina 242.5 Programarea tastaturii prin porturile I/O

2.5.1 Registre ………………………………………………….pagina 25 2.5.2 Receptionarea caracterelor de la tastatura…………..pagina 27 2.5.3 Comenzi pentru tastatura………………………………pagina 28 2.5.4 Crearea unui driver în limbaj de nivel înalt…………...pagina 29

2.6 Anexă…………………………………………………………...pagina 342.7 Bibliografie…………………………………………………….pagina 35

Ilie DanielGrupa 431A

2 | P a g e

Page 3: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

Gestiunea de catre utilizatori3.1 Introducere…………………………………………………….pagina

363.2 Clasificare

a. Din punct de vedere functional………………………….pagina 37

i. De schimb ii. Purtatoare de informatii pe banda magneticab. Din punct de vedere al directiei de

transfer…………..pagina 38i. Intrareii. Iesireiii. Intrare/Iesire

c. Din punct de vedere al tipului de transfer:…………….pagina 39

i. Caracterii. Bloc

1. Subsistemul block I/O…………………….pagina 39

3.3 Modalitati de transfer I/O……………………………………pagina 40

a. Prin program…………………………………………...pagina 40i. Direct

ii. Prin interogareb. Prin intreruperi…………………………………………pagina 41

i. Arbitrarea intreruperilor multiple1. Controlata de UCP2. Controlata de controler de intreruperi3. Prin hardware - Lant de prioritati

3 | P a g e

Page 4: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

c. Prin acces direct la memorie……………………….pagina 44

3.4 Bibliografie…………………………………………………….pagina 46

Geaba Alin

4 | P a g e

Page 5: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

Concepte Fundamentale

1.1 Sisteme de operare

Atunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce exista intre masinarie si utilizator utilizator. Cand discutam despre masinarie ne referim la o gama larga de dispozitive care sunt intr-o continua expansiune, precum si la binecunoscutul calculator. Calculatorul sau PC-ul (Personal Computer) a reprezentat unul dintre primii pasi pe care omenirea l-a facut in relatia sa cu tehnologia, in ziua de azi existand o continua interactiune cu tehnollogia.

Toate aceste lucruri au fost posibile datorita unui software care a permis utilizatorului accesul la diferite informatii furnizate de calculator. Sistemele de operare au avut astfel rolul de a prezenta informatiile utilizatorului intr-o maniera placuta, iar datorita accesului cu usurinta s-a maximizat astfel puterea de procesare a componentelor hardware.

Datorita sistemelor de operare accesul se poate face de catre mai multi utilizatori, astfel avand rolul de a distribuii informatiile in acelasi timp, dar si de a gazdui aplicatii rulate de echipamentele hardware.

1.2 Tipuri de sisteme de operare Sistemele de operare difera in functie de dispozitivul folosit, insa cele pe

care marea majoritate le conosc, tocmai datorita dispozitivelor ce sunt utilizate de acestiea frecvent sunt:

Pe PC: Windows, Linux si Mac OS Pe dispozitive mobile: Android, IOS si Windows Phone

Pentru sistemele de operare trebuie sa tinem cont de urmatoarele atribute:

Monouser

Multiuser

Network OS

Online OS

5 | P a g e

Page 6: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

Real Time OS

Monouser

Dupa cum si numele ii sugereaza, acest tip de sistem de operare ofera accesul unui singur user si poate fi divizata in doua tipuri: monotasking si multitasking.

Primul tip ruleaza o singura aplicatie de user la timpul ei pentru a necesita utilizarea cat mai putina a memoriei.

Un exemplu ar fi cel al dispozitivelor mobile, dar care cu trecerea timpului au reusit sa depaseasca aceste bariere prin introducere unor procesoare mai performante care reusesc sa ruleze in acelasi timp mai multe aplicatii.

Cel de-al doilea tip permite rularea mai multor aplicatii oferind astfel utilizatorului posibilitatea de a realiza in acelasi timp diferite taskuri, sporind astfel eficienta sin punct de vedere al timpului.

Multiuser

Acest tip de sistem de operare se refera la utilizarea mai mulor aplicatii de catre mai multi utilizatori, datorita informatiilor de dimensiuni foarte mari care nu pot fi manevrate de catre un singur utilizator.

Un exemplu de dispozitive care realizeaza un astfel de proces sunt mainframe-urile, care au capacitatea de a stoca un numar mare de informatii si permite accesul la acestea mai multor utilizatori inregistrati simultan,

Network OS

In zile noastre majoritatea calculatoarelor dintr-o institutie sau firma sunt conectate la un ruter, impartind astfel accesul la internet.

Un astfel de sistem de operare trebuie sa aiba in vedere urmatoarele taskuri:

Sa manevreze logarea userilor Sa mantina conexiunea de internat la servere Sa permita transferul de informatii intre calculatore

6 | P a g e

Page 7: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

Sa ofere securitate pentru conturile diferite ale userilor

Online OS

Pana recent aplicatiile pe care doreai sa le folosesti trebuiau sa fi fost instalate si rulate de pe calculatorul personal. Recent insa aplicatiile online au devenit accesibile utilizatorului cu acces la internet si devin din ce in ce mai populare.

Un exemplu ar fi spreadsheet-ul care poate fi scris sau citit online, numai prin logarea userului, iar informatiile ne mai fiind stocate pe PC-ul acestuia.

Real Time OS

Procesarea in timp real este esentiala pentru procesele care solicita un raspuns rapid si cat se poate de corect.

Exemple de dispozitive ce necesita o astfel de solicitare realizeaza: controlul semafoarelor, monitorizarea inimii, controlul avioanelor, controlul robotilor, etc.

1.3 Propietatile unui sisteme de operare

Cand discutam despre proprietatile unui SO trebuie sa ne referim la:

Administrarea resurselor hardware ale sistemului

Realizeaza accesul la procesor,hard-disk,memorie,comunicarea in retea,precum si la alte dispozitive I/E

Controlul asupra calculatorului

Sistemele de operare trebuie sa asigure accesul la resursele calculatorului.

Transparenta fata de modul de functionare a hardware-ului

Sistemele de operare trebuie sa ofere un set limitat de informatii si functii de lucru cu hardwareul.

7 | P a g e

Page 8: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

Asigurarea securitatii si integritatii sistemului de calcul

Sistemele de operare vor controla accesul utilizatorilor si al proceselor la resursele hardware ale sistemuluii previnind executia de instructiuni invalide.

Portabilitatea

Sistemele de operare interactioneaza cu arhitecturi hardware si cu periferice foarte diverse, astfel el trebuie sa faciliteze accesul aplicatiilor la acestea, oferind o interfata unica cu utilizatorul, indiferent de diferentele de arhitectura ale harwarelor.

1.4 Functionarea sistemelor de operare

Comunicarea intre sistemul de operare si dispozitivul hardware se realizeaza prin intermediul driverelor.

Driverele reprezinta programe care au ca rol realizare unei legaturi intre componente si soft, oferind solicitari componentei prin intermediul softului in formatul unui cod, si afisarea raspunsului in mesaje accesibile sistemului.

Aceste programe sunt majoritatea furnizate de catre producatorul echipamentelor si pot fi instalate de catre utilizator. Cu o noua aparitie a unei versiuni de driver, prin instalarea acesteia de catre utilizator, acesta beneficiaza de asa-zise upgrade-uri. Driverul ofera componentei corespunzatoare lui, un nou set de instructiuni ce permit o mai buna utilizare a memoriei sau o alta inbunatatire a proceselor componentei respective.

Prin aparitia unor noi metode de interactiune intre utilizator si dispozitiv, precum si dezvoltarea unor metode mai bune de a utiliza componentele, noi versiuni de programe, implict si de sisteme de operare apar pe piata putand fi accesate si utilizate pentru imbunatatirea relatiei user-hardware.

1.5 Tipuri de echipamente I/E

8 | P a g e

Page 9: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

CPU-ul comunica cu memoria si dispozitivele de intrare/iesire (I/0) prin plasarea unei valoari numerice de pe magistrala de adrese pentru a selecta una dintre locatiile de memorie sau locatii porturilor dispozitivelor de intrare iesire, fiecare dintre ele avand o adresa numerica binara unica. Apoi CPU-ul, I/E-urile, si dispozitive de memorie transmit date intre ele prin plasarea datelor pe magistrala de date. Magistrala de control contine semnale care determina directia transferului de date: la memorie sau de la memorie si la dispozitivele de I/E sau de pe dispozitivele de I/E.

Motivele pentru care perifericele nu sunt conectate direct la magistrala sistemului ci prin module de I/E sunt:

Diversitate dispozitivelor periferice cu o multitudine de module de functionare;

Rata de transfer a perifericelor este mai mica decat rata de transfer a memorie si a procesorului;

Utilizarea unor formate diferite ale datelor de catre periferice fata de dispozitivul la care sunt conectate

Astfel putem deduce rolurile I/E: Control si sincronizare; Comunicatia cu UCP; Comunicatia cu echipamentele externe; Bufferarea datelor; Detectia erorilor.

Dupa utilizare echipamentele sunt clasificate in trei tipuri:1. Echipamente pentru achizitia si prezentarea datelor,

realizand transportul datelor intre procesor si utilizator;

9 | P a g e

Page 10: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

2. Echipamente de retea, ce au ca rol transferul datelor intre procesoare;

3. Echipamente de memorare, pentru memorarea informatiilorEchipamente bloc (block devices):

Memoreaza informatia in blocuri ce au dimensiune fixa Dimensiuni uzuale sunt intre 512 octeti si 32768 octeti Fiecare bloc poate fi citit sau scris independent fata de celelalte Ex: discuri, floppy, CD-uri

Echipamente caracter (character devices): Primeste sau transmite un flux de caractere Nu este adresabil Nu are nici o operatie de cautare Ex: tastatura, imprimanta, placa de retea, mouse

Altele exemple: ceasul, ecrane cu corespondenta in memorie

Echipament Viteza de transferTastatura 10 octeti/secMouse 100 octeti/sec56K modem 7KB/secCanal telefonic 8KB/secLinii duale ISDN 16 KB/secImprimanta laser 100 KB/secScanner 400 KB/secEthernet clasic 1.25 MB/secDisc IDE 5 MB/sec40xCD-ROM 6 MB/secMagistrala ISA 16.7 MB/secDisc EIDE (ATA-2) 16.7 MB/secMonitor XGA 60 MB/secDisc SCSI Ultra 2 80 MB/secMagistrala PCI 528 MB/secSun GigaplaneXB backplane 20 GB/sec

Dispozitivele bloc care functioneaza astfel sunt cele de stocare: Fizice - unitati CD-ROM/DVD-ROM, hard-diskuri Virtuale – dispozitive loop

10 | P a g e

Page 11: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

Asociate zonelor de memorie

Dispozitivele de tip bloc sunt mult mai performante decat cele de tip caracter,deoarece viteza celor de tip bloc este mult mai mare decat celelalte.

Dispozitivele de intrare sunt cele care sunt folosite pentru a introduce datele si programele din computer. Un dispozitiv de intrare are functia de a citi datele si de a le converti intr-o forma pe care un calculator poate sa le utilizeze.

Dispozitivele de iesire transforma produsul final al prelucrarii masinii intr-o forma accesibila utilizatorului.

Exemple de dispozitive I/E:Scanner-ul: Scanerele sunt folosite pentru a introduce informatii

direct in in memoria calculatoarelor. Acest dispozitiv functioneaza ca un aparat xerox. Scanner-ul transforma orice tip de informatii tiparite sau scrise, inclusiv fotografii in impulsuri digitale, care pot fi manipulate de catre calculator.

Tastatura: este utilizata in etapa de introducere al unui grup de informatii in calculator. Tastatura este dispozitivul de intrare cel mai frecvent utilizat in zilele noastre. Datele si instructiunile sunt introduse prin apasarea tastelor de pe tastatura. Mesajul dactilografiat ajunge in memoria calculatorului. Tastatura este conectata la un calculator printr-un cablu. In afara de taste alfabetice si numerice, contine si alte taste pentru efectuarea de functii diferite.

Touchscreen. Unele calculatoare, in special PDA-uri mici de mana, au ecrane cu atingere sensibila. Utilizatorul poate face alegeri si imagini apasand butonul de pe ecran. Puteti utiliza de multe ori un stylus, care arata ca un stilou, pentru a "scrie" pe suprafata de un ecran tactil mic.

Mouse-ul: Este un dispozitiv de indicare. Mouse-ul este miscat pe mouse pad, care, la randul sau, controleaza miscarea cursorului pe ecran. Putem face clic, dublu clic sau sa glisam cu ajutorul mouse-ul.

Mouse-ul optic nu utilizeaza o minge de rulare, dar utilizeaza in schimb o lumina si un senzor optic de mici dimensiuni pentru a detecta miscarea mouse-ului prin urmarirea unei imagini mici a suprafetei biroului. Mouse-urile optice evita problema de murdarire a mingei mouse-ul, care cere o curatare regulata pentru a se rostogoli fara probleme .

11 | P a g e

Page 12: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

Un mouse fara fir sau wireless comunica cu computerul prin intermediul undelor radio (de multe ori folosind tehnologia Bluetooth si protocol), astfel incat nu este nevoie de un cablu (dar astfel de mouse-uri au nevoie de baterii interne).

Microfon. Un microfon poate fi atasat la un computer pentru a inregistra un sunet (de obicei, printr-o intrare a placii de sunet sau un circuit construit pe placa de baza). Sunetul este digitizat, si transformat in numere care reprezinta sunetul analogic initial si stocate in calculator pentru prelucrare si redare mai tarziu.

Monitor cu ecran plat. Un ecran plat foloseste , de obicei, un ecran LCD (Liquid Crystal Display ) pentru a afisa date de iesire de la calculator . Ecranul LCD este format din mai multe straturi subtiri care polarizeaza trecerea luminii prin ele . Polarizarea pe singur strat , care contine molecule lungi subtiri numite cristale lichide , poate fi controlat electronic la fiecare pixel, prin blocarea cantitati variabile de lumina pentru a face un pixel de intensitate mai deschisa sau mai inchisa . Alte tipuri de tehnologie cu ecran plat exista ( cum ar fi ecranele cu plasma ), dar LCD-urile sunt cele mai frecvent utilizate pentru calculatoare , mai ales laptop-uri.

Bar Code Reader: Acest dispozitiv citeste coduri de bare si le converteste in impulsuri electrice pentru a fi procesate de catre un calculator. Un cod de bare nu este nimic altceva decat date codificate in forma de bare de lumina si intuneric.

Iesirea audio. Calculatoare contin, de asemenea, iesire audio, variind de la beep-uri simple de alertare a utilizatorului, pana la efecte de sunet joc impresionante, si la muzica de calitate. Circuitele pentru a produce un sunet pot fi incluse pe placa de baza, dar iesirea audio de inalta calitate de la un PC necesita, de obicei, o placa de sunet intr-unul dintre sloturile de expansiune, conectat la un set de boxe externe de buna calitate sau casti.

Imprimanta cu jet de cerneala. Pentru tiparirea hartiei, avem nevoie de o imprimanta atasata la computer (sau intr-o retea). Cel mai comun tip de imprimanta pentru sistemele de acasa este imprimanta color cu jet de cerneala. Aceste imprimante formeaza imaginea pe pagina prin pulverizare in picaturi mici de cerneala de la capul de imprimare. Imprimanta are nevoie de mai multe culori de cerneala (cyan, galben, magenta si negru) pentru a face imagini color. Unele imprimante foto de calitate cu jet de cerneala au mai multe culori de cerneala.

Imprimante cu jet de cerneala sunt ieftine, dar costul consumabilelor (cartuse de cerneala si hartie speciala) le face costisitoare pentru a opera pe termen lung in mai multe scopuri.

12 | P a g e

Page 13: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

Imprimanta cu laser. O imprimanta cu laser produce imagini de buna calitate cu aceeasi tehnologie pe care o folosesc si fotocopiatoarele. Un tambur acoperit cu material fotosensibil este incarcat, apoi o imagine este scrisa pe el cu un laser (sau LED-uri), care face ca pe aceste zone sa apara pierderi sarcina. Toba cu role trece apoi prin toner (particule de plastic mici de pigment), care sunt atrase de zonele incarcate ale tamburului. Tonerul este apoi depus pe hartie, si apoi topit in hartia cu caldura.

Cele mai multe imprimante sunt cu laser monocrom (doar o singura culoare, de obicei negru), dar imprimante laser mai scumpe cu cartuse de toner de culoare multiple poate produce rezultate color.

USB flash. O unitate USB flash este un dispozitiv portabil de memorie, care se conecteaza la un port USB al computerului. Au mai multe denumiri cum ar fi unitatea-cheie, unitate de buzunar, unitate degetul mare, pen drive. Au inlocuit dischete si discuri Zip la UNM-LA ca mijloacele noastre preferate pentru a transporta fisiere. Se pot folosi pe Mac-uri si PC-uri.

Aceste unitati mici stocheaya a datele pe microcipuri de memorie flash (un fel de EEPROM). Memoriile flash pot fi sterse si re-scrise de un numar limitat de ori (de obicei, mai multe mii de ori). Unele unitati au un comutator de protectie la scriere.

Capacitatea de stocare variaza, de la 16 MB la peste un gigabyte.Hard disk. O unitate de hard disk contine discuri din metal ce sunt

acoperite cu un oxid metalic, care poate fi magnetizat. Un cap mic de citire/scriere electromagnetic aflat la capatul unui brat cauta si magnetizeaza pete mici de pe disc pentru a stoca date. Petele magnetice magnetizate intr-o singura directie reprezinta unu; petele magnetizate in directie opusa reprezinta un zero Cu acelasi cap electromagnetic putem citi mai tarziu datele de pe disc.

Hard disk-urile sunt evaluat in functie capacitatea lor de stocare, de obicei, zeci sau sute de gigabytes. Ele sunt, de asemenea, evaluate in functir de cat de repede se invart discurile (in rpm, rotatii pe minut), care este de obicei mii de rotatii pe minut. Un alt mod de a evalua un hard disk este timp mediu de acces (masurat in milisecunde, ms), care spune, in medie, cat timp i-ar lua unitatii pentru a prelua orice bit de date de pe disc.

CD-ROM-ul. Un CD-ROM (Compact Disc Read Only Memory) este un mediu de stocare optic care poate stoca aproximativ 670MB. "Optic" inseamna ca lumina este utilizata pentru a citi datele de pe disc (acesta nu este un mediu magnetic). CD-ROM-urile sunt foarte ieftine pentru a produce in cantitati mari, astfel incat cele mai multe cazuri software-ul este distribuit pe CD-ROM-uri.

13 | P a g e

Page 14: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

Datele sunt stocate pe un CD-ROM-ul ca gropi mici din plastic pe un strat interior, care este apoi aluminizata si acoperit cu un alt strat transparent. Un fascicul laser in unitatea CD-ROM este proiectat pe disc si pe secventele de gropi si peste gropi reflectivitatea este diferita,apoi este transformata in unu si zero. CD-ROM-urile sunt evaluate prin viteza, cum ar fi 32x, ceea ce inseamna de 32 ori mai rapid decat primele unitati CD-ROM.

1.6 Administrare I/E Spatiul de adrese presupune o serie de adrese, fiecare corespunzand

unui registru fizic sau virtual,un I/O device, un sector de disk sau alta entitate fizica sau logica. O adresa arata spre locul in care se gaseste informatia cautata.

Gestiunea de intrari/iesire se face prin doua metode complementare:

1. Memory-mapped I/O (MMIO) (memoria mapata de intrare/iesire) foloseste aceleasi registre de adresare si aceeasi magistrala pentru memorie si dispozitive I/E.

Adresele si registrii dispozitivelor I/O sunt asociate cu valoarea adresei.Atunci cand o adresa este acceptata de CPU, se poate referi la o parte a memoriei RAM, dar se poate referi si la memoria dispozitivelor I/O. Deci, instructiunile CPU folosite pentru a accesa memoria pot fi utlizate si pentru accesarea dispozitivului.

Fiecare dispozitiv I/O monitorizeaza adress buss al CPU-lui si raspunde oricarui acces al CPU-lui de la o adresa atribuita dispozitivului,conectand data bus in registrul hardului dispozitivului dorit. Ca sa acomodam dispozitivele I/O, locatiile de memorie folosite de CPU trebuie sa fie ocupate de I/O si nu trebuie sa fie disponibile pentru memoria fizica.

Rezervarea poate fi temporara sau permanenta pentru aceste locatii de memorie.

In acest caz, o anumita parte a spatiului de adrese a procesorului este mapata la dispozitiv, si comunicatiile au loc prin citirea si scrierea directa la/de la zonele respective de memorie.

Aceasta tehnica este potrivita pentru dispozitivele care tranfera rapid cantitati mari de date, cum ar fi cardurile de grafica.

Aceasta tehnica poate fi folosita in acelasi timp sau in combinatie cu registrele traditionale. De exemplu, placi grafice inca mai folosesc registrele de informatii de control, cum ar fi setarea modului video.

14 | P a g e

Page 15: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

Polling este procesul prin care computerul sau dispozitivul de control asteapta pentru un dispozitiv extern pentru a verifica disponibilitatea sau starea sa. De exemplu, atunci cand o imprimanta este conectata printr-un port paralel, calculatorul asteapta pana imprimanta a primit urmatorul caracter..

Interogarea este uneori folosita ca sinonim cu polling ocupat-asteptati. In aceasta situatie, atunci cand este necesara o operatie I / E, computerul nu face altceva decat sa verificati starea dispozitivului I / E pana cand este gata, moment in care dispozitivul este accesat. Cu alte cuvinte, calculatorul asteapta pana dispozitivul este gata. Polling se refera la situatia in care un dispozitiv este in mod repetat verificat pentru disponibilitatea sa, si daca nu este, computerul revine la o sarcina diferita.

Intr-un sistem simplu cu un singur scop, pollingul ocupat-asteptati este perfect adecvat in cazul cand nicio actiune nu este posibila pana cand se realizeaza accesul I / E, dar de cele mai multe ori acest lucru a fost in o consecinta a sistemelor de operare non-multitasking sau datorita simplitatii hardware.

Polling este adesea implicat cu hardware de nivel scazut foarte. Polling are dezavantajul ca, daca exista prea multe dispozitive pentru a verifica, timpul necesar pentru a le interoga poate depasi timpul disponibil pentru a deservi dispozitivul I / E2. Port-mapped I/O (PMIO) realizeaza accesul dispozitivelor I/E printr-un

set de registre speciale.Acestea au o mapare rezervata pentru ele si uneori chiar si o intreaga

magistrala sau instructiuni. Avantajul acestui mecanism este sesizabil la microprocesoarele cu spatiu de adresare limitat, ducand astfel la o gestionare mai buna a memoriei principale, dar se poate spune ca aduce un plus asupra usurintei cu care poate fi scris/citit un cod in limbaj de assamblare datorita instructiunilor dedicate.

Aceasta modalitate de a comunica cu dispozitivele este prin registre asociate cu fiecare port.

Registrele pot fi de marimi intre 1 si 4 octeti, si le putem clasifica astfel:

Registrul de date-in este citit de catre gazda pentru a obtine informatii de la dispozitiv.;

Registrul de date-out este scris de gazda pentru a trimite informatii spre iesire.

Registrul de stare are biti cititi de catre gazda pentru verificarea starii dispozitivului (inactiv, gata de intrare, ocupat, eroare, tranzactie completa, etc );

15 | P a g e

Page 16: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

Registrul de control are biti scrisi de gazda pentru a trimite comenzi sau pentru modificarea setarillor dispozitivului (verificarea paritatii, lungime cuvant, sau full/ semi-duplex).

Acest subsistem are ca si conceptele fundamentale: gestiune de intreruperi (interrupt handlers) driveri de dispozitive (device drivers) gestiune de catre sistemul de operare (kernel level mode) gestiune de catre utilizator(user level mode) principiile de intrare/iesire hardware (input/output hardware)

16 | P a g e

Page 17: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

Bibliografie: http://ro.wikipedia.org/wiki/List

%C4%83_de_sisteme_de_operare#Timpurii_sau_importante_istoric http://users.utcluj.ro/~baruch/book_ac/AC-Unitatea-IE.pdf

http://www.teach-ict.com/gcse_new/computer%20systems/operating_system_types/miniweb/pg6.htm

http://en.wikipedia.org/wiki/Memory-mapped_I/O http://www.rasfoiesc.com/educatie/informatica/calculatoare/Gestiunea-

sistemului-de-IO58.php http://electronica07.curs.ncit.pub.ro/course/category.php?id=2 http://ebooks.unibuc.ro/informatica/Birotica/1.2_files/text.htm http://en.wikipedia.org/wiki/Polling_%28computer_science%29

http://cristis.hi2.ro/computer/hardgen.php?no=1

http://vega.unitbv.ro/~romanca/ AOC / Cap7 - AOC - IntrareIesire . pdf

http://webhost.uoradea.ro/cpopescu/so/Cursul9.pdf

http://users.utcluj.ro/~baruch/book_ ac / AC - Unitatea - IE . pdf

http://www.referatele.com/referate/informatica/online7/DISPOZITIVE- DE-INTRARE-IESIRE-referatele-com.php

17 | P a g e

Page 18: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

Tudor Ioana

2. Device Drivere – Tastatura

2.1. Introducere

Conectarea unui dispozitiv de intrare/ieșire la un calculator presupune atât o conexiune hardware realizată fie printr-un cablu fie wireless cât și existența unui driver în sistemul de operare al calculatorului. Un driver reprezintă un program care are rolul de a servi drept interfață între sistemul de operare și componenta hardware. Concret, driverul are rolul de a traduce comenzile generice emise de alte programe în comenzi specializate, caracteristice fiecărui dispozitiv hardware. În sistemele DOS, driver-ele se regăsesc sub extensia .sys, în timp ce în mediul de dezvoltare Windows driver-ele au o extensie .drv.

Următoarea schemă arată modul de funcționare al driver-elor atât în modul de utilizator cât și kernel.

18 | P a g e

Page 19: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

Fig 2.1.1

Win32 API – aplicație pe 32 de biți de programare a interfeței pentru sistemele de operare Windows care inițiază operațiile I/O prin intermediul Ntdll.

Ntdll - librărie de funcții care exportă ca funcții apeluri de sistem Windows precum NtReadFile

NtReadFile – apel de sistem de administrare I/O care creează un pachet de cerere I/O și care redirecționează respectivul pachet către driver-ul potrivit.

Sistem de administrare I/O – Subsistem care controlează și interacționează cu toate dispozitivele din sistem oferind rutine pe care driver-ele le pot apela pentru a determina sistemul de administrare I/O să insereze IRP-uri în lista de așteptare a dispozitivului asociat.

IRP – I/O Request Packet este trimis de sistemul de administrare I/O pentru a cere servicii de la un driver.

19 | P a g e

Page 20: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

IoCallDriver – Rutină care trimite un IRP către driver-ul asociat cu dispozitivul obiect specificat

O dată ce s-a procesat cererea, rezultatul poate fi unul dintre următoarele:

Așteptarea unui alt proces – Driver-ul dispozitivului amână procesarea cererii pentru un alt moment; spre exemplu, pentru atunci când sunt disponibile resursele necesare sau pentru când dispozitivul nu este ocupat.

Trimiterea spre un port hardware – Driver-ul dispozitivului programează partea hardware astfel încât să execute operația specificată în cerere.

Trimiterea către driver-ul unui alt dispozitiv – Driver-ul dispozitivului solicitat trimite cererea către driver-ul unui alt dispozitiv. De exemplu, acest lucru se întâmplă dacă se schimbă parametrii cererii.

2.2. Tipuri de tastaturi [Bib1]

Tastaturile se pot clasifica în funcție de modul de organizare al tastelor sau după numărul de taste. Astfel, după modul de organizare al tastelor există:

a. Tastaturi Qwerty – denumite astfel după primele 6 caractere situate pe rândul de sus și anume Q,W,E,R,T,Y.

b. Tastaturi Dvorak-Dealey – vocalele sunt distribuite pe rândurile corespunzătoare mâinii stângi, iar consoanele cu frecventa cea mai mare de apariție sunt distribuite pe rândul de bază al mâinii drepte. Acest mod de aranjare are rolul de a îmbunătăți folosirea alternativă a mâinilor.

După numărul de taste, tastaturile se clasifică în:

a. Tastatură PC cu 83 de taste

20 | P a g e

Page 21: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

Fig 2.2.1

Acesta reprezintă primul model de tastatură dezvoltat de IBM, care a fost livrat împreună cu primele calculatoare personale. Modul de organizare este tot de tip QWERTY, iar în partea stângă se află două coloane de taste funcționale. De asemenea, cursorul este controlat printr-o magistrală numerică ce este destinată introducerii de date. Tasta Enter este reprezentată printr-o săgeată orientată spre stânga. Modelul acesta de tastatură a fost considerat standard până în anul 1984, când au apărut calculatoarele AT.

b. Tastatură AT cu 84 de taste

Fig 2.2.2

După cum am menționat și mai sus, acest model de tastatură a fost lansat pe piață în anul 1984 o dată cu apariția calculatoarelor AT. Acest model conține o tastă suplimentară numită Sys Req (System Request) care este destinată aplicațiilor multiutilizator. Cu alte cuvinte, ea poate fi folosită pentru a comuta între sisteme de operare. Totodată, pentru usurință a fost mărita tasta Enter, ea fiind acum de dimensiune tip Selectric. S-a păstrat poziția tastelor funcționale iar tastele de deplasare, ca și in cazul anterior, au rămas combinate cu tastele numerice din partea dreapta.

21 | P a g e

Page 22: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

c. Tastatură îmbunătățită cu 101 taste

Fig 2.2.3

Acest tip de tastatură poartă numele de Enhanced/Advanced Keyboard și se diferențiază față de modele anterioare, în primul rând prin numărul superior de taste. Astfel, în Statele Unite acest model a fost prevăzut cu 101 de taste, iar în rest, cu 102 taste. Astfel, a apărut un bloc separat de taste prevăzute cu săgeți, destinate deplasării cursorului. Tastele de control au fost dublate și distribuite atât în stânga cât și in dreapta, pentru ușurința manevrării lor. Au fost adăugate tastele funcționale F11 și F12, iar tot blocul a fost mutat pe un rând, deasupra tastelor alfanumerice. Cu toate acestea, tasta Enter a fost micșorată fapt ce a determinat inconveniențe în cazul lucrului cu viteză.

d. Tastatură Windows cu 104 taste

Fig 2.2.4

Deoarece sistemul de operare Windows conține o serie de funcții care nu erau prevăzute pe modelul de tastatură cu 101 taste, producătorii au adăugat trei taste noi și anume: o tastă care activează meniurile derulante și două taste Windows. Cele două taste care poartă emblema Windows sunt

22 | P a g e

Page 23: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

folosite pentru a lansa gestionarul de operații din Windows. Ele sunt poziționate în stânga și în dreapta, pentru comoditate.

e. Tastaturi multimedia și Internet

Fig 2.2.5 Tastatura Microsoft

Modelele noi de tastatură pot conține pe lângă tastele din modelele anterioare și taste pentru operații de clipboard (Mark, Copy, Paste, Delete, Cut, Move etc.), taste pentru utilitare (Word, Excel, PowerPoint, Calendar etc.), taste pentru Internet (Stop, Forward, Refresh, WWW etc.) , taste audio ( Pause, Forward, Play, Back, Volume, Mute etc.) ș.a.m.d.

2.3. Moduri de conexiune hardware între tastatură și calculator [Bib2]

Pentru a conecta o tastatură la calculator este nevoie de o linie pentru transferare a informațiilor, o linie de retur pentru semnalele de date ce totodată servește ca masă pentru celelalte circuite ale tastaturii, o linie pentru semnalul de ceas cu rolul de sincronizare între tastatură și calculator și două linii necesare pentru alimentarea tastaturii cu o tensiune continuă de 5V.

2.3.1 Conectorul DIN cu 5 pini

23 | P a g e

Page 24: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

Cel mai întâlnit conector care îndeplinește cerințele enumerate mai sus este conectorul DIN cu 5 pini, care a fost ales de IBM pentru prima serie de calculatoare personale. Conectorul conține 5 pini poziționați în semicerc, ce ocupă jumătate din sector. De asemenea, este prevăzut cu o adâncitură ștanțată în marginea metalică de protecție ce are rolul de a asigura inserarea corectă a conectorului.

Fig 2.3.1 Pinii unui conector DINPinul 1 – ceas de la tastatură (intrare)Pinul 2 – date de la tastatură (intrare)Pinul 3 – rezervat (ieșire)Pinul 4 – masă (N/A)Pinul 5 - +5VCC (ieșire)

Inițial, pinul 3 era folosit pentru transmiterea unui semnal de reinițializare a tastaturii. În prezent, semnalul de reinițializare nu este necesar întrucât driver-ul tastaturii conține o comandă soft de reinițializare. Ulterior, a fost lansată varianta conectorului DIN cu 6 pini, denumit și conector PS/2.

2.3.2 Conectorul PS/2Denumirea acestuia provine de la calculatoarele PS/2 lansate de

IBM în 1987. Cei 6 pini ai acestui conector sunt dispuși circular în jurul unui pin dreptunghiular, care impreună cu cele trei ghidaje din marginea de protecție are rolul de a împiedica inserarea greșită a conectorului. Întrucât versiunea cu 6 pini folosește aceleași semnale ca și DIN cu 5 pini, dar aranjamente diferite, trecerea de la un conector la altul se poate face utilizând un adaptor.

24 | P a g e

Page 25: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

Fig 2.3.2.1 Pinii unui conector PS/2

Pinul 1 – date de la tastatură (intrare)Pinul 2 – rezervat (N/A)Pinul 3 – masă (N/A)Pinul 4 - +5VCC (ieșire)Pinul 5 – ceas (intrare)Pinul 6 – rezervat (N/A)Schema de cablare a unui adaptor care poate face trecerea de la

DIN cu 5 pini la un DIN cu 6 pini este următoarea:

Fig 2.3.3.2 Schemă de cablare

2.3.3 Conectorul USBPe măsură ce calculatoarele au început sa fie dotate cu porturi USB

și tastaturile au început sa utilizeze această interfață datorită, în primul rând, vitezei superioare de transfer. Prima tastatură USB a fost lansată în 1996 de firma Key Tronic. Întrucât conectoarele PS/2 erau deja foarte răspândite, a apărut un adaptor de la PS/2 la USB ce are următoarea schemă de cablare:

Conector PS/2 Conector USB Funcție4 1 VCC 5V5 5 CLK/D+3 4 GND1 2 DATA/D-

25 | P a g e

Page 26: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

Fig 2.3.3 Pinii unui conector USB

2.4. Structura și funcționarea unei tastaturi [Bib2,Bib3]

Orice tastatură are un chip propriu, spre exemplu, tastaturile PC vechi conțin un circuit 8048. Acest chip are rolul de a selecta o tastă utilizând o matrice de scanare (scan-matrix) ce este formată prin încrucișarea liniilor de adresă X și Y. De fiecare dată când se comută o tastă, intersecția liniilor duce la localizarea ei. Programul implementat în chip trebuie să diferențieze când o tastă este apasătă, neapăsată sau apasată de două ori.

În figură este prezentată schema de bază a unei tastaturi și interfața ei corespunzătoare pentru PC:

Fig 2.4.1 Structura unei tastaturi

26 | P a g e

Page 27: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

Chip-ul tastaturii verifică mai întâi starea matricii de scanare pentru a determină starea de deschis, respectiv închis al fiecărui comutator, lucru care se realizează prin activarea succesivă a câtei unei linii X și identificarea terminalului Y corespunzător la care se recepționeză un semnal. Coordonatele X și Y identifică precis dacă o tastă a fost apăsată sau eliberată. Circuitul de comandă de care dispune tastatură are rolul de a determina care tastă a fost apăsată sau eliberată scriind apoi codul corespondent ei într-un buffer intern al tastaturii. Ulterior, se transmite respectivul cod printr-un cablu serial care este conectat la interfața tastaturii din PC.

Cablul exemplificat în continuare pentru conexiunea cu calculatorul este PS/2 care are asignarea pinilor specificată anterior și anume : Pinul 1 – ceas de la tastatură, Pinul 2 – date de la tastatură, Pinul 3 – rezervat sau resetare, Pinul 4 – masă, Pinul 5 - +5VCC. Pe linia corespunzătoare pinului 1 se transmit datele semnalului de ceas folosite pentru sincronizarea dintre tastatură și interfața ei de pe placa de bază și, prin urmare, facilitarea transferului de informație. Semnalul de reset, dacă este setat are rolul de a inițializa tastatură prin intermediul interfeței. Linia de date are rolul de a transfera informații între tastatura propriu-zisă și interfața corespunzătoare din PC.

În cazul tastaturilor cu corespunzătoare primelor calculatoare PC/XT, interfața de pe calculator este formată dintr-o serială simplă care acceptă doar un transfer serial al datelor de la tastatură. Prin urmare, este imposibil să se realizeze un transfer de date către tastatură. Cu alte cuvinte, circuitul 8048 nu poate accepta date de la interfața de pe PC și nu poate fi programat. Atunci când se recepționează un cod de la tastatură, interfața generează o întrerupere hardware prin IRQ1 care corespunde INT09h.

Tastaturile de tip AT un instalat un controler care înocuiește interfața serială de tastatură. Astfel, modelele mai vechi de tastaturi AT au chip-uri Intel 8042 iar modelele mai noi au chip-uri Intel 8741/8742. Controlerul permite, așadar, programarea tastaturii făcând posibil un transfer de date bidirecțional între tastatură și PC: chip-ul din tastatură poate recepționa direct comenzi de control, cum ar fi setarea ratei de repetiție a tastaturii.

2.5 Programarea tastaturii prin porturile I/O [Bib3,Bib4,Bib5]

2.5.1 Registre

27 | P a g e

Page 28: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

Pentru a programa direct tastaturile AT se pot utiliza două adrese de porturi și anume 60h și 64h prin intermediul cărora se poate accesa buffer-ul de intrare, buffer-ul de ieșire și registrele de control ale controler-ului de tastatură. Adresele corespunzătoare registrelor sunt următoarele:

Port Registru Read(R)/Write(W)60h Buffer de ieșire R60h Buffer de intrare W64h Registru de control W64h Registru de stare R

Registrul de stare este de tip read-only și este utilizat pentru a determina starea curentă a controlerului. El poate fi citit printr-o instrucțiune IN referitoare de la adresa de port 64h și are structura din Fig 2.5.1.

Bitul PARE are rolul de a indica dacă eroarea de paritate a apărut în timpul transferului ultimului SDU de la tastatură sau de la dispozitivul auxiliar. Bitul TIM este utilizat pentru a verifica dacă apare o eroare de time-out, astfel încât dacă acesta are valoarea 1 și tastatura nu răspunde unei cereri într-un anumit interval de timp înseamnă că există o eroare de time-out. Dacă se întâmplă acest lucru atunci se cere prin intermediul comenzii Resend a controlerului retrimiterea octetului de date. Bite-ul AUXB are valoarea 1 dacă există date de la mouse disponibile în buffer-ul de ieșire. Atunci când procesorul citește aceste date bitul AUXB/OUTB devine 0.

28 | P a g e

Page 29: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

Fig 2.5.1

Structura unui registru de stare

Pentru citirea buffer-ului de ieșire se folosește o instrucțiune IN însă, de regulă, este bine să se verifice dacă controlerul a transferat cu succes informația în buffer-ul de ieșire. Acest lucru se poate face prin realizarea unui test propriu al tastaturii și așteptarea rezultatului. Dacă CPU nu a citit ultimul caracter depus în buffer-ul de ieșire, atunci tastatura nu poate transfera un caracter nou prin portul de intrare către controler.

29 | P a g e

Page 30: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

Bitul INPB indică dacă mai există un caracter în buffer-ul de intrare al controlerului sau dacă CPU are posibilitatea de a permte intrarea unui alt caracter. Bitul C/D stabilește dacă ultimult octet transferat de CPU prin portul de adresă 64h a fost de comandă sau dacă a fost un octet de date transmis prin portul de adresă 60h. Biții KEYL și SYSF indică dacă testul propriu al tastaturii a fost trecut cu succes sau nu.

În concluzie, un exemplu de instrucțiune ce citește registrul de stare este:

IN AL, 64h ;instrucțiunea IN accesează portul de adresă 64h și mută

conținutul în registrul AL

Fig 2.5.2 Structura registrului de control

Registrul de control este de tip write-only și poate fi accesat utilizând instrucțiunea OUT și portul de adresă 64h. Fiecare octet trimis pe această cale este perceput de controlerul tastaturii ca o comandă. Pentru a scrie comenzile de tastatură în buffer-ul de intrare se utilizează o instrucțiune OUT, ce conține codul comenzii, prin portul 60h.

Câteva exemple de funcții de tastatură sunt următoarele:

aah – autotest (controlerul de tastatură execută un test și scrie octetul 55h în bufferul de ieșire dacă nu se detectează nicio eroare)

adh – dezactivare tastatură

aeh – activarea tastatură

c0h – citire port intrare ( citește portul de intrare și transferă datele în portul de ieșire)

d0h – citire port ieșire ( citește portul de ieșire și transferă datele în bufferul de ieșire)

30 | P a g e

Page 31: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

d1h – scriere port ieșire (scrie octetul de date următor în portul de ieșire)

O secvență pentru dezactivarea tastaturii este următoarea:

start :

IN AL, 64h ; citește registrul de stare

TEST AL,02h ; verifică dacă buffer-ul de intrare este plin

JNZ start ; așteaptă cât timp un caracter este în buffer

OUT 64h, 0ADh ; activează tastatura

Transferul de date între controlerul tastaturii și tastatura în sine se realizează utilizând buffer-ele de intrare/ieșire. Buffer-ul de intrare poate fi accesat utilizând instrucțiunea OUT la portul de adresă 60h, numai dacă bitul INPB al registrului de stare are valoarea 0. Octeții din buffer-ul de intrare aparțin unei comenzi de control generată în avans la adresa de port 64h și sunt eventual transferați la controlerul de tastatură.Pentru a trimite o comandă de la controler la tastatură, octetul trebuie scris în buffer-ul de intrare al controlerului, care atunci când transferă comandă o interpretează și ulterior o execută.

2.5.2 Recepționarea caracterelor de la tastatură

Controlerul scrie toate datele în urma comenzii de control primită de la CPU în buffer-ul de ieșire. Atunci când se apasă o tastă, tastatura trimite un cod de scanare sub formă SDU la controlerul de tastatură, care îl scrie mai departe în buffer-ul de ieșire. Cu alte cuvinte, controler-ul generează prin IRQ1 o întrerupere hardware INT 09h dacă a recepționat un caracter de la tastatură și scrie caracterul în buffer-ul de ieșire. Rutina de tratare a acestei întreruperi aduce caracterul caracterul utilizând o instrucțiune IN prin portul 60h, determină codul ASCII și pune ambele date în buffer-ul tastaturii din spațiul de date al BIOS-ului.

Codurile de scanare reprezintă un număr întreg pe 8 biți de ordine al unei anumite taste care are valoarea cuprinsă între 1 și numărul total de taste. Dacă o tastă este apăsată un timp mai îndelungat, este generat în mod repetat același cod de scanare până când tasta este eliberată. Codul de scanare care se generează la eliberarea unei taste este la fel cu cel generat

31 | P a g e

Page 32: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

la apăsarea ei cu excepția bitului 7 (cel mai semnificativ bit) care primește valoarea 1. Spre exemplu, tasta ESC produce codul 01h la apăsare și 81h la eliberare.

Handler-ul întreruperii 09h citește codurile de scanare de la tastatură și le convertește în acțiuni sau coduri de caractere astfel:

Pentru tastele ASCII, atunci când se întâlnește codul de scanare, se plasează codul ASCII și codul de scanare al tastei în zona tampon a tastaturii care are o dimensiune de 32 de octeți și este aflată la adresa 0000:041Eh

Pentru tastele ALT, CTRL sau SHIFT se actualizează octeții de stare de la adresele 0000:0417h și 0000:0418h

Dacă se apasă CTRL+ALT+DEL se inițializează octeții de la adresa 0000:0472h cu valoarea 1234h

2.5.3 Comenzi pentru tastatură

Tastaturile AT pot implementa anumite comenzi care se transmit prin intermediul buffer-ului de intrare al controlerului de tastatură. Câteva astfel de comenzi sunt:

Edh – turn on/off LEDS (aprinde/stinge LED-urile tastaturii și returnează EEh)

Eeh – echo (returnează octetul Eeh)

F0h – set/identify scan codes (setează un cod și identifică codul scanat curent)

F2h – identify keyboard (identifică tastatura)

F3h – set repetition rate/delay (setează rata de repetiție și întârziere a tastaturii)

FEh – resend (tastatura transferă ultimul caracter transmis din nou)

FFh – reset (se execută un reset intern al tastaturii)32 | P a g e

Page 33: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

Comanda Turn on/off LEDS : După ce s-a transmis comanda, tastatura trimite un semnal ACK către controler, anulează citirea matricei de scanare și așteaptă octetul indicator de la controler, care va fi transmis rin buffer-ul de intrare.

Fig 2.5.3.1 Structura octetului indicatorExemplu: Aprinderea LED-ului NumLock şi stingerea celorlalte

OUT 60h, EDh ; trimite comanda "turn on/off LEDs" wait: IN AL, 64h ; citeşte registrul de stare TEST AL, 02h ; verifică dacă buffer-ul de intrare este plin JNZ wait ; aşteaptă cât timp buffer-ul de intrare e plin OUT 60h, 02h ; aprinde LED-ul NumLock

Comanda Echo : Verifică calea de transfer și logica de comandă a tastaturii. Atunci când tastatura a recepționat o comanda, ea returnează un octet ca răspuns EEh ce corespunde ecoului întors de la controler.

Comanda Set/Identify Scan Codes : Selectează unul din seturile de coduri de scanare și anume 01h,02h sau 03h. Standard se utiliează codul de scanare 02h. Valoarea 00h anunță tastatura ca trebuie să returneze pe lângă semnalul de ACK un octet care specifică codul de scanare activ pe setare.

Comanda Identify Keyboard : Determină dacă este conectată sau nu o tastatură. Tastaturile de tip PC nu produc niciun răspuns și din această cauză conduc deseori la apariția unei erori de time-out. Tastaturile de tip AT, însă, returnează un semnal ACK.

Comanda Set repetition rate/delay : Oferă posibilitatea de a seta rata de repetiție și întârzierea tastaturilor AT. După ce s-a transmis o comandă, tastatura returnează un semnal ACK și așteaptă octetul de date.

Comanda Resend : Dacă în timpul transferului de date între tastatură și controler apare o eroare, această comandă solicită retransmiterea ultimului caracter.

33 | P a g e

Page 34: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

Comanda Reset : Efectuează un test intern al tastaturii. După ce se recepționează un octet de comandă, tastatura transmite un semnal ACK iar controlerul trebuie să răspundă prin modificarea perioadei liniilor de date și ceas la 500µs. În aceste condiții tastatura îndeplinește cererea testului BAT (basic assurance test). Dupa finalizarea acestui test, se trimite către controler fie un cod AAh (test passed) fie FCh (keyboard error). Pentru a seta perioada liniilor de date și ceas se utilizează biții 6 și 7 din portul de ieșire.

2.5.4 Crearea unui driver în limbaj de nivel înalt [Bib7,Bib6]

În cadrul acestui subcapitol se vor prezenta exemple de programe scrise în limbaj de nivel înalt ce au rolul de a realiza legătura între sistemul de operare și tastatură în sine. Înainte de asta, însă , este important să fie făcută o diferență clară între spațiul kernel și spațiul utilizatorului, cele două fiind menționate în figura 2.1.1 (pag 1).

Prin urmare, spațiul kernel administrează simplu și eficient partea hardware a dispozitivului, oferindu-i utilizatorului o interfață uniformă de programare. În acest mod, kernel, îndeosebi driver-ele dispozitivelor, formează o punte sau o interfață între utilizator/programator și componenta hardware. Orice subrutină sau funcție care face parte din kernel (cum ar fi module și driver-e de dispozitive) este considerată ca aparținând spațiului kernel.

În spațiul utilizatorului se regăsesc programe de tipul shell al UNIX sau alte aplicații bazate pe GUI (spre exemplu, kpresenter). Evident, aceste aplicații trebuie să interacționeze cu partea hardware a sistemului. Cu toate acestea, ele nu inteacționează direct ci prin intermediul funcțiilor spațiului kernel.

Dacă se dorește utilizarea instrucțiunilor prezentate mai sus în cadrul unui program scris într-un limbaj de nivel înalt, cum ar fi C, acest lucru se poate realiza utilizând prefixul asm și introducerea directivei #pragma inline pentru a anunța compilatorul că urmează să se folosească astfel de instrucțiuni.

Ex: asm {

start :

34 | P a g e

Page 35: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

IN AL, 64h

TEST AL,02h

JNZ start

OUT 64h, 0ADh

}

Dacă se dorește implementarea unor noi rutine de tratare a întreruperilor hardware și software și instalarea lor în locul celor existente, limbajul C pune la dispoziție următoarele funcții:

#ifdef __cplusplus

#define __CPPARGS ...

#else

#define __CPPARGS

#endif

void interrupt(*old_intr)(__CPPARGS);

void interrupt newIntr(__CPPARGS) {... }

Această funcție reprezintă echivalentul în C al funcției 35h a întreruperii 21h. Prin prima instrucțiune se definește o variabilă de tip întrerupere numită old_intr în care se poate salva adresa vechii rutine de tratare a întreruperii. A doua instrucțiune reprezintă declararea unei noi rutine de tratare a întreruperii. Constanta “__CPPARGS” este folosită drept parametru pentru cele două instrucțiuni și este necesară pentru a putea face diferența între definirea unei întreruperi în C și una în C++.

Pentru a prelua adresa unei rutine de tratare a unei întreruperi se folosește funcția getvect care are prototipul:

old_intr = getvect(nr_intr);

Unde nr_intr reprezintă indexul întreruperii de la care se dorește preluarea vectorului de întrerupere. Funcția returnează adresa rutinei de tratare a întreruperii respective.

35 | P a g e

Page 36: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

void interrupt(*old_21h)(...); //declaraţie – pointer la o funcţie de tip întrerupere

…………………………………………

old_21h = getvect(0x21); // citirea vectorului de întreruperi

Pentru scriererea noi adrese a rutinei în tabela vectorilor de întreruperi se folosește funcția setvect:

void setvect(int nr_intr, void newIntr);

unde nr_intr reprezintă indexul întreruperii iar newIntr reprezintă adresa noii rutine de tratare a înreruperii.

Următorul exemplu de program este utilizat pentru a apela tastele cursor. În acest caz nu se poate utilize funcția predefinită getch() deoarece ea este utilizabilă doar în cazul tastelor ce conțin caractere sau numere. Pentru tastele cursorului (săgețile) sau pentru tastele cu funcții sunt necesare coduri precum cel de mai jos.#include <stdio.h> #include <conio.h> /* pentru kbhit */ #include <dos.h> int getkey(void); void main(void) { int key; while(1) { if (kbhit) { key=getkey(); printf("%d %x\n", key, key); } } } int getkey(void) { union REGS in, out; in.h.ah = 0x08; int86(0x21, &in, &out); if (out.h.al == 0)

36 | P a g e

Page 37: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

{ return(getkey()+0x100); } else { return(out.h.al); } }

Câteva întreruperi pot fi executate din software utilizând funcția int86. Întreruperea de nivel 21 a fost dezvoltată de către fondatorii originali ai DOS-ului ca o intefață standard de colectare a informații specifice.Identitatea informației specific este introdusă în octetul mare al registrului A(in.h.ah).De exemplu, dacă în h.ah este 0x2a, anul, luna, ziua și ziua actuală a săptămânii sunt returnate în mai mulți regiștrii.

Valorea din ih.h.ah pentru a citi tastatura este 0x08 și valorea caracterului este returnată în octetul inferior a lui A (out.h.al). Aceasta funcționează pentru apăsările obișnuite ale tastelor.

Cu toate acestea, IBM a avut nevoie de mai mult de 256 de caractere care pot fi găzduite într-un octet.Așadar, ei au definit un “ASCII extins” prin rezervarea codului 0x00 de întoarcere la o medie. Așadar, dacă nu se mai apasă caracterul c’, out.h.a va fi 0x63 care este valorea în ASCII a caracterului c’.

Dar, dacă nu se apasă tasta săgeții drepte, out.h.al va fi 0x00 și un al doilea apel utilizând int86 va returna 0x4d. Adică, codul ASCII pentru săgeata de dreapta este 0x00 0x4d.

În program, dacă out.h.al este egal cu zero, funcția getkey() este din nou apelată S-a adăugat 0x100 rezultatului pentru a indica rezultatul ca fiind ASCII extins. Așadar, în programul rulat, dacă nu se mai ține apăsată tasta c’ este afișată valorea 0x63. Dacă nu se mai apasă pe săgeata de dreapta se afișează 0x14d.

37 | P a g e

Page 38: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

2.6 ANEXĂ

Fig 2.1.1 - https://technet.microsoft.com/en-us/library/cc776371(v=ws.10).aspx

Fig 2.2.1- http://www.computerhope.com/jargon/p/pcxtkeyb.htm

Fig 2.2.2 - http://www.pcguide.com/ref/kb/layout/stdAT84-c.html

Fig 2.2.3 - http://www.ethoberon.ethz.ch/images/uskeyb.gif

Fig 2.2.4 - http://wiki.logkeys.googlecode.com/git/images/keyboard.png

Fig 2.2.5 - http://media.engadget.com/img/product/10/8fo/microsoft-wireless-multimedia-keyboard-1-1-hov-800.jpg

Fig 2.3.1 - http://smg.photobucket.com/user/guggenheim/media/din5pin.jpg.html

38 | P a g e

Page 39: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

http://i00.i.aliimg.com/wsphoto/v0/790470416_2/5-Pin-DIN-male-Plug-Cable-Connector-with-Plastic-Handle.jpg

Fig 2.3.2.1 - http://www.e-ucenje-kel.ftn.uns.ac.rs/eSite/images/stories/AVR/AVR_PS2_tastature/PS2MaleConnector%20pinout.png

http://www.ps2mouse.com/images/PS2connection_sm.jpg

Fig 2.3.2.2 - Radu Rădescu “Echipamente periferice”

Fig 2.3.3 - https://www.keelog.com/images/usb_pinout.gif

Fig 2.4.1, 2.5.1, 2.5.2, 2.5.3.1 - http://www.cs.ucv.ro/staff/cpatrascu/SIE.php

2.7 Bibliografie1. Radu Rădescu, Echipamente periferice, Editura Electra, Bucureşti, 2006.

2. Z. Baruch, Sisteme de intrare/iesire ale calculatoarelor, Editura Albastra, Cluj-

Napoca, 2003.

3. http://www.cs.ucv.ro/staff/cpatrascu/SIE.php

4.  http://www.Computer-Engineering.org

5. A.S. Tanenbaum, Operating Systems – Design and Implementation, Prentice Hall Software Series, Ediţia a 3-a, 2006

39 | P a g e

Page 40: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

6. http://webspace.ulbsibiu.ro/daniel.morariu/html/StudentDoc/IPC/Indrumar_IPC.pdf

7. http://www.phanderson.com/C/getkey.html

Gestiunea de catre utilizatori

3.1 Introducere

Faptul ca lucrurile functioneaza intr-un anume mod ne-a fascinat dintodeauna ca oameni ai stiintei, ai ratiunii. Ce face norii sa nu cada? De ce exista anotimpuri? Ce face ca apa sa fiarba, plantele sa fie verzi sau cerul albastru? Omul de stiinta se deosebeste de ceilalti prin faptul ca nu suporta sa nu cunoasca raspunsul la asemenea intrebari. In anii nostri mai tineri acul unei busole era destul de frustrant. Faptul ca acel ac se comporta intr-un

40 | P a g e

Page 41: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

mod atat de hotarat “nu se potrivea deloc cu natura evenimentelor... in lumea lipsita de constiinta a conceptelor.”

In cazul acesta, in spatele lucrurilor trebuie, cu siguranta, sa se afle ceva adanc ascuns, un adevar imposibil de observat fara o inspectie atenta. Probabil aceasta este cauza din care atat de multi dintre noi isi desfaceau jucariile atunci cand voiam sa aflam cum functioneaza.

Acelasi lucru vom incerca si in lucrarea aceasta, vom incerca sa disecam la nivel teoretic problema dispozitivelor de intrare-iesire, pentru ca, spre deosebire de mai marile si mult mai complicatele subiecte ale ratiunii cum ar fi conceptele filosofice sau teorema relativitatii, avem de-a face cu obiecte facute de om, pe care le intelegem in intregime.

Tehnologia este cu siguranta lucrul de care noi oamenii am ajuns sa depindem cel mai mult. Progresele tehnologice, cu mult mai rapide in comparatie cu progresele curentele lingvistice sau cele artistice, au creeat o nevoie ca utilizatorii sa detina cat mai mult control asupra a ceea ce vor sa obtina prin procesul tehnologic.

Aici intervin dispozitivele de intrare - iesire. Acestea, impreuna cu interfetele de intrare iesire creeaza posibilitatea comunicarii lume-masina. Poate aceasta e o viziune prea romantica pentru niste suflete matematice ca ale celor ce probabil ca vor citi mterialul acesta insa este o metafora potrivita a realitatii.

Diagrama urmatoare arata organizarea pe care am urmarit-o in scrierea acestui material.

41 | P a g e

Page 42: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

3.2.Clasificare2.a Din punct de vedere funcțional, dispozitivele periferice se împart în:

2.a.i. dispozitive periferice de schimb: imprimanta, plotter-ul, rețelele de comunicare cu alte periferice;

2.a.ii. dispozitive periferice purtătoare de informatii permanent pe medii magnetice: benzile magnetice, discurile (hard-discurile, dischetele);

Preluarea datelor de pe aceste suporturi se face prin intermediul unui cap de citire. Benzile magnetice sunt dispozitive cu acces secvential la informatiile memorate. Capul de citire are pozitie fixa si el citeste la un moment dat continutul benzii care este in dreptul sau.

42 | P a g e

Page 43: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

La discurile magnetice, informatia poate fi accesata in mod direct. Citirea se face prin deplasarea capului de citire pana in dreptul zonei de pe disc unde este memorata informatia cautata.

Observatie: Discurile si benzile magnetice pot fi discutate si in contextul unitatilor de memorie auxiliara

2.b Din punctul de vedere al direcției de transfer al informației, dispozitivele periferice se clasifică în:

2.b.i. Dispozitive periferice de intrare (input device): tastatura, mouse, scanner, joystick, touch board, touch screen, touch pad, microfon, webcam, creion grafic, etc

2.b.ii. Dispozitive periferice de ieșire (output device): monitor, imprimanta, boxe, căsti, etc.

2.b.iii. Dispozitive periferice de intrare/iesire (I/O device): hard disk, memorie flash, streamer, CD-RW, DVD-RW, MO-disk, RAM/static-drive, placa de retea, router, switch (comutator).

Din aceasta categorie fac parte si retelele interne destinate comunicarii intre periferice.

Dispozitivele care sunt folosite pentru a introduce datele și programele din computer sunt cunoscute sub numele de "Dispozitive de intrare". Un dispozitiv de intrare are funcţia de a citi datele și de a le converti într-o formă pe care un calculator poate să le utilizeze.

Dispozitivele de ieșire transformă produsul final al prelucrării mașinii într-o formă utilizabilă de către om. Acesta oferă comunicarea computerului cu utilizatorul.

2.c Din punct de vedere al tipului de transfer:

2.c.i dispozitive periferice caracter;2.c.ii dispozitive periferice bloc;

Diferența dintre acestea se poate observa datorită literei care apare pe prima coloană în ieșirea comenzii ls-1, această coloană indică tipul fișierului. Fișierele care au tipul C indică dispozitivele de tip caracter, iar cele care au tipul B indică dispozitivele de tip bloc.

Unele dintre dispozitive sunt generate de kernel si au componente aparte. Acestea se numesc pseudo-dispozitive.

Dispozitivele caracter corespund dispozitivelor care transmit câte un caracter odată. Acestea trimit sau primesc un șir de caractere(stream) fără

43 | P a g e

Page 44: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

nicio organizare a informației pe adrese, de aceea nu se poate accesa o anumită porțiune.

Dispozitivele bloc corespund dispozitivelor care lucrează cu datele la nivel de bloc (citesc,scriu,sterg blocuri de date). Acestea memorează informația în blocuri de dimensiuni fixe (512 la 32,768byte) fiecare cu adresa proprie. Caracteristica fundamentală a acestora este ca informația poate fi citită doar din blocurile care interesează, desigur pentru un cost de timp (ex: hard-disk).

Dispozitivele care funcționeaza astfel sunt cele de stocare: Fizice - unităti CD-ROM/DVD-ROM, hard-diskuri Virtuale – dispozitive loop Asociate zonelor de memorie

Dispozitivele de tip bloc sunt mult mai performante decât cele de tip caracter, deoarece viteza celor de tip bloc este mult mai mare decât celelalte. Importanța acesteia este foarte mare, pentru ca Linux tratează diferit cele două tipuri de dispozitive. Pe când ,Windows, prin intermediul I/O managerul oferă o interfața unificata pentru tratarea dispozitivelor.

2.c.ii.1. Subsistemul block I/O

Lucrul cu dispozitivele de tip caracter e mult mai ușor față de celelalte. Acestea au o singură pozitie curentă, în timp ce cele de tip bloc trebuie să se poată mișca la orice poziție din dispozitiv pentru asigurarea accesului aleator la date. Pentru a simplifica lucrurile cu dispozitivele de tip bloc, nucleul Linux pune la dispozitie un întreg subsistem denumit subsistemul block I/O (block layer).

Cererile de citire/scriere sunt create de nivelurile de cod superioare subsistemului de I/O din nucleu. De obicei, subsistemul care creează cereri pentru dispozitive de tip bloc este subsistemul de gestiune a fiierelor. Subsistemul de I/O actionează ca intermediar între subsistemul de gestiune a fisierelor si driverul de dispozitiv de tip bloc. Principalele operatii care intră în responsabilitatea subsistemului de I/O sunt adăugarea cererilor în coada de cereri a dispozitivului de tip bloc specifici sortarea si comasarea cererilor (sorting and merging) din considerente de performanță.

Pseudo-dispozitivele (ceasurile) sunt o serie de dispozitive care nu corespund unei componente hardware. Acestea pot fi echivalente unor dispozitive virtuale care implementează comportamentul dispozitivelor normale de tip caracter.

44 | P a g e

Page 45: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

3.2 Modalitati de transfer I/O

3.a Prin program

3.a.i Transfer direct

La acest tip de transfer, toate transferurile se iniţiază şi se controlează prin program. Transferul poate fi direct, caz în care procesorul citeşte un port de intrare (PI) sau scrie un port de ieşire (PO), fără nici o verificare prealabilă a stării perifericului corespunzător portului. Acest mod de transfer se foloseşte pentru sistemele simple de control numeric, dedicate unor aplicaţii fixe, în faza de proiectare şi testare a transferului (program plus hardware), sau în cazul rulării unor rutine de iniţializare a circuitelor programabile de interfaţă.

Transferul presupune transferul datelor între unitatea centrala de prelucrare si modulul de intrare/iesire, unitatea centrala de prelucrare executänd un program prin care controleaza direct operatia de intrare/iesire.

Transferul se realizeaza în urmatoarele etape: - sesizarea starii perifericului; - transmiterea unei comenzi de citire/scriere; - transferul propriu-zis al datelor. Executia unei instructiuni de intrare/iesire implica unitatea centrala de prelucrare determinänd-o sa transmita si adresa dispozitivului periferic, continuta în comanda de intrare/iesire.

3.a.ii. Transferul prin interogare

Al doilea mod de transfer prin program este transferul prin interogare. Intrarea în conversaţie cu un periferic se face sub controlul programului, de obicei într-o buclă de interogare (polling - scrutare a stării circuitelor periferice implicate în transfer). UCP interoghează dispozitivele periferice, după o anumită strategie stabilită prin program, dacă doresc sau nu schimb de date sau mesaje, sau dacă sunt active (gata pentru a primi informaţii). Pentru a determina dacă o operaţie de I/O este cerută, sau dacă poate avea loc, se pot folosi bistabile de condiţie (fanioane) locale, setate conform condiţiilor portului. Aceste fanioane se implementează fizic fie ca bistabile singulare, fie sunt incluse în registre de stare ale porturilor. Datorită simplităţii ei, tehnica de comunicare prin interogare programată este recomandată în sistemele în care timpul pierdut în rutina de interogare nu este critic pentru aplicaţia respectivă.

Atunci când programul are de controlat mai multe periferice, pe baza unei liste a porturilor asociate perifericelor, procesorul testează pe rând starea perifericelor şi le serveşte din punctul de vedere al transferului, dacă starea citită permite acest lucru. În acest fel perifericele sunt deservite în

45 | P a g e

Page 46: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

mod secvenţial şi implicit apar întârzieri la servirea acestora, mai ales dacă numărul de periferice controlate este mare. Dacă unele dintre periferice se consideră mai importante decât altele, adresa acestora se poate introduce de mai multe ori în lista de testare din bucla de interogare.

Dezavantajul principal al modului de transfer programat este constituit de timpul pierdut de UCP pentru testarea stării perifericelor, chiar dacă acestea nu cer servicii la momentele de timp respective.

Acest mod de transfer prezintă însă avantaje din punctul de vedere al costurilor (minim de echipament fizic suplimentar pentru transfer). Alt avantaj este că se cunoaşte exact momentul de timp când se testează sau când se face transfer de date cu un periferic; de aceea se spune că acest tip de transfer este sincron cu programul.

3.b Transfer prin intreruperi

La detectarea unei întreruperi, UCP execută o rutină de tratare a întreruperii a cărei sarcină este de a interoga fiecare modul de I/E pentru a determina modulul care a generat întreruperea. Pentru interogare se poate utiliza o linie de comandă separată (de exemplu, TEST I/E). În acest caz, UCP activează această linie şi depune adresa unui anumit modul de I/E pe liniile de adresă. Modulul de I/E răspunde dacă a generat întreruperea. O altă posibilitate este ca fiecare modul de I/E să conţină un registru de stare adresabil. UCP citeşte registrul de stare al fiecărui modul de I/E pentru a identifica modulul care a generat întreruperea

Evenimentele externe procesorului, deci independente de programul rulat, pot produce cereri de întrerupere. Dacă acestea sunt acceptate, se produce întreruperea (suspendarea temporară a) programului rulat şi saltul la o rutină specifică de tratare a cererii de întrerupere. După execuţia rutinei de tratare se revine la execuţia programului întrerupt.

Subsistemul de întreruperi al calculatorului nu este destinat special doar pentru operaţii de transfer de I/O, dar aici ne vom referi doar la acest aspect. Din punctul de vedere al transferurilor de I/O, avantajele sistemului de întreruperi sunt următoarele:

•permite sincronizarea procesorului cu evenimente externe; •eliberează procesorul de sarcina testării periodice a

perifericelor, sarcină consumatoare de timp. Ca urmare transferul prin întreruperi prezintă o viteză de răspuns mai mare decât transferul prin program;

• posibilitatea de tratare ierarhizată a cererilor de întrerupere simultane sau succesive;

46 | P a g e

Page 47: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

Cererile de întrerupere pot fi recunoscute doar la sfârşitul ciclului instrucţiune curent. În general, pentru efectuarea transferurilor de I/O se folosesc cererile de întrerupere mascabile. Răspunsul UCP la acceptarea unei cereri de întrerupere mascabilă, constă în următoarele operaţii succesive:

1. Salvarea stării programului întrerupt. În această fază se salvează automat în stivă cel puţin adresa de revenire la programul întrerupt. Alte informaţii privind starea programului se pot salva prin instrucţiuni introduse la începutul rutinei de tratare, iar înainte de revenire la programul întrerupt trebuie introduse instrucţiuni pentru restaurarea acestor informaţii.

2. Confirmarea acceptării şi identificarea întreruptorului. Confirmarea acceptării întreruperii se face prin transmiterea de UCP a unui semnal de acceptare, în urma căruia perifericul trimite, de obicei, un vector de întrerupere pentru identificare. Există şi sisteme de identificare care nu folosesc vector de întrerupere.

3. Calcularea adresei de început a rutinei de tratare a întreruperii. Pe baza informaţiei de identificare se calculează unde se va face saltul pentru ca cererea de întrerupere, pentru transferul de date, să fie servită.

4. La terminarea rutinei de tratare, se execută o instrucţiune specială, care comanda refacerea conţinutului contorului de program şi deci revenirea la programul întrerupt.

Generarea vectorului de întrerupere se face fie direct de către dispozitivul întreruptor (de fapt de către circuitul de interfaţă cu un anumit periferic), fie centralizat, pentru toate întreruperile mascabile, de către un dispozitiv special numit controller de întreruperi.

Dezavantajul metodei de polling software este că se consumă un anumit timp al UCP. O tehnică mai eficientă este utilizarea unui lanţ de dispozitive (daisy chain), care permite de fapt un polling hardware. Toate modulele de I/E partajează o linie comună de cerere de întrerupere.

3.b.i Atribuirea intreruperilor multiple3.b.i.1. Atribuirea intreruperilor multiple controlat

de UCP

În cazul cererilor simultane, este necesară stabilirea unor priorităţi, şi determinarea condiţiilor în care UCP poate fi întrerupt în timpul servirii unei întreruperi. Perifericele care permit transferuri rapide primesc o prioritate înaltă, iar perifericelor lente li se atribuie o prioritate mai redusă.

47 | P a g e

Page 48: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

Sistemul de arbitrare alocă priorităţi cererilor de întrerupere, servind întotdeauna cererile cu prioritatea cea mai mare. Se permite, de asemenea ca o rutină de tratare să poată fi la rândul ei întreruptă de o cerere cu prioritate mai mare. De obicei, pentru un procesor de uz general, priorităţile intrinseci sunt atribuite în următoarea ordine: întreruperile interne (excepţiile) cu prioritatea cea mai mare, apoi urmează întreruperile externe (hardware) nemascabile şi în final cele mascabile. Arbitrarea întreruperilor multiple se poate realiza prin mai multe metode:

3.b.i.1. Controlata de UCP

În cazul arbitrării controlate de UCP prin hardware, UCP conţine intern circuitele necesare realizării arbitrării. Circuitul de arbitrare primeşte mai multe intrări de cereri de întrerupere, acestea, sau combinaţii ale acestora, corespunzând la un anumit nivel prefixat de prioritate. Adresele rutinelor de tratare pot fi fixe (cum este de exemplu cazul microprocesorului I8085) sau variabile (de exemplu la microprocesorul MC68000).

Identificarea sursei de prioritate maximă se realizează prin polling. Pentru toate întreruperile, există o rutină comună de servire, care interoghează sursele de întrerupere. Ordinea în care sunt interogate sursele determină prioritatea lor. Dacă cererea de întrerupere a unei surse este activată, se execută saltul la rutina de tratare corespunzătoare. Dezavantajul metodei software este că în cazul unui număr mare de surse de întrerupere, timpul necesar interogării lor creşte.

Circuitele au ca element principal un registru-port de intrare, în care se alocă câte un bit pentru fiecare dispozitiv întreruptor. Dacă acest bit este setat, dispozitivul a cerut cerere de întrerupere. Simultan cu setarea bitului din registru, semnalul de cerere de întrerupere se transmite şi către UCP. Prin citirea registrului port de intrare şi compararea cu situaţia anterioară (memorată într-un registru intern), UCP detectează dacă a apărut o cerere de întrerupere cu prioritate mai mare decât cea a programului curent. În cazul unei întreruperi cu prioritate mai mică se continuă programul curent (după eventuala înregistrare a cererilor în vederea servirii ulterioare). În cazul priorităţii mai mari, UCP începe execuţia subrutinei de servire asociată noii cereri, întrerupând astfel programul curent şi actualizând registrul de serviciu. După terminarea execuţiei subrutinei de servire se reia ultimul program întrerupt. De asemenea, după comutarea contextului, UCP trebuie să revalideze întreruperile pentru a permite unor eventuale cereri de întrerupere prioritare să fie luate în considerare. Cererile de întrerupere ale dispozitivelor individuale de I/O, pot fi activate sau dezactivate prin program, prin intermediul unor bistabili de mască, asamblaţi de obicei într-un registru de mascare. Astfel că la momente diferite de timp, prin aplicarea unor măşti

48 | P a g e

Page 49: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

diferite, programul poate modifica ordinea de (prioritate de) servire a cererilor de întrerupere.

3.b.i.2.  Controlata de un controler de intreruperi

Metoda de arbitrare descentralizată prin lanţ de priorităţi a întreruperilor presupune existenţa în fiecare dispozitiv întreruptor a unei logici capabile să asigure protocolul electric de tratare a întreruperilor. Dispozitivele întreruptoare se conectează într-un "lanţ de priorităţi" (daisy chain).

UCP generează semnalul de validare a întreruperilor externe (IEUCP) care se propagă prin lanţ, trecând prin celulele succesive ale lanţului. Pentru fiecare dispozitiv, starea intrării de validare IEI (Interrupt Enable Input) este copiată la ieşirea IEO (Interrupt Enable Output) a fiecărui dispozitiv, dacă dispozitivul respectiv nu cere întrerupere către UCP. Dacă un dispozitiv a cerut întrerupere, care a fost recunoscută şi se face tratarea acesteia, pe tot timpul servirii între intrarea IEI şi ieşirea IEO ale dispozitivului servit nu mai există egalitate. Pe toată această perioadă dispozitivul aduce IEO la zero pentru a nu permite dispozitivelor cu prioritate mai mică să-i întrerupă rutina de tratare.

În momentul în care un dispozitiv Di cere întrerupere, pot exista două situaţii:

⇒ dacă IEIi=0, atunci un dispozitiv mai prioritar decât Di a cerut întrerupere şi servirea sa de către rutina corespunzătoare nu s-a încheiat. Ca urmare dispozitivul Di va aştepta până când IEIi trece în stare activă "1".

⇒ dacă IEIi=1, atunci Di poate genera cererea de întrerupere către INT (aducând această linie la zero logic); aceasta pentru că Di este dispozitivul cel mai prioritar care cere întrerupere la momentul respectiv de timp. Ca urmare, după lansarea cererii de întrerupere, IEOi devine zero, invalidând cererile de întrerupere de la dispozitivele cu prioritate mai mică din lanţ. Din cele de mai sus rezultă că dacă a apărut o cerere de întrerupere către UCP, în lanţ, un singur dispozitiv are IEI = 1 şi IEO = 0, şi anume cea servită. Pentru toate celelalte dispozitive ieşirea IEO are valoare logică identică cu intrarea IEI. Dacă UCP acceptă cererea de întrerupere, dispozitivul întreruptor depune pe magistrala de date a sistemului vectorul de întrerupere, pentru a fi identificat şi servit corespunzător.

3.c. Prin acces direct (DMA)

49 | P a g e

Page 50: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

Transferul, prin intermediul UCP, a blocurilor mari de date între memoria principală şi periferice, se face relativ lent, pentru că de fiecare dată informaţia trece şi prin registre ale UCP. În plus pentru o cantitate mare de date transferate între memorie şi periferic UCP va consuma foarte mult timp. Transferul prin acces direct la memorie (DMA - Direct Memory Acces) este executat direct între memoria principală şi dispozitivul periferic, fără ca datele să mai treacă prin UCP, sub comanda unui circuit controler DMA, care controlează temporar magistralele sistemului. În figura  se presupune că iniţierea transferului se face de către periferic (prin intermediul interfeţei) care efectuează o cerere de transfer prin acces DMA spre circuitul controler de DMA (DMAC). Acesta solicită de la UCP controlul magistralelor prin semnalul de cerere de control a magistralelor, BR, (Bus Request). Cu o mică întârziere (la sfârşitul ciclului maşină curent) UCP cedează controlul magistralelor, îşi trece ieşirile către acestea în HiZ (stare de înaltă impedanţă) şi informează despre aceasta prin semnalul acordare a controlului magistralelor, BG, (Bus Grant).

Circuitul controler DMAC furnizează adresele pe magistrala de adrese, preia controlul semnalelor de scriere (WR) şi citire (RD) şi trimite către periferic semnalul de acceptare a transferului prin DMA. Când dispozitivul I/O primeşte acest semnal de acceptare, el pune un cuvânt pe magistrala de date (pentru scriere în memoria principală) sau citeşte un cuvânt de pe magistrala de date (pentru citire din memoria principală).

Transferul de date se va face direct între periferic şi memoria principală, fără ca UCP să mai fie intermediar al acestui transfer (aşa cum se întâmpla la transferul prin program şi prin întreruperi).

Un ciclu DMA reprezintă transferul unui cuvânt din sau în memorie. După terminarea unui ciclu, controlerul DMA poate continua cu alte cicluri DMA (dacă a fost programat să facă acest lucru şi dacă cererea DMA de la periferic se păstrează activă), sau poate returna controlul magistralelor către UCP prin inactivarea semnalului BR. Pentru transfer pe cuvânt, secvenţa de semnale de cerere DMA (cerere → BR → BG → acceptare) conduce la desfăşurarea unui singur ciclu DMA.

Pentru un alt ciclu DMA, secvenţa de semnale trebuie repetată şi abia apoi se transferă un nou cuvânt. Cealaltă variantă de transfer, în mod rafală-bloc, presupune transferul mai multor cuvinte pentru fiecare cerere de transfer DMA. Este un mod de mare viteză, care însă dacă controllerul şi UCP sunt legate la aceleaşi magistrale poate menţine procesorul în inactivitate pentru o perioadă de timp. În cazul transferului pe cuvânt, întreruperea poate fi insesizabilă, ca timp, pentru procesor, şi de aceea uneori acest mod de transfer este numit "cu furt de ciclu".

50 | P a g e

Page 51: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

De obicei circuitele controler DMA pot gestiona transferuri cu mai multe periferice simultan, pentru fiecare periferic existând (intern controllerului) un canal DMA.

Structura controlerului DMA trebuie să cuprindă: Logică de comandă şi sincronizare. Modul de lucru al controllerului

DMA este programabil. De aceea el este iniţializat printr-o rutină de iniţializare rulată de UCP, fixându-se astfel: modul de transfer (cuvânt sau bloc-rafală), sensul transferului (la memoria principală sau de la memoria principală), nivelul activ al semnalelor de interfaţă cu echipamentul periferic, priorităţile acordate canalelor, modul de tratare al sfârşitului de transfer etc. Circuitul controller DMA are de asemenea o interfaţă cu UCP, care permite iniţializarea registrelor controlerului, comanda ulterioară de către UCP a controlerului, precum şi realizarea protocolului BR/BG;

Circuite tampon pentru conectarea la magistralele calculatorului;

Logică de arbitrare a priorităţilor canalelor;

Logică specifică fiecărui canal DMA, care cuprinde cel puţin următoarele componente:

⇒ un registru numărător de adrese care generează adresa curentă (din memoria principală) de transfer;

⇒ un numărător de cuvinte de transferat, care se decrementează la fiecare ciclu DMA efectuat (valoarea iniţială a acestui contor este egală cu numărul de cuvinte ce se doreşte a fi transferat. Atunci când conţinutul a ajuns la zero, ciclul de transfer s-a sfârşit);

⇒ un registru de stare a canalului, care poate fi citit de UCP şi care indică: sensul transferului prin canal, canal activat / dezactivat, prioritatea alocată etc.

Transferul prin DMA prezintă avantaje din punctul de vedere al vitezelor mari de transfer, pentru blocuri mari de date. Este un transfer folosit în aplicaţii de genul: transfer cu discurile magnetice, transfer cu plăci periferice ce conţin convertoare AD sau DA rapide etc. 3.4 Bibliografie

1. Albert Einstein si Frontierele fizicii, Jeremy Bernstein, Ed Humanitas Bucuresti, pg. 16

51 | P a g e

Page 52: stst.elia.pub.rostst.elia.pub.ro/.../1_GeabaAl_TudorIo_IlieDa_IO_2.docx  · Web viewAtunci cand discutam despre sisteme de operare trebuie sa ne concentram atentia la relatia ce

2. Sisteme de operare moderne - Andrew Tanenbaum, pg 27, pg 30-36, pg 255-281

3. http://vega.unitbv.ro/~romanca/Calc/13-14-Sist_IO-curs.pdf 4. http://discipline.elcom.pub.ro/amp2/curs/IO_s.pdf 5. http://andrei.clubcisco.ro/cursuri/1ii/cursuri/v2/ii_6_

52 | P a g e