Programma del Corso
------------------------------------------------------------
Modulo: A000869 - VIRTUALIZATION SYSTEMS
------------------------------------------------------------
Sistemi di I/O: Hardware di I/O, I/O memory mapped; tecniche per la gestione dei dispositivi di I/O: a controllo di programma, Polling, I/O interrupt driven e Direct Memory Access; interfaccia di I/O delle applicazioni, sottosistema I/O del kernel; Loadable Kernel Module (LKM), Linux I/O, directory /dev e /proc. Memoria di massa: struttura dei dispositivi di memorizzazione, scheduling dei dischi rigidi e di dispositivi NVM, rilevamento e correzione degli errori; connessione dei dispositivi di memorizzazione: host attached storage, network-attached storage, cloud storage, storage area network, storage array; mirroring, striping, strutture RAID, Multiple Device Administrator (mdadm) tool. Reti e sistemi distribuiti: sistemi operativi di rete e distribuiti; file system distribuiti: Network File System (NFS),Google File System (GFS) e Hadoop File System (HDFS). Macchine virtuali: trap and emulate, traduzione binaria, assistenza hardware; tipologie di virtualizzazione: hypervisor, paravirtualizzazione, virtualizzazione dell'ambiente di programmazione, emulazione. Gestione di CPU, memoria, archiviazione e dispositivi aggiuntivi per una VM. Comprensione delle applicazioni in una VM. Confronto tra hypervisor, VMware ESX, CitrixXen, Microsoft Hyper-V, altre soluzioni. Migrazione delle VM, Migrazione Cold e Live, pre-copy e post-copy. Differenza tra Container e Macchine Virtuali, Orchestrazione di VM. Container engine. Applicazioni monolitiche e orientate ai microservizi. Cloud computing, livelli di servizi: IaaS, PaaS e SaaS; Cloud pubbliche, private e ibride; Windows Azure, Google App Engine, Amazon Web Services; Cloud Operating System, scalabilità verticale ed orizzontale. Componenti architetturali di un IaaS, gestione distribuita delle infrastrutture virtuali, tecniche di schedulazione per la prenotazione anticipata di capacità, gestione della capacità per soddisfare i requisiti di SLA. Openstack. La Supply Chain Cloud, le metodologie di integrazione, un framework di integrazione sensore-cloud.
------------------------------------------------------------
Modulo: A000939 - OPERATING SYSTEMS
------------------------------------------------------------
Le strutture dei Sistemi operativi
Processi
Threads & Concurrency
CPU Scheduling
Strumenti di sincronizzazione
Esempi di sincronizzazione
deadlock
memoria centrale
memoria virtuale
struttura della memoria di massa
sistemi di I/O
File-System Interface
File-System Internals
Security
Protection
Macchine virtuali
Real-Time Operating Systems
Course Syllabus
------------------------------------------------------------
Modulo: A000869 - VIRTUALIZATION SYSTEMS
------------------------------------------------------------
I/O systems: I/O hardware, memory-mapped I/O; techniques for I/O device management: program control, Polling, I/O interrupt driven and Direct Memory Access; application I/O interface, kernel I/O subsystem; Loadable kernel module (LKM), Linux I/O, /dev and /proc directories. Mass storage: structure of memory devices, programming of hard disks and NVM devices, error detection and correction; connection of the devices: host attached storage, network-attached storage, cloud storage, storage area network, storage array; mirroring, striping, RAID structures, Multiple Device Administrator (mdadm) tool. Networks and distributed systems: network and distributed operating systems; distributed file systems: Network File System (NFS), Google File System (GFS) and Hadoop File System (HDFS). Virtual machines: trap and emulate, binary translation, hardware assistance; types of virtualization: hypervisor, paravirtualization, virtualization of the programming environment, emulation. Managing CPU, Memory, Storage and additional devices for a VM. Understanding applications in a VM. Comparing Hypervisors, VMware, ESX, CitrixXen, Microsoft Hyper-V , Other Solutions. VM migration, Cold and Live migration, pre-copy and post-copy. Difference between Containers and Virtual Machines, VM Orchestration. Container engine. Monolithic and microservice oriented applications. Cloud computing, service levels: IaaS, PaaS and SaaS; public, private and hybrid clouds; Windows Azure, Google App Engine, Amazon Web Services; Cloud operating system, vertical and horizontal scalability. Architectural components of an IaaS, Distributed Management of Virtual Infrastructures, Scheduling Techniques for Advance Reservation of Capacity, Capacity Management to meet SLA Commitments. Openstack. The Cloud Supply Chain. the Integration Methodologies, a framework of SensorâCloud Integration.
------------------------------------------------------------
Modulo: A000939 - OPERATING SYSTEMS
------------------------------------------------------------
Course Syllabus
Chapter 1
1.1 What Operating Systems Do
1.2 Computer-System Organization
1.3 Computer-System Architecture
1.4 Operating-System Structure
1.5 Resource Management
1.6 Protection and Security
1.7 Virtualization
1.8 Distributed Systems
1.9 Kernel Data Structures
1.10 Computing Environments
1.11 Free/Libre and Open-Source Operating Systems
Chapter 2 Operating-System Structures
2.1 Operating-System Services
2.2 User and Operating-System Interface
2.3 System Calls
2.4 System Services
2.5 Linkers and Loaders
2.6 Why Applications Are Operating-System Specific
2.7 Operating-System Design and Implementation
2.8 Operating-System Structure
2.9 Building and Booting an Operating System
2.10 Operating-System Debugging
Chapter 3 Processes
3.1 Process Concept
3.2 Process Scheduling
3.3 Operations on Processes
3.4 Interprocess Communication
3.5 IPC in Shared-Memory Systems
3.6 IPC in Message-Passing Systems
3.7 Examples of IPC Systems
3.8 Communication in Client-Server
Chapter 4 Threads & Concurrency
4.1 Overview
4.2 Multicore Programming
4.3 Multithreading Models
4.4 Thread Libraries
4.5 Implicit Threading
4.6 Threading Issues
Chapter 5 CPU Scheduling
5.1 Basic Concepts
5.2 Scheduling Criteria
5.3 Scheduling Algorithms
5.4 Thread Scheduling
5.5 Multi-Processor Scheduling
5.6 Real-Time CPU Scheduling
5.8 Algorithm Evaluation
Chapter 6 Synchronization Tools
6.1 Background
6.2 The Critical-Section Problem
6.3 Petersonâs Solution
6.4 Hardware Support for Synchronization
6.5 Mutex Locks
6.6 Semaphores
6.7 Monitors
6.8 Liveness
Chapter 7 Synchronization Examples
7.1 Classic Problems of Synchronization
7.2 Synchronization within the Kernel
7.3 POSIX Synchronization
Chapter 8 Deadlocks
8.1 System Model
8.2 Deadlock in Multithreaded Applications
8.3 Deadlock Characterization
8.4 Methods for Handling Deadlocks
8.5 Deadlock Prevention
8.6 Deadlock Avoidance
8.7 Deadlock Detection
8.8 Recovery from Deadlock
Chapter 9 Main Memory
9.1 Background
9.2 Contiguous Memory Allocation
9.3 Paging
9.4 Structure of the Page Table
9.5 Swapping
Chapter 10 Virtual Memory
10.1 Background
10.2 Demand Paging
10.3 Copy-on-Write
10.4 Page Replacement
10.5 Allocation of Frames
10.6 Thrashing
10.7 Memory Compression
10.8 Allocating Kernel Memory
Chapter 11 Mass-Storage Structure
11.1 Overview of Mass-Storage Structure
11.2 HDD Scheduling
11.3 NVM Scheduling
11.4 Error Detection and Correction
11.5 Storage Device Management
11.6 Swap-Space Management
11.7 Storage Attachment
11.8 RAID Structure
Chapter 12 I/O Systems
12.1 Overview
12.2 I/O Hardware
12.3 Application I/O Interface
12.4 Kernel I/O Subsystem
12.5 Transforming I/O Requests to Hardware Operations
12.6 STREAMS
Chapter 13 File-System Interface
13.1 File Concept
13.2 Access Methods
13.3 Directory Structure
13.4 Protection
13.5 Memory-Mapped Files
Chapter 14 File-System Implementation
14.1 File-System Structure
14.2 File-System Operations
14.3 Directory Implementation
14.4 Allocation Methods
14.5 Free-Space Management
14.6 Efficiency and Performance
14.7 Recovery
Chapter 15 File-System Internals
15.1 File Systems
15.2 File-System Mounting
15.3 Partitions and Mounting
15.4 File Sharing
15.5 Virtual File Systems
15.6 Remote File Systems
15.7 Consistency Semantics
15.8 NFS
Chapter 16 Security
16.1 The Security Problem
16.2 Program Threats
16.3 System and Network Threats
16.4 Cryptography as a Security Tool
16.5 User Authentication
16.6 Implementing Security Defenses
Chapter 17 Protection
17.1 Goals of Protection
17.2 Principles of Protection
17.3 Protection Rings
17.4 Domain of Protection
17.5 Access Matrix
17.6 Implementation of the Access Matrix
17.7 Revocation of Access Rights
17.8 Role-Based Access Control
17.9 Mandatory Access Control (MAC)
17.10 Capability-Based Systems
17.11 Other Protection Improvement Methods
17.12 Language-Based Protection
Chapter 18 Virtual Machines
18.1 Overview
18.2 History
18.3 Benefits and Features
18.4 Building Blocks
18.5 Types of VMs and Their Implementations
18.6 Virtualization and Operating-System Components
Real-Time Operating Systems
1. RTOS families
2. Differences between RTOS and general OS
3. Applications of RTOS
4. Free RTOS
5. Lua RTOS