Sistema operativo UNIX (a base del dialetto Linux)
Corso base con elementi di programmazione della shell (20 ore) Prerequisiti: nessuno. Obiettivi: acquisire le conoscenze base sui sistemi operativi UNIX e sul funzionamento dei computer.
1. Tipi di utenza UNIX:
- utente (user) comune (locale/remoto) - accede solo ai propri dati e ai servizi di sistema;
- programmatore degli applicativi - deve avere accesso ai compilatori, linker e altri programmi di sistema;
- programmatore sistemista - deve aver accesso a tutte le risorse di sistema;
- system administrator (system manager);
- network administrator (sistemista di rete);
- operatore di sistema.
3. Livelli funzionali di UNIX:
- HW
- kernel:
- scheduler / buffer I/O / drivers
- gestione dei dispositivi / servizi I/O / gestione della memoria / gestione del File System
- system calls
- shell / processi utente.
4. Struttura e sintassi dei comandi UNIX, argomenti e opzioni, opzioni lunghe; comandi esterni ed interni (incorporati nella shell); assegnazione di alias; comandi man, info.
5. File System di UNIX (albero rovesciato), percorso (path), percorsi relativi ed assoluti; spostamento sull'albero, comandi cd, pwd, ls, mv, cp, rm, mkdir, rmdir; percorsi standard di UNIX; Midnight Commander di Linux mc.
6. Tipi di files in UNIX:
- files comuni (ordinari),
- directory,
- file speciali (devices, links, links simbolici);
- pipe files (files FIFO).
Concetto di i-node (indexed node) le informazioni contenute in esso: tipo di file / numero di links che fanno riferimento al file / UID / GID / permessi / dimensione / ultimo accesso / ultima modifica / data creazione.
7. Struttura del File System:
- blocco di boot (0), contiene il caricatore di UNIX;
- superblock (1), contiene le informazioni sul FS;
- blocchi i-node (2), contengono gli i-node relativi ai file;
- blocchi dati (3), contengono i dati.
Montaggio di un File System, comandi mount, umount, fsck; formattazione dei dischi (es. fdformat) e creazione di un file system con mkfs; files etc/fstab, etc/mtab.
8. Permessi di files, concetti di utente, gruppo e di altri (others); comandi chmod, chown, chgrp.
9. Gestione degli account; files etc/passwd, etc/shadow; directory etc/skel, comandi useradd, passwd, finger, chfn, chsh, who, su, userdel (-r). Account senza password. Variabili d'ambiente e la loro esportazione, comando env, i files di configurazione; run levels, single user mode e comando login.
10. Redirezione dell'input/output e piping.
11. Elementi di programmazione della shell (shell scripting):
- variabili: assegnazione e lettura, parametri posizionali, variabili della shell predefinite, variabili d'ambiente;
- istruzioni echo, printf, read; quoting;
- istruzioni condizionali if-else, if-elif, case;
- operatori di confronto: stringhe, numeri, file; operatori logici;
- istruzioni di iterazione (cicli) for, while, until; utilizzo delle istruzioni break e continue dentro i cicli;
- carattere backtick (ASCII 96), sostituzione di comandi e istruzione expr;
- istruzioni shift, exit;
- funzioni.
12. Risorse di sistema: comandi free, du, df.
13. Nozioni sui processi di UNIX e su multitasking:
- macchine virtuali (Virtual Machines);
- un processo è un programma che viene eseguito nell'ambiente di una macchina virtuale che consiste di una parte della memoria, un terminale ed una shell;
- caratteristiche principali di un processo: PID, PPID, UID, TERM, priorità;
- startup di UNIX, processi swapper e init;
- comandi ps (-axl, -fax), pstree, top;
- esecuzione dei programmi in background, comandi jobs, bg, fg;
- gestione della priorità con il comando nice;
- segnali, terminazione dei processi, comandi kill, nohup;
- la variabile della shell $? ; gestione del codice di ritorno di un programma.