General Data

Code: ECE318
Type of credits: ECTS
Number of credits: 6.00
Engagement hours: 4.00
Status: Elective
Academic Year:
Term: 2º, 4º
Languages: English, Greek
Available for Mobility Students: Yes
Restricted to alliance: No

Description

  • Introduction to operating systems, OS generations, special purpose OSs.
  • Structure and organization of OSs, mechanisms and policies.
  • Processes and threads, process/thread life cycle, context switch.
  • CPU scheduling algorithms.
  • Synchronization: necessity, algorithms and implementations, famous problems.
  • Deadlocks, deadlock conditions, deadlock avoidance, detection, recovery.
  • Memory segmentation (1 or multiple segments), implementation mechanisms, the external fragmentation problem
  • Memory paging, paging mechanisms, the internal fragmentation problems, page size selection, page tables (flat and hierarchical), the role of the Translation Lookaside Buffer (TLB).
  • Using disks as a level of the memory hierarchy (swapping), swapping mechanisms, page faults.
  • Page replacement policies, the Belady anomaly, cache performance, thrashing, the notion of the working set, CPU scheduling and memory management policies interaction.
  • User-level memory management, policies, memory usage patterns, differences in user- and kernel-level memory management, memory release, reclamation and garbage collection.
  • Disk organization, disk latencies, disk branch scheduling algorithms, SSD disks.
  • File system organization, file system caching, file system cache replacement policies, cache prefetching, failures, journaling filesystems. Unix FFS filesystem, the VFS virtual file system.
  • Encoding principles, RAID storage organization.
  • Input/Output management, polling, interrupts, DMA
  • Protection mechanisms and policies, identification, authorization, enforcement.
  • Famous attacks.
  • Encryption (secret/public key), digital signatures, checksums, key distribution, trusted servers, trusted computing base, key distribution hazards.
  • Virtualization and resource management in virtualized environments.
  • Power management at the operating system level.

The course includes a series of homeworks in which students (in groups of 2-3) have the opportunity to work on a real operating system (Linux), understand the implementation of the concepts they are taught and introduce new code and functionality to the OS (system calls / modules, CPU scheduling, memory management, disk management).

Subject area

Software and Information System Engineering

Learning Outcomes

After successfully fulfilling the requirements of the course, the student is capable of:

  • Knowing the main services of operating systems and the main mechanisms and policies that implement these services.
  • Understandung the design space for each operating system mechanism / policy and the appreciating the advantages / disadvantages of each design decision.
  • Evaluating and also predicting the interaction between the operating system and application software and the effects of this interaction to system performance.
  • Identifying the implementation of policies / mechanisms taught in class in the source code of a real operating system.
  • Altering the implementation of existing policies / mechanisms and add new policies / mechanisms.
  • Working with large-scale software systems (such as the operating systems), using the appropriate tools (make, compiler, diffs, patches, kernel debugger, virtual machines).
  • Working synergistically, in small groups and managing projects concerning large-scale software systems under specific time constraints.