# neethubal/assignments-aos architecture

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

- Interactive diagram: https://gitdiagram.com/neethubal/assignments-aos
- Repository: https://github.com/neethubal/assignments-aos

## Overview

This repository is a set of Advanced Operating Systems course submissions, not one integrated application. The visible runtime work covers process creation and scheduling, plus three pthread exercises: matrix-sequence path search, reduction of complex-number products, and digit-wise multiplication. The process examples also build a process tree or execute commands from input files. The asg1 directory has no sampled runtime source, so its behavior is not mapped; relationships among the assignments are not implied.

Main entry points: [`asg2-process/Que1.c`](https://github.com/neethubal/assignments-aos/blob/master/asg2-process/Que1.c) (Process tree builder), [`asg2-process/Que2.c`](https://github.com/neethubal/assignments-aos/blob/master/asg2-process/Que2.c) (Command scheduler), [`asg3-threads/Que1/Que1.c`](https://github.com/neethubal/assignments-aos/blob/master/asg3-threads/Que1/Que1.c) (Path workers), [`asg3-threads/Que1/main.c`](https://github.com/neethubal/assignments-aos/blob/master/asg3-threads/Que1/main.c) (Search driver)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_proc["Process exercises"]
  node_treeprog["Process tree builder<br/>[Que1.c]"]
  node_tree["Process tree<br/>[Que1.c]"]
  node_scheduler["Command scheduler<br/>[Que2.c]"]
end

subgraph group_search["Threaded path search"]
  node_searchmain["Search driver<br/>[main.c]"]
  node_searchworker["Path workers<br/>[Que1.c]"]
end

subgraph group_complex["Complex reduction"]
  node_complexmain["Reduction driver<br/>[main.c]"]
  node_complexworker["Complex worker<br/>[Que2.c]"]
end

subgraph group_multiply["Digit multiplication"]
  node_digitmain["Multiplication driver<br/>[main.c]"]
  node_digitworker["Digit-product worker<br/>[Que3.c]"]
end

node_user(("User"))
node_inputfiles["Command files"]
node_sort["System sort"]
node_executed["Executed command"]

node_user -->|"sets parameters"| node_treeprog
node_treeprog -->|"builds and traverses"| node_tree
node_treeprog -->|"sorts process records"| node_sort
node_user -->|"provides files"| node_scheduler
node_inputfiles -->|"supplies commands"| node_scheduler
node_scheduler -->|"executes commands"| node_executed
node_user -->|"provides matrix and sequence"| node_searchmain
node_searchmain -->|"starts workers"| node_searchworker
node_searchworker -->|"spawns directional workers"| node_searchworker
node_user -->|"provides complex values"| node_complexmain
node_complexmain -->|"starts multiplication workers"| node_complexworker
node_user -->|"provides numbers"| node_digitmain
node_digitmain -->|"starts digit workers"| node_digitworker

click node_treeprog "https://github.com/neethubal/assignments-aos/blob/master/asg2-process/Que1.c"
click node_tree "https://github.com/neethubal/assignments-aos/blob/master/asg2-process/Que1.c"
click node_scheduler "https://github.com/neethubal/assignments-aos/blob/master/asg2-process/Que2.c"
click node_searchmain "https://github.com/neethubal/assignments-aos/blob/master/asg3-threads/Que1/main.c"
click node_searchworker "https://github.com/neethubal/assignments-aos/blob/master/asg3-threads/Que1/Que1.c"
click node_complexmain "https://github.com/neethubal/assignments-aos/blob/master/asg3-threads/Que2/main.c"
click node_complexworker "https://github.com/neethubal/assignments-aos/blob/master/asg3-threads/Que2/Que2.c"
click node_digitmain "https://github.com/neethubal/assignments-aos/blob/master/asg3-threads/Que3/main.c"
click node_digitworker "https://github.com/neethubal/assignments-aos/blob/master/asg3-threads/Que3/Que3.c"

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_treeprog,node_tree,node_scheduler,node_user toneBlue
class node_searchmain,node_searchworker toneAmber
class node_complexmain,node_complexworker toneMint
class node_digitmain,node_digitworker toneRose
class node_inputfiles,node_sort,node_executed toneIndigo
```

## Components

### Process exercises

- [Process tree builder](https://github.com/neethubal/assignments-aos/blob/master/asg2-process/Que1.c): `asg2-process/Que1.c`
- [Process tree](https://github.com/neethubal/assignments-aos/blob/master/asg2-process/Que1.c): `asg2-process/Que1.c`
- [Command scheduler](https://github.com/neethubal/assignments-aos/blob/master/asg2-process/Que2.c): `asg2-process/Que2.c`

### Threaded path search

- [Search driver](https://github.com/neethubal/assignments-aos/blob/master/asg3-threads/Que1/main.c): `asg3-threads/Que1/main.c`
- [Path workers](https://github.com/neethubal/assignments-aos/blob/master/asg3-threads/Que1/Que1.c): `asg3-threads/Que1/Que1.c`

### Complex reduction

- [Reduction driver](https://github.com/neethubal/assignments-aos/blob/master/asg3-threads/Que2/main.c): `asg3-threads/Que2/main.c`
- [Complex worker](https://github.com/neethubal/assignments-aos/blob/master/asg3-threads/Que2/Que2.c): `asg3-threads/Que2/Que2.c`

### Digit multiplication

- [Multiplication driver](https://github.com/neethubal/assignments-aos/blob/master/asg3-threads/Que3/main.c): `asg3-threads/Que3/main.c`
- [Digit-product worker](https://github.com/neethubal/assignments-aos/blob/master/asg3-threads/Que3/Que3.c): `asg3-threads/Que3/Que3.c`

### Other components

- **User**
- **Command files**
- **System sort**
- **Executed command**

## Connections

- User → Process tree builder: sets parameters (evidence: `asg2-process/Que1.c`)
- Process tree builder → Process tree: builds and traverses (evidence: `asg2-process/Que1.c`)
- Process tree builder → System sort: sorts process records (evidence: `asg2-process/Que1.c`)
- User → Command scheduler: provides files (evidence: `asg2-process/Que2.c`)
- Command files → Command scheduler: supplies commands (evidence: `asg2-process/Que2.c`)
- Command scheduler → Executed command: executes commands (evidence: `asg2-process/Que2.c`)
- User → Search driver: provides matrix and sequence (evidence: `asg3-threads/Que1/main.c`)
- Search driver → Path workers: starts workers (evidence: `asg3-threads/Que1/main.c`)
- Path workers → Path workers: spawns directional workers (evidence: `asg3-threads/Que1/Que1.c`)
- User → Reduction driver: provides complex values (evidence: `asg3-threads/Que2/main.c`)
- Reduction driver → Complex worker: starts multiplication workers (evidence: `asg3-threads/Que2/main.c`)
- User → Multiplication driver: provides numbers (evidence: `asg3-threads/Que3/main.c`)
- Multiplication driver → Digit-product worker: starts digit workers (evidence: `asg3-threads/Que3/main.c`)
