Skip to content

Veexeq/SysOp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Operating Systems - AGH UST 🐧

C Linux Bash Status: Work in Progress

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.

📂 Repository Structure

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.

⚙️ System Requirements

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)

🚀 How to Run the Code

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_name

For 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.sh

Created by Wiktor Trybus

About

Solutions for the Operating Systems laboratory tasks at AGH UST (Computer Science).

Topics

Resources

Stars

Watchers

Forks

Contributors