Professional Documents
Culture Documents
Zadaci
10.ULAZNO/IZLAZNI
UREĐAJI
Ulazno-izlazni sistem računara upravlja ulazno-izlaznim uređajima i
osigurava vezu uređaja prema korisniku i ostatku sistema. Ulazno-izlazni
uređaji se međusobno veoma razlikuju, ali su gotovo svi značajno sporiji od
radne memorije i procesora. Stoga se mora osigurati efikasan i uniforman
pristup U/I uređajima kako ne bi predstavljali usko grlo cijelog sistema.
10.ULAZNO/IZLAZNI UREĐAJI 519
10.1.Klasificiranje ulazno-izlaznih
uređaja
Upravljanje ulazno-izlaznim uređajima je složen zadatak za operativni sistem
najviše zbog njihove raznovrsnosti. Stoga je prilikom razvoja podsistema za
ulazno izlazne uređaje najprije potrebno te uređaje klasifikovati na određeni
način, jer će razlike u ponašanju uređaja uticati na način komunikacije
operativnog sistema sa njima.
Prema namjeni Klasifikacija U/ I uređaja uređaji se dijele
na uređaje za Djeljivost Brzina dugotrajno
Mapiranje Pristup
smještanje Djeljivi Nedjeljivi Brzi Spori podataka (diskovi,
Smijer podataka Memorijski U/ I
trake, diskete, CD Sekvencijaln Direktni
i
uređaji...), uređaje
Jedinica podataka
za prijenos Ulazni Ulazno Izlazni Namjena Znakovni Blok Mrežni Ostali
podataka (mrežne
izlazni
kartice, ruteri, Upisivost modemi, serijski
portovi), uređaje Čitanje Pisanje Čitanjei Za Komunikacije Smještaj Ostali koji pružaju
sučelje ka pisanje korisnike podataka
korisniku
(tastature, ekrani, Slika 149 Klasifikacija U/I uređaja video kartice,
miševi, štampači, terminali, zvučne
kartice) i ostali uređaji (uređaj sata).
520 10.1.Klasificiranje ulazno-izlaznih uređaja
• Ulazni registri podataka: Procesor ove registre isključivo može čitati i oni
omogućavaju čitanje podataka sa periferijskog uređaja. Na primjer, ako je
uređaj disk, i nakon što su kontrolnim registrima izabrani sektori diska koji se
žele čitati, uzastopnim čitanjem ulaznog registra podataka se čitaju bajtovi
koji su stigli sa diska
• Izlazni registri podataka: Procesor u ove registre isključivo može pisati
i oni omogućavaju slanje podataka periferijskom uređaju. Na primjer, slanje
narednog slova štampaču obavlja se upisom u njegov izlazni registar.
10.ULAZNO/IZLAZNI UREĐAJI 527
10.5.Kontroler prekida
Periferijski uređaji su obično sporiji od centralnog procesora. Od vremena
kada je dat zahtjev za prijemom podataka do vremena kada je uređaj zaista
spreman da ih pošalje procesor ostaje neiskorišten. Da bi se povećala
efikasnost procesora uvode se kontroleri prekida (interrupt controller). Uz
pomoć ovog kontrolera omogućava se CPU da nastavi sa operacijama dok
uređaj nije spreman da prenese podatke. Kada CPU želi da komunicira sa
uređajem, on daje instrukciju odgovarajućem U/I kontroleru i nastavlja sa
drugim operacijama. Kada je uređaj spreman, on će prekinuti CPU. Ovo
otklanja potrebu da CPU periodično provjerava ulazne uređaje da vidi ima li
spremnih podataka. Kada ulazni uređaj ima podatke (ili je izlazni uređaj postao
spreman za prijem), odgovarajući U/I modul može prekinuti CPU da zahtjeva
prijenos podataka.
Kontroler prekida šalje signal prekida procesoru preko prekidne linije (engl.
interrupt request line, IRQ). Desiće se sljedeći događaji:
1. U/I kontroler šalje signal kontroleru prekida
2. Kontroler prekida šalje IRQ signal procesoru
3. Procesor završava izvršenje tekuće instrukcije.
10.ULAZNO/IZLAZNI UREĐAJI 531
4. Procesor potvrđuje prekid.
5. Procesor spašava svoje trenutno stanje (programski brojač i još neke
registre)
6. Programski brojač se postavi na sekvencu instrukcija koje se bave
prekidom.
Većina računarskih sistema ima više periferijskih uređaja povezanih na
njega, pa računar mora biti u mogućnosti da detektuje i obrađuje prekide od
različitih uređaja. Ukoliko se više prekida desi istovremeno, kontroler prekida
donosi odluku čiji prekid obraditi na bazi prioriteta prekida. Neki uređaji će
zahtijevati odgovor CPU mnogo brže nego drugi, pa im se dodijeli veći
prioritet. Prioriteti prekida su obično direktno povezani na linije prekida.
8259 IRQ0
IRQ1
8259 IRQ8
IRQ9 Na slici 153 je prikazano
PIC PIC IRQ10
INT IRQ3
IRQ4
IRQ11
IRQ12
vezivanje kontrolera prekida
IRQ5 IRQ13
IRQ6
IRQ7
IRQ14
IRQ15
prema procesoru. Kontroler
prekida, npr. 8259 PIC
Slika 153 IRQ kontroleri
prosljeđuje signal prekida sa
jedne od linija vezanih prema uređajima na INT liniju procesora. Prioritet je
određen linijom, pa je tako uređaj povezan na IRQ0 većeg prioriteta prekida
532 10.5.Kontroler prekida
10.6.DMA kontroler
U mnogo slučajeva, podaci koji se šalju sa periferijskog uređaja se
prebacuju u memoriju. Procesor bi mogao da očitava podatke sa uređaja i
upisuje ih u memoriju, ali to će biti neefikasno kod prijenosa velike količine
podataka između periferijskih uređaja i memorije. Zato je uveden dodatni
uređaj, DMA kontroler. DMA kontroler koristi sistemsku sabirnicu i prenosi
podatke između U/I kontrolera i memorije bez angažovanja CPU. Kad CPU
želi prenijeti podatke, on pošalje instrukcije DMA kontroleru o smjeru
prijenosa, U/I kontroleru koji je uključen, lokaciji podataka u memoriji i veličini
bloka podataka koji se treba prenijeti. Procesor je nakon toga oslobođen za
druge zadatke, a DMA će ga prekinuti kada se prijenos završi.
Jednostavan prijenos podataka na relaciji disk – memorija preko DMA
kontrolera se može objasniti kroz četiri koraka slici Slika 154.
534 10.6.DMA kontroler
CPU RA M
10.10.Obrađivači prekida
Obrađivači prekida su najniži sloj ulazno/izlaznog sistema. Obrađivač
prekida ili servisna rutina prekida (ISR) je potptogram koji jezgro izvršava
svaki put kada se desi specifični prekid. Svaki uređaj koji generiše prekid je
povezan sa odgovarajućim obrađivačem. Obrađivač prekida je obično dio
drajvera uređaja, ali ne mora biti (na nekim jednostavnijim operativnim
sistemima obrađivači prekida su nezavisni od drajvera). Kada se desi prekid,
procesor na bazi ulazne linije prekida ili oznake uređaja na sabirnici poziva
odgovarajući obrađivač.
Ono po čemu se obrađivači prekida razlikuju od ostalih funkcija jezgra je
poseban kontekst u kome se oni izvršavaju. Za vrijeme izvršavanja oni ne
mogu pozivati blokirajuće pozive i predstavljaju kritičnu sekciju. Pošto se
prekidi mogu desiti bilo kada, i obrađivači se mogu pozvati bilo kada. Pošto za
vrijeme izvršavanja obrađivača ne mogu da se izvršavaju korisnički procesi niti
drugi dijelovi jezgra, u kontekstu obrađivača mora se ostati što je moguće
kraće vremena. Prema hardveru, prekid se mora obraditi sa što manjim
zadrškom, a prema ostatku sistema obrađivač mora završiti posao što je prije
10.ULAZNO/IZLAZNI UREĐAJI 543
moguće. Minimum što obrađivač mora odraditi je potvrda prijema prekida
prema periferijskom uređaju, ali često imaju više posla.
Konflikt između dva cilja obrađivača; biti što kraći i odraditi što više posla;
rješava se razdvajanjem obrađivača u dva dijela: gornja polovina i donja
polovina obrađivača. U toku gornje polovine obrađivača obavljaju se poslovi
koji su vremenski kritični: potvrda prijema prekida ili promjena stanja nekih
registara kontrolera periferijskog uređaja. Nakon ove faze novi prekidi se
dozvoljavaju, a jezgro ili korisnički program mogu nastaviti od mjesta gdje su
prekinuti. Ovo može biti i mjesto kada se poziva raspoređivač procesa.
Donja polovina se izvršava kasnije, u pogodnijem trenutku, sa uključenim
prekidima, kada se tipično obrađuju podaci stigli od periferijskog uređaja.
Na primjer, ako je uređaj mrežna kartica, pri prijemu paketa sa mreže
mrežna kartica generiše prekid. Procesor nastavlja izvršenje rutine obrađivača
prekida za mrežnu karticu. U toj rutini se potvrdi mrežnoj kartici prijem
podataka i oni se kopiraju u glavnu memoriju. To se mora uraditi brzo, jer je
glavna memorija puno veća od memorije mrežne kartice. Ako se to ne uradi
na vrijeme, memorija mrežne kartice će se napuniti podacima novih paketa i
oni će morati biti odbijeni. Nakon što su mrežni podaci prebačeni u glavnu
memoriju, ostatak njihove obrade (na primjer prepoznavanje mrežnog
544 10.10.Obrađivači prekida
10.11.Drajveri
Najveći dio ulazno/izlaznog sistema u jezgru predstavljaju drajveri. Drajveri
komuniciraju sa kontrolerima ulaznih i izlaznih uređaja i realizuju sve detalje
i posebnosti funkcioniranja ovih kontrolera. Van drajvera su vidljive samo
operacije, kao što su, na primjer, operacije ulaza ili izlaza, koje omogućuju
jednoobrazno korištenje ulaznih i izlaznih uređaja.
Uređaji su međusobno dosta različiti, ali postoji i određena sličnost u
klasama uređaja, pa se za svaku klasu uređaja pišu odgovarajuće vrste
drajvera. Osnovne kategorije drajvera su drajveri znakovnih uređaja, drajveri
blokovskih uređaja, drajveri memorijskih uređaja i drajveri mrežnih uređaja.
Drajveri znakovnih uređaja su drajveri za uređaje kojima se podaci šalju
serijski ili na takav način primaju od njih. Takvi uređaji su tastatura, RS232
serijski interfejs, štampač, modem, miš, zvučna kartica i slično. Ovakvim
uređajima se može pristupati istim sistemskim pozivima kao kada se čita i
piše datoteka. Stoga, drajveri znakovnih uređaja realizuju operacije:
- Inicijalizacija: Poziva se pri instalaciji drajvera. Ova operacija može
registrovati i odgovarajući obrađivač prekida za dati uređaj.
- Finalizacija: Poziva se pri zatvaranju drajvera
546 10.11.Drajveri
memorijsku lokaciju ili U/I prostor upisati vrijednost READY kada je spreman,
pa će se morati čekati prije slanja svakog znaka.
unsigned char * device_status = (unsigned char *)100;
unsigned char * device_data = (unsigned char *)101;
unsigned char p[BUFLEN];
void driver_write() {
int i;
copy_from_user(buffer, p, count); /* p je buffer jezgra */
for (i = 0; i < count; i++) { /* petlja za svaki znak */
while (*device_status != READY) ; /* ponovi dok nije spreman */
*device_data = p[i]; /* pošalji jedan znak */
}
return_to_user();
}
a) b) c) d)
Jezgro Jezgro
Buffer 1 Buffer 1
Buffer 2 Buffer 2
Buffer 3
Buffer 4
Dvostruki bafer Cirkularni bafer
Keš (engl. cache) je područje memorije koje čuva kopiju podataka, najčešće
sa diska. Pristup podacima u kešu znatno je brži od pristupa podacima na
ulazno izlaznim uređajima. Keširanje je kopiranje podataka sa diska u keš
560 10.13.Ostale funkcije U/I sistema u jezgru
Pri registraciji drajvera u Linux sistemu, interni broj drajvera se dobiva kao
rezultat funkcije register_chrdev ili register_blkdev.
MS DOS ima nekoliko imenovanih uređaja. Tako ime CON: predstavlja
konzolu (tastaturu i ekran), LPT1: predstavlja prvi štampač a COM1: serijski
port.
Za mnoge uređaje pisanje drajvera u jezgru je nepotrebno težak zadatak.
Često je za pisanje drajvera u jezgru potrebno na poseban način konfigurirati
10.ULAZNO/IZLAZNI UREĐAJI 563
kompajler za programski jezik, a ovi drajveri moraju biti pisani vrlo pažljivo jer
greške u njima imaju fatalne posljedice za cijeli operativni sistem. Često je za
komunikaciju sa uređajem dovoljno da samo obradi prekid i da pristup
memorijskom prostoru uređaja. Logika kontrole uređaja ne mora nužno biti u
jezgru pa se za takve uređaje (npr. štampači, drajveri za grafičke kartice u Unix
sistemima, industrijske kartice) realizuju drajveri u korisničkom prostoru. U
jezgru se implementira samo veoma mali dio drajvera, dok se ostatak piše u
korisničkom prostoru. Idealni uređaji za ovakav tip drajvera su oni kojima se
pristupa mapiranjem memorije i kompletno se mogu kontrolirati pisanjem u tu
memoriju, generišu prekide i ne zahtijevaju usluge podsistema u jezgru. No,
ova vrsta drajvera nije pogodna ako treba koristiti usluge podsistema u jezgru.
Na primjer, drajver za mrežnu karticu u korisničkom prostoru bi bio složeniji od
drajvera u jezgru, jer bi trebalo realizovati u korisničkom prostoru i sve mrežne
protokole koji ga koriste. Windows od verzije Vista podržava User-Mode Driver
Framework (UMDF), mogućnost pravljenja drajvera u korisničkom režimu
rada. Linux od verzije 2.6.24 također dopušta ovu vrstu drajvera za proizvoljne
uređaje, uz dodatak već ranije postojećim drajverima u korisničkom prostoru:
CUPS za štampače i X drajveri za grafičke kartice i miševe.
564 10.14.U/I sistem u korisničkom prostoru
10.15.Tastatura
Tastatura je osnovni ulazni uređaj personalnih, serverskih i laptop računara.
Elektronski i mehanički, ovaj uređaj je razmjerno jednostavan. Sastoji se od
40-110 prekidača čije stanje (pritisnut/otpušten) se detektuje jednim bitom.
Tastature na PC računarima su uređaji koji imaju dva jednostavna kontrolera,
od kojih je jedan na matičnoj ploči računara, a drugi na samoj tastaturi.
Kontroler na tastaturi javlja koji je taster pritisnut ili otpušten. Tasteri se
označavaju scan kodovima koji zavise od pozicije tastera na tastaturi.
Tastatura može generirati prekid koji se dešava kada je taster pritisnut ili
otpušten. Tada se može očitati stanje ulaznog porta tastature, očitati koji je
taster pritisnut i sačuvati to u ulaznom baferu.
Drajver tastature očitava scan kodove za znakove koji su se sakupili u
bufferu u međuvremenu. Treba ih konvertovati u razumljive znakove. Na
primjer, kada se pritisne taster A, scan kôd (30) se stavi u registar. Drajver
treba da odredi, na bazi ranijeg pritiska ili otpuštanja tastera da li je to a, A,
CTRL-A, ALT-A,... U tu svrhu se koristi ASCII tabela, prilagođena različitim
nacionalnim jezicima koja se može eksterno učitati.
10.ULAZNO/IZLAZNI UREĐAJI 567
Drajveri za tastaturu mogu da vraćaju samo unesene znakove (nekanonski
ili sirovi režim) ili da prate razne kombinacije tastera sa specijalnim značenjem
(kanonski ili kuhani režim). Na primjer u kanonskom režimu rada kombinacija
CTRL-H briše prethodno uneseni znak.
568 10.16.Miš
10.16.Miš
Miš je uređaj uključen na većini PC računara, ali se nekad zamjenjuje
dodirnom pločom (touchpad) ili kuglicom (trackball) sa istom funkcionalnošću.
Klasični tip miša ima gumenu loptu koja viri kroz rupu na dnu i rotira kada miš
ide preko grube površine. Kako lopta rotira, ona trlja i okreće dva gumena
valjka postavljena ortogonalno. Na bazi podatka koliko se pomjerio koji od
valjaka dobiva se pomjeraj miša po x i y osi. Dati pomjeraji i status jednog do
tri tastera na mišu se prosljeđuju matičnoj ploči u paketu koji je velik tri bajta.
Pošto se valjci dosta prljaju, vremenom je prevladao noviji tip miša koji
promjene pozicije po x i y osi detektuje promjenom intenziteta svjetla.
10.ULAZNO/IZLAZNI UREĐAJI 569
10.17.Ekranski hardver
Tekst ili slike koje se prikazuju na ekranu obično se predstavljaju kao
pravougaona područja na ekranu, povezana sa odgovarajućim područjem u
memoriji. Promjena vrijednosti memorije dodijeljene ekranu se automatski
reflektuje na slici. Ovakav način prikaza grafike se zove rasterska grafika, za
razliku od vektorske grafike kod koje se šalju komande uređaju poput komandi
za iscrtavanje teksta ili linija. Rasterska grafika prikazuje se hardverskim
uređajem koji se zove grafički adapter ili grafička kartica. On sadrži posebnu
memoriju zvanu video RAM, koji čini dio adresnog prostora računara i obraća
se CPU na isti način kao i ostatak memorije (Slika 158). Slika ekrana je ovdje
pohranjena u znakovnom režimu ili bit mapi.
Video
RAM
Kontroler
Analogni ili
Digitalni
signal
U znakovnom režimu, svaki bajt (ili 2 bajta ) video RAM-a sadrži jedan znak
(obično ASCII) koji se prikazuje. U režimu bit mape, svaki pixel (tačkica) na
ekranu se predstavlja posebno u video RAM, sa 1 bit po pixel-u za
najjednostavniju crno-bijelu sliku do 24 bita po pixel-u za visoku kvalitetu
prikaza boja.
Pored video RAM-a, drugi važan dio grafičkog adaptera je čip koji se zove
video kontroler. Ovaj čip očitava znakove ili bitove pixel-a iz video RAM-a i
generira video signal koji se koristi za upravljanje monitorom. Monitor sa
katodnom cijevi emituje snop elektrona koji ide horizontalno preko ekrana,
osvjetljujući fosfornu pozadinu. Tipično ekran ima 480 do 1024 linija od vrha
do dna, s 640-1200 pixel-a po liniji. Signal video kontrolera modulira snop
elektrona, uz utvrđivanje da li će pixel biti svijetao ili taman. Kolor monitori
imaju tri barijere, za crvenu, zelenu i plavu komponentu boje, koje su
samostalno modulirane. Monitor sa tečnim kristalima radi na drugačijem
principu. On također koristi tri komponente boja, ali se slika iscrtava dovodeći
napon na pojedinu tačku kroz rešetku bita, što zakreće tečne kristale koji
polarizuju svjetlost..
Na slici Slika 159 se vidi dio video RAM-a za prikaz u znakovnom režimu.
Svaki znak na ekranu na slici zauzima dva bajta u RAM. Prvi bajt jw ASCII kôd
10.ULAZNO/IZLAZNI UREĐAJI 571
za znak koji će biti prikazani. Naredni bajt je atribut bajt, koji se koristi za
određivanje boje znaka i njegove pozadine.
B8 0 0 0 B8 0 0 2 B8 0 A 0 B8 0 A 2 B80 A 4
T e ... D r u ...
Tekstualni ekran
Drugi red
RAM
TTY
RS232
drajver
CPU Ethernet interfejs
kontroler Telnet PC
proces
Internet
10.19.Štampači
Dvije osnovne vrste štampača (eng. printer) su udarni štampači i
beskontaktni štampači.
Udarni štampači su najstarija tehnologija štampe koja je još uvijek u aktivnoj
proizvodnji. Udarni štampači su najfunkcionalniji u specijaliziranim okruženjima
gdje je niska cijena štampe od suštinskog značaja. Tri najčešća oblika su
matrični, lepezni i linijski štampači.
Tehnologija iza matričnih štampača je vrlo jednostavna. U radu se pritisne
bubanj (gumeni cilindar) i povremeno povuče prema naprijed kako ispis
napreduje. U elektro-magnetskom pogonu glava štampača se kreće preko
papira i udara iglicama vrpcu štampača koja se nalazi između papira i glave
štampača. Glava štampača na traci tiska tačkice tinte na papiru koje čine
ljudski - čitljive znakove. Matrični štampači se razlikuju u rezoluciji štampe i
ukupne kvalitete i imaju obično 9 ili 24 – iglice na glavi štampača. Budući da
glava štampača mora udariti površinu papira sa dovoljno snage za prijenos
tinte sa trakom na stranici, oni su idealni za okruženja koja moraju proizvesti
karbon kopije kroz upotrebu posebnog papira.
580 10.19.Štampači
Processing ili RIP ), i ispisuje izlaz na stranicu kao jednu sliku, zajedno sa
tekstom i uključenom grafikom.
U doba matričnih štampača, priličnu popularnost je stekao Epsonov štampač
FX-80, pa su gotovo svi štampači matričnog tipa drugih proizvođača bili
kompatibilni sa njim. Tako je nastao prvi popularni PDL, koji se zove ESC/P.
Riječ je o ASCII ispisu teksta uz pomoćne kodove za definiranje vlastitih slova,
ispis kosim slovima, podebljano ili ispis grafike. Pomoćni kodovi se navode iza
ASCII koda 27 (heksadekadno 1b), koji se zove ESC. Matrični štampači
pomjeraju valjak red po red, pa je i ovaj jezik tome prilagođen. Sljedeći primjer
pokazuje slanje teksta na Unix sistemima sa priključenim Epson štampačom
na paralelnom portu uz upotrebu kodova ESC 4 (kosa slova) i ESC 5 (kraj
kosih slova).
#include <stdio.h>
int main()
{
FILE *lp;
char * poruka ="Ovaj tekst\x1b4prikazan koso\x1b5 pa normalno.";
lp = fopen("/dev/lp0","w");
fprintf(lp,poruka);
fclose(lp);
return 0;
}
Drajver –
Mreža Spooler Interfejs
konvertuje
u PDL
10.21.Dodirni ekrani
U novije vrijeme, sve popularniji ulazno/izlazni uređaj je dodirni ekran.
Dodirni ekran je računarski monitor koji reaguje na dodir olovkom ili prstom.
Koriste se četiri tipa principa rezistivni, kapacitivni, infracrveni i površinski
akustični talas (SAW)
Kod rezistivnog dodirnog ekrana, ekran je napravljen od dva sloja
provodnog materijala. Jedan sloj ima vertikalne, drugi horizontalne linije. Kada
se pritisne gornji sloj on dođe u kontakt s drugim koji dopusti tok struji.
Odgovarajuće horizontalne i vertikalne linije određuju poziciju na ekranu koja
je dodirnuta.
Kapacitivni dodirni ekran je napravljen od laminata preko cijelog staklenog
ekrana. Laminat provodi struju u svim pravcima, a vrlo mala struja ide iz sva
četiri ugla. Kada se ekran dodirne, struja teče u prst ili olovku. Lokacija dodira
se odredi poređenjem koliko je jak tok elektriciteta iz svakog ugla
Infracrveni dodirni ekran je ekran s unakrsnim horizontalnim i vertikalnim
zracima IC svjetla. Senzori suprotnih strana ekrana detektuju zraku. Kada
korisnik prekine zraku dodirom ekrana, može se odrediti lokacija prekida.
592 10.21.Dodirni ekrani
Pomicanje
Izbor Uvećanje