Sistemi Operativi
Professore:
Maurizio Pizzonia
Email: pizzonia@dia.uniroma3.it
- 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
Programma del Corso
- 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 - processi:
dispatching, stati, descrizione e controllo, modelli tipici di sistemi operativi e di uso della memoria nei processi - 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
- documentazione in linea (man, info, less), organizzazione del
- 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- esercizi pratici sull’uso di GNU/Linux da fare in laboratorio: uso della
documentazione on-line e primi comandi
- esercizi pratici sull’uso di GNU/Linux da fare in laboratorio: uso della
- tecniche di gestione
della memoria centrale: allocatori di memoria, partitioning, best/first/next fit, buddy
algorithm, paging, segmentation - introduzione a linux
- I/O redirection: stdin/out/err, pipelining, filtri, sort,
tee, less.
- I/O redirection: stdin/out/err, pipelining, filtri, sort,
-
- esercizi su processi e gestione della memoria
-
shell: sostituzioni ed espansioni (brace, tilde, variabili, command,
pathname), word splitting, stderr redirection append, filtri (sort,
uniq, tr). - grep, egrep e le espressioni regolari
- filtri: wc, head
tail awk (patterns, statements, costrutti per il controllo di flusso,
variabili, $0..$n, FS, OFS, RS, NR, NF, esempi d’uso).- esercizi pratici sull’uso di GNU/Linux da fare in laboratorio: filtri,
grep e awk
- esercizi pratici sull’uso di GNU/Linux da fare in laboratorio: filtri,
- Memoria virtuale.
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.- esercizi su memoria
virtuale
- esercizi su memoria
- Scheduling a
breve medio e lungo termine, algoritmi per cpu scheduling:
FCFS, RR, VRR, SPN, SRT, FB, comparazioni, linux 2.6 - c: intro, struttura, preprocessore, compilatore, linker. File
oggetto.
Compilazione con librerie statiche e dinamiche. Comandi cc, gcc, file, ldd,
objdump - shell: strace, ltrace, time.
-
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. - Disk Scheduling, RAID
- shell: tar, gzip, strip, permessi dei files.
- linux filesystem: stat, ln
- linux filesystem: fdisk -l, mount, stat, ln
- UNIX File Management, inode, Linux VFS, ext2