Code for EI338 Operating System in SJTU.
Actually, these projects are all from each chapter's programming projects in Operating System Concepts (10th Edition) .
ID | Name | Description |
---|---|---|
1 | Introduction to Linux Kernel Modules | (Chapter 2) Design two very basic kernel modules. |
2-1 | UNIX Shell | (Chapter 3) Designing a C program to serve as a shell interface that accepts user commands and then executes each command in a separate process, which supports concurrency, I/O redirection and pipe |
2-2 | Linux Kernel Module for Task Information | (Chapter 3) Write a Linux kernel module that uses the /proc file system for displaying a task’s information based on its PID. |
3-1 | Multithreaded Sorting Application | (Chapter 4) Write a multithreaded sorting program. |
3-2 | Fork-Join Sorting Application | (Chapter 4) Implement the preceding project in Java (I use Golang instead) including quick sort and merge sort. |
4 | Scheduling Algorithms | (Chapter 5) Implement a demo for several CPU scheduling algorithms: FCFS, SJF, Priority, RR, Priority with RR |
5-1 | Designing a Thread Pool | (Chapter 7) Create and manage a thread pool with Pthreads and POSIX synchronization |
5-2 | The Producer–Consumer Problem | (Chapter 7) Use standard counting semaphores and a mutex lock to solve the producer-consumer problem |
6 | Banker’s Algorithm | (Chapter 8) Write a program that implements the banker's algorithm |
7 | Contiguous Memory Allocation | (Chapter 9) Manage a contiguous region of memory and respond to different requests |
8 | Designing a Virtual Memory Manager | (Chapter 10) Write a program that translates logical addresses to physical addresses for a virtual address space |