/FlashOS

Simulation for the OS performing Scheduling,Memory management and an implementation for the producer-consumer problem.

Primary LanguageC

FlashOs Logo

GitHub forks GitHub Repo stars GitHub contributors GitHub code size in bytes

FlashOs

Description

This project consists of 3 phases :

  1. Scheduler
    • HPF (Highest Priority First)
    • SRTN (Shortest Remaining Time Next)
    • RR (Round Robin)
  2. Memory Management
    • Buddy Algorithm
  3. Producer-Consumer

System Design

Files Arch

Data-structures

  1. 2-Level Priority Queue:
    • First level: each node represents a linked list that’s is sorted with the priority.
    • Second level: each linked list in the first level is a list of all processes have the same priority sorted by the arrival time.
  2. Circular Queue:
    • The name “Circular” demonstrates the way we are dealing with it. We pop a process, then give it its quantum then push it at the end of the queue.
    • Optimizes the round robin algorithm as each insert – select – delete is O(1).
  3. Array of linked lists for memory
    • each list represents the memory blocks with the size of this list - sizes of lists are multiples of 2 till 2 power 10 (1024 -memory size ).

IPCS

  1. Semaphores
  2. Message Queues
  3. Shared Memory
  4. Signals
  • Refer to OS-Report for more details about the used methodologies and input/output samples.

  • Scheduler

    • Run

       - Add your custom testcase in processes.txt
       - For random testcases run:
       $ gcc test_generator.c -o test_generator.out
       $ ./test_generator.out
         $ cd Scheduler
         $ make
         $ make run
    • Log Files

Memory Management

$ cd Memory/Scheduler
$ make
$ make run

Producer-Consumer

$ cd Phase3
$ make
$ ./producer.out
$ ./concumer.out

Contributors

  • Ahmed Magdy
  • Mohamed Monsef
  • Menna Mahmoud
  • Nada Abdelmaboud