75 euros (More information)
WHO - Ten (10) people can enroll on the course through the Open University.
WHEN - Enrollment begins 45 days before the beginning of the course. You can see the exact enrollment dates through clicking on the enrol button on the top of this page.
HOW - Use the enrol button on the top of this page to enroll if you meet one of the following criteria:
- You have a Finnish personal identity number, or
- you are a student at the University of Helsinki, or
- you are a student at a HAKA member institution.
Open University reserves the right to make changes to the study programme.
This course is suitable to you if you
- want learn about the main components and principles of operating system design, and
- have knowledge of the components of a computer system and how programs are executed on hardware
The course is
- compulsory in the intermediate studies in the Bachelor's Programme in Computer Science.
- compulsory in subject studies in computer and data science in the Bachelor's Programme in Science.
- open for students in other study programmes.
As prerequisites, prior knowledge of the components of a computer system and how programs are executed on hardware is assumed.
Before taking this course, you should have completed
- Computer Fundamentals I (Tietokoneen toiminnan perusteet, AYTKT100051)
- Computer Fundamentals II (Tietokoneen toiminnan jatkokurssi, AYTKT100052)
or have equivalent knowledge
Courses Introduction to Data Communication and Distributed systems.
After the course you can
- summarize the key services of an operating system (OS) and their operation
- describe the essential structures of an OS together with their interfaces
- describe the position of OS in modern data processing environment
- describe the structure and the functionalities of operating systems
- describe the control systems and process and thread management
- describe different methods to protect processes and the use of different processor states (user/privileged) for that purpose
- describe different types of thread execution (user-level, kernel-level)
- describe basic process scheduling techniques in uniprocessor, multiprocessor, and real-time systems
- compare the suitability of different scheduling algorithms on different work loads
- choose (and justify the choice) the most practical way to execute threads for given software system
- explain how shared memory and other methods are used for process and thread communication
- explain the need for concurrency using examples illustrating concurrent operations of hardware and software level
- explain the importance of different scenarios when examining the execution of concurrent programs
- provide examples of common problems that may results in an incorrect concurrent solution
- explain the nondeterministic nature of process execution and its implications
- explain the advantages, disadvantages, implementation levels, and methods of concurrency
- explain the requirements for concurrency solutions (e.g., in terms of correctness in all scenarios) and finding a scenario leading to failed outcome
- explain the basic concepts of concurrent execution: atomicity, critical section, synchronization, communication, deadlock
- explain the basic concurrency problems: critical section problem, turn ticket, readers-writers, producer-consumer, client-server, and boom synchronization
- describe the occurrence of a deadlock and explain necessary and sufficient conditions for a deadlock to occur
- design a solution to critical section problem using the most appropriate method, e.g., interrupt disabling, busy-wait, semaphore, monitor, messages
- explain the semaphore and monitor structures, and use them correctly in problem solving
- apply concurrency handling mechanisms to solve practical problems
- explain how deadlock can be detected using DDA-algorithm, how to recover from deadlock, and how a deadlock can be prevented using, e.g., banker's algorithm
- describe the general principles of implementing virtual memory (VM) together with the key concepts (paging, page table, address translation, translation lookaside buffer, page faults)
- describe multi-level paged VM operation
- simulate at algorithm level the address translation in (multi-level) paged VM system
- analyze the effect of page size in process operation and page table size, and justify a choice made for a certain page size
- describe the advantages and disadvantages of (multilevel) paging and segmentation methods
- describe at algorithm level the VM implementation: page fetch and replacement policies, resident set size management policies, multiprogramming level policies
- describe the basic structure of the file system and its components
- explain the communication between peripheral devices and operating system
- explain the basic scheduling algorithms for hard disks
- explain the basic idea of RAID, and explain different RAID implementations comparing their features
- explain different file organization types and when they should be used (pile, sequential, indexed sequential, indexed, hashed)
- explain the use of B-trees for index implementation for files
- explain basic OS security threats and the methods to secure the operating system against them
- describe access control mechanism in operating systems
During the spring term of the second year, after the course Computer Organization I.
Spring, period 3
- Design and principles of an operating system
- Processes and threads
- Concurrency: mutual exlusion, syncronization, deadlock, and starvation
- Memory management, virtual memory
- Process scheduling (uniprocessor, multiprocessor, and multicore systems, real-time systems)
- I/O management, disk scheduling, RAID, file management
- Operating system security, access control
- William Stallings, Operating Systems - Internals and Design
Principles, 9th ed, Pearson 2018.
All students should have access to the course book.
A newer edition of the course book can be taken into use immediately after its publication.
The evaluation is based on the completed exercises and active participation in exercises sessions, and a course exam or mini exams.
The course is graded on the scale 0-5.
See information on the course materials and completing the course on the faculty course page.
The course can be completed online, as distance learning (at least until Summer 2021).
- Complete lecture schedule on the faculty course page.
- From Monday 18.1.2021 to Wednesday 3.3.2021.
- Lecture schedule
- Mondays 12.15 - 14.00 (English)
- Tuesdays 9.15 - 11.00 (English)
- Wednesdays 12.15 - 14.00 (Finnish).
- It is possible to stream lectures during lecture times through Zoom. No physical participation is required.
- Lecture recordings will be accessible after the lecture hours.
- No lecture participation is required if you watch the recordings afterwards.
- Enrolled students will be added to the course Moodle space.
- Use your University of Helsinki user id to access Moodle.
- See information on the faculty course page.
- It is possible to participate in exercise gropus online over Zoom. No physical participation is required.
- Department of Computer Science organizes the exam.
- Exams will be taken online (at least until summer 2021).
- Course exam options:
- [To be decided] Weekday xx.xx.xx21 time.
- No separate registration for online Exams.
- If you need some special arragements or support for the examination, contact your education specialist at least 10 days beforehand. Read more: Instructions for online examinations / Arragements for students in need of special support
The course is part of the subject studies in Computer Science.