Sistemi Operativi
Anno Accademico 2008-2009
laurea ingegneria informatica (LII 509), 3º anno, 5 cfu
laurea magistrale ingegneria informatica (LMII 509), 1º anno, 5 cfu
sito dell'anno precedente
Docente: Maurizio Pizzonia
Orario di ricevimento studenti:
tutti i mercoledi' ore 17:30 - DIA stanza 225
Periodi: primo dal 1/10/2008 al 12/11/2008, e secondo dal 1/12/2008 al 23/1/2008 (prova d'esame solo a fine corso)
Orario: vedi sito del collegio didattico
Aula: N10
Risultati degli esami
Mailing list degli avvisi relativi al corso
Tutti gli studenti si devono iscrivere alla mailing list di avvisi tramite la quale potranno essere avvertiti tempestivamente di eventi relativi al corso e alle attività correlate (esami, ricevimento studenti, ecc).
http://list.dia.uniroma3.it/mailman/listinfo/so
L'archivio degli avvisi inviati alla mailing list e' disponibile on-line.
Solo il docente può inviare messaggi, gli studenti non possono postare messaggi alla mailing list.
Sintesi degli obiettivi del corso
Gli obiettivi del corso sono di fornire
- competenze sulla struttura di un generico sistema operativo moderno
- competenze sulla struttura di un sistema operativo Unix con particolare riferimento al sistema Linux
- conoscenza delle metodologie usate per risolvere le problematiche tipiche della gestione delle risorse in un sistema operativo moderno
- abilità nel uso di una piattaforma Unix a livello utente e amministratore
- abilità nello scripting Unix
- abilità di base nella programmazione di sistema
Materiale didattico
Programma delle Lezioni
Gran parte del materiale è adattato dal materiale distribuito da W. Stallings.
- Introduzione al corso
- architettura di un elaboratore, CPU, registri, esecuzione di una istruzione, interrupt, gerarchie di memoria, localita', I/O, chiamate di procedura
- Panoramica sui sistemi operativi moderni: definizione di sistema operativo, scopi, architettura a strati, kernel/user mode, caratteristiche salienti
- introduzione a linux
- documentazione in linea (man, info, less), organizzazione del filesystem, primi comandi (ls, pwd, cd, cat).
- la shell: bash, prompt, comandi interni ed esterni, help, variabili di abiente, env, $PATH, export;
- comandi per la gestione di file e directory: touch, mv, rm, cp, mkdir, rmdir
- editors e ambienti grafici: vi, emacs, X, window manager, gnome, kde, kwrite, gedit
- processi: dispatching, stati, descrizione e controllo
- introduzione a linux
- I/O redirection: stdin/out/err, pipelining, filtri, sort, tee, less.
- Panoramica sui formati compressi gz, bz2, zip, tar.
- Linux e shell: i processi, gli stati sleeping ready/running e stopped, terminali di controllo, ps, top, pstree, ^C, ^Z, processi in background, bg, fg, &, kill, kill -9, segnali
- tecniche di gestione della memoria centrale: partitioning, best/first/next fit, buddy algorithm, paging, segmentation
-
- shell: sostituzioni ed espansioni (brace, tilde, variabili, command, pathname), word splitting, stderr redirection append, filtri (sort, uniq, tr, grep)
- filtri: wc, head tail awk (patterns, statements, costrutti per il controllo di flusso, variabili, $0..$n, FS, OFS, RS, NR, NF, esempi d'uso).
- shell: Introduzione allo scripting: #!, parametri, for-do-done, seq, test, if-else-fi.
-
- Memoria virtuale. (parte del materiale è solo su slides),
Generalità: process address space, page fault, trashing, policies: fetch cleaning eviction placement, page buffering, load control, disk caching, memory mapped files.
Hw support: paginazione, page tables a più livelli, inverted page tables, TLB, considerazioni sulla grandezza delle pagine, segmentazione, segmentazione paginata
Resident set management: OPT, LRU, FIFO, CLOCK, aging.
Working set: PFF, cleaning policy, load control, process suspension.
-
c: intro, struttura, preprocessore, compilatore, linker. File oggetto. Compilazione con librerie statiche e dinamiche. Comandi cc, file, ldd, objdump, make
-
shell: strace, ltrace, time. Makefiles: regole, regole predefinite, variabili.
Debugger: gdb stepping, breakpoints, watching, backtrace. Comandi gdb: r, quit, b, info br, help, l, n, s, dis, del, bt, frame, c, ignore, cond, p, display.
- Scheduling a breve medio e lungo termine, algoritmi per cpu scheduling: FCFS, RR, VRR, SPN, SRT, FB, comparazioni, linux 2.6
- shell: diff, patch, tar, gzip, zip, bzip, strip, find, strace, ltrace.
- UNIX File Management, inode, Linux VFS, ext2
- linux filesystem: fdisk -l, mount, stat, ln, /proc/devices
- Disk Scheduling, RAID (materiale solo su slides)
-
- esercizio su system programming (invert) (soluzione completa, soluzione presentata a lezione con makefile "avanzato")
- shell: permessi, strace, ltrace; linux boot: init, getty, login, servizi, X, .bashrc; linux kernel: struttura dei sorgenti, configurazione, compilazione, moduli, installazione
- esercitazione su scripting
- altro materiale per la preparazione all'esame
- esercizio su system programming (random) e relativa soluzione
- domande di teoria
- esercizio su makefile (latex) con soluzione
- esercizio su C e gdb
Esami e valutazione
Per chi intende fare l'esame è obbligatorio iscriversi mediante il servizio di prenotazione on-line prenota.uniroma3.it (o sul portale dello studente quando questo lo sostituira').
L'esame prevede una prova di laboratorio che verte sia su argomenti di teoria sia su argomenti di pratica.
Testi della prova d'esame del 15 luglio 2009.
- testo d'esame, teoria e pratica in lab basato sul sistema moodle, soluzioni nel file "soluzioni.txt" accluso.
Testi della prova d'esame del 25 febbraio 2009.
- testo d'esame, teoria e pratica in lab basato sul sistema moodle, soluzioni nel file "soluzioni.txt" accluso.
Testi della prova d'esame del 25 settembre 2008.
Testi della prova d'esame del 8 luglio 2008.
Testi della prova d'esame del 10 aprile 2008.
Testi della prova d'esame del 12 settembre 2007.
Testi della prova d'esame del 24 luglio 2007:
Testi della prova d'esame del 23 aprile 2007:
Testi della prova d'esame del 21 settembre 2006:
Testi della prova d'esame del 7 luglio 2006:
Testi della prova d'esame del 28 aprile 2006:
Testi della prova d'esame del 20 settembre 2005:
Testi della prova d'esame del 18 luglio 2005:
Testi della prova d'esame del 26 aprile 2005:
Pagina del Collegio didattico di Ingegneria Informatica
Questa pagina è mantenuta da Maurizio Pizzonia.