This repository serves as a central collection and version control manager (using Git submodules) for my low-level systems programming curriculum.
Each project (e.g., yacc) is a completely separate repository, allowing for independent versioning, branching and clear history tracking.
| Icon | Module Name | Description | Key Focus |
|---|---|---|---|
| π§ | C-Systems-Fundamentals | Core C projects focusing on manual memory management, pointer arithmetic, and concurrency primitives (Mutexes, Queues). | C Mastery & Concurrency |
| π | Networking | Low-level networking projects built with POSIX sockets, demonstrating different I/O and server architectures. | I/O Multiplexing & Sockets |
-
yacc(Yet Another Cat Clone): A re-implementation of the GNU Coreutils utilitycatto master the Standard I/O and Syscall interfaces (read/write) and I/O buffering techniques. Version v2.0 implementscatwithstdio, with version v3.0 I implemented the entire project usingsyscalls. (Current Version: v3.0) -
jayshell: A shell interpreter written in C as a study project. It usesreadlinefor its initial shell loop, it can do basic command parsing withstrtok(), it has support for external commands usingfork()andexecvp(), and lastly it has 2 basic built-in commands,exitandcd(without~support, yet). (Current Version: v1.0)
Iterative-Blocking-TCP-Example: A simple server/client system demonstrating the blocking I/O modelβwhere the server processes a single client at a time. At this point the server automatically shuts down after the connected client disconnects, but the server waiting again for another connection can be easily implemented in v2.0. (Current Version: v1.0)IOMUX-Chat-System-in-C: A multi-client chat server using I/O Multiplexing (select/poll) to synchronously manage multiple connections within a single process. I'm still working on it, a stable version release doesn't exist yet. (Current Version: N/A)Socket Programming Utilities: A directory of small tests I've done with the subject. It doesn't include any necessary stuff, I just used this to understand the socket interface in C.
These projects are guided by the goal of kernel development and are supported by the following resources:
- System Calls: Advanced Programming in the UNIX Environment (APUE) / The Linux Programming Interface (TLPI)
- Architecture: Computer Systems: A Programmer's Perspective (CS:APP)
- Networking Theory: Computer Networking: a Top-Down Approach (K&R)
Contributions and feedback are always welcome. Please feel free to open an Issue or PR in the respective submodule's repository.