# secs-dev/os-course architecture

> Architecture diagram of the GitHub repository secs-dev/os-course, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/secs-dev/os-course
- Repository: https://github.com/secs-dev/os-course

## Overview

This repository is the entry point for an operating-systems course: students choose labs, with README-documented recommended prerequisites guiding later work. The labs cover file systems, concurrency, Linux, and experiments; Xv6 is maintained in a separate repository. The intro experiment generates graph data and compares traversal approaches, including direct file I/O and memory mapping. The graph reflects documented course ordering and sampled experiment code; unsampled lab internals are represented only at their documented lab-directory paths.

Main entry points: [`lab/vtsh/README.md`](https://github.com/secs-dev/os-course/blob/main/lab/vtsh/README.md) (VT Shell), [`lab/vtpc/README.md`](https://github.com/secs-dev/os-course/blob/main/lab/vtpc/README.md) (Page Cache), [`lab/intro-exp/src/graph_traverse.c`](https://github.com/secs-dev/os-course/blob/main/lab/intro-exp/src/graph_traverse.c) (Direct-I/O Traversal), [`lab/corosched/README.md`](https://github.com/secs-dev/os-course/blob/main/lab/corosched/README.md) (CoroSched)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_filesystem["File Systems"]
  node_pagecache["Page Cache<br/>[README.md]"]
  node_kernel_fs["Kernel FS<br/>[README.md]"]
  node_fuse["FUSE<br/>[README.md]"]
end

subgraph group_concurrency["Concurrency"]
  node_shell["VT Shell<br/>[README.md]"]
  node_corosched["CoroSched<br/>[README.md]"]
  node_corohttp["CoroHTTP<br/>[README.md]"]
end

subgraph group_linux["Linux"]
  node_kernelmodule["Kernel Module<br/>[README.md]"]
  node_bpf["BPF XDP<br/>[README.md]"]
end

subgraph group_experiments["Experiments"]
  node_intro["Intro Experiment<br/>[README.md]"]
  node_graphgen["Graph Generator<br/>[graphgen.py]"]
  node_graphfile["Graph File"]
  node_direct_traversal["Direct-I/O Traversal<br/>[graph_traverse.c]"]
  node_mapped_traversal["Mapped Traversal"]
  node_graph_io["Graph I/O<br/>[graph_io.h]"]
end

node_student(("Student"))
node_xv6["Xv6 OS"]
node_project["Course Project<br/>[README.md]"]

node_student -->|"starts"| node_intro
node_student -->|"starts"| node_xv6
node_student -->|"starts"| node_project
node_student -->|"starts"| node_shell
node_shell -->|"recommended first"| node_pagecache
node_shell -->|"recommended first"| node_kernelmodule
node_pagecache -->|"recommended first"| node_kernel_fs
node_pagecache -->|"recommended first"| node_fuse
node_shell -->|"recommended first"| node_corosched
node_pagecache -->|"recommended first"| node_corohttp
node_corosched -->|"recommended first"| node_corohttp
node_shell -->|"recommended first"| node_bpf
node_student -->|"configures"| node_graphgen
node_graphgen -->|"writes"| node_graphfile
node_student -->|"runs"| node_direct_traversal
node_student -->|"runs"| node_mapped_traversal
node_direct_traversal -->|"reads or updates"| node_graphfile
node_mapped_traversal -->|"maps and updates"| node_graphfile
node_direct_traversal -->|"uses"| node_graph_io

click node_intro "https://github.com/secs-dev/os-course/blob/main/lab/intro-exp/README.md"
click node_project "https://github.com/secs-dev/os-course/blob/main/lab/project/README.md"
click node_shell "https://github.com/secs-dev/os-course/blob/main/lab/vtsh/README.md"
click node_pagecache "https://github.com/secs-dev/os-course/blob/main/lab/vtpc/README.md"
click node_kernelmodule "https://github.com/secs-dev/os-course/blob/main/lab/vtkm/README.md"
click node_kernel_fs "https://github.com/secs-dev/os-course/blob/main/lab/vtfs/README.md"
click node_fuse "https://github.com/secs-dev/os-course/blob/main/lab/fuse/README.md"
click node_corosched "https://github.com/secs-dev/os-course/blob/main/lab/corosched/README.md"
click node_corohttp "https://github.com/secs-dev/os-course/blob/main/lab/corohttp/README.md"
click node_bpf "https://github.com/secs-dev/os-course/blob/main/lab/bpf-xdp/README.md"
click node_graphgen "https://github.com/secs-dev/os-course/blob/main/lab/util/graphgen.py"
click node_direct_traversal "https://github.com/secs-dev/os-course/blob/main/lab/intro-exp/src/graph_traverse.c"
click node_mapped_traversal "https://github.com/secs-dev/os-course/blob/main/lab/intro-exp/src/graph_traverse_mmap.c"
click node_graph_io "https://github.com/secs-dev/os-course/blob/main/lab/intro-exp/src/graph_io.h"

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_pagecache,node_kernel_fs,node_fuse toneBlue
class node_shell,node_corosched,node_corohttp toneAmber
class node_kernelmodule,node_bpf toneMint
class node_intro,node_graphgen,node_graphfile,node_direct_traversal,node_mapped_traversal,node_graph_io toneRose
class node_student,node_xv6 toneIndigo
class node_project toneTeal
```

## Components

### File Systems

- [Page Cache](https://github.com/secs-dev/os-course/blob/main/lab/vtpc/README.md): `lab/vtpc/README.md`
- [Kernel FS](https://github.com/secs-dev/os-course/blob/main/lab/vtfs/README.md): `lab/vtfs/README.md`
- [FUSE](https://github.com/secs-dev/os-course/blob/main/lab/fuse/README.md): `lab/fuse/README.md`

### Concurrency

- [VT Shell](https://github.com/secs-dev/os-course/blob/main/lab/vtsh/README.md): `lab/vtsh/README.md`
- [CoroSched](https://github.com/secs-dev/os-course/blob/main/lab/corosched/README.md): `lab/corosched/README.md`
- [CoroHTTP](https://github.com/secs-dev/os-course/blob/main/lab/corohttp/README.md): `lab/corohttp/README.md`

### Linux

- [Kernel Module](https://github.com/secs-dev/os-course/blob/main/lab/vtkm/README.md): `lab/vtkm/README.md`
- [BPF XDP](https://github.com/secs-dev/os-course/blob/main/lab/bpf-xdp/README.md): `lab/bpf-xdp/README.md`

### Experiments

- [Intro Experiment](https://github.com/secs-dev/os-course/blob/main/lab/intro-exp/README.md): `lab/intro-exp/README.md`
- [Graph Generator](https://github.com/secs-dev/os-course/blob/main/lab/util/graphgen.py): `lab/util/graphgen.py`
- **Graph File**
- [Direct-I/O Traversal](https://github.com/secs-dev/os-course/blob/main/lab/intro-exp/src/graph_traverse.c): `lab/intro-exp/src/graph_traverse.c`
- [Mapped Traversal](https://github.com/secs-dev/os-course/blob/main/lab/intro-exp/src/graph_traverse_mmap.c): `lab/intro-exp/src/graph_traverse_mmap.c`
- [Graph I/O](https://github.com/secs-dev/os-course/blob/main/lab/intro-exp/src/graph_io.h): `lab/intro-exp/src/graph_io.h`

### Other components

- **Student**
- **Xv6 OS**
- [Course Project](https://github.com/secs-dev/os-course/blob/main/lab/project/README.md): `lab/project/README.md`

## Connections

- Student → Intro Experiment: starts
- Student → Xv6 OS: starts
- Student → Course Project: starts
- Student → VT Shell: starts
- VT Shell → Page Cache: recommended first
- VT Shell → Kernel Module: recommended first
- Page Cache → Kernel FS: recommended first
- Page Cache → FUSE: recommended first
- VT Shell → CoroSched: recommended first
- Page Cache → CoroHTTP: recommended first
- CoroSched → CoroHTTP: recommended first
- VT Shell → BPF XDP: recommended first
- Student → Graph Generator: configures
- Graph Generator → Graph File: writes
- Student → Direct-I/O Traversal: runs
- Student → Mapped Traversal: runs
- Direct-I/O Traversal → Graph File: reads or updates
- Mapped Traversal → Graph File: maps and updates
- Direct-I/O Traversal → Graph I/O: uses
