Nazad | Maturski rad | Dalje |
|
- I/O System -
Osnovni model UNIX-ovog ulazno/izlaznog sistema je
sekvenca bajtova kojoj se može pristupiti bilo nasumično (random
access) bilo sekvencijalno (sequential acces).
Različiti programi rade sa različitim strukturama podataka,
ali ih kernel ne razlikuje. Uobičajeno je da se tekstualni fajlovi posmatraju kao niz
linija ASCII karaktera koje se završavaju karakterom za novu liniju. Što se tiče kernela
svi fajlovi predstavljaju ulazno/izlazni tok bajtova (I/O stream).
UNIX procesi koriste deskriptore za pristup I/O stream-u.
Deskriptori su mali, neoznačeni celi brojevi koje vraćaju open i socket
sistemski pozivi. Deskriptori predstavljaju odgovarajuće objekte koje kernel podržava.
Sistemski poziv open se koristi za kreiranje novog, praznog
fajla, ili za otvaranje postojećeg. Prenos podataka iz i u objekat kog deskriptor predstavlja
obavlja se pomoću read i write sistemskih poziva, a sistemski poziv
close se koristi sa oslobađanje deskriptora.
Deskriptori mogu da predstavljaju file, pipe i socket.
Fajl je niz bajtova. On ima svoje ime i postoji
dokle god postoji referenca na njega u fajl sistemu ili dok god neki proces ima
otvoren deskriptor koji ga predstavlja. I/O uređajima se pristupa kao fajlovima.
Pipe (cev) je takođe niz bajtova, ali se, za razliku
od fajlova koristi kao ulazno/izlazni tok podataka u jednom smeru. Nema ime,
tako da ne može biti otvoren open sistemskim pozivom. Umesto njega koristi se
sistemski poziv pipe. Kernel takođe podržava named pipe (FIFO -
First In First Out) - pipe koji postoji u fajl sistemu. Kada dva procesa žele da
komuniciraju oni otvore FIFO, jedan za čitanje, jedan za pisanje.
Socket je privremeni objekat koji se, kao i pipe koristi za
međuprocesnu komunikaciju. On postoji samo dok postoji otvoren
deskriptor kojim je predstavljen. U suštini socket je generalizovan dvosmerni
pipe. Socket pruža mogućnost komunikacije između dva procesa koji se izvršavaju
na različitim mašinama, čak i pod različitim operativnim sistemima.
Svakom procesu kernel prilikom startovanja obezbeđuje
tri deskriptora: standardni ulaz (0), standardni izlaz (1) i
standardna greška (2). Obično ova tri deskriptora predstavljaju korisnikov
terminal. Program prima podatke čitajući standardni ulaz (tastaturu), a izlaz i
greške ispisuje po ekranu. Ovi deskriptori mogu da predstavljaju i druge objekte
osim tastature i ekrana, npr. fajlove. Ovo se zove I/O preusmeravanje.
Pipe je način preusmeravanja izlaza jednog programa u ulaz drugog. Ako jedan
program preusmeri izlaz, a drugi ulaz na pipe dobija se pipeline (cevovod).
Svi hardverski uređaji su predstavljeni fajlovima i programi im mogu pristupiti
koristeći iste sistemske pozive kao i za obične fajlove. Terminalima, štampačima i
drugim sličnim uređajima pristupa se preko I/O toka. Hardverski uređaji se mogu
podeliti na struktuirane i nestruktuirane. Nestruktuirani (character) uređaji
obrađuju znak po znak (komunikacione linije), a struktuirani (block) obradjuju
vece grupe podataka od jednom, na primer, blokove od 512 bajtova (diskovi,
magnetne trake, cdrom-ovi).
Nazad | Početak | Dalje | |
MEMORY MANAGEMENT | FAJL SISTEM |