docs: demo description
This commit is contained in:
parent
4a8e59afd7
commit
b225bbbad9
34
docs/PROJECT.md
Normal file
34
docs/PROJECT.md
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
## Inter-process communication between two processes
|
||||||
|
|
||||||
|
### System overview
|
||||||
|
|
||||||
|
| Process | Description |
|
||||||
|
| ----------- | ------------------------------------------------------------------------------------------------- |
|
||||||
|
| `init` | Forks 4 child processes, reads data from them, and writes that data to the shared memory |
|
||||||
|
| `P1-P4` | Generates random priority number (in the range 0-19) and sends that priority number to the parent |
|
||||||
|
| `scheduler` | Creates the shared memory segment, reads data written into it, and prints that data |
|
||||||
|
|
||||||
|
![Project system overview](./media/system-overview.png)
|
||||||
|
|
||||||
|
### Implementation criteria
|
||||||
|
|
||||||
|
**Criteria 1:**
|
||||||
|
|
||||||
|
- Init is a parent process, which forks child processes P1-P4 (`fork` syscall)
|
||||||
|
- P1-P4: Process should generate a random integer number between 0-19 (random number generation or simply hardcoded)
|
||||||
|
- P1-P4 should send the random number to init through message passing (`pipe` syscall)
|
||||||
|
- Init should read data sent by P1-P4
|
||||||
|
|
||||||
|
**Criteria 2:**
|
||||||
|
|
||||||
|
- Scheduler is an independent process: it should create a shared memory segmnet (`shmget` and related syscalls)
|
||||||
|
- Scheduler should read dadta (a list of random numbers) written by init, sort the list in ascending order, and print the list (sorting algorithm of choice)
|
||||||
|
|
||||||
|
**Criteria 3:**
|
||||||
|
|
||||||
|
- Init should attach to the shared memory created by the scheduler process (`shmat` and related syscalls, hardcoded to any unique key of choice -> `ftok` syscall is a clean way to accomplish this)
|
||||||
|
- Init should write random numbers from P1-P4 into the shared memory
|
||||||
|
|
||||||
|
**Termination:**
|
||||||
|
|
||||||
|
- After scheduler prints the data, init should detach from shared memory and scheduler should detach and delete the shared memory segment (`schmdt` and `shmctl` syscalls)
|
BIN
docs/media/system-overview.png
Normal file
BIN
docs/media/system-overview.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 25 KiB |
Loading…
Reference in New Issue
Block a user