Course covers operating systems and systems programming with a focus on Linux and UNIX-based systems. Followed by ECE454 — Computer Systems Programming.
Concepts covered
Core concepts
- Process
- Process control blocks
- Process states (blocking, zombie, orphan)
- Inter-process communication
- Kernel
- Syscall (Linux syscalls)
read
andwrite
(operating on file descriptors)exit
andexit_group
(exit statuses)fork
(spawning processes)execve
andexeclp
(replacing processes with other programs)wait
andwaitpid
(cleaning up child processes)sleep
(time blocking)pipe
(creates a bidirectional pipe)dup
anddup2
(duplicating file descriptors)mmap
(file to virtual memory mapping)
- Linux
- Syscall (Linux syscalls)
- Virtual memory
- Segmentation
- Page table (page faults, computations)
- Memory management unit
- Translation lookaside buffer
- Scheduler
- Thread (pthread)
- Detached, joinable threads
- Threading libraries (many-to-one, one-to-one, many-to-many)
- Thread pool
- Multithreading and parallelisation
Extra concepts
- Instruction set architecture (amd64, aarch64, rv64gc)
- Application binary interface (ABIs)
- x86-64 ABI
- .elf (executable files)
- Library
- Static/dynamic libraries
- Semantic versioning
- Intermediate representation
Tools
- Windows Subsystem for Linux
- Docker
- Meson
- Linux utilities
strace
(syscalls)ldd
(dynamic libraries)- Valgrind (dynamic memory allocation)
man
(documentation manuals)htop
(processes)
Extra notes
To compile with Meson:
Quick links: