mail unicampaniaunicampania webcerca

    Rocco AVERSA

    Insegnamento di SISTEMI OPERATIVI

    Corso di laurea in INGEGNERIA ELETTRONICA E INFORMATICA

    SSD: ING-INF/05

    CFU: 6,00

    ORE PER UNITÀ DIDATTICA: 48,00

    Periodo di Erogazione: Secondo Semestre

    Italiano

    Lingua di insegnamento

    Italiano

    Contenuti

    L’insegnamento si propone come obiettivo formativo quello di fornire all’allievo le seguenti capacità:Capacità di progettare e realizzare semplici programmi che interagiscono con il sistema operativo tramite le system call dello standard Posix.Capacità di progettare e realizzare programmi multithread e di utilizzare i principali meccanismi che garantiscono la mutua esclusione e la corretta sincronizzazione tra processi cooperanti.Capacità di analizzare le caratteristiche qualitative delle componenti di un sistema operativo e i loro effetti sulle prestazioni del sistema di elaborazione.

    Testi di riferimento

    A.S. Tanenbaum, Modern Operating Systems (3 ed), Prentice-Hall Oaks e Wong, Java threads, O'reilly

    Obiettivi formativi

    Il modulo si propone di illustrare i principi e i concetti fondamentali su cui si basano i sistemi operativi. In particolare vengono studiate e analizzate, anche con riferimenti ai sistemi operativi reali più commercialmente diffusi, le componenti che si occupano della gestione efficiente dei processi, della memoria centrale e dei dispositivi di memorizzazione di massa. L’insegnamento si propone, inoltre, di fornire la formazione e le competenze necessarie per la programmazione multiprocesso e multithread nonché per la programmazione di sistema, affrontando le principali problematiche teoriche legate alla gestione della concorrenza.

    Prerequisiti

    Il corso presuppone che l’allievo abbia padronanza dei concetti relativi all’architettura hardware dei calcolatori, alla programmazione assembler e alla programmazione di alto livello sia di tipo procedurale che orientata agli oggetti.Propedeuticità: RETI LOGICHE E PROGRAMMAZIONE AD OGGETTI

    Metodologie didattiche

    Lezioni frontali, esercitazioni assistite

    Metodi di valutazione

    Esame scritto e orale con eventuale discussione di elaborati progettuali individuali o di gruppo

    Altre informazioni

    Materiale didattico aggiuntivo sarà disponibile sul sito del corso a cura del docente

    Programma del corso

    Introduzione ai sistemi operativi: definizioni, storia e struttura.System call: meccanismi di attivazione, classificazione, standard Posix,, uso in programmi C.Il modello a processi: creazione, terminazione e stati di un processo.Il modello a thread: uso dei thread, implementazione dei thread nello spazio utente, nel kernel, ibrida. Problema dello scheduling in sistemi batch ed interattivi.. Schedulazione dei processi/thread in Unix, Linux, WindowsProgrammazione concorrente: meccanismi di comunicazione tra processi (IPC), sezioni critiche, mutua esclusione, semafori, monitor. Problemi classici di comunicazione e sincronizzazione tra processi: produttori-consumatori, lettori-scrittori, 5 filosofi a cena. Programmazione dei thread in java: classe thread, metodi della classe thread, metodi synchronized. Monitor e semafori in java. Gestione della memoria: memoria virtuale, paginazione, tabella delle pagine, problematiche legate alla traduzione indirizzo logico- indirizzo fisico. Analisi dei principali algoritmi di sostituzione delle pagine. Modello del working set e algoritmi di sostituzione associati (Wsclock) Gestione memoria: segmentazione, segmentazione con paginazione. File system: concetto di file e directory e system call associate Implementazione File system: implementazione dei file (allocazione contigua, a lista concatenata, con i-node, con FAT, NTFS); implementazione delle directory ; gestione dello spazio libero e consistenza di un file system; Sistemi RAID; Gestione delle periferiche di I/O

    English

    Teaching language

    Italian

    Contents

    The goal of the course is to provide students with the following skills:• Ability to design and implement simple programs that interact with the operating system through the system calls included in the Posix standard.• Ability to design and implement multithreaded programs ensuring correct synchronization between cooperating processes.• Ability to analyze the main features of an operating system and their effects on the performance of the processing system.

    Textbook and course materials

    A.S. Tanenbaum, Modern Operating Systems (3 ed), Prentice-Hall Oaks e Wong, Java threads, O'reilly

    Course objectives

    The module aims to illustrate the basic principles, concepts and methodologies on which the design and the implementation of the modern operating systems are based. In particular, the main techniques dealing with efficient management of computing processes, central memory, and mass storage devices are illustrated and analyzed, with references to more commercially widespread operating systems. The course provides also the training and skills required for multi-process and multithread programming as well as system-call programming, addressing the main theoretical issues related to the concurrency.

    Prerequisites

    The course attendance assumes a good knowledge of the concepts of computer hardware architecture, assembler programming, and high-level programming, both procedural and object-oriented.Propaedeutic: RETI LOGICHE E PROGRAMMAZIONE AD OGGETTI

    Teaching methods

    Lectures, assisted exercises

    Evaluation methods

    Written and oral examination with possible discussion of individual or group project works

    Other information

    Additional learning material are made available by the teacher on the web site of the course

    Course Syllabus

    Introduction to operating systems: definitions, history and structure.System call: Posix standards, use in programs C.Processes and Threads: creation, termination, and status of a process. The thread model: thread usage, thread implementation in user space, kernel, hybrid.Scheduling: the scheduling problem in batch and interactive systems. Scheduling processes / threads in Unix, Linux, WindowsConcurrent programming: process communication mechanisms (IPCs), critical sections, mutual exclusion, semaphores, monitors. Classic communication and process synchronization paradigms: consumers-producers, readers-writers, 5 philosophers at dinner.Thread programming in java: thread class, thread class methods, synchronized methods. Monitors and semaphores in java.Memory management: virtual memory, pagination, page table, logical address translation issues, segmentation.Replacement algorithms. Work set model File system: file and directory concepts and related system callsFile system implementation: file allocation (contiguous, concatenated, i-node, FAT, NTFS); Directory implementation: Free space management and consistency issues of a file systemFile system implementation in Unix, DOS and Windows 98, Windows NT. RAID System; I/O devices managemennt

    facebook logoinstagram buttonyoutube logotype