Systemprogrammierung
Operating Systems Fundamentals
Overview
Core concepts of operating system design and implementation
Learning Objectives
- Understand process management
- Master memory management
- Work with file systems
- Analyze scheduling algorithms
- Implement system calls
Learning Resources
Operating Systems
MIT's OS engineering
MIT OCW
Operating Systems: Three Easy Pieces
Free OS textbook
OSTEP
CS162
Berkeley's OS course
Berkeley
Kernel Documentation
Linux kernel docs
Linux
OS Development
OS development wiki
OS Dev
PintOS
Educational OS implementation
Stanford
Systems Programming
ETH's systems course
ETH Zürich
Operating Systems
CMU's systems course
CMU
Unix V6
Educational Unix implementation
Xv6
System Interfaces
POSIX standard documentation
POSIX
Practical Applications
System Administration
Managing operating systems
Example: Process and memory management
Device Drivers
Hardware interaction
Example: Writing basic device drivers
System Performance
Performance optimization
Example: Implementing scheduling algorithms
Practice Problems
- Implement process scheduler
- Create memory manager
- Design file system
- Write system calls
Low-Level Programming
Overview
Programming close to the hardware level
Learning Objectives
- Master assembly language
- Understand computer architecture
- Work with memory directly
- Implement low-level optimizations
- Handle hardware interfaces
Learning Resources
Computer Systems
MIT's systems course
MIT OCW
Computer Systems: A Programmer's Perspective
Systems programming book
CS:APP
Assembly Tutorial
x86 assembly guide
NASM
Compiler Collection
GCC documentation
GCC
Godbolt
Assembly output explorer
Compiler Explorer
Guide
x86 assembly programming
x86 Assembly
Machine Structures
Stanford's systems course
Stanford
Binary Exploitation
Systems security challenges
CTF Time
Architecture Manuals
Intel architecture docs
Intel
Lower-level Programming
CS50's systems week
Harvard
Practical Applications
Performance Optimization
Low-level optimization
Example: Assembly optimization techniques
Embedded Systems
Hardware programming
Example: Writing embedded software
Systems Software
Core software development
Example: Implementing device drivers
Practice Problems
- Write assembly programs
- Optimize memory usage
- Implement hardware interfaces
- Create efficient algorithms
Concurrent Programming
Overview
Managing multiple execution threads and processes
Learning Objectives
- Master thread management
- Understand synchronization
- Work with parallel algorithms
- Handle race conditions
- Implement concurrent patterns
Learning Resources
Multicore Programming
MIT's concurrency course
MIT OCW
C++ Concurrency in Action
Concurrency programming guide
Manning
Parallel Programming
Java concurrency course
Coursera
Pthreads Guide
Threading programming guide
POSIX Threads
Concurrency
Concurrency tutorials
GeeksforGeeks
Parallel Computing
Stanford's parallel course
Stanford
Fearless Concurrency
Rust concurrency guide
Rust
Parallel Computing
Berkeley's parallel course
Berkeley
API Specification
Parallel programming API
OpenMP
Concurrency Track
Concurrent programming exercises
Exercism
Practical Applications
High-Performance Computing
Parallel processing
Example: Implementing parallel algorithms
Server Programming
Concurrent servers
Example: Building multi-threaded servers
Real-time Systems
Concurrent operations
Example: Managing concurrent resources
Practice Problems
- Implement thread pool
- Create concurrent data structures
- Handle synchronization issues
- Design parallel algorithms