Tags:
tag this topic
create new tag
view all tags
---+ Laboratorio di Sistemi Operativi I ---+++ Informatica e Tecnologie Informatiche ---++++ Anno Accademico 2004-2005 <b>Mailing list</b>: <a href="https://srv.inroma.roma.it/mailman/listinfo/sistemioperativi">sistemioperativi@di.uniroma1.it</a> ---+++ Docente * Ing. Giorgio Richelli (Informatica/Tecnologie Informatiche) --- * [[#DescrizionedelCorso][Descrizione del corso]] * [[#ProgrammadelCorso][Programma]] * [[ProgettoSO20042005][Progetto AA 2004/2005]] * [[%ATTACHURL%/gruppi-bygroup.pdf][Elenco dei Gruppi (ordinato per #gruppi)]] * [[%ATTACHURL%/gruppi-byname.pdf][Elenco dei Gruppi (ordinato per Cognomi)]] * [[%ATTACHURL%/OrarioLabSalaria.pdf][Orario del Laboratorio di Via Salaria]] * [[#FaqProgetto][FAQ]] * [[Progettino20042005][Progettino]] * [[ProgettoSO20032004][Progetto AA 2003/2004]] * [[GruppiInformatica0304][I gruppi di Informatica]] * [[GruppiTecnologie0304][I gruppi di Tecnologie Informatiche]] * [[ProgettiScorsi][Progetti assegnati negli anni scorsi]] * [[https://srv.inroma.roma.it/mailman/listinfo/sistemioperativi][Mailing List di Sistemi Operativi]] * [[#ModalitaEsame][Modalità d'esame]] * [[#DomandeRicorrenti][Domande ricorrenti]] * [[GliAppelli][Gli appelli]] --- ---++ Descrizione del corso #DescrizionedelCorso L'obbiettivo del corso è di far apprendere alcuni concetti fondamentali della programmazione concorrente. Componente essenziale del corso è lo sviluppo di un progetto in laboratorio, che aiuterà lo studente a familiarizzare con la programmazione di sistema in C, a fargli sviluppare manualità nell'utilizzo di Unix (GNU/Linux) e la capacità di analizzare sperimentalmente il comportamento di un sistema operativo moderno. #ProgrammadelCorso ---++ Programma * Introduzione * Sistema Operativo Unix, il Kernel * La programmazione in ambiente Unix/Linux, il compilatore, i Makefile, il debugger (gdb) [Tutorial [[http://users.actcom.co.il/~choo/lupg/tutorials/debugging/debugging-with-gdb.html][Debugging "C" And "C++" Programs Using "gdb"]]] * Il File System * File, directory, link * Primitive su file e directory (_open, read, write_ ...) [ALP B.1, B.2, B.5] [ALP B.6] * Diritti di accesso ai file [AL 72.1, 72.2 (parte 17)] * Cenni sulla struttura del filesystem, gli inode * Processi * Identificatore di un processo [ALP 3.1] * il ciclo di vita di un processo * La creazione di un processo: _fork,exec,wait_ [ALP 3.2] * Exit, gli Zombie [ALP 3.4] * La Shell * Passaggio di parametri [ALP 2.1.1, 2.1.2, 2.1.5] * Accesso alle variabili di environment [ALP 2.1.6] * Inter Process Communication [Cap. 8 del tutorial [[http://users.actcom.co.il/~choo/lupg/tutorials/multi-process/multi-process.html][Multi-Process Programming Under Unix]]] * Segnali, Semafori, Memoria Condivisa, Pipes * Socket (cenni) * Programmazione Parallela * Deadlock, Race conditions (esempi) ---+++++ [[PdfSlides0405][PDF dei lucidi utilizzati a Lezione]] ---+++++ [[Sources0405][Sorgenti degli esempi]] ---++++ Testi di riferimento *[ALP]* [[http://www.advancedlinuxprogramming.com][Advanced Linux Programming]], by Mark Mitchell, Jeffrey Oldham, and Alex Samuel, published by New Riders Publishing. ISBN 0-7357-1043-0. First Edition, June 2001. * [[%ATTACHURL%/advanced-linux-programming.pdf][advanced-linux-programming.pdf]]: Advanced Linux Programming (3.7 MB) *[AL]* [[http://www.a2.prosa.it][Appunti Linux]], di Daniele Giacomini, ultima edizione 21 luglio 2002 (Nota: l'intera opera consiste di circa 4700 pagine scaricabili in un unico file gzip di 22 mega. Per questo motivo, sotto trovate i link alle sole parti di nostro interesse). * [[%ATTACHURL%/a2-2002.07.21.4.a4.ps.gz][a2-2002.07.21.4.a4.ps.gz]]: Appunti Linux - Parte 4 (1.3 MB) * [[%ATTACHURL%/a2-2002.07.21.16.a4.ps.gz][a2-2002.07.21.16.a4.ps.gz]]: Appunti Linux - Parte 16 (138 KB) * [[%ATTACHURL%/a2-2002.07.21.17.a4.ps.gz][a2-2002.07.21.17.a4.ps.gz]]: Appunti Linux - Parte 17 (101 KB) ---++++ Testi consigliati Kay A. Robbins and Steven Robbins, %GREEN% Unix Systems Programming: Communication, Concurrency, and Threads%FINE%. Prentice Hall, 2003. W. Richard Stevens, %GREEN% Advanced Programming in the UNIX(R) Environment%FINE%. Addison-Wesley, 1992. ---++++ Altri riferimenti [[http://users.actcom.co.il/~choo/lupg/tutorials/index.html][Tutorials]] [[LezioneBorsisti][Esercitazione guidata in laboratorio]] [[Sistemioperativi1.LinuxLinks][Altra Documentazione Linux]] [[http://www.cs.cf.ac.uk/Dave/C/CE.html][Programming in C - UNIX System Calls and Subroutines using C]] [[LatexLinks][Documentazione Latex]] ---++++ Appunti [[%ATTACHURL%/GnuplotLatex.pdf][GnuplotLatex.pdf]]: in poche righe, come includere grafici Gnuplot in Latex. #ModalitaEsame ---++ Modalità d'esame Per poter sostenere l'esame di Laboratorio è _necessario_: * iscriversi come gruppo prima della data comunicata a lezione (orientativamente *entro giovedì 18 novembre*). * l'iscrizione può essere effettuata, personalmente a lezione oppure via email, comunicando: * i cognomi delle persone componenti il gruppo * almeno una delle userid dei componenti. * La userid è quella che ogni studente dovrebbe avere fin dal primo anno. Normalmente e' nella forma *u111(matricola)* oppure *(cognome)*, dove *(matricola)* è il numero di matricola dello studente e *(cognome)* il suo cognome. * consegnare il progetto 2004-2005 e la relazione entro la scadenza fissata. * prenotarsi tramite [[http://twiki.dsi.uniroma1.it/twiki/view/Prenotazioni/WebHome][l'apposita pagina]] almeno tre o quattro giorni prima dell'esame, per permettere di valutare la durata di ogni sessione Il progetto e' un lavoro di gruppo (max. 3 persone) che, in casi eccezionali, può essere svolto individualmente. In ogni caso, il progetto deve essere un lavoro originale del gruppo stesso. Non e' quindi possibile condividere parti di codice o relazione tra gruppi diversi. Discussioni tra gruppi, scambi di idee ed in genere tutto ciò che vi aiuta ad apprendere è invece legittimo ed apprezzato. Fate attenzione: effettueremo una verifica utilizzando un tool automatico, ed i casi di copiatura saranno sanzionati. Consegnato il progetto, esso darà la possibilità di sostenere l'esame entro _settembre 2006_. Sono inoltre validi fino a settembre 2005 i progetti consegnati durante l'anno accademico 2003-2004. Chi ha un progetto in corso di validità può accedere alla discussione individuale del progetto. Direttamente senza altri prerequisiti se iscritto ad uno dei due corsi 3+2. Solo dopo aver superato con voto sufficiente lo scritto e l'orale di Sistemi Operativi se iscritto al Diploma, alla Laurea quadriennale o alla Laurea quinquennale. La discussione del progetto può essere fatta in uno dei cinque appelli distribuiti durante l'anno nel seguente modo: tre a gennaio-febbraio, uno a giugno-luglio ed uno a settembre. #DomandeRicorrenti ---++ Domande ricorrenti _"Ma quali propedeuticità ha il corso di Laboratorio di Sistemi Operativi 1?"_ *Risposta*: A chi si è immatricolato nell'A. A. 2003/2004, le regole di propedeuticità richiedono di aver passato gli esami di _Programmazione 2_ e di _Architetture 2_, oltre a _tutti_ gli esami di matematica del primo anno (_Logica_, _Calcolo Differenziale_, _Calcolo Integrale_). Per gli immatricolati nell'A. A. 2002/2003 le regole sono diverse. In particolare, per il nostro corso non sono previste propedeuticità. Per gli immatricolati nell'A. A. 2001/2002 e precedenti, le regole sono diverse ancora, in generale. Nel nostro caso, però, non cambiano, e di nuovo non sono previste propedeuticità. Se vi interessa l'argomento anche per gli altri corsi, andate alla pagina http://w3.uniroma1.it/dipinfo/lauree/prop.asp. _"Ho passato l'esame! Ora come faccio a togliere la mia iscrizione alla mailing list?"_ *Risposta*: Bravo. Adesso, se vuole togliere la sua iscrizione alla mailing list, segua link riportato nel menu' in cima a questa pagina. Si troverà su una pagina dove, quasi in fondo, può inserire la sua e-mail ed editare alcune opzioni, tra cui la possibilità di togliersi dai membri della lista (_unsubscribe_). ---++ Domande ricorrenti degli studenti "vecchi" (iscritti al Corso di Laurea quinquennale, al Diploma, od al Corso di Laurea quadriennale) _"Ho consegnato il progetto ma non ho ancora passato lo scritto di Sistemi Operativi, adesso che il corso cambia, perdo tutto?"_ *Risposta*: No. Il progetto continua a valere secondo le regole specificate nelle modalità d'esame. _"Io ho già passato Sistemi Operativi+Laboratorio, quanti crediti mi saranno assegnati se passo alla Laurea di primo livello?"_ *Risposta*: 12 crediti. _"Io invece non ho ancora passato Sistemi Operativi, ma ho già consegnato il progetto di Laboratorio. Se faccio il passaggio di al nuovo ordinamento posso discutere il solo Laboratorio e verbalizzarlo?"_ *Risposta*: Si, entro la scadenza del suo progetto. _"Ed in questo caso, quanti crediti ottengo?"_ *Risposta*: 4 crediti. #FaqProgetto ---++ Domande ricorrenti sul progetto _"Cosa vuol dire 'il server esamina periodicamente il contenuto di una directory'?"_ *Risposta*: Significa che il processo che implementa il server eseguirà un loop infinito in cui viene aperta la directory specificata. Nel caso in cui esistano dei file questi verranno elaborati, uno per volta, come indicato nelle specifiche. Nel caso in cui, invece, la directory sia vuota, il server si sospenderà per un tempo limitato (qualche secondo) e ripeterà il ciclo. _"Devo necessariamente usare fork()/exec()?"_ *Risposta*: Si, per creare i processi 'calcolatori' deve essere usata la sequenza fork()/exec() _"E' possibile passare parametri sulla linea comando ad un processo 'figlio'?"_ *Risposta*: Si, senza esagerare. Si tenga presente che la lunghezza massima della linea comando, in genere, non può superare qualche KB. _"Quanto deve essere grande il buffer condiviso"?"_ *Risposta*: Una dimensione ragionevole è dell'ordine di qualche KB, come indicato anche [[ProgettoSO20042005#DimensioniBuffer][qui]] _"E' obbligatorio usare i semafori per la sincronizzazione?"_ *Risposta*: Si, per quanto riguarda l'accesso al buffer condiviso. E' possibile usare altre primitive di IPC per il resto del progetto _"Il file di output può essere scritto dai processi 'figli'?"_ *Risposta*: No. L'unico processo abilitato a leggere e scrivere file e' il 'server'. _"Come si effettua la consegna del progetto nell'account in laboratorio?"_ *Risposta*: Secondo le modalità definite [[ProgettoSO20042005#ModalitaConsegna][qui]] _"Quali funzioni si possono usare e quali no per lo sviluppo del progetto?"_ *Risposta*: In generale, si possono usare tutte le funzioni del Kernel e delle librerie standard, eccetto nella gestione dei file su disco, dove possono essere utilizzate solo le funzioni del Kernel. Esempi: sì a _atoi, sprintf, sscanf, sleep, strcat, strcmp_, *no* a _fopen, fclose, fread, fwrite_. ---++ Domande ricorrenti sul progettino _"Devo necessariamente usare fork()/exec()?"_ *Risposta*: No, per il progettino basta usare la fork(). E' però possibile, se desiderato, usare anche la exec(). _"E' possibile passare parametri sulla linea comando ad un processo 'figlio'?"_ *Risposta*: Si, Si veda anche quanto indicato per il progetto. _"In che modo devo assegnare il lavoro ai processi 'esploratori'?"_ *Risposta*: Esistono varie possibilità, tutte più o meno equivalenti. L'unica specifica da rispettare è che il lavoro non venga assegnato in modo completamente sbilanciato. _"Come posso leggere e scrivere i file di input/output?"_ *Risposta*: Usando le primitive read()/write() e, a scelta, sprintf(), sscanf(), atoi, eccetera. Si veda anche quanto indicato per il progetto. _"E' obbligatorio usare semafori/segnali, etc., per la sincronizzazione?"_ *Risposta*: In realtà, per il progettino non sarebbe necessario alcun meccanismo di IPC. _"Il file di output può essere scritto dai processi 'figli'?"_ *Risposta*: No. L'unico processo abilitato a leggere e scrivere file e' il padre. _"Come si effettua la consegna del progettino?"_ *Risposta*: Insieme al progetto, secondo le modalità definite [[ProgettoSO20042005#ModalitaConsegna][qui]] -- Users.GiorgioRichelli - 23 Dec. 2004
E
dit
|
A
ttach
|
Watch
|
P
rint version
|
H
istory
: r1
|
B
acklinks
|
V
iew topic
|
Ra
w
edit
|
M
ore topic actions
Topic revision: r1 - 2005-10-08
-
MassimoVerola
Log In
or
Register
Lab_so_1/AL Web
Create New Topic
Index
Search
Changes
Notifications
Statistics
Preferences
Prenotazioni esami
Laurea Triennale ...
Laurea Triennale
Algebra
Algoritmi
Introduzione agli algoritmi
Algoritmi 1
Algoritmi 2
Algoritmi per la
visualizzazione
Architetture
Prog. sist. digitali
Architetture 2
Basi di Dati
Basi di Dati 1 Inf.
Basi di Dati 1 T.I.
Basi di Dati (I modulo, A-L)
Basi di Dati (I modulo, M-Z)
Basi di Dati 2
Calcolo
Calcolo differenziale
Calcolo integrale
Calcolo delle Probabilitą
Metodi mat. per l'inf. (ex. Logica)
canale AD
canale PZ
Programmazione
Fond. di Programmazione
Metodologie di Programmazione
Prog. di sistemi multicore
Programmazione 2
AD
EO
PZ
Esercitazioni Prog. 2
Lab. Prog. AD
Lab. Prog. EO
Lab. Prog. 2
Prog. a Oggetti
Reti
Arch. di internet
Lab. di prog. di rete
Programmazione Web
Reti di elaboratori
Sistemi operativi
Sistemi Operativi (12 CFU)
Anni precedenti
Sistemi operativi 1
Sistemi operativi 2
Lab. SO 1
Lab. SO 2
Altri corsi
Automi, Calcolabilitą
e Complessitą
Apprendimento Automatico
Economia Aziendale
Elaborazione Immagini
Fisica 2
Grafica 3D
Informatica Giuridica
Laboratorio di Sistemi Interattivi
Linguaggi di Programmazione 3° anno Matematica
Linguaggi e Compilatori
Sistemi Informativi
Tecniche di Sicurezza dei Sistemi
ACSAI ...
ACSAI
Computer Architectures 1
Programming
Laurea Magistrale ...
Laurea Magistrale
Percorsi di studio
Corsi
Algoritmi Avanzati
Algoritmica
Algoritmi e Strutture Dati
Algoritmi per le reti
Architetture degli elaboratori 3
Architetture avanzate e parallele
Autonomous Networking
Big Data Computing
Business Intelligence
Calcolo Intensivo
Complessitą
Computer Systems and Programming
Concurrent Systems
Crittografia
Elaborazione del Linguaggio Naturale
Estrazione inf. dal web
Fisica 3
Gamification Lab
Information Systems
Ingegneria degli Algoritmi
Interazione Multi Modale
Metodi Formali per il Software
Methods in Computer Science Education: Analysis
Methods in Computer Science Education: Design
Prestazioni dei Sistemi di Rete
Prog. avanzata
Internet of Things
Sistemi Centrali
Reti Wireless
Sistemi Biometrici
Sistemi Distribuiti
Sistemi Informativi Geografici
Sistemi operativi 3
Tecniche di Sicurezza basate sui Linguaggi
Teoria della
Dimostrazione
Verifica del software
Visione artificiale
Attivitą complementari
Biologia Computazionale
Design and development of embedded systems for the Internet of Things
Lego Lab
Logic Programming
Pietre miliari della scienza
Prog. di processori multicore
Sistemi per l'interazione locale e remota
Laboratorio di Cyber-Security
Verifica e Validazione di Software Embedded
Altri Webs ...
Altri Webs
Dottorandi
Commissioni
Comm. Didattica
Comm. Didattica_r
Comm. Dottorato
Comm. Erasmus
Comm. Finanziamenti
Comm. Scientifica
Comm Scientifica_r
Corsi esterni
Sistemi Operativi (Matematica)
Perl e Bioperl
ECDL
Fondamenti 1
(NETTUNO)
Tecniche della Programmazione 1° modulo
(NETTUNO)
Seminars in Artificial Intelligence and Robotics: Natural Language Processing
Informatica generale
Primo canale
Secondo canale
II canale A.A. 10-11
Informatica
Informatica per Statistica
Laboratorio di Strumentazione Elettronica e Informatica
Progetti
Nemo
Quis
Remus
TWiki ...
TWiki
Tutto su TWiki
Users
Main
Sandbox
Home
Site map
AA web
AAP web
ACSAI web
AA2021 web
Programming web
AA2021 web
AN web
ASD web
Algebra web
AL web
AA1112 web
AA1213 web
AA1920 web
AA2021 web
MZ web
AA1112 web
AA1213 web
AA1112 web
AA1314 web
AA1415 web
AA1516 web
AA1617 web
AA1819 web
Old web
Algo_par_dis web
Algoreti web
More...
AL Web
Create New Topic
Index
Search
Changes
Notifications
RSS Feed
Statistics
Preferences
View
Raw View
Print version
Find backlinks
History
More topic actions
Edit
Raw edit
Attach file or image
Edit topic preference settings
Set new parent
More topic actions
Account
Log In
Register User
Questo sito usa cookies, usandolo ne accettate la presenza. (
CookiePolicy
)
Torna al
Dipartimento di Informatica
E
dit
A
ttach
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