Giter Site home page Giter Site logo

emanothman21 / c-com Goto Github PK

View Code? Open in Web Editor NEW

This project forked from bahaaeldeen1999/c-com

0.0 0.0 0.0 478 KB

C-COM is an implementation of inter-process communication in the OS, it is a simulation for how the OS can implement a scheduler, memory management, and solving producer consumer problem

License: MIT License

Makefile 0.56% C 93.38% C++ 6.06%

c-com's Introduction

GitHub contributors GitHub issues GitHub forks GitHub stars GitHub license

Operating Systems common applications

About the project

  • The project contains three main concepts used in any operating system which are process scheduling, memory managemnt using buddy algorithm, and producer consumer problem

  • It is implemented in C (standard 11) and uses make for compilation

  • More explaination for the details of each module and example test cases can be found in the project documentation

Process scheduling problem

The scheduler provides three algorithms to test a single scenario with. each algorithm has different criteria to define what is the most important process to run

  1. Highest Priority First (HPF)
  2. Round Robin (RR)
  3. Shortest Remaining Time Next (SRTN)

Memory management problem

It is an extension of the scheduler but with the memory management module added. it uses buddy algorithm to allocate/deallocate memory for each process according to the situation

Producer consumer problem

This module implements the common problem which is the synchronization between multiple consuming and producing processes and all of them operating on the same resource. the module uses semaphore arrays and shared memory

Testing

  1. For scheduler and memory manager

    cd scheduler              # or memory_manager 
    make 
    ./test_generator.out      # then enter any number of processes 
    ./process_generator.out
    
  2. For producer consumer

    cd producer_consumer 
    gcc -std=c11 producer.c -o producer.out 
    gcc -std=c11 consumer.c -o consumer.out 
    gcc -std=c11 clear_ipc.c -o clear_ipc.out 
    ./producer.out 
    ./consumer.out
    

File Structure

root directory
├── README.md
├── LICENSE
├── .gitignore
├── documentation.pdf
└── scheduler
│   ├── headers
│   │   ├── file_handler.h
│   │   ├── headers.h
│   │   ├── highest_priority_first.h
│   │   ├── integer_queues.h
│   │   ├── message_buffer.h
│   │   ├── pcb.h
│   │   ├── round_robin.h
│   │   ├── shortest_remaining_time_next.h
│   │   ├── vector.h
│   ├── clk.c
│   ├── process_generator.c
│   ├── process.c
│   ├── scheduler.c
│   ├── test_generator.c
│   ├── key_process_table
│   ├── keyfile
│   ├── Makefile
└── memory_manager
│   ├── headers
│   │   ├── buddy_algorithm.h
│   │   ├── file_handler.h
│   │   ├── headers.h
│   │   ├── highest_priority_first.h
│   │   ├── integer_queues.h
│   │   ├── message_buffer.h
│   │   ├── pcb.h
│   │   ├── round_robin.h
│   │   ├── shortest_remaining_time_next.h
│   │   ├── vector.h
│   ├── clk.c
│   ├── process_generator.c
│   ├── process.c
│   ├── scheduler.c
│   ├── test_generator.c
│   ├── key_buddy
│   ├── key_process_table
│   ├── keyfile
│   ├── Makefile
└── producer_consumer
│   ├── clear_ipc.c
│   ├── consumer.c
│   ├── producer.c
└── ├── headers.h

Contributors

This project was the semester project of operating systems course in 3rd year computer engineering. it is implemented by:

Abdelrhman Fadl Bahaa Eldeen Eman Othman Tarek Samy

Acknowledgement

Big thanks to all people in this team for the great efforts

c-com's People

Contributors

bahaaeldeen1999 avatar tarek99samy avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.