Systems Programming Practice
Introduction
Participated in the Technical University of Munich's systems programming course, gaining deep understanding of operating system principles and systems programming through four core experiments. The project covers memory management, concurrent programming, network programming, and process management, with each experiment requiring careful consideration of performance optimization and resource management.
Requirements
Implement malloc/free memory allocator with multiple allocation strategies
Develop POSIX-compliant thread library with thread creation, synchronization primitives, and scheduler
Build high-performance HTTP/1.1 server supporting concurrent connections and static file serving
Implement Shell with pipes, redirection, and job control
All components must pass strict correctness and performance tests
Code must comply with POSIX standards and run in Linux environment
Technologies
Programming Language: C11
Operating System: Linux
Memory Management: First-fit/Best-fit/Worst-fit strategies
Concurrency Primitives: Mutex, Condition Variable, Semaphore
Network Programming: Socket API, HTTP/1.1 protocol
Process Management: Fork, Exec, Signal, Job Control
Debugging Tools: GDB, Valgrind, strace
Challenges
How to design efficient memory allocation algorithms to reduce fragmentation and improve allocation speed
How to implement core thread library functionality, including context switching and synchronization primitives
How to optimize HTTP server concurrent performance to handle many concurrent connections
How to properly handle signals and job control in Shell
How to write robust system-level code avoiding memory leaks and race conditions