Skip to content

๐—ข๐—ฆ ๐—Ÿ๐—ฎ๐—ฏ | ๐—–๐—ฆ39002 | ๐—ฃ๐—ฟ๐—ผ๐—ฐ๐—ฒ๐˜€๐˜€, ๐—œ๐—ฃ๐—–, ๐—ง๐—ต๐—ฟ๐—ฒ๐—ฎ๐—ฑ๐˜€, ๐—ฃ๐—ฎ๐—ด๐—ถ๐—ป๐—ด, ๐—™๐—ถ๐—น๐—ฒ ๐—ฆ๐˜†๐˜€๐˜๐—ฒ๐—บ

Notifications You must be signed in to change notification settings

Ecolash/Operating-System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

51 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽ“ Operating Systems Lab Assignments

This repository contains my solutions to a series of lab assignments for an Operating Systems course. The labs cover fundamental concepts of process and memory management, inter-process communication (IPC), and file systems, providing hands-on experience with low-level system programming.


๐Ÿ“‹ Topics Covered

  • LA1: Multi-process applications (fork, wait, exec) โ€” Process creation and management.
  • LA2: IPC using signals โ€” Inter-process communication with signals.
  • LA3: Scheduling Algo Simulation โ€” Analyze efficiency of CPU scheduling algorithms.
  • LA4: IPC using pipes and dup โ€” Implement IPC using pipes & file descriptor duplication.
  • LA5: IPC using shared memory โ€” Use shared memory for fast and efficient IPC.
  • LA6: IPC with shared memory + semaphores โ€” Combine SM with semaphores for thread-safe synchronization.
  • LA7: Multi-threading with pthreads โ€” Develop multi-threaded program using the pthread
  • LA8: Deadlock in multi-threaded apps โ€” Handle deadlock conditions in concurrent programs.
  • LA9: Demand paging (no replacement) โ€” Simulate a demand paging system without a page replacement algorithm.
  • LA10: Demand paging (with replacement) โ€” Extend the simulation to include a page replacement algorithm.
  • LA11: File system interface โ€” Work with the user-level interface of a file system.

๐Ÿ› ๏ธ Languages & Tools

This project primarily uses the C/C++ programming languages and relies heavily on a UNIX/Linux environment. Key system calls and libraries used include:

  • Process Management: fork(), exec(), wait()
  • IPC: pipe(), dup(), shmget(), shmat(), semget(), semop(), signal()
  • Threading: pthread_create(), pthread_join()

๐Ÿš€ Clone Instructions

To get a copy of the repository, follow these steps.

  1. Clone the repository:
    git clone [https://github.com/your-username/your-repo-name.git](https://github.com/your-username/your-repo-name.git)
  2. Navigate to the project directory:
    cd your-repo-name
  3. Explore the lab directories: Each lab assignment is contained within its own folder (e.g., LA1).
    ls
  4. To compile and run a specific assignment:
    # Example for LA1
    cd LA1
    gcc -o gendep gendep.c
    ./gendep
    Note: Some assignments, like those involving threads, will require linking the -pthread library during compilation.

About

๐—ข๐—ฆ ๐—Ÿ๐—ฎ๐—ฏ | ๐—–๐—ฆ39002 | ๐—ฃ๐—ฟ๐—ผ๐—ฐ๐—ฒ๐˜€๐˜€, ๐—œ๐—ฃ๐—–, ๐—ง๐—ต๐—ฟ๐—ฒ๐—ฎ๐—ฑ๐˜€, ๐—ฃ๐—ฎ๐—ด๐—ถ๐—ป๐—ด, ๐—™๐—ถ๐—น๐—ฒ ๐—ฆ๐˜†๐˜€๐˜๐—ฒ๐—บ

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published