Skip to content

A unix operating system created as part of a class project (COMPSCI 162), then worked on after to add additional features covered in popular OSes. This OS implements primitives for concurrency, memory management, managing a file system, and running user C programs.

Notifications You must be signed in to change notification settings

prabhask5/unix-operating-system

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Unix Operating System

Features

  • Support for C user programs
  • Implemented concurrency with processes and threads
  • Implemented thread scheduling using the Strict Priority Scheduling Algorithm
    • Includes implementing priority donation and priority inversion to optimize synchronization with threads of differing priority
  • Implemented synchronization (locks, semaphores, condition variables, RW locks) on kernel side and user side
  • Implemented virtual memory and page tables
  • Implemented extensible file system with disk management, page directory based on linux file system- used inodes to represent extensible files as blocks internally
  • Optimized file system with buffer cache to cache repeated reads/writes before writing to disk periodically, developed eviction algorithm using the Clock Replacement Algorithm
  • Utilized synchronization to make file system concurrency-safe
  • Implemented all fundamental system calls for concurrency, file system functionality, and running kernel mechanisms
  • Implemented custom block area memory allocator, with implementations for the sbrk system call, and implementations for malloc, free, realloc, and calloc based on fast block implementation.

Setup

Compiling and running tests requires the installation of docker.

After installation, cd into the /docker directory and run docker-compose up -d.

SSH into the Container with ssh [email protected] -p 16222. Use the password workspace.

To run the tests (examples of C programs that use the features described in the previous section), cd into the specific folder (src/userprog or src/threads or src/filesys), and run make then make check.

About

A unix operating system created as part of a class project (COMPSCI 162), then worked on after to add additional features covered in popular OSes. This OS implements primitives for concurrency, memory management, managing a file system, and running user C programs.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published