Advanced topics in operating systems
General data
Course ID: | 1000-2N09ZSO |
Erasmus code / ISCED: |
11.303
|
Course title: | Advanced topics in operating systems |
Name in Polish: | Zaawansowane systemy operacyjne |
Organizational unit: | Faculty of Mathematics, Informatics, and Mechanics |
Course groups: |
(in Polish) Przedmioty obieralne na studiach drugiego stopnia na kierunku bioinformatyka Elective courses (facultative) for Computer Science Elective courses for Computer Science |
Course homepage: | http://students.mimuw.edu.pl/ZSO |
ECTS credit allocation (and other scores): |
6.00
|
Language: | English |
Type of course: | elective monographs |
Prerequisites: | Operating systems 1000-213bSOP |
Short description: |
The course it is highly recommended for students who plan to attend Master Seminar on Distributed Systems, which is partly devoted to operating systems and in particular distributed operating systems. The course will have a form of lectures and labs. We plan to view in detail the structure of a specific operating system. The chosen case study is Linux which is modern operating system, popular in the Faculty of Mathematics, Computer Science and Mechanics, University of Warsaw, often used as server platform, but also on desktops, mobiles, as embedded system. Source code of Linux is freely available which gives a unique opportunity to analyze in detail used algorithms, data structures, and also to run experiments and do research in the area of operating systems. |
Full description: |
Lectures 1. Introduction: SO tasks, UNIX and Linux - history, features, structure, eBPF, basic concepts: execution context, system calls, kernel reports 2. A little about hardware (Intel example): processor and memory, addressing, processor cache, computer architectures 3. Memory and process management: Booting the kernel, Paging in Linux, Process address space 4. Memory and process management: Process address space, fork(), page fault 5. Memory management: Physical storage, creating page tables, managing page frames, zones, highmem, managing noncontiguous memory areas 6. Memory management: Buddy allocator, Slab allocator 7. Process management: Kernel level synchronization 8. File management: Virtual file system, interface, data structures 9. File management: Virtual file system, mounting, directory cache, inodes in memory1 10. Memory management: Page cache, page replacement 11. Memory management: THP (Transparent Huge Pages); File management: ext2, ext3 and ext4 file systems 12. The block I/O layer and I/O schedulers 13. Process scheduling: PID namespace, introduction to scheduling in Linux, schedulers O(N), O(1), RSDS 14. Process scheduling: schedulers CFS, BFS, MuQSS, Deadline; what's new in process scheduling? Labs 1. Virtualization and containerization 2. Installing Linux on a virtual platform 3. Kernel compilation 4. Kernel modules 5. Debugging code in kernel space 6. Programming in kernel space: interrupt handling, synchronization, memory management, kernel threads, system calls 7. Safe kernel programming with BPF 8. Device handling subroutines 9. Procfs, sysfs file system 10. Using the Linux kernel in Android 11. Use of Rust in the Linux kernel |
Bibliography: |
1. lwn.net - Linux weekly news 2. R. Love, Linux Kernel Development, Addison-Wesley, 2010 (third edition) 3. W. Mauerer, Professional Linux Kernel Architecture, Wiley Inc., 2008 (first edition) 4. D.P. Bovet, M. Cesati, Linux Kernel, O'Reilly, 2005 (third edition) 5. A. Rubini, J. Corbet, Linux Device Drivers, O'Reilly, 2005 (third edition) 6. R. Love, Linux System Programming: Talking Directly to the Kernel and C Library, O'Reilly, 2007 (first edition) |
Learning outcomes: |
Knowledge 1. Has in-depth knowledge of the construction of modern operating systems. 2. Has in-depth knowledge of building the latest version of the Linux operating system. 3. Knows the algorithms and data structures used in the construction of operating systems. 4. Knows the issues of concurrent programming. 5. Knows the issues from the borderline of compilers and operating systems. Skills 1. Has the ability to analyze the source code of the operating system. 2. Has the ability to critically analyze solutions in the field of operating systems and concurrent programming. 3. Has the ability to solve problems in the field of operating system construction. 4. Has IT skills in the field of computer science in accordance with the requirements set for the B2+ level of the European System of Language Description 5. Can determine the directions of further learning and realize the process of self-education. Competence 1. Knows the limits of his own knowledge and understands the need for further education. 2. Can accurately formulate questions to deepen one's own understanding of a given topic or find the missing elements of reasoning. 3. Can formulate opinions on basic IT issues. |
Assessment methods and assessment criteria: |
Active participation in lectures and labs, programming laboratory tasks |
Classes in period "Summer semester 2023/24" (in progress)
Time span: | 2024-02-19 - 2024-06-16 |
Navigate to timetable
MO TU WYK
LAB
LAB
LAB
W TH FR |
Type of class: |
Lab, 30 hours
Lecture, 30 hours
|
|
Coordinators: | Janina Mincer-Daszkiewicz | |
Group instructors: | Wojciech Ciszewski, Andrzej Jackowski, Maciej Matraszek, Janina Mincer-Daszkiewicz | |
Students list: | (inaccessible to you) | |
Examination: | Examination |
Classes in period "Summer semester 2024/25" (future)
Time span: | 2025-02-17 - 2025-06-08 |
Navigate to timetable
MO TU W TH FR |
Type of class: |
Lab, 30 hours
Lecture, 30 hours
|
|
Coordinators: | Janina Mincer-Daszkiewicz | |
Group instructors: | Wojciech Ciszewski, Janina Mincer-Daszkiewicz | |
Students list: | (inaccessible to you) | |
Examination: | Examination |
Copyright by University of Warsaw.