Operating Systems (OSY) - EFREI
Requirements
Numbers of hours: Lecture 10h, Practical Works (Linux Commands 10h + Writing Code 15h), Independent learning 70h.
Assessment: Written exam: 60%, Lab work 40% (5x8 points).
Links:
Communication:
Matrix, room OSY-EFREI.
Tasks:
Kelvin.
Source codes
Study materials
Use your login and password.
- [TAN] Andrew S. Tanenbaum, Modern Operating Systems, 4rd edition:
PDF,
Source.
- A. D. Marshall, Programming in C, UNIX System Calls and Subroutines using C:
Archive,
Source.
- Neil Matthew, Richard Stones, Beginning Linux Programming, 3th edition:
PDF,
- Andrew S. Tanenbaum, Operating Systems. Design and Implementation
PDF
Advanced:
- Richard Stevens, Stephen Rago, Advanced Programming in the UNIX Environment, 3rd Edition:
PDF,
Source.
Lectures:
- Introduction, system in labs, study materials, server linedu.vsb.cz (similar to APPS course)
History of Unix & Linux
Concept of OS, [TAN] 1.1, 1.5.0-1.5.4, 1.6.1
- Practical Works - Writing Code
Compilation toolchain. Write program in C/C++, compile and run it, redirect input and output. (see Kelvin for assignment)
- Practical Works - Linux Commands
An Introduction to the Linux Command Shell For Beginners
The GREP command
RegExr: Learn, Build, & Test RegEx
- Linux Architecture, POSIX, System calls
System Calls, Processes
Concept of OS, processes, process states, process switching.
[TAN] 2.1, 2.1.1, 2.1.2, 2.1.4, 2.1.5, 2.1.6, 2.1.7
- Practical Works - Writing Code
Write a console application histogram which will read data from standard input and write them back to standard output. Use of open, read, write, close and perror. (see Kelvin for assignment)
- Practical Works - Linux Commands
stdin, stdout, stderr outputs, redirection commands; tee, head, tail
Test your command skills on several practical examples (see Kelvin for assignment)
- Processes and scheduling algorithms, preemptive and RT.
Process tree, priority, system calls (getpid, getgrp, getuid, geteuid)
[TAN] 2.4, 2.4.1, 2.4.2, 2.4.3, 2.4.4
- Practical Works - Writing Code
Write a forkwait console application. Use fork, waitpid, execve and perror. (see Kelvin for assignment)
- Practical Works - Linux Commands
Process manipulation - top, ps, bg, fg, jobs, nice, htop, kill, killall. System calls getpid(), getuid(), geteuid(). Test application with sticky bit.
- File, Directory, Filesystems
Linux file system structure, EXT filesystem - inodes, blocks. Hard/Soft links
[TAN] 4.1, 4.2, 4.3, 4.5.2
- Practical Works - Writing Code
Working with files, pipes and filedescriptores (pipe, dup, dup2) (see Kelvin for assignment)
- Inter-process Communication and Synchronization. Semaphore, monitor, message passing
[TAN] 2.3, 2.3.1, 2.3.2, 2.3.3, 2.3.5 - 2.3.7, 2.3.8
Signal/IPC commands - kill, killall, ipcs, ipcrm, ipcmk
- Inter-process Communication and Synchronization. Classical IPC problems
[TAN] 2.5
Producer/Consumer, Dining Philosophers, Readers and Writers problems
- Practical Works - Writing Code
Working with signal and handlers, measuring I/O performance (see Kelvin for assignment)
- Practical Works - Linux Commands
BASH scripting, functions, error and interruption handling, signals. Commands kill, killall, trap, command return values
- Semaphores - System V and POSIX
[TAN] 2.3.5 - 2.3.7, 2.3.8
Program example of POSIX semaphore usage between processes. Critical sections.
- Practical Works - Writing Code
Implement Producer/Consumer problem using Semaphores for counting resources and controlling access to critical section
efrei Operating Systems timetable with topics.
Presentations:
Lecture presentations can be downloaded ONLY from the VSB/TUONET network, for access to the TUONET network it is possible to use VPN concentrator.
- Introduction, System Calls
- Processes and Threads, Scheduling algorithms, IPC
- Input/Output
- Filesystems
- IPC - critical section, semaphores
Labs:
Requirements: Linux/Unix with compiler gcc/g++. Any text editor or IDE for C-language (e.g. Eclipse CDT or Visual Code).
Preparation (homework) and tasks assignment in Kelvin.
- Programming in C, stdin, stdout, stderr, argiments from command line
- Processes, create process, pipes.
- Processes, pipes, stream redirection.
- I/O communication, speed of writing to file and speed of communication via pipe.