|
DEFINIREA SISTEMULUI DE INTRARE/IESIRE
Toate computerele au dispozitive fizice pentru acceptarea intrarilor si producerea iesirilor. Exista multe astfel de dispozitive: monitoare, tastaturi, mausuri, imprimante, scanere, hard discuri, compact discuri, floppy discuri, benzi magnetice, modemuri, ceasuri de timp real etc. Ele se numesc dispozitive periferice, deoarece sunt exterioare unitatii centrale.
O functie importanta a sistemului de operare este gestionarea dispozitivelor periferice ale unui calculator. Fiecare SO are un subsistem pentru gestionarea lor, sistemul intrare/iesire (I/O, input/output). Parte din softul I/O este independent de constructia dispozitivelor, adica se aplica multora dintre ele. Alta parte , cum ar fi driverele dispozitivelor, sunt specifice fiecaruia.
Principalele functii pe care trebuie sa le genereze SO in acest scop sunt:
- generarea comenzilor catre dispozitivelor periferice;
- tratarea intreruperilor specifice de intrare/iesire;
- tratarea eventualelor erori de intrare/iesire;
- furnizarea unei interfete utilizator cat mai standardizata si
cat mai flexibila.
Gestiunea sistemului de intrare/iesire este o sarcina destul de dificila iar generalizarile sunt greu de facut, din diferite motive printre care:
- viteze de acces foarte diferite pentru diferitele periferice;
- unitatea de transfer difera de la un periferic la altul ea putand fi: octet, caracter, cuvant, bloc, inregistrare;
- datele de transfer pot fi codificate in diverse feluri, depinzand de mediul de inregistrare al dispozitivului de intrare/iesire;
- tratarea erorilor se face in mod diferit, in functie de periferic, deoarece si cauzele erorilor sunt foarte diferite;
- este greu de realizat operatii comune pentru mai multe periferice dat fiind tipul lor diferit dar si datorita operatiilor diferite, specifice fiecarui dispozitiv.
Atunci cand se proiecteaza un SO, pentru gestiunea sistemului de intrare/iesire se pot avea in vedere urmatoarele obiective:
a) Independenta fata de codul de caractere. In acest sens, sistemul de I/O ar trebui sa furnizeze utilizatorului date intr-un format standard si sa recunoasca diversele coduri utilizate de periferice.
b) Independenta fata de periferice. Se urmareste ca programele pentru periferice sa fie comune pentru o gama cat mai larga din aceste dispozitive.
De exemplu, o operatie de scriere intr-un dispozitiv periferic ar trebui sa utilizeze un program comun pentru cat mai multe tipuri de periferice.
Desigur, apelarea perifericelor intr-un mod uniform face parte din acest context. Astfel in UNIX si WINDOWS aceasta problema este rezolvata prin asocierea la fiecare dispozitiv a unui fisier, dispozitivele fiind apelate prin intermediul numelui fisierului.
c) Eficienta operatiilor. Pot aparea deseori asa numitele erori de ritm, datorate vitezei diferite de prelucrare a datelor de catre unitatea centrala, pe de o parte, si de catre periferic, pe de alta parte. Revine ca sarcina sistemului de operare sa "fluidizeze" traficul.
Un exemplu de eficientizarea unei operatii de intrare /iesire este sistemul cache oferit de SO. Prin utilizarea mai multor tampoane cache, SO reuseste sa imbunatateasca, de multe ori, transferul de date, sa-i mareasca viteza.