LiiS:CorsiSOI

Da Wikipedia, l'enciclopedia libera.

Contents

Sistemi Operativi

Anno: II
Periodo: secondo
Crediti Formativi Universitari: 7
Corso di Laurea: Ingegneria dell'Informazione

Docente

Prof. Franco Tommasi

Obiettivi del corso

Introdurre ai concetti alla base dei sistemi operativi moderni attraverso lo studio di un caso reale. Il sistema operativo prescelto allo scopo è UNIX, nelle sue varianti Linux e FreeBSD (MacOS X): di esse sono illustrate caratteristiche, affinità e particolarità. Il sistema viene approfondito dal punto di vista dell'utenza e da quello della programmazione a livello utente (shell scripting). Sempre privilegiando un approccio pratico (durante lo svolgimento delle lezioni gli studenti hanno accesso a delle macchine UNIX sulle quali sono incoraggiati a sperimentare di persona quanto esposto), sono illustrate e approfondite alcune tra le principali astrazioni alla base del sistema (processi, file system e permessi, memoria virtuale, shell).

Requisiti

Conoscenza pratica di un qualunque linguaggio di programmazione (preferibilmente il linguaggio C). Nessuna propedeuticità.

Programma

Argomenti trattati:
Il File System UNIX (la sua organizzazione interna e la disposizione dei file tipica di ciascuna variante)
Il sistema dei privilegi in UNIX (significato dei privilegi per files e directory) SUID bit, SGID bit, Sticky bit
I tipi di file
Le named pipe
I processi (creazione, identificazione, distruzione, relazioni, monitoraggio, gestione)
Lo spazio di memoria di un processo
Memoria virtuale (uso dello spazio virtuale da parte di un processo e strumenti di monitoraggio)
Affinità, interoperabilità e compatibilità tra Linux, MacOS X e FreeBSD
MacOS X come client per l'accesso a un server Linux
L'editor TextWrangler
L'applicazione Terminale
Il montaggio di volumi di rete ospitati da un server Linux sulla scrivania di MacOS X
Il programma gcc: compilazione e linking di programmi in C
Il comando make e la sintassi del Makefile
Librerie statiche e dinamiche (significato, costruzione, istallazione, utilizzo, collocazione nello spazio di memoria del processo)
Il debugger gdb
Il comando grep e le espressioni regolari
Introduzione ai Segnali
Le distribuzioni Linux

Comandi utente presentati nel corso:
apropos, bc, cat, chmod, cksum, comm, cp, curl, cut, date, dd, dig, echo, false, file, find, free, gcc, grep, gunzip, gzip head, hexdump, iconv, ifconfig, info, jot, kill, ldd, less, ln, ls, lsof, lynx, make, man, manpath, md5sum, mkdir, mkfifo, more, mv, passwd, paste, ping, printf, ps, pwd, rev, rm, rmdir, rs, sleep, sort, ssh, stat, strings, stty, tac, tail, tar, tee, test, top, touch, tr, true, uniq, wc, who.

Bash:
Tipi di invocazione e opzioni, File di configurazione, Metacaratteri per i filename, Quoting, Modi per dare i comandi e combinarli (&;!|``), Standard Input e Output, Ridirezione, Job control, Variabili, Sintassi per command substitution $(...), Sintassi per espressioni aritmetiche $((...)), Variabili built-in, Modifica del prompt, History, Priorita' nell'espansione della linea di comando, La programmazione Bash, Il passaggio di parametri agli script, Cicli ed espressioni condizionali, Aritmetica, Arrays, Funzioni, Gestione dei segnali e trap, Il passaggio dell'environment ad un comando, espansione dei parametri, costrutto "a=100 script" per passare un valore d'ambiente allo script.

Comandi built-in di Bash presentati nel corso:
#, #!, alias, bg, break, case, cd, echo, enable, eval, exec, exit, export, fg, for, getopts, history, if, jobs, kill, let, pwd, read, return, select, set, source (.), test, time, times, trap, type, umask, while.

Inoltre su Linux:
Il file system /proc
cat /proc/<pid>/maps
vmstat

e su Mac OS X:
otool -L e otool -tv, open, say, screencapture, system_profile, sysctl, pbcopy, pbpaste, vm_stat
mdfind (vedi http://macdevcenter.com/pub/a/mac/2006/01/04/mdfind.html)

Si fa infine presente che dei seguenti comandi è dimostrato un uso minimale senza approfondire troppo i manuali, in alcuni casi piuttosto corposi:
comm
dd
curl
dig
ifconfig
lsof -p <pid>
gcc
gdb
make
rs
vmmap <pid>
vm_stat

Testi consigliati per la preparazione dell'esame

Sugli argomenti trattati dal corso è disponibile un gran quantità di testi liberamente consultabili o scaricabili dalla rete. A titolo di riferimento (per il livello della trattazione e gli argomenti) si possono citare i testi (in larghissima parte identici): Learning the UNIX Operating System; Learning Red Hat Enterprise Linux and Fedora; Learning Unix for OS X El Capitan. Inoltre sono strettamente attinenti al contenuto del corso i testi: Unix in a Nutshell; Linux in a nutshell; Learning the bash Shell, Unix Shell Programming. Oltre alla documentazione on-line su ogni macchina UNIX (pagine man e info, della cui consultazione si richiede perfetta padronanza) si suggerisce la consultazione del testo, gratuitamente disponibile in rete, Advanced Bash Scripting Guide.

Documenti relativi al corso

Queste slide contengono materiale utilizzato per l'introduzione al corso: Presentazione del corso di Sistemi Operativi - marzo 2014

Tutti i materiali relativi al corso sono disponibili nel sito moodle http://moodliis.unisalento.it (sono richieste le credenziali)

Modalita' d'esame

Svolgimento pratico di alcuni esercizi al computer (a seconda dei casi, puo' essere richiesto un colloquio addizionale).
Generalmente gli esercizi si risolvono scrivendo degli script in linguaggio Bash.
Il tempo tipicamente assegnato per la soluzione degli esercizi varia da 75 a 120 minuti per ciascun compito, a seconda della sua difficoltà.
Fin dal primo esame svolto si scelto di agire come segue: durante il compito è possibile consultare propri testi, utilizzare supporti di memorizzazione propri (pendrive, CD ecc.) e consultare Internet (tranne, ovviamente, che per comunicare con altri).
L'abilità che si chiede di maturare non è, infatti, quella di memorizzare pagine di manuale! Si richiede invece in primo luogo la comprensione dei concetti e delle astrazioni fondamentali per i sistemi operativi esposti a lezione. Fondamentale è anche la capacità di recuperare dai più diffusi canali le informazioni necessarie e di interpretarle correttamente.
Ecco tutti testi delle precedenti prove di esame fino al luglio 2016 incluso.

Istruzioni per lo svolgimento del compito - Questa pagina contiene indicazioni su quello che occorre conoscere del sistema operativo Mac OS X per svolgere il compito.

Si raccomanda l'acquisizione delle credenziali per l'accesso alle macchine Mac OS X, al server Linux e al server Moodliis. Per ottenerle inviare una mail con la richiesta ad esameos@unisalento.it. Senza le credenziali (ed una sufficiente pratica del loro utilizzo) è impossibile sostenere la prova d'esame.

Link relativi alla lezione introduttiva del corso di Sistemi Operativi

Il link sono stati registrati in anni precedenti. Qualcuno di essi vale ancora, altri vanno aggiornati. Le slides usate nella presentazione del corso di Sistemi Operativi del 2014 (vedi sopra) dovrebbero contenere gli aggiornamenti per quasi tutti gli indirizzi al 2014:

http://www.top500.org/stats/list/30/osfam il database, aggiornato ogni sei mesi, dei computer più veloci del mondo
http://www.securityoffice.net/mssecrets/hotmail.html il famoso Hallowen document, il confronto tra UNIX e Windows fatto dagli ingegneri Microsoft (vedi anche Wikipedia in inglese sull'argomento)
http://www.kernel.org The Linux Kernel Archives
http://lxr.linux.no/ Un repositorio nel quale è possibile esplorare i kernel di diversi sistemi UNIX (es. Linux e Darwin) in maniera ipertestuale
http://www.tldp.org/ The Linux Documentation Project
http://developer.apple.com/darwin/ I sorgenti di Darwin (lo UNIX "sotto" Mac OS X) liberamente scaricabili
http://punto-informatico.it/p.aspx?i=2066523 La multa dell'UE alla Microsoft
http://www.comune.pisa.it/supp-istituzionale/Circolari/Dir19-12-2003pcm-InnTec.htm La "direttiva Stanca" sui programmi a sorgente aperto nella Pubblica Amministrazione
http://marketshare.hitslink.com/report.aspx?qprid=9 Statistiche sull'utilizzo reale dei vari sistemi operativi, browsers, motori di ricerca
http://www.w3schools.com/browsers/browsers_stats.asp Un altro sito di statistiche
http://jeremy.linuxquestions.org/2008/01/11/is-apple-killing-linux-on-the-desktop/ Un'analisi che concorda con le opinioni che ormai da diversi anni va esprimendo il titolare di questo corso
http://www.levenez.com/unix/ L'albero genealogico di UNIX
Un altro albero genealogico di UNIX
http://www.isinet.it/~marco/unix/index.shtml Una guida introduttiva a UNIX
http://www.freebsd.org/doc/it_IT.ISO8859-15/books/handbook/index.html Documentazione su FreeBSD
http://it.tldp.org/guide/GuidaUtente/index.html Una guida a Linux
http://it.tldp.org/guide/abs/ Una guida a bash

Link utili per il corso di Sistemi Operativi I (Anno Accademico 2007-2008)

The Open Group Base Specifications Issue 6 Il manuale delle Single UNIX Specification '03

Personal tools
Consiglio Didattico