Strumenti Utente

Strumenti Sito


informatica:sol:progr

Programma A.A. 2012/13

Obiettivi di apprendimento

Il corso è strutturato in due moduli: il primo modulo presenta i fondamenti dei sistemi operativi e il secondo modulo di laboratorio mostra un’applicazione concreta dei concetti teorici presentati nel primo modulo. Il primo modulo introduce i principi ed i concetti su cui si basano i sistemi operativi e analizza la loro realizzazione nei sistemi reali. In particolare, vengono presentate le tecniche che consentono di coordinare e gestire le risorse di un sistema di elaborazione e che permettono di trasformare la macchina fisica in una macchina astratta, dotata di funzionalità più convenienti per l'utente. Il corso lascia ampio spazio alla descrizione e all'esemplificazione di come i vari concetti presentati sono realizzati nei sistemi Unix/Linux e in quelli della famiglia Microsoft Windows. Il secondo modulo fornisce le conoscenze di base relative alla programmazione C con chiamate di sistema Unix/POSIX. In particolare, vengono prese in considerazione le chiamate standard per il trattamento di file e directory, processi, thread, segnali, pipe, socket e vari meccanismi di sincronizzazione.

Conoscenze. Lo studente raggiungerà la conoscenza delle problematiche dei sistemi operativi e delle caratteristiche dei sistemi attualmente più usati

Capacità. Lo studente raggiungerà la capacità di realizzare programmi in C usando librerie e chiamate di sistema UNIX/Posix.

Comportamenti. Il corso non si pone obiettivi di apprendimento in termini di comportamenti attesi.

Descrizione

Il corso tratta i fondamenti dei moderni sistemi operativi, presentando i concetti di base e la loro applicazione nei sistemi reali. I principali argomenti trattati sono:

  • Struttura dei sistemi operativi, nucleo. chiamate di sistema
  • Processi e threads
  • Gestione della memoria e dei dispositivi di ingresso/uscita
  • Archivi e sistema di archiviazione
  • Sistemi reali: Unix/Linux, Windows
  • Programmazione in C di sistemi UNIX/Posix

Modulo 1: Sistemi Operativi

Introduzione (2 ore)

  • Il sistema operativo: ruolo, funzionalità e struttura;
  • Evoluzione dei sistemi operativi: batch, multiprogrammazione, time-sharing
  • Richiami sul funzionamento dell’elaboratore: interruzioni e loro gestione, I/O,
  • Stato del processore, chiamate di sistema.

Organizzazione dei Sistemi Operativi (2 ore)

  • Funzionalità
  • Struttura: sistemi monolitici e modulari; sistemi stratificati; sistemi a microkernel
  • Organizzazione e funzionalità dei sistemi operativi Unix e Windows.

I processi (8 ore)

  • Il concetto di processo
  • Stati dei processi
  • Realizzazione dei processi nel Sistema Operativo
  • Operazioni sui processi
  • Processi e thread
  • La gestione dei processi e dei thread in Unix e in Windows: stati, rappresentazione, gestione (scheduling), operazioni e comandi

Interazione tra processi (8 ore)

  • Interazione mediante memoria condivisa: sincronizzazione; sezioni critiche e mutua esclusione; strumenti hardware per la mutua esclusione: test-and-set; semafori
  • Interazione mediante scambio di messaggi: comunicazione diretta/indiretta, simmetrica/asimmetrica; buffering.
  • Interazione tra processi in Unix: pipe e FIFO; segnali
  • Interazione tra processi in Windows

Gestione del processore (4 ore)

  • Concetti generali e politiche di scheduling
  • Algoritmi di scheduling: FCFS,SJF, con priorità, Round Robin, con code multiple.
  • Scheduling in Unix e in Windows.

Gestione della Memoria (10 ore)

  • Concetti generali: spazio degli indirizzi logico/fisico; collegamento
  • Allocazione della memoria: contigua: a partizione singola e partizioni multiple; frammentazione;
  • Allocazione della memoria non contigua: segmentazione; paginazione
  • Memoria virtuale
  • Gestione della memoria in Unix e in Windows.

Gestione dei dispositivi di I/O (6 ore)

  • I dispositivi di I/O e la loro gestione: concetti generali
  • Organizzazione e gestione dei dischi
  • RAID

Gestione degli Archivi (8 ore)

  • File system e sua realizzazione
  • Struttura logica; metodi di accesso
  • Struttura fisica; allocazione dei file
  • Protezione
  • Il file system di Unix: organizzazione logica e fisica, comandi e system calls per la gestione e l’accesso a file e directories
  • Il file system di Windows

Modulo 2: Laboratorio

Strumenti per la programmazione C in ambiente GNU (e dintorni) (2h lez + 2h ese)

  • compilazione e linking
  • suddivisione di un programma in moduli: gestione(make) e archiviazione (ar)
  • debugging
  • cenni ad altri tool

Unix e la shell (6h lez + 6h ese)

  • Unix: concetti di base, comandi/utility
  • La shell di Unix:
    • introduzione alla shell
    • cenni agli script
    • personalizzazione con alias ed opzioni e variabili
    • espansione (alias, storia, tilde, percorso, variabili, sostituzione di comando, espressioni aritmetiche)
    • quoting
    • Controllo dell'I/O: ridirezione
    • Exit status
    • Combinare comandi
    • pipelining
    • sequenza non condizionale
    • sequenze condizionali &&, ||
    • comandi composti (uso di {…} e (…) )
    • Operatori su stringhe (pattern matching)
    • Costrutti di controllo :condizionale (if) e test, iterazione limitata (for), scelta multipla (case), iterazione illimitata (while e do/while), menu' con select.
    • Read, exec, eval

C e la programmazione di sistema (1h lez)

  • cos'e' una System Call
  • gestione sistematica degli errori
  • consigli pratici di programmazione
  • convenzioni e commenti

I file (2h lez + 2 h ese)

  • concetti base dei FS Unix
  • operazioni di base (open, read, write, close, lseek)
  • link: concetti e system call per la gestione
  • manipolare e accedere alle informazioni sui file (stat, fcntl, ioctl) (brevi cenni)
  • gestione delle directory (opendir,readdir,…,closedir) (brevi cenni)
  • duplicazione di descrittori (dup e dup2)

I processi (2h lez + 2h ese)

  • il modello fork/exec
  • gestione dei figli (wait), exit status
  • atexit(), _atexit()

I thread (3h lez + 4h ese)

  • i modello a thread
  • creazione e distruzione
  • mutex e variabili di condizione
  • soluzione ti tipici problemi di concorrenza

Maccanismi di IPC : Pipe (2h lez + 2h ese)

  • Pipe anonime
  • Pipe con nome (FIFO)

Maccanismi di IPC : Socket (2h lez + 2h ese)

  • Modello client-server
  • Socket per comunicazione locale (AF_UNIX)
  • Socket per comunicazione in rete (AF_INET)

Segnali (2h lez + 2h ese)

  • Concetti generali: eventi asincroni, gestori di eventi
  • Ignorare, gestire, mascherare ed attendere i segnali
  • Segnali, processi e thread

Ore lezione: 52 Ore esercitazione: 40

Bibliografia

Libri di testo

  • Paolo Ancilotti, Maurelio Boari, Anna Ciampolini, Giuseppe Lipari: Sistemi Operativi (Seconda Edizione), Mc Graw-Hill, 2008.
  • Marc J. Rochkind. Advanced UNIX Programming 2nd Edition, Addison-Wesley Professional Computing Series, 2004.

Altri Testi Consigliati:

  • Andrew S. Tanenbaum. I Moderni Sistemi Operativi (Terza Edizione). Pearson Prentice Hall, 2009
  • Andrew S. Tanenbaum. Modern Operating Systems (Third Edition). Pearson-Prentice Hall, 2008
  • A. Silbershatz, P. Galvin, G. Gagne: Sistemi Operativi (5^ edizione), Apogeo, 2005
informatica/sol/progr.txt · Ultima modifica: 15/10/2012 alle 08:56 (12 anni fa) da Stefano Chessa