---+!! %MAKETEXT{"Sistemi Operativi (II Modulo)"}% ---++ %MAKETEXT{"Anno Accademico 2011-2012"}% * *Docente Prof. [[http://www.dsi.uniroma1.it/~gabriell/][Emanuele Gabrielli]]* * Sede: Via Salaria, 113 - 3° Piano ---++ Mailing list: [[https://lists.inroma.roma.it/mailman/listinfo/sistemioperativi][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 <!-- * [[AvvisiLSO1][%RED% *Avvisi* %ENDCOLOR%]] --> * [[#ProdeDeut][Propedeuticità]] * [[#ObiettiviCorso][Obiettivi del Corso]] * [[#ProgrammaCorso][Programma del Corso]] * [[DidatticaLSO10809][ *Materiale Didattico* ]] * *Compiti d'Esame* * [[#LaboratorioCalcolo][Laboratorio di Calcolo]] * [[#ModalitaEsame][Modalità d'Esame]] * Date degli Appelli #ProdeDeut ---++ Propedeuticità Riferirsi alle regole esposte nella [[http://w3.uniroma1.it/dipinfo/corsi_di_studio/default.asp?iId=KKKDD][pagina omonima]] del sito dei [[http://w3.uniroma1.it/dipinfo/corsi_di_studio/default.asp?iId=LEFIF][ *Corsi di studio in Informatica* ]]. #ObiettiviCorso ---++ 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 #ProgrammaCorso ---++ 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 [[http://twiki.dsi.uniroma1.it/twiki/view/Sistemioperativi1/WebHome][ *Sistemi Operativi I* ]] ---+++ Altri testi consigliati ---++++ Linux * Ellen Siever, Aaron Weber, Stephen Figgins, %GREEN% _Linux in a Nutshell_ %FINE% , O'Reilly [[http://www.oreilly.com/catalog/linuxnut3/][O'Reilly Web Site]] * Machtelt Garrels, %GREEN% _Introduction to Linux, A Hands on Guide_ %FINE%, [[http://www.tldp.org/LDP/intro-linux/html/][HTML]] : [[http://www.tldp.org/LDP/intro-linux/intro-linux.pdf][PDF]] * L. Wirzenius, J. Oja, S. Stafford, A. Weeks, %GREEN% _The Linux System Administrator's Guide_ %FINE%, [[http://www.tldp.org/LDP/sag/html/][HTML]] : [[http://www.tldp.org/LDP/sag/sag.pdf][PDF]] * A. Lissot, K. Koehntopp, %GREEN% _Linux Partition HOWTO_ %FINE% [[http://www.tldp.org/HOWTO/Partition/][HTML]] : [[http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/pdf/Partition.pdf][PDF]] * E. S. Raymond, %GREEN% _The Linux Installation HOWTO_ %FINE% [[http://www.tldp.org/HOWTO/Installation-HOWTO/][HTML]] : [[http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/pdf/Installation-HOWTO.pdf][PDF]] ---++++ Editor Vi * %GREEN% _Vimbook-OPL_ %FINE% [[http://truth.sk/vim/vimbook-OPL.pdf][PDF]] * Bram Moolenaar, %GREEN% _VIM USER MANUAL_ %FINE% [[http://vimdoc.sourceforge.net/htmldoc/usr_toc.html][HTML]] ---++++ Bash scripting * Mike G, %GREEN% _Bash Programming Introduction HOW-TO_ %FINE%, [[http://www.tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html][HTML]] : [[http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/pdf/Bash-Prog-Intro-HOWTO.pdf][PDF]] * Machtelt Garrels, %GREEN% _Bash Guide for Beginners_ %FINE%, [[http://www.tldp.org/LDP/Bash-Beginners-Guide/html/][HTML]] : [[http://linux.com.hk/PenguinWeb/mirrors/LDP/LDP/Bash-Beginners-Guide/Bash-Beginners-Guide.pdf][PDF]] * Mendel Cooper, %GREEN% _Advanced Bash-Scripting Guide_ %FINE%, [[http://www.tldp.org/LDP/abs/html/index.html][HTML]] : [[http://www.tldp.org/LDP/abs/abs-guide.pdf][PDF]] ---++++++ Tutorials * %GREEN% _Steve's Bourne / Bash shell scripting tutorial_ %FINE% [[http://steve-parker.org/sh/sh.shtml][HTML]] ---++++ Programmi eseguibili * David Wheeler, %GREEN% _Program Library HOWTO_ %FINE%, [[http://www.tldp.org/HOWTO/Program-Library-HOWTO/][HTML]] : [[http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/pdf/Program-Library-HOWTO.pdf][PDF]] * Hongjiu Lu, %GREEN% _ELF: from the Programmer's Perspective_ %FINE% [[http://linux4u.jinr.ru/usoft/WWW/www_debian.org/Documentation/elf/elf.html][HTML]] : [[ftp://tsx-11.mit.edu/pub/linux/packages/GCC/elf.ps.gz][PDF]] * M. L. Haungs, %GREEN% _Executable and Linking Format_ %FINE% [[http://www.cs.ucdavis.edu/~haungs/paper/node10.html][HTML]] : [[http://www.skyfree.org/linux/references/ELF_Format.pdf][PDF]] ---++++++ Tutorials * %GREEN% _Compiling "C" And "C++" Programs On Unix Systems - gcc/g++_ %FINE% [[http://users.actcom.co.il/~choo/lupg/tutorials/c-on-unix/c-on-unix.html][HTML]] * %GREEN% _Building And Using Static And Shared "C" Libraries_ %FINE% [[http://users.actcom.co.il/~choo/lupg/tutorials/libraries/unix-c-libraries.html][HMTL]] * %GREEN% _Debugging "C" And "C++" Programs Using "gdb"_ %FINE% [[http://users.actcom.co.il/~choo/lupg/tutorials/debugging/debugging-with-gdb.html][HMTL]] * %GREEN% _Automating Program Compilation - Writing Makefiles_ %FINE% [[http://users.actcom.co.il/~choo/lupg/tutorials/writing-makefiles/writing-makefiles.html][HTML]] ---++++ Programmazione di sistema * W. Richard Stevens, %GREEN% _Advanced Programming in the UNIX Environment_ %FINE%, Addison Wesley, ISBN 0-201-56317-7, [[http://www.kohala.com/start/apue.html][W. Richard Stevens' Home Page]] * Mark Mitchell, Jeffrey Oldham, and Alex Samuel, %GREEN% _Advanced Linux Programming_ %FINE%, New Riders Publishing, ISBN 0-7357-1043-0, [[http://www.advancedlinuxprogramming.com/alp-folder][PDF]] ---++++++ Tutorials * %GREEN% _User-Level Memory Management in Linux Programming_ %FINE% [[http://www.informit.com/articles/article.asp?p=173438&seqNum=1][HTML]] * %GREEN% _Manipulating Files And Directories In Unix_ %FINE% [[http://users.actcom.co.il/~choo/lupg/tutorials/handling-files/handling-files.html][HTML]] * %GREEN% _The Process Model of Linux Application Development_ %FINE% [[http://www.informit.com/articles/article.asp?p=397655&seqNum=1][HTML]] #LaboratorioCalcolo ---++ Laboratorio di Calcolo * Informazioni sulla possibilità di utilizzo dei laboratiori di calcolo possono essere ottenute chiedendo agli assistenti. #ModalitaEsame ---++ Modalità d'esame <b>Primo insieme di regole, valido per chi non ha mai verbalizzato né Sistemi Operativi 1 né Laboratorio di Sistemi Operativi 1 negli anni passati:</b><br/> <br/> 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;<br/> <br/> regola 1.2) per fare l'orale sul I modulo, occorre aver superato l'orale sul II modulo;<br/> <br/> regola 1.3) chi supera l'orale sul II modulo è obbligato a sostenere l'orale sul I modulo nello stesso giorno;<br/> <br/> 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);<br/> <br/> <b>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):</b><br/> <br/> regola 2.1) chi ha verbalizzato Laboratorio di Sistemi Operativi 1, deve fare l'orale sul I modulo (vedere regola 1.4)<br/> <br/> 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)<br/> <br/> <b>Regole generali sulle validità di singole parti di esame (da applicare nel caso non venissero superate alcune prove):</b><br/> <br/> regola 3.1) l'esonero sul I modulo superato a febbraio 2012 verrà ritenuto valido fino a febbraio 2013; <br/> <br/> 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).<br/> <br/> regola 3.3) un progetto sufficiente viene considerato valido per l'orale sul II modulo fino a febbraio 2013; <br/> <br/> <b>Regole generali sui progetti di gruppo:</b><br/> <br/> 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)<br/> <br/> 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.<br/> <br/>
This topic: Lab_so_1/AL
>
WebHome
Topic revision: r14 - 2012-03-31 - LuigiMancini
Copyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback