Sistemi Operativi (II Modulo)

Anno Accademico 2011-2012

Mailing list: sistemioperativi@inroma.roma.it

Orario di ricevimento

  • Ricevimento di persona:
    • al termine delle lezioni o nell’intervallo
    • per appuntamento previa richiesta via e-mail
  • Ricevimento alternativo:
    • via e-mail tramite la lista Sistemi Operativi

Avvisi

Indice

Propedeuticità

Riferirsi alle regole esposte nella pagina omonima del sito dei Corsi di studio in Informatica .

Obiettivi del Corso

Il corso è strutturato per raggiungere i seguenti obiettivi:
  • fornire le nozioni necessarie per utilizzare un sistema GNU/Linux attraverso i principali comandi di base
  • descrivere le modalità di interazione con la shell e le sue funzionalità
  • insegnare le basi per la programmazione in linguaggio script (bash)
  • introdurre la programmazione avanzata in ambiente GNU/Linux mediante system call
  • insegnare a scrivere programmi che utilizzino correttamente le system call per l'allocazione di memoria, per l'accesso ai file, per il controllo dei processi e per lo scambio di segnali e messaggi tra processi Inoltre, mediante continui richiami a nozioni esposte in altri corsi, verranno chiariti ulteriormente alcuni concetti duali fondamentali, quali ad esempio:
  • applicazione utente / kernel
  • compilatore / interprete
  • memoria di processo statica / dinamica
  • libreria dinamica / statica
  • libreria C standard / system call

Programma

  • Introduzione al corso
    • Obiettivi del corso
    • Libri e guide consigliati, manuali di riferimento
    • Sito Web del corso
    • Orari di ricevimento e contatti
    • Argomenti del corso
    • Prove d'esame

  • Introduzione all'uso di Linux
    • Login/logout
    • Interfacce verso l'utente: a comandi e grafica
    • Filesystem:
      • struttura gerarchica
      • file, directory, file speciali
      • attributi standard dei file
      • link hard e soft
      • comandi di navigazione del filesystem e manipolazione file
    • Processi:
      • attributi e priorità
      • lancio, sospensione, terminazione, interruzione
      • monitoraggio

  • La shell
    • Tipi di shell
    • Caratteristiche delle shell
    • Comandi built-in e programmi di sistema
    • Processi in foreground e background
    • Modifica dell'I/O dei processi: redirezione, pipe
    • Command substitution
    • Wildcards
    • Sequenze di comandi e raggruppamento di comandi

  • Programmi eseguibili
    • Ciclo di vita di un programma: dall'editing all'esecuzione
    • Struttura del file eseguibile
    • Mappa di memoria del processo
    • Il compilatore GNU C gcc e il linker ld
    • Formato ELF e binutils
    • Eseguibili, librerie statiche, shared objects
    • Il debugger gdb
    • Ausilio alla compilazione: make

  • Programmazione di sistema
    • Introduzione alle system call
    • Funzioni per l'allocazione della memoria:
      • malloc, free (standard library)
      • Memory leak, buffer overflow
    • System call per la gestione dei file:
      • open, read, write, lseek, close
      • manipolazione del file descriptor o di parametri di file o device: dup, fnctl, ioctl
      • sincronizzazione su file: select
      • estrazione di informazioni: stat
      • modifica di attributi e proprietà: chmod, chown
      • link hard e soft: link, unlink, rename, symlink
      • operazioni su directory: mkdir, rmdir, opendir, chdir
    • System call per il controllo dei processi:
      • attributi dei processi: getpid, getppid, get/setuid, get/setgid
      • creazione e terminazione di processi: fork, exit, abort
      • sincronizzazione tra processi padre-figlio: wait, waitpid
      • la famiglia di system call exec
      • ambiente di un processo, working directory e root directory
    • Segnali e pipe:
      • segnali
      • pipe
      • named-pipe (FIFO)

Testo di riferimento

Trattandosi di un corso di laboratorio, non dovrebbe essere necessario il ricorso ad uno specifico libro di testo. In generale il materiale reperibile su questa pagine o direttamente su internet, unito alla documentazione ed alle man pages del sistema operativo, sono sufficienti per lo svolgimento del progetto. Per una trattazione sistematica e approfondita dei concetti relativi ai sistemi operativi, si può fare riferimento ai libri di testo consigliati per l'esame di Sistemi Operativi I

Altri testi consigliati

Linux

  • Ellen Siever, Aaron Weber, Stephen Figgins, Linux in a Nutshell , O'Reilly O'Reilly Web Site
  • Machtelt Garrels, Introduction to Linux, A Hands on Guide , HTML : PDF
  • L. Wirzenius, J. Oja, S. Stafford, A. Weeks, The Linux System Administrator's Guide , HTML : PDF
  • A. Lissot, K. Koehntopp, Linux Partition HOWTO HTML : PDF
  • E. S. Raymond, The Linux Installation HOWTO HTML : PDF

Editor Vi

  • Vimbook-OPL PDF
  • Bram Moolenaar, VIM USER MANUAL HTML

Bash scripting

  • Mike G, Bash Programming Introduction HOW-TO , HTML : PDF
  • Machtelt Garrels, Bash Guide for Beginners , HTML : PDF
  • Mendel Cooper, Advanced Bash-Scripting Guide , HTML : PDF

Tutorials
  • Steve's Bourne / Bash shell scripting tutorial HTML

Programmi eseguibili

  • David Wheeler, Program Library HOWTO , HTML : PDF
  • Hongjiu Lu, ELF: from the Programmer's Perspective HTML : PDF
  • M. L. Haungs, Executable and Linking Format HTML : PDF

Tutorials
  • Compiling "C" And "C++" Programs On Unix Systems - gcc/g++ HTML
  • Building And Using Static And Shared "C" Libraries HMTL
  • Debugging "C" And "C++" Programs Using "gdb" HMTL
  • Automating Program Compilation - Writing Makefiles HTML

Programmazione di sistema

  • W. Richard Stevens, Advanced Programming in the UNIX Environment , Addison Wesley, ISBN 0-201-56317-7, W. Richard Stevens' Home Page
  • Mark Mitchell, Jeffrey Oldham, and Alex Samuel, Advanced Linux Programming , New Riders Publishing, ISBN 0-7357-1043-0, PDF

Tutorials
  • User-Level Memory Management in Linux Programming HTML
  • Manipulating Files And Directories In Unix HTML
  • The Process Model of Linux Application Development HTML

Laboratorio di Calcolo

  • Informazioni sulla possibilità di utilizzo dei laboratiori di calcolo possono essere ottenute chiedendo agli assistenti.

Modalità d'esame

Primo insieme di regole, valido per chi non ha mai verbalizzato né Sistemi Operativi 1 né Laboratorio di Sistemi Operativi 1 negli anni passati:

regola 1.1) per poter fare l'orale sul II modulo, occorre aver consegnato un progetto sul II modulo (indicativamente, le date di consegna dei progetti sono fissate circa una settimana prima degli appelli) che sia stato valutato almeno sufficiente;

regola 1.2) per fare l'orale sul I modulo, occorre aver superato l'orale sul II modulo;

regola 1.3) chi supera l'orale sul II modulo è obbligato a sostenere l'orale sul I modulo nello stesso giorno;

regola 1.4) l'orale sul I modulo è considerato automaticamente superato per coloro che abbiano avuto almeno la sufficienza all'esonero di febbraio 2012 (a discrezione della commissione, è tuttavia possibile richiedere comunque un orale);

Secondo insieme di regole, valido per chi abbia verbalizzato uno tra Sistemi Operativi 1 e Laboratorio di Sistemi Operativi 1 negli anni passati (queste regole valgono anche per gli studenti che aderiscono al progetto INCOS):

regola 2.1) chi ha verbalizzato Laboratorio di Sistemi Operativi 1, deve fare l'orale sul I modulo (vedere regola 1.4)

regola 2.2) a chi ha verbalizzato Sistemi Operativi 1, si applica la regola 1.1 (occorre quindi fare il progetto e discutere l'orale sul II modulo)

Regole generali sulle validità di singole parti di esame (da applicare nel caso non venissero superate alcune prove):

regola 3.1) l'esonero sul I modulo superato a febbraio 2012 verrà ritenuto valido fino a febbraio 2013;

regola 3.2) l'orale superato sul II modulo cui poi non faccia seguito il superamento dell'orale sul I modulo verrà considerato valido fino a febbraio 2013 (fino alla sessione estiva del 2013 per chi supera il II modulo a febbraio 2013).

regola 3.3) un progetto sufficiente viene considerato valido per l'orale sul II modulo fino a febbraio 2013;


Regole generali sui progetti di gruppo:

regola 4.1) il voto sul progetto ha validità sull'intero gruppo, mentre l'orale sul II modulo, pur avvenendo collettivamente, è individuale (quindi è possibile che il progetto sia sufficiente, e che poi solo alcuni componenti del gruppo superino l'orale sul II modulo)

regola 4.2) è fortemente consigliato che tutti i componenti di un gruppo si presentino allo stesso appello per discutere l'orale sul II modulo. Sono tuttavia previste eccezioni in documentati casi particolari da comunicare con tempestività alla commissione d'esame.


This topic: Lab_so_1/AL > WebHome
Topic revision: r14 - 2012-03-31 - LuigiMancini
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback