Skip to main content
Skip header

Programming in Operating Systems

* Exchange students do not have to consider this information when selecting suitable courses for an exchange stay.

Course Unit Code460-4112/03
Number of ECTS Credits Allocated6 ECTS credits
Type of Course Unit *Compulsory
Level of Course Unit *Second Cycle
Year of Study *First Year
Semester when the Course Unit is deliveredWinter Semester
Mode of DeliveryFace-to-face
Language of InstructionCzech
Prerequisites and Co-Requisites There are no prerequisites or co-requisites for this course unit
Name of Lecturer(s)Personal IDName
OLI10Ing. Petr Olivka, Ph.D.
Summary
Advanced programming techniques of operating system will be discussed in this subject. The student will learn more ways to communicate with the devices and sockets. He will also learn effective methods of interprocess communication.
Learning Outcomes of the Course Unit
The course goal is to introduce advanced programming methods in operating systems. The student will be able to design his programs effectively and use available programming techniques of operating system to design efficient programs. The student will be able to apply gained experience into additional programming languages.
Course Contents
Lecture:

1. Working with processes, process creation and control. Signals processing.
2. Files processing and I/O device programming. Memory mapped files.
3. Blocking and nonblocking I/O operations. Synchronous and asynchronous I/O operation.
4. Sockets, settings parameters and behavior. Basic security.
5. Secure communication over SSL.
6. Advanced principles of inter-process communication, its efficiency, suitability.
7. OS diagnostics, data flow monitoring of I/O devices and processes.
8. Task scheduler features, RT processes.
9. Virtual OS types.
10. File systems, base features, journaling file systems, flash memory FS.
11. File system implementation in user space.
12. Device drivers - features, development and debugging.

Labs:
1. Processes, signals, signal masking.
2. Select and poll functions, blocking and nonblocking operation.
3. Asynchronous I/O operation.
4. Socket manipulation, setting of socket options.
5. Secure SSL communication.
6.-7. Inter-process communication.
8.-9. Communication with I/O devices.
10. File system implementation in user space.
11. Data flow monitoring.
12. Priority of processes and threads.






Recommended or Required Reading
Required Reading:
[1} W. Richard Stevens, Stephen A. Rago, Advanced Programming in the Unix environment, Addison-Wesley Professional; 3rd edition (May 24, 2013), ISBN: 0321637739
[2] Robert Love, Linux System Programming: Talking Directly to the Kernel and C Library, O'Reilly Media; Second Edition edition (June 8, 2013), ISBN: 1449339530
[3] Andrew S. Tanenbaum, Modern Operating Systems, Prentice Hall; 4 edition (March 20, 2014), ISBN: 013359162X

[1] W. Richard Stevens, Stephen A. Rago, Advanced Programming in the Unix environment, Addison-Wesley Professional; 3rd edition (May 24, 2013), ISBN: 0321637739
[2] Robert Love, Linux System Programming: Talking Directly to the Kernel and C Library, O'Reilly Media; Second Edition edition (June 8, 2013), ISBN: 1449339530
[3] Andrew S. Tanenbaum, Modern Operating Systems, Prentice Hall; 4 edition (March 20, 2014), ISBN: 013359162X

Recommended Reading:
[1] Richard Stones, Neil Matthew, Beginning Linux Programming, Wrox, 4. edition, ISBN-10: 0470147628
[1] Richard Stones, Neil Matthew, Začínáme programovat, 4. vydání, COMPUTER PRESS
Planned learning activities and teaching methods
Lectures, Tutorials
Assesment methods and criteria
Task TitleTask TypeMaximum Number of Points
(Act. for Subtasks)
Minimum Number of Points for Task Passing
Graded creditGraded credit100 (100)51
        Tasks in labsOther task type40 21
        ProjectProject20 10
        Final testWritten test40 20