How xxinggod/os-course-lab works
This repository is an operating-systems course built around progressively implementing and using the ChCore microkernel. The student workflow moves from ARM assembly and booting through memory management, processes and threads, multicore scheduling and IPC, filesystem services, and optional GUI applications. Lab2’s sampled kernel entry initializes memory, interrupts, scheduling, and the first user thread; later labs add user-facing interfaces and services. Several Lab4 and Lab6 subsystems are documented but not represented by sampled implementation files, so their wiring is shown only where the README supports it.
Main entry points: aarch64/main.c Kernel entry · lv_gba_emu/main.c User applications · mm.c Memory management · syscall.c System calls
Components 18
Course progression
- ARM assembly
Lab0/bomb.c - Kernel boot
Lab1/kernel/arch/aarch64/boot/raspi3/init/init_c.c - VFS lab
Kernel runtime
- Memory management
Lab2/kernel/mm/mm.c - Page faults
Lab2/kernel/mm/pgfault_handler.c - Kernel entry
Lab2/kernel/arch/aarch64/main.c - System calls
Lab3/kernel/syscall/syscall.c - Process objects
Lab3/kernel/object/thread.c - Thread scheduling
Lab3/kernel/include/sched/sched.h - Capability IPC
Lab3/kernel/include/ipc/channel.h
User services
- tmpfs server
Lab5/user/system-services/system-servers/tmpfs/main.c - User applications
Lab6/user/apps/lv_gba_emu/main.c
GUI applications
- Wayland client
Lab6/user/chcore-libs/graphic/wayland/include/wayland-client-protocol.h - Page manager
Lab6/user/apps/lv_lib_100ask/src/lv_100ask_page_manager/lv_100ask_page_manager.c - LVGL fragments
Lab6/user/chcore-libs/graphic/lvgl/lvgl/src/extra/others/fragment/lv_fragment_manager.c - GBA emulator
Lab6/user/apps/lv_gba_emu/main.c - Wayland compositor
Other components
- Student
Connections 19
- Student → ARM assembly: studies
- ARM assembly → Kernel boot: prepares for
- Kernel boot → Memory management: progresses to
- Memory management → Kernel entry: progresses to
- Kernel entry → Memory management: initializes
- Kernel entry → Thread scheduling: initializes
- Kernel entry → Process objects: creates root thread
- Memory management → Page faults: handles faults
- Kernel entry → System calls: progresses to
- System calls → Process objects: manages processes
- System calls → Capability IPC: progresses to
- Capability IPC → VFS lab: progresses to
- VFS lab → tmpfs server: implements filesystem
- Student → User applications: runs applications
- User applications → Wayland client: uses protocol
- User applications → Page manager: uses page navigation
- Page manager → LVGL fragments: GUI capability
- Wayland client → Wayland compositor: communicates with
- User applications → GBA emulator: launches emulator