Università degli Studi di Urbino Carlo Bo / Portale Web di Ateneo


OPERATING SYSTEMS
SISTEMI OPERATIVI

A.Y. Credits
2022/2023 12
Lecturer Email Office hours for students
Emanuele Lattanzi Monday from 4:00 pm to 6:00 pm
Teaching in foreign languages
Course with optional materials in a foreign language English
This course is entirely taught in Italian. Study materials can be provided in the foreign language and the final exam can be taken in the foreign language.

Assigned to the Degree Course

Applied Informatics (L-31)
Curriculum: PERCORSO COMUNE
Date Time Classroom / Location
Date Time Classroom / Location

Learning Objectives

To illustrate operating systems concepts, focusing on description of operating system building blocks such as process management, scheduling, virtual memory and I/O management. 

Program

-- First semester --

 01. Introduction:
    01.01 Introduction to the operating systems.
    01.02 Operating systems structure.
    01.03 Operating System functions.
    01.04 System calls.
       
  02. Processes:
    02.01 Processes management.
    02.02 Context switch.
    02.03 Thread vs. Processes.
    02.04 Communication between processes.
       
  03. Synchronization:
    03.01 The critical sections problem.
    03.02 Synchronization tools.
    03.03 Synchronization problems and deadlock.
       
  04. Scheduling:
    04.01 Basic scheduling concepts.
    04.02 Scheduling algorithm.
    04.03 Scheduling in multiprocessor systems.
       
  05. Linux scheduling:
    05.01 Process descriptor.
    05.02 Main characteristics.
    05.03 The 2.4.x. scheduler.
    05.04 The 2.6.x. scheduler.
    05.05 The “Completely Fair Scheduler” (CFS).
        
  06. Main memory:
    06.01 Main memory organization.
    06.02 Paging.
    06.03 Structure of the page table.
    06.04 Segmentation.
    06.05 Examples: Pentium Intel and AMD64.
       
  07. Virtual memory:
    07.01 Demand paging.
    07.02 Page replacement.
    07.03 Frames allocation.
    07.04 Memory-mapped files.

-- Second semester --
       
  08. File system:
    08.01 File system concepts.    
    08.02 Directory Structure.
    08.03 Mounting, sharing, protection.
    08.04 Allocation methods.
    08.05 Free space management.
       
  09. Mass storage:
    09.01 Magnetic disk structure.
    09.02 Disk performace.
    09.03 Scheduling algorithms.
    09.04 SSD: Solid State Disks.
        
  10. Cryptography:
    10.01 Symmetric-key cryptography
    10.02 Public-key cryptography 
    10.03 Authentication
    10.03 Examples: DES, AES, SSL, MD5, SHA-1
       
  11. Virtual machines:
    11.01 Basic principles
    11.02 Main structures.
    11.03 Performances
    11.04 Design
    11.05 JVM - Java Virtual Machine.
       
  12. The Android OS:
    12.01 Structure.
    12.02 The Dalvik virtual machine.
    12.03 Applications.
    12.04 Message passing: Intents.
       
  13. Laboratory activity:
    13.01 Processes management in UNIX-like operating systems.
    13.02 Thread management in UNIX-like operating systems: pThread (POSIX) library.
    13.03 Java threads management.
    13.04 Java synchronization tools.
 

Bridging Courses

Although there are no mandatory prerequisites for this exam, students are strongly recommended to take it after Algorithms and Data Structures, Logic Networks, Computer Architecture, Procedural Programming.
It is also worth noticing that the topics covered by this course will be used in Computer Networks.

Learning Achievements (Dublin Descriptors)

  • Knowledge and understanding: At the end of the course, the student will learn the fundaments of  the structure and functionality of a modern operating system; will know the most widely used algorithms of resource management, metrics for evaluating the performance of operating systems, and will acquire the basic principles of concurrent programming.
  • Applying knowledge and understanding: The student will acquire skills on creating and managing threads and processes, tuning the scheduler and on the Linux programming interfaces (API). Moreover, the student will learn the concurrent programming methodologies in Java and will be able to use synchronization tools such as lock, semaphores, and condition variables.
  • Making judgements: The student will be able to evaluate the performance of the resource management algorithms used into the modern operating systems and to understand and solve typical concurrent programming problems. The critical  discussions in class and the exercitations will be used to stimulate and develop the making judgment ability of the student.
  • Communication skills: The student will acquire the ability to communicate  the fundamental concepts of the design and functioning of a modern operating system with an appropriate and rigorous terminology. He will learn to describe the problems related to concurrent programming and the methodologies adopted for their solution.
  • Learning skills: The student will acquire the ability to study and learn the structure and the functioning of a modern operating system.

Teaching Material

The teaching material prepared by the lecturer in addition to recommended textbooks (such as for instance slides, lecture notes, exercises, bibliography) and communications from the lecturer specific to the course can be found inside the Moodle platform › blended.uniurb.it

Teaching, Attendance, Course Books and Assessment

Teaching

Theory lectures and laboratory exercises.

Attendance

Although recommended, course attendance is not mandatory.

Course books
  • Silbershatz, Galvin, Gagne, "Sistemi Operativi Concetti ed Esempi", Pearson
  • Tanenbaum, "I Moderni Sistemi Operativi", Pearson
  • Ancilotti, Boari, "Programmazione Concorrente e Distribuita", McGraw-Hill.
  • Bovet, Cesati, "Understanding the Linux Kernel", O'Reilly
  • Goetz, Peierls, Bloch, Bowbeer, Holmes, Lea, "Java Concurrency in Practice", Addison-Wesley
  • Assessment

    Written exam of concurrent programming (3 hours) and oral exam. The written exam is composed by a concurrent programming exercise to be resolved in 3 hours.
    The written exam, which holds only for that scheduled exam, is passed if the mark is at least 18/30. This exam allows the lecturer to evaluate the basic principles of concurrent programming, and, in particular, it will be used to evaluate the ability to program using the Java language and to use synchronization tools such as lock, semaphores, and condition variables.

    The oral exam can be taken only if the the written exam is passed and determines a spread between -10/30 and 10/30 of the previous mark, thus yielding the final mark. The oral exam allows the lecturer to evaluate the student's knowledge of the fundaments of  the structure and functionality of a modern operating system and of the most widely used algorithms of resource management. Finally, this exam allows to evalute the making judgements and the communication skills of the student

    Disability and Specific Learning Disorders (SLD)

    Students who have registered their disability certification or SLD certification with the Inclusion and Right to Study Office can request to use conceptual maps (for keywords) during exams.

    To this end, it is necessary to send the maps, two weeks before the exam date, to the course instructor, who will verify their compliance with the university guidelines and may request modifications.

    « back Last update: 07/07/2022

    Il tuo feedback è importante

    Raccontaci la tua esperienza e aiutaci a migliorare questa pagina.

    Posta elettronica certificata

    amministrazione@uniurb.legalmail.it

    Social

    Università degli Studi di Urbino Carlo Bo
    Via Aurelio Saffi, 2 – 61029 Urbino PU – IT
    Partita IVA 00448830414 – Codice Fiscale 82002850418
    2024 © Tutti i diritti sono riservati

    Top