Site hosted by Angelfire.com: Build your free website today!
Nazad Maturski rad Dalje

 

 
  DIZAJN  
 

 

 

- 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