UNIX è un sistema a strati; il sistema operativo (kernel) comunica direttamente con l’hardware e fornisce servizi di livello basso alla shell che viene usata dall’utente.
Potremmo mettere un’ulteriore strato fra utente e shell, l’interfaccia grafica.
Il kernel ha il compito di mantenere ogni processo ed ogni utente separato e regolare l’accesso alle risorse del sistema senza conflitti. Quindi la sua funzione principale è la gestione della memoria, il controllo dell’accesso al computer, la gestione di errori ed interrupt… I programmi interagiscono con il kernel tramite “ system call ” (chiamate di sistema) che sono circa un centinaio.
La shell è un’interprete di comandi ed al tempo stesso può diventare un potente linguaggio di programmazione. I comandi che richiama la shell ( detti strumenti) possono essere utilizzati separatamente oppure combinati tra di loro nello svolgimento di operazioni anche complesse. La peculiarità di questi programmi è che, nella maggior parte dei casi, sono specializzati ed ottimizzati nello svolgimento di un solo semplice compito: per operazioni più complesse si possono combinare tra di loro utilizzando potenti strumenti come la re direzione (>,<,>>,<<),il pipe (|) e lo scripting…
UNIX è dotato di un file system gerarchico a cui struttura viene spesso paragonata a quella di un albero. A differenza dei sistemi Windows, UNIX non utilizza il concetto di unità (C:\,D:\ …) per stabilire la propria radice. La directory radice è assoluta in un sistema UNIX e comprende di dischi o dispositivi diversi.
Un file o una directory vengono specificate tramite il loro “path-name” ( percorso del nome del file):i pathname possono essere assoluti o relativi alla posizione corrente.
Un percorso assoluto per un qualsiasi file inizia con una directory root “/” ad esempio:
/home/marco/mail/2008/appunti.txt
Un percorso relativo indica la posizione file rispetto al punto corrente del file system:
ad esempio supponiamo di essere nella cartella mail dell’esempio precedente, il file “appunti.txt” ha il percorso relativo:
/2008/appunti.txt
Se ci trovassimo nella cartella “svago” il percorso sarebbe
../mail/2008/appunti.txt
Questo poiché con “..” si indica la directory genitrice, mentre “.” è quella corrente…
Ci sono quattro tipi di file in UNIX: directory, file comuni, collegamenti e file speciali.
Ricordiamo che una directory è un file contenente una tabella che elenca i file in essa contenuti . Ciascun file in lista ha i suoi numeri di inode.
Un inode viene letto dal kernel e specifica i permessi del file, il proprietario, la data di creazione e di ultimo accesso e naturalmente la posizione fisica dei blocchi di dati sul disco. Per questo quando cancelliamo un file, esso non viene realmente rimosso ma viene solamente cancellata la sua esistenza dalla tabella della directory che lo contiene.
Un’altra peculiarità di UNIX è che dispositivi fisici del sistema come il monitor, la tastiera, la stampante… vengono trattati come comuni file: si può infatti leggere o scrivere su di essi come se fossero un qualsiasi altro file.