SISTEMA OPERATIVO
– i moderni sistemi operativi sono multi taskinkg: un programma residente sull’HD può essere eseguito più volte in contemporanea caricando simultaneamente più processi in memoria.
– ogni processo è servito per al massimo 1/100 di secondo (time slice), dopodichè il controllo della CPU passa ad un eventuale altro processo.
– il centesimo di secondo dedicato ad ogni singolo processo può essere interrotto nei seguenti tre casi:
– il processo è in attesa di un evento (ad es: utente deve fornire un dato)
– il processo ha chiesto un’operazione di lettura/scrittura su HD (tali operazioni non sono elaborate dlla CPU immediatamente ma gestisce n gruppi (CHUNKS) di richieste)
– il sistema operativo ha ricevuto un segnale di INTERRUPT da parte di una periferica, perciò interrompe l’esecuzione del processo che stava servendo, esegue la routine di interrupt richiesta per
poi proseguire con quello che stava facendo.
– deamon: processi di sistema eseguiti in background.
– il sistema operativo ha una struttura a cipolla: è suddiviso in livelli. Al centro c’è HW. Che dialoga con esso ci sono i DRIVER. Chiamati a loro volta dalla SHELL. Se si sta eseguendo il sistema operativo
ramite un’interfaccia grafica, ci sarà questa che chiama la SHELL. Infine c’è il livello delle applicazioni, demoni e utility che chiamano la shell.

MEMORIA VIRTUALE / GESTIONE DI MEMORIA
– Quando il sitema operativo carica in RAM un programma, non tutto è caricato ma solo la parte necessaria richiesta dall’utente. Solo all’occorrenza viene riletto l’HD e caricato in memoria il resto del
programma, sfruttando così il concetto di MEMORIA VIRTUALE. Quando la RAM non è sufficiente, i moderni sistemi operativi usano il meccanismo dello SWAP: copiano una parte della memoria sul
supporto fisico e liberano così la memoria per un altro processo. Viene simulata così un RAM più capiente.

FILE E CARTELLE
– Un set di byte legati logicamente è detto file.
– Ci sono 5 tipi di file: – programmi;
– file di testo;
– file di dati;
– file di periferica (in UNIX ogni periferica è trattata come un file, il sistema operativo accede alla periferica tramite il file di periferica);
– file di pipe;
– Diversamente da sistemi DOS, UNIX non ha particolari pattern per i nomi dei file (DOS esegue solo file .EXE, .BAT, .COM mentre UNIX potrebbe considerare eseguibile ogni file). Non si può usare ‘/’ e ‘NULL’.
In UNIX sono validi tutti i seguenti esempi di nomi per un file, mentre per DOS lo sarebbe solo il primo:
– letter.txt;
– letter.text;
– letter_txt;
– letter_to_jim;
– letter.to.jim;
– Per evitare di considerare un binario eseguibile ad esempio un file di testo UNIX ha 2 meccanismi:
– permessi di lettura, scrittura sul file;
– riconosce un numero magico nel programma per sapere se è un binario eseguibile (/etc/magic);
– File nascosti: se il nome di un file inizia con ‘.’ allora si tratta di un file nascosto (ls -a);
– Cartelle: le cartelle sono a loro volta dei file contenenti un elenco di file e le loro relative posizioni;
– UNIX tiene memoria del filesystem nella tabelle INODE;
– /: è la root del filesystem (cd /);
– /bin: contiene i binari dei programmi più importanti utilizzati dal sistema per funzionare (shell, ls, grep…);
– /sbin: contiene molti programmi di amministrazione che molte volte devono essere eseguiti con diritti di root;
– /dev: contiene i file con cui sono accedure le varie device;
– /boot: contiene i file per l’inizializzazione del sistema (ad esempio il KERNEL, contenuto nel file ‘vmliniz’);
– /etc: contiene file e cartelle usate per la configurazione da LINUX. Molti file possono essere editati manualmente;
– /etc/inittab: è un file che contiene informazioni su quali processi sono eseguiti al boot o durante la normale esecuzione del sistema;
– /etc/fstab: è un file che contiene informazioni sul filesystem e dove le device sono montante;
– /etc/passwd: è un file che contiene informazioni sui vari utenti del sistema;
– /etc/lilo: usato per installare le opzioni di configurazione del boot;
– /etc/cron*: usato dal daemon cron per schedulare le operazioni;
– /etc/init.d: contiene script che il sisteme esegue quando si accende e si spegne;
– /etc/printcap: file di configurazione delle stampanti;
– /etc/sysconfig or /etc/rc.config.d: contiene le informazioni di default del sistema;
– /lib: contiene le librerie necessarie al sistema;
– /mnt: cartella utilizzata per i punti di montaggio utilizzati per mappare eventuali device;
– /usr: contiene i dati utilizzati dagli utenti del sistema (foto, documenti, sorgenti);
– /usr/local: dove vengono istallate applicazioni o altri file nella macchina locale. Contiene informazioni usate nella sola macchina locale
– /usr/bin: contiene applicazioni utilizzate dagli utenti del sistema;
– /var: contiene informazioni che variano quando i programmi sono in esecuzione;
– /var/mail: sono immagazzinate le mail in ingresso e uscita;
– /var/spool: contiene file che sono accodati da qualche processo;

http://www.linux-tutorial.info
http://books.google.it/books?id=kHLlJzI6L20C&printsec=frontcover#v=onepage&q&f=false