A collection of solutions and projects for the Operating Systems laboratory course, part of the Computer Science curriculum at the Faculty of Computer Science, AGH University of Science and Technology in Kraków.
The projects focus on low-level programming in UNIX/Linux environments, utilizing the C programming language, the POSIX standard, and automated testing via Bash scripting.
| Directory | Topic | Description |
|---|---|---|
lab1/ |
Processes and Identifiers | Process creation (fork), exec functions, child process management (wait), and file descriptors. |
lab2/ |
Signals, IPC & Libraries | Advanced POSIX signal handling (sigaction, sigprocmask), Inter-Process Communication via sigqueue, modularization with Static/Shared/Dynamic libraries (dlopen), and automated CI testing. |
lab3/ |
Pipes and FIFOs (IPC) | Inter-Process Communication using Unnamed Pipes (pipe) and Named Pipes/FIFOs (mkfifo), deadlock prevention, and client-server process synchronization. |
To successfully compile and run the code in this repository, a POSIX-compliant environment is required (e.g., native Linux distribution, WSL on Windows, or macOS).
Required tools:
gcc(GNU Compiler Collection)make(required for multi-file projects and automated builds)bash(for running the automated test suites)
Each laboratory folder contains a dedicated README.md file with specific compilation and testing instructions.
For simple, single-file programs (e.g., Lab 1):
gcc -Wall -o program_name file_name.c
./program_nameFor modular projects with build automation (e.g., Lab 2):
Projects utilizing multiple modules and dynamic libraries include a Makefile. You can build specific architectures or use the automated test suites:
# Build a specific architecture (static, shared, dynamic)
make dynamic
# Run the compiled executable
./main.out <arguments>
# Run the automated Continuous Integration (CI) test suite
./test.shCreated by Wiktor Trybus