Vai al contenuto principale
Oggetto:
Oggetto:

Sistemi Operativi

Oggetto:

Operating Systems

Oggetto:

Anno accademico 2022/2023

Codice dell'attività didattica
MFN0601
Docenti
Daniele Gunetti (Corso A)
Cristina Baroglio (Corso B)
Massimiliano De Pierro (Turno 1 C + Turno 4 C)
Daniele Paolo Radicioni (Turno 1 Unix)
Enrico Bini (Turno 2 C + Turno 2 Unix + Turno 3 C + Turno 3 Unix)
Claudio Schifanella (Docente)
Corso di studi
[008707] Laurea in Informatica
Anno
2° anno
Periodo didattico
Primo semestre
Tipologia
Caratterizzante
Crediti/Valenza
12 CFU - Numero di ore - Number of hours: 48 (in aula) + 60 (in laboratorio)
SSD dell'attività didattica
INF/01 - informatica
Modalità di erogazione
Tradizionale
Lingua di insegnamento
Italiano
Modalità di frequenza
Facoltativa
Tipologia d'esame
Scritto più orale facoltativo
Prerequisiti

A studentesse e studenti è richiesta una conoscenza di base dell’architettura di un computer (secondo quanto studiato nel corso di Architetture degli Elaboratori I) e dei concetti di base di programmazione (secondo quanto studiato nel corso di Programmazione I). Studentesse e studenti dovranno inoltre essere in grado di padroneggiare i sistemi di numerazione binario (base due) ed esadecimale (base sedici).
Insegnamenti propedeutici (forniscono le competenze attese in ingresso):
   * Architettura degli Elaboratori I
   * Programmazione I
Students must have a basic knowledge of computer architectures (accordingly to what studied in the course: Computer Architeture I) and of computer programming (accordingly to what studied in the course: Computer Programming I). Students must also be able to master the binary and hexadecimal numerical systems.
Preparatory Courses (providing the expected entry skills):
   * Computer Architecture I
   * Computer Programming I
.

Oggetto:

Sommario insegnamento

Oggetto:

Obiettivi formativi

Il sistema operativo costituisce l’interfaccia fondamentale tra l’utilizzatore di un computer e il computer stesso. Parte essenziale del curriculum di base di una laureata o  laureato in informatica è la conoscenza di come il sistema operativo sia in grado di amministrare le varie componenti hardware di cui è composto un computer. Queste modalità di amministrazione devono essere il più possibile trasparenti alla generica utilizzatrice o al  generico utilizzatore del computer, ma devono essere conosciute a fondo da ogni specialista del settore. L’insegnamento fornisce dunque una conoscenza di base dell'architettura interna e del funzionamento dei moderni sistemi operativi, e di come, ai fini di garantire un ragionevole compromesso tra efficienza, sicurezza e facilità d’uso, vengono amministrate le risorse fondamentali della macchina su cui il sistema operativo è installato: il processore, la memoria principale e la memoria secondaria. L'obiettivo di insegnare i sistemi operativi fa dunque parte degli Obiettivi formativi specifici del CdS in Informatica (L31), in particolare è tra quelli relativi all'area informatica di base. Per la parte di laboratorio gli obiettivi formativi sono l’apprendimento del linguaggio C, utilizzato per la programmazione nell’ambiente del sistema operativo Unix. La parte di laboratorio mira a fornire alla studentessa e allo studente una conoscenza (teorica e pratica) di base sui comandi della shell, sulla gestione dei processi, sugli strumenti di inter-process communication e sulla gestione dei segnali forniti dal sistema, oltre che alcuni rudimenti di programmazione bash. I temi introdotti durante il laboratorio corredano e integrano le conoscenze derivanti dalla parte teorica (knowledge and understanding), al tempo stesso presentando esempi di problemi realistici di comunicazione e sincronizzazione su cui studentesse e studenti sono sollecitati a cimentarsi, anche investigando soluzioni alternative (applying knowledge and understanding). La preparazione e la discussione del progetto sono inoltre volte a stimolare le capacità di organizzare il lavoro in piccoli gruppi (2-3 studentesse/studenti), e poi di illustrare verbalmente le soluzioni adottate (communication skills). TUTTE LE INFORMAZIONI SUL CORSO E IL MATERIALE DIDATTICO SI TROVERANNO IN MOODLE.
The Operating System is fundamental interface between a computer and a computer user. An essential part of the basic curriculum of every graduate in computer science is the knowledge of how an Operating System administers the various hardware components of a computer. Such administration must be as much as possible transparent to the generic user, but must be known in depth by any computer professional. Therefore, the course provides the basic knowledge of the internal architecture and functioning of modern operating systems, and how, in order to provide a reasonable trade-off between performance, security and ease of use, the fundamental resources of the machine are administered: the processor, the main memory and the secondary memory.
The goal of teaching Operating Systems is part of the Specific Learning Objectives of the CdS in Computer Science (L31), specifically it is among those related to the basic computer science area. For the laboratory part, the teaching objectives are learning the C language to deelop programs within the Unix environment. The laboratory part aims to provide the student a basic knowledge (both theoretical and practical) of shell commands, of process administration, of inter-process communication and signal handling, together with some basics of bash programming. Themes introduced in the laboratory part integrates the knowledge coming from the theoretical part (knowledge and understanding) at the same time presenting examples of realistic problems of communication and syncronization, on which students are asked to investigate and find alternative solutions (applying knowledge and understanding). Preparing and discussing the final assignement will stimulate students' hability to work in small groups and to present to an audience the adopted solutions (communications skills). All practical information and teaching material will be available on moodle. .

Oggetto:

Risultati dell'apprendimento attesi

Le studentesse e gli studenti acquisiranno la conoscenza dell'architettura e del funzionamento dei moderni sistemi operativi, e dovranno essere in grado di ragionare sulle prestazioni fornite dal sistema e su eventuali inefficienze. Avranno inoltre appreso i fondamenti della programmazione C e concorrente e la capacità di sviluppare programmi concorrenti in grado di interagire fra loro senza causare anomalie o blocchi del sistema. Infine, avranno una conoscenza di base di come le risorse della macchina (in particolar modo il tempo di CPU, lo spazio di memoria primaria e lo spazio di memoria secondaria) possano essere sfruttate al meglio. Le studentesse e gli studenti dovranno essere in grado di sviluppare programmi scritti nel linguaggio C, e programmi di sistema e concorrenti codificati con i comandi propri dell’ambiente del sistema operativo Unix; dovranno inoltre essere in grado di ragionare su alcuni problemi di comunicazione fra processi e sincronizzazione utilizzando gli strumenti introdotti durante il laboratorio.

CONOSCENZA E CAPACITÀ DI COMPRENSIONE: le studentesse e gli studenti acquisiranno la padronanza della terminologia tecnica dei sistemi operativi e del loro funzionamento, in particolare del modo in cui riescono ad amministrare tutte le risorse di un computer e di come garantiscono in modo trasparente agli utenti i diversi tipi di servizi forniti. La conoscenza del linguaggio C e dell'ambiente Unix permetterà loro di ragionare sul caso più paradigmatico di sistema operativo oggi esistente.

CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONE: le studentesse e gli studenti acquisiranno le competenze di base per ragionare sul funzionamento (ed eventuale mal funzionamento) di un generico sistema operativo, e su come si possa intervenire per modificare o migliorare le prestazioni in base allo specifico sistema e al contesto in cui è utilizzato.

AUTONOMIA DI GIUDIZIO: le studentesse e gli studenti saranno in grado di compiere in modo autonomo scelte e decisioni che impattano sull'installazione di un sistema operativo, sulla sua configurazione e sul suo funzionamento, incluse eventualmente le caratteristiche hardware che deve avere la macchina su cui il sistema operativo viene installato.

ABILITÀ COMUNICATIVE: la terminologia specifica dei sistemi operativi e la loro configurazione interna, acquisita dalle studentesse e dagli studenti e testata in fase di esame, permetterà loro di interloquire con altre figure professionali informatiche nonché con utenti eventualmente non competenti in materia.

CAPACITÀ DI APPRENDIMENTO: acquisizione di capacità autonome di apprendimento e di autovalutazione sugli argomenti del corso.

 Students will acquire knowledge on the architecture and the functioning of modern operating systems, and will be able to think about the performance provided by the system and about any inefficiencies. They will also learn the fundamentals of the C language and concurrent programming principles, along with the ability to develop concurrent programs that interact with each other without causing glitches or crashes. Finally, a basic understanding will be gained on how machine resources (especially CPU time, primary memory space, and secondary memory space) can be best utilized. After completing this course, students must be able to develop programs written in the C language, to develop system and concurrent programs coded with the commands proper to the Unix operating system environment; additionally, they will be able to think about some communication problems between processes and synchronization issues using the tools introduced during the laboratory.

KNOWLEDGE AND UNDERSTANDING:students will master the technical terminology of operating systems and their functioning, in particular the way in which they manage to administer all the resources of a computer and how they transparently guarantee the different types of services provided to users. knowledge of the C language and of the Unix environment will allow them to reason about the most paradigmatic case of operating system existing today.

APPLYING KNOWLEDGE AND UNDERSTANDING: students will acquire the basic skills to think about the functioning (and possible malfunctioning) of a generic operating system, and how one can intervene to modify or improve its performance based on the specific system and the context in which it is used.

MAKING JUDGEMENTS: students will be able to autonomously make choices and decisions that impact on the installation of an operating system, its configuration and its functioning, possibly including the hardware characteristics of the machine involved.

COMMUNICATION SKILLS: the specific terminology of the operating systems and their internal configuration, acquired by the students and tested during the exam, will allow them to interact and reason with other IT professionals as well as with users who may not be competent in the field.

LEARNING SKILLS: acquisition of autonomous learning and self-assessment skills on the topics of the course

Oggetto:

Modalità di insegnamento

L’insegnamento è diviso in una parte di teoria e una di laboratorio. Per la parte di teoria sono previste 48 ore di lezione frontali che seguono il programma riportato qui sopra, integrate da casi di studio e da esercitazioni volte ad illustrare l’applicazione pratica dei concetti appena studiati. La parte di laboratorio è articolata in due moduli da 30 ore ciascuno, il primo avente per oggetto l’insegnamento del linguaggio C, e il secondo rivolto alla programmazione in ambiente UNIX. Le lezioni si svolgono in maniera interattiva e sono corredate da vari esercizi miranti a fornire esempi pratici.
Teaching is arranged into a theory part and a laboratory part. For the theory part, there are 48 hours of frontal lessons that follow the program shown below, supplemented by case studies and exercises aimed at illustrating the practical application of the concepts just studied. The laboratory part is divided into two modules of 30 hours each, the first having as its object the teaching of the C language, and the second one aimed at programming in the UNIX environment. The lessons take place in an interactive way and are accompanied by various exercises intended to provide practical examples.

Oggetto:

Modalità di verifica dell'apprendimento

Per superare l'esame di sistemi operativi le studentesse e gli studenti devono ottenere un punteggio sufficiente (almeno 18) nelle prove in cui si articola l’esame, che dovranno essere sostenute nel seguente ordine: - 1) Prova di laboratorio: consiste nella discussione individuale del progetto di laboratorio ed è finalizzata a valutare le competenze acquisite nei moduli di laboratorio. Più precisamente saranno valutati sia gli strumenti insegnati nel modulo Unix, sia le competenze inerenti il linguaggio C. - 2) Prova scritta: è finalizzata a valutare le competenze acquisite sugli argomenti insegnati nel modulo di teoria e C. In generale potrà essere composta da domande aperte, domande chiuse a scelta multipla, esercizi. - 3) Orale facoltativo. Può essere sostenuto solo avendo preso nella prova scritta almeno 26/30. Integra il voto ottenuto sostenendo le parti di esame 1) e 2), e permette di prendere un voto massimo di 30/30 e lode. Il voto finale sarà ottenuto come somma pesata dei voti conseguiti nelle prove descritte.
To pass the exam, students must obtain a sufficient score (at least 18 out of 30) in the tests that make up the exam, which must be taken in the following order: - 1) Laboratory test: individual discussion of the laboratory project, aimed at evaluating the skills acquired in the laboratory modules. More precisely, both the tools taught in the Unix module and the skills inherent in the C language will be evaluated. - 2) Written test: aimed at evaluating the skills acquired on the topics taught in the theory and C module. In general, it may consist of open questions, multiple choice closed questions, exercises. - 3) Optional oral. It can be taken only having obtained at least 26/30 in the written test. It supplements the mark obtained by taking exam parts 1) and 2), and allows for a maximum mark of 30/30 cum laude. The final mark will be obtained as the weighted sum of the marks obtained in the tests described.

Oggetto:

Programma

NOTA: Par la parte di teoria, il programma è basato sul TESTO DI RIFERIMENTO. PARTE DI TEORIA:

   * Introduzione al Corso di Sistemi Operativi

   * PARTE I: GENERALITA'

         o Introduzione (cap. 1)

         o Strutture dei Sistemi Operativi (cap. 2)

   * PARTE II: GESTIONE DEI PROCESSI

         o Processi (cap. 3) 

         o Thread (cap. 4) 

         o Scheduling della CPU (cap. 5) 

         o Sincronizzazione dei Processi (cap. 6) 

         o Deadlock (Stallo di Processi) (cap. 7) 

   * PARTE III: GESTIONE DELLA MEMORIA (PRIMARIA)

         o Memoria Centrale (cap. 8) 

         o Memoria Virtuale (cap. 9) 

   * PARTE IV: GESTIONE DELLA MEMORIA SECONDARIA

         o Interfaccia del File System (cap. 10) 

         o Realizzazione del File System (cap. 11) 

         o Memoria Secondaria e Terziaria (Gestione dell'Hard disk) 

==================== PARTE DI LABORATORIO:

  • Linguaggio C
  • Introduzione a Unix (comandi, shell, file system, diritti d'accesso, ridirezione, pipe)
  • Make e makefile
  • System call per la creazione e la sincronizzazione di processi
  • System call per l'Inter-Process Communication e per la gestione di segnali
  • Esercitazioni pratiche, in particolare: esercitazioni finalizzate ad imparare il linguaggio C, ad utilizzare Unix e a sviluppare programmi concorrenti
Please note: for the theory of the course, the content is based on the referring teaching book. THEORY:
   * Introduction to Operating systems

   * PART I: GENERALITIES

         o Introduction (chap. 1)

         o Structure of Operating Systems (chap. 2)

   * PART II: PROCESS MAMAGEMENT

         o Processes (chap. 3) 

         o ThreadS (chap. 4) 

         o CPU Scheduling (chap. 5) 

         o Process syncronization (chap. 6) 

         o Deadlock (chap. 7) 

   * PART III: MEMORY ADMINISTRATION

         o Central Memory (chap. 8) 

         o Virtual Memory (chap. 9) 

   * PART IV: SECONDARY MEMORY ADMINISTATION

         o File System Interface (chap. 10) 

         o File System Implementation (chap. 11) 

         o Secondary and Tertiary memory (chap. 12) 

==================== LABORATORY:
  • C language
  • Introduction to Unix (commands, shell, file system)
  • Make and makefile
  • System call: processes creation and sincronization
  • System call: interprocess communication and signal handling
  • Practical exercise to develop C programs, to use the Unix system and to write concurrent programs in Unix environment. .
  • Testi consigliati e bibliografia

    Oggetto:

    Teoria (TESTO DI RIFERIMENTO):

    Silberschatz-Galvin-Gagne. Sistemi Operativi - ottava, nona o decima edizione -; Agli studenti sono anche resi disponibili fin dall’inizio del corso i lucidi usati dal docente nelle lezioni di teoria.

    Laboratorio:

    • A. Kelley e I. Pohl: "C didattica e programmazione" (presente in Biblioteca)
    • R. Stevens, S. Rago: "Advanced Programming in the UNIX Environment", 2a ed., Addison Wesley
    • M.J. Bach: "The Design of the UNIX Operating System", Prentice-Hall International Editions (L3167), per la parte relativa all'implementazione del kernel Unix.
    • S.R. Bourne: "The Unix System" (L1856, L1803, L2140)
    • K. Christian: "The Unix Operating System", John Wiley & Sons (L3147)

    Theory (Referring text):

    Silberschatz-Galvin-Gagne. Operating Systems-Eighth, Ninth or Tenth Edition; Transparencies used by the lecturer in theory classes are also made available to students from the beginning of the course.

    Laboratory:

    • A. Kelley e I. Pohl: "C didattica e programmazione" (available in the Dept. Library)
    • R. Stevens, S. Rago: "Advanced Programming in the UNIX Environment", 2a ed., Addison Wesley
    • M.J. Bach: "The Design of the UNIX Operating System", Prentice-Hall International Editions (L3167), per la parte relativa all'implementazione del kernel Unix.
    • S.R. Bourne: "The Unix System" (L1856, L1803, L2140)
    • K. Christian: "The Unix Operating System", John Wiley & Sons (L3147)


    Oggetto:
    Ultimo aggiornamento: 19/05/2023 16:11
    Location: https://laurea.informatica.unito.it/robots.html
    Non cliccare qui!