Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

Fundamentals of Operating Systems (FSO) - NOVA FCT 🐧

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).

✍️ Authors

  • Tomás Alves (Student No. 68681)
  • Miguel Carmo (Student No. 65871)

📌 About the Course

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.

📂 Repository Structure

The repository is divided into two main components:

1. Weekly Labs (/src/labs/)

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).

2. Final Project: File System (/src/Project/)

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.

🧠 Concepts and Acquired Skills

  • 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.

📄 License

Copyright © 2026 Alvesss04. All Rights Reserved.

About

FCT NOVA - FSO - Fundamentals of System Operations (Fundamentos de Sistemas de Operação)

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages