Bachelor in Computer Science and Engineering (LEI) | 2nd Year - 1st Semester
This repository contains the weekly laboratory exercises and the final project developed for the Fundamentals of Operating Systems (Fundamentos de Sistemas Operativos) course at the Faculty of Sciences and Technology of the NOVA University of Lisbon (NOVA FCT).
- Tomás Alves (Student No. 68681)
- Miguel Carmo (Student No. 65871)
The Fundamentals of Operating Systems course explores the core principles of OS design and POSIX programming. Key topics include process scheduling, inter-process communication (IPC), concurrency/synchronization, memory management, and file systems.
The repository is divided into two main components:
These practical assignments focus on understanding and using the POSIX API in C:
- Lab 2 & 3 (
sish.c,sishNoPipes.c): Implementation of a custom Simple Shell (sish). Explores process creation (fork), program execution (execvp), process waiting (waitpid), and basic pipeline management. - Lab 4 & 5 (
lab-04p.c,demoCond.c): Introduction to concurrency and synchronization. Implementation of multithreaded programs using POSIX threads (pthreads), mutexes, and condition variables (pthread_cond_t).
The capstone project consists of developing a functional File System from scratch in C, built on top of a simulated disk.
-
Documentation:
-
Main Features & Architecture:
- Disk Layout: Handling the Superblock, a Bitmap for free/used blocks, the Inode table, and Data blocks (using a 2KB block size).
- Inode Management: Tracking file metadata, sizes, and mapping file offsets to physical disk blocks.
- File Operations: Implementation of low-level system calls to handle file interactions (read, write, open, close) inside
fs.c. - FSO Shell (
fso-sh.c): A custom interactive shell provided to mount the disk (small.dsk), run file system commands, and test the operations.
- Systems Programming: Advanced programming in C, manipulating pointers, structs, and memory buffers.
- Process & Thread Management: Mastering
fork,exec, and POSIX threads. - OS Internals: Deep understanding of how an operating system translates abstract file operations into physical disk block reads and writes.
- Resource Management: Safe allocation, deallocation, and synchronization of system resources to avoid race conditions and deadlocks.
Copyright © 2026 Alvesss04. All Rights Reserved.