I O - viață-prog
Există trei metode de efectuare a operațiunilor de intrare-ieșire:
- programabile de intrare-ieșire;
- intrare-ieșire cu utilizarea de întreruperi;
- DMA (acces direct la memorie - DMA)
Programabil de intrare-ieșire
Atunci când procesorul atunci când programul se întâlnește comanda asociată cu intrare-ieșire, aceasta se execută prin trecerea comenzi corespunzătoare controler de intrare-ieșire. Atunci când dispozitivul de intrare-ieșire programabilă efectuează acțiunea solicitată și apoi setează biții corespunzătoare în registrele IO statului. IO controler nu mai trimite nici un procesor de semnal, inclusiv semnalele de întrerupere. Astfel, responsabilitatea pentru starea de verificare periodică modulul IO are un procesor; el trebuie să efectueze controale, atâta timp cât operațiunea de intrare-ieșire a fost finalizată.
Stat. Folosit pentru a verifica starea controlerului de intrare-ieșire și dispozitive periferice înrudite.
Transfer. Folosit pentru a citi și / sau a scrie date la registrele procesorului externe și a dispozitivelor și registrele de procesor și dispozitivele externe.
Fig. 1.19 este un exemplu folosind programabil IO pentru a citi datele din unitatea de memorie primită de la un dispozitiv extern (de exemplu, de înregistrare cu bandă magnetică). Datele se citește un cuvânt. Când citiți fiecare procesor de text trebuie să îndeplinească statutul de ciclu de verificare, până când descoperă că cuvântul este deja disponibil în registrul de date modul de intrare-ieșire. In schema bloc de mai sus se poate observa principalele neajunsuri ale acestei metode: procesorul efectuează un număr mare de operațiuni care ar putea fi evitate; Acesta a pierdut o mulțime de timp.
Intrare-ieșire întrerupe utilizând
Într-o abordare alternativă, procesorul poate transfera controler de comandă IO, și apoi du-te pe pentru a efectua alte lucrări utile. Apoi, atunci când controlerul de intrare-ieșire va fi din nou gata de a comunica cu procesorul, acesta întrerupe procesorul și necesită a fi servit. Procesorul transmite noile date, iar apoi se reia lucrarea întreruptă.
Fig. 1.19. Trei intrare metodă de transfer bloc de date
Luați în considerare pentru un început, ceea ce arata ca din punctul de vedere al controlerului de intrare-ieșire. În primul rând, primește de la comanda READ procesorul și începe să citească date de la un dispozitiv periferic asociat. Odată ce aceste date ajunge la registrele controlerului, acesta trimite un autobuz de control al procesorului și așteaptă un semnal de întrerupere atunci când procesorul va solicita date. Atunci când un controler de cerere transmite datele de pe magistrala de date, și merge într-o stare de pregătire pentru un nou operațiuni de intrare-ieșire.
Din punctul de vedere al datelor de intrare a procesorului de transmisie, după cum urmează. Procesorul generează o comandă de citire, iar apoi stochează conținutul contorului de program și alte registre corespunzătoare programului de funcționare și veniturile altor operații (de exemplu, este de la unul și același timp, se poate efectua mai multe programe diferite). La finalul fiecărui ciclu de instruire verifică procesor pentru întrerupere (vezi. Fig. 1.7). Când primiți o întrerupere de intrare-ieșire stochează procesor controler informațiile despre sarcină care rulează în prezent și efectuează întrerupe programul de procesare. Când el citește cuvintele din controlerul IO și le stochează în memorie. Apoi restabilește contextul programului, din care comanda IO primit și continuă.
Folosind datele introduse de citire și unitatea de ieșire, întrerupe-condus, este prezentată în Fig. 1.19,6. Intrare-ieșire, cu întreruperi mult mai eficient decât o programabil de intrare-ieșire, deoarece a eliminat-o așteptare inutilă. Cu toate acestea, acest proces încă mai consumă o mulțime de timp de procesor, deoarece fiecare cuvânt care este transferat din memoria la modulul sau invers IO, trebuie să treacă prin procesorul.