Sistemi Operativi I
Anno Accademico 2004-2005
nuovo ordinamento, laurea specialistica, 1° anno, 5 cfu
Docente: Maurizio Pizzonia
Orario di ricevimento studenti: tutti i mercoledi' dalle 17:30 alle 18:30
Periodo: 24 febbraio 2005 - 8 aprile 2005
Orario: 15:45 - 17:15
Aula: N1
Risultati appello del 20 Settembre 2005
I risultati sono affissi vicino alla stanza DIA 225.
Avviso inviato sulla mailing list con i dettagli sulla verbalizzazione.
Mailing list degli avvisi relativi al corso.
Tutti gli studenti si devono iscrivere alla seguente mailing list di avvisi tramite la quale potranno essere avvertiti tempestivamente di eventi relativi al corso e alle attività correlate (esami, ricevimenti studenti, ecc).
http://pop.dia.uniroma3.it/mailman/listinfo/so1
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
Esami e valutazione
Per chi intende fare l'esame è obbligatorio iscriversi mediante il servizio di prenotazione on-line prenota.uniroma3.it
L'esame prevede una prova di laboratorio ed una prova scritta.
La prova di laboratorio ha l'obiettivo di verificare le capacità
dello studente nella
realizzazione di script e nella programmazione di sistema. Durante la prova di laboratorio
è possibile consultare la documentazione on-line.
La prova scritta ha l'obiettivo di verificare le conoscenze dello studente
degli aspetti metodologici e architetturali relativi ad i sistemi operativi.
Testi della prova d'esame del 26 aprile 2005:
Testi della prova d'esame del 18 luglio 2005:
Testi della prova d'esame del 20 settembre 2005:
Programma delle Lezioni
Gli argomenti in corsivo vanno considerati provvisori
Gran parte del materiale è adattato dal materiale distribuito da W. Stallings.
- Introduzione al corso (24 feb. 2005)
- architettura di un elaboratore, CPU, registri, esecuzione di una istruzione, interrupt, gerarchie di memoria, localita', I/O, chiamate di procedura (24-25 feb. 2005)
- Panoramica sui sistemi operativi moderni: definizione di sistema operativo, scopi, architettura a strati, kernel/user mode, caratteristiche salienti (25, 28 feb. 2005)
- introduzione a linux: bash, prompt, documentazione in linea (man e info), organizzazione del filesystem, primi comandi (ls, pwd, cd, cat, less) (28 feb. 2005)
-
Linux e shell: comandi interni ed esterni, help, variabili di
abiente, env, $PATH;
comandi per la gestione di file e directory: touch, mv, rm, cp,
mkdir, rmdir, vi, emacs (1 marzo 2005)
- processi: dispatching, stati, descrizione e controllo (1,3 marzo 2005)
- 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 (3 marzo 2005)
- tecniche di gestione della memoria centrale: partitioning, best/first/next fit, buddy algorithm, paging, segmentation (4,7 marzo 2005)
- shell: sostituzioni ed espansioni (brace, tilde, variabili, command, pathname), word splitting, standard i/o, pipelining, filtri (head, tail, tr) (8 marzo 2005)
- shell: redirection di stdin, stdout, stderr, append. filtri: sort, uniq, grep. Introduzione allo scripting: #!, parametri, for-do-done, seq, test, codice di ritorno, if-else-fi (10 marzo 2005)
- buddy system: free_block, dettagli implementativi, shell: filtri: wc, awk (patterns, statements, costrutti per il controllo di flusso, variabili, $0..$n, FS, RS, RN, NF, esempi d'uso) (11 marzo 2005)
- memoria virtuale: generalità, paginazione, page tables gerarchiche, inverted page tables, TLB, inverted page tables, segmentazione, segmentazione paginata (14,15 marzo 2005)
- memoria virtuale: demand paging, OPT, LRU, FIFO, CLOCK, aging, page buffering, RS management, working set, PFF, cleaning policy, load control, process suspension (16,17 marzo 2005)
-
C: struttura di un programma, puntatatori, argc, argv, valori di ritorno, compilatore, precompilatore, linker, loader. Compilazione con librerie statiche e dinamiche. Makefiles. Comandi cc, file, ldd, make (22 marzo 2005)
-
Makefiles: regole, regole predefinite, variabili. Debugger: stepping, breakpoints e contati, watching, backtrace. Comandi: gdb (r, b, l, info, bt, n, s, help, ecc) (23 marzo 2005).
- I/O Devices, Organization of the I/O Function, Operating System Design Issues, I/O Buffering, Disk Scheduling, RAID (1,4 aprile 2005)
- shell: diff, patch (4 aprile 2005)
- File Management, File Organization, Record Blocking, Secondary Storage Management, UNIX File Management, Linux VFS, ext2 (5 aprile 2005)
- linux filesystem: fdisk -l, mount, stat, ln, /proc/devices, (5 aprile 2005)
-
esercitazione su system programming e debugger. comandi: tar, gzip, zip, bzip, strip. (6 aprile 2005)
- shell: permessi, strace, ltrace; linux boot: init, getty, login, servizi, X, .bashrc; linux kernel: struttura dei sorgenti, configurazione, compilazione, moduli, installazione (7 aprile 2005)
- esercitazione su scripting
- una possibile soluzione all'esercizio su scripting "file identici" (7 aprile 2005)
- altro materiale per la preparazione all'esame
F. Quaglia, C. Demetrescu. "Programmazione in ambiente Unix"
HTML.it Guida al linguaggio C
Programming in C - UNIX System Calls and Subroutines using C,
The Linux kernel archives.
www.kernelhacking.org
The Linux Documentation Project
Italian Linux Documentation Project
Daniel P. Bovet, Marco Cesati - Understanding the Linux Kernel. O'Reilly.
Jonathan Corbet, Alessandro Rubini - Linux Device Drivers - O'Reilly (Under GNU Free Documentation License)
Jack Dent, Tony Gaddis - Guida a Unix con Linux - Apogeo
Pagina del Collegio didattico di Ingegneria Informatica
Questa pagina è mantenuta da Mauruizio Pizzonia.