# anamosa101-coder/pbl architecture

> Architecture diagram of the GitHub repository anamosa101-coder/pbl, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/anamosa101-coder/pbl
- Repository: https://github.com/anamosa101-coder/pbl

## Overview

This repository is a collection of OS-concept demonstrations and simulators, not one integrated application. Users run standalone IPC examples, operate a multi-process command simulator, or enter process data into a CPU scheduler; the web simulators cover deadlock and page replacement. The graph preserves those separate learning workflows and their domain stages. Some web and week-2 internals are represented by their exact enclosing directories because their source was not sampled; dashed links mark relationships not verified in excerpts.

Main entry points: [`week2/core.c`](https://github.com/anamosa101-coder/pbl/blob/main/week2/core.c) (Simulator Core), [`week3/scheduler.c`](https://github.com/anamosa101-coder/pbl/blob/main/week3/scheduler.c) (Scheduler CLI), [`week2/ui.c`](https://github.com/anamosa101-coder/pbl/blob/main/week2/ui.c) (Command UI), [`msgqueue/sender.c`](https://github.com/anamosa101-coder/pbl/blob/main/msgqueue/sender.c) (Queue Sender)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ipc["IPC Demos"]
  node_pipe["Anonymous Pipe<br/>[pipe_demo.c]"]
  node_mq_sender["Queue Sender<br/>[sender.c]"]
  node_mq_receiver["Queue Receiver<br/>[receiver.c]"]
  node_shm_writer["Shared Writer<br/>[writer.c]"]
  node_shm_reader["Shared Reader<br/>[reader.c]"]
  node_socket_client["Socket Client<br/>[client.c]"]
  node_socket_server["Socket Server<br/>[server.c]"]
end

subgraph group_multi["Multi-Process Simulator"]
  node_week2_ui["Command UI<br/>[ui.c]"]
  node_week2_core["Simulator Core<br/>[core.c]"]
  node_week2_logger["Logger Process<br/>[logger.c]"]
end

subgraph group_scheduling["CPU Scheduling"]
  node_schedule_cli["Scheduler CLI<br/>[scheduler.c]"]
  node_schedule_algos["Scheduling Algorithms<br/>[algorithms.c]"]
  node_schedule_results["Schedule Results<br/>[scheduler.h]"]
  node_schedule_report["Gantt And Metrics<br/>[gantt.c]"]
end

subgraph group_web["Web Simulators"]
  node_deadlock["Deadlock Simulator<br/>[index.html]"]
  node_page_replace["Page Replacement<br/>[index.html]"]
end

node_user(("Learner"))

node_user -->|"runs demo"| node_pipe
node_user -->|"runs sender"| node_mq_sender
node_user -->|"runs receiver"| node_mq_receiver
node_mq_sender -->|"sends messages"| node_mq_receiver
node_user -->|"runs writer"| node_shm_writer
node_user -->|"runs reader"| node_shm_reader
node_shm_writer -->|"writes shared data"| node_shm_reader
node_user -->|"runs client"| node_socket_client
node_user -->|"runs server"| node_socket_server
node_socket_client -->|"exchanges messages"| node_socket_server
node_user -->|"enters commands"| node_week2_ui
node_week2_ui -->|"sends commands"| node_week2_core
node_week2_core -->|"returns replies"| node_week2_ui
node_week2_core -->|"sends log entries"| node_week2_logger
node_user -->|"provides processes"| node_schedule_cli
node_schedule_cli -.->|"runs algorithms"| node_schedule_algos
node_schedule_algos -.->|"produces results"| node_schedule_results
node_schedule_cli -.->|"displays results"| node_schedule_report
node_schedule_report -->|"formats schedule"| node_schedule_results
node_user -->|"uses simulator"| node_deadlock
node_user -->|"uses simulator"| node_page_replace

click node_pipe "https://github.com/anamosa101-coder/pbl/blob/main/pipes/pipe_demo.c"
click node_mq_sender "https://github.com/anamosa101-coder/pbl/blob/main/msgqueue/sender.c"
click node_mq_receiver "https://github.com/anamosa101-coder/pbl/blob/main/msgqueue/receiver.c"
click node_shm_writer "https://github.com/anamosa101-coder/pbl/blob/main/sharedmem/writer.c"
click node_shm_reader "https://github.com/anamosa101-coder/pbl/blob/main/sharedmem/reader.c"
click node_socket_client "https://github.com/anamosa101-coder/pbl/blob/main/sockets/client.c"
click node_socket_server "https://github.com/anamosa101-coder/pbl/blob/main/sockets/server.c"
click node_week2_ui "https://github.com/anamosa101-coder/pbl/blob/main/week2/ui.c"
click node_week2_core "https://github.com/anamosa101-coder/pbl/blob/main/week2/core.c"
click node_week2_logger "https://github.com/anamosa101-coder/pbl/blob/main/week2/logger.c"
click node_schedule_cli "https://github.com/anamosa101-coder/pbl/blob/main/week3/scheduler.c"
click node_schedule_algos "https://github.com/anamosa101-coder/pbl/blob/main/week3/algorithms.c"
click node_schedule_results "https://github.com/anamosa101-coder/pbl/blob/main/week3/scheduler.h"
click node_schedule_report "https://github.com/anamosa101-coder/pbl/blob/main/week3/gantt.c"
click node_deadlock "https://github.com/anamosa101-coder/pbl/blob/main/week4/index.html"
click node_page_replace "https://github.com/anamosa101-coder/pbl/blob/main/pagereplace/index.html"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_pipe,node_mq_sender,node_mq_receiver,node_shm_writer,node_shm_reader,node_socket_client,node_socket_server toneBlue
class node_week2_ui,node_week2_core,node_week2_logger toneAmber
class node_schedule_cli,node_schedule_algos,node_schedule_results,node_schedule_report toneMint
class node_deadlock,node_page_replace toneRose
class node_user toneIndigo
```

## Components

### IPC Demos

- [Anonymous Pipe](https://github.com/anamosa101-coder/pbl/blob/main/pipes/pipe_demo.c): `pipes/pipe_demo.c`
- [Queue Sender](https://github.com/anamosa101-coder/pbl/blob/main/msgqueue/sender.c): `msgqueue/sender.c`
- [Queue Receiver](https://github.com/anamosa101-coder/pbl/blob/main/msgqueue/receiver.c): `msgqueue/receiver.c`
- [Shared Writer](https://github.com/anamosa101-coder/pbl/blob/main/sharedmem/writer.c): `sharedmem/writer.c`
- [Shared Reader](https://github.com/anamosa101-coder/pbl/blob/main/sharedmem/reader.c): `sharedmem/reader.c`
- [Socket Client](https://github.com/anamosa101-coder/pbl/blob/main/sockets/client.c): `sockets/client.c`
- [Socket Server](https://github.com/anamosa101-coder/pbl/blob/main/sockets/server.c): `sockets/server.c`

### Multi-Process Simulator

- [Command UI](https://github.com/anamosa101-coder/pbl/blob/main/week2/ui.c): `week2/ui.c`
- [Simulator Core](https://github.com/anamosa101-coder/pbl/blob/main/week2/core.c): `week2/core.c`
- [Logger Process](https://github.com/anamosa101-coder/pbl/blob/main/week2/logger.c): `week2/logger.c`

### CPU Scheduling

- [Scheduler CLI](https://github.com/anamosa101-coder/pbl/blob/main/week3/scheduler.c): `week3/scheduler.c`
- [Scheduling Algorithms](https://github.com/anamosa101-coder/pbl/blob/main/week3/algorithms.c): `week3/algorithms.c`
- [Schedule Results](https://github.com/anamosa101-coder/pbl/blob/main/week3/scheduler.h): `week3/scheduler.h`
- [Gantt And Metrics](https://github.com/anamosa101-coder/pbl/blob/main/week3/gantt.c): `week3/gantt.c`

### Web Simulators

- [Deadlock Simulator](https://github.com/anamosa101-coder/pbl/blob/main/week4/index.html): `week4/index.html`
- [Page Replacement](https://github.com/anamosa101-coder/pbl/blob/main/pagereplace/index.html): `pagereplace/index.html`

### Other components

- **Learner**

## Connections

- Learner → Anonymous Pipe: runs demo (evidence: `README.md`)
- Learner → Queue Sender: runs sender (evidence: `README.md`)
- Learner → Queue Receiver: runs receiver (evidence: `README.md`)
- Queue Sender → Queue Receiver: sends messages (evidence: `README.md`)
- Learner → Shared Writer: runs writer (evidence: `README.md`)
- Learner → Shared Reader: runs reader (evidence: `README.md`)
- Shared Writer → Shared Reader: writes shared data (evidence: `sharedmem/writer.c`)
- Learner → Socket Client: runs client (evidence: `README.md`)
- Learner → Socket Server: runs server (evidence: `README.md`)
- Socket Client → Socket Server: exchanges messages (evidence: `sockets/client.c`)
- Learner → Command UI: enters commands (evidence: `week2/ui.c`)
- Command UI → Simulator Core: sends commands (evidence: `week2/ui.c`)
- Simulator Core → Command UI: returns replies (evidence: `week2/ui.c`)
- Simulator Core → Logger Process: sends log entries (evidence: `week2/core.c`)
- Learner → Scheduler CLI: provides processes (evidence: `week3/scheduler.c`)
- Scheduler CLI → Scheduling Algorithms: runs algorithms
- Scheduling Algorithms → Schedule Results: produces results (evidence: `week3/algorithms.c`)
- Scheduler CLI → Gantt And Metrics: displays results
- Gantt And Metrics → Schedule Results: formats schedule (evidence: `week3/gantt.c`)
- Learner → Deadlock Simulator: uses simulator (evidence: `README.md`)
- Learner → Page Replacement: uses simulator (evidence: `README.md`)
