# oslabcode **Repository Path**: oscsc/oslabcode ## Basic Information - **Project Name**: oslabcode - **Description**: NJU CS JYY OS-Lab Course Code. (OSLab 2023) - **Primary Language**: C - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://jyywiki.cn - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2023-03-28 - **Last Updated**: 2025-05-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 操作系统:设计与实现(2023)课程相关代码 > 课程整理内容见:[操作系统:设计与实现](https://xliuqq.github.io/csblog/courses/os_lab/index.html) > > AbstrctMachine Github 官方地址: https://github.com/NJU-ProjectN/abstract-machine > > ipynb 格式在 VS Code中运行,需要安装 jupyter 包。 > > TODO (model_checker 的结果可视化, gojs) 1. **绪论**:操作系统概述 - [多项式/符号计算示例](./ch01-os_introduction/math_demo.ipynb) - [TODO(暂未发现哪里有讲)虚拟地址验证示例](./ch01-os_introduction/virtual_mem_verify) 2. **绪论**:应用视角的操作系统 - hello_world的最小程序 - [printf的helloworld](./ch02-os_app_view/minimal_helloworld/normal.c) - [汇编最小化的helloworld](./ch02-os_app_view/minimal_helloworld/minimal.S) - [内置框架的helloworld](./ch02-os_app_view/minimal_helloworld/inner.c) - [非递归的汉诺塔](./ch02-os_app_view/hanoi/hanoi-nr.c) - [编译器优化示例](./ch02-os_app_view/compiler_opt/compiler_opt.c) - [f_g非递归代码](./ch02-os_app_view/f_g/f_g.c) 3. **绪论**:硬件视角的操作系统 - [7段数码管显示0,1,2](./ch03-os_hardware_view/seven-seg/Makefile) - [qemu加载BIOS示例](./ch03-os_hardware_view/qemu-bios/Makefile) 4. **并发**:操作系统模型 - [python模拟操作系统(model_checker)](./ch04-os_python_modeling/os-toy/os-model.py) - [500行建模操作系统](./ch04-os_python_modeling/mosaic/mosaic.py) 5. **并发**:多处理器编程 - [栈的范围验证](./ch05-os_multi_cpu_programming/stack_verify/Makefile) - [放弃:原子性](./ch05-os_multi_cpu_programming/atomic/alipay.c) - [放弃:执行顺序](./ch05-os_multi_cpu_programming/order/sum.c) - [放弃:处理器间的可见性](./ch05-os_multi_cpu_programming/visibility/store-load.c) 6. **并发**:并发控制基础 - [peterson 算法两线程互斥](./ch06-os_concurrency_control_basic/peterson/peterson.c) - [原子性汇编指令实现自增](./ch06-os_concurrency_control_basic/atomic/sum-atomic.c) 7. **并发** :并发控制:互斥 - [asm 实现原子性 xchg](./ch07-os_concurrency_control_mutex/spinlock/xchg.c) - [xchg 实现 spinlock](./ch07-os_concurrency_control_mutex/spinlock/spinlock.c) - [spinlock 实现 sum](./ch07-os_concurrency_control_mutex/spinlock/sum.c) - [cmpxchg的实现和测试](./ch07-os_concurrency_control_mutex/cmpxchg/cmpxchg.c) - [自旋锁和互斥锁的性能比较](./ch07-os_concurrency_control_mutex/sync-cmp/Makefile) - [gdb 多线程调试](./ch07-os_concurrency_control_mutex/sync-cmp/init.gdb) 8. **并发** :调试理论与实践 - [gdb 多线程调试](./ch08-os_debug_and_action/futex/Makefile) - [数组越界的编译器检查](./ch08-os_debug_and_action/mem/Makefile) 9. **并发** :并发控制:同步 (1) - [基于mutex实现生产消费者](./ch09-os_sync_condition/mutex/pc-mutex.c) - [基于单个条件变量实现生产消费者](./ch09-os_sync_condition/condition/pc-cv.c) - [基于两个条件变量实现生产消费者](./ch09-os_sync_condition/condition/pc-cv-two.c) - [验证生产消费者正确实现](./ch09-os_sync_condition/validate.py) - [并发打印 <><_ 或 ><>_](./ch09-os_sync_condition/fish/fish.c) - [并发打印 <><_ 或 ><>_的正确性验证](./ch09-os_sync_condition/fish/validate.py) 10. **并发** :并发控制:同步 (2) - [基于两个信号量实现生产消费者](./ch10-os_sync_semphore/sem/pc-sem.c) - [基于信号量的并发打印 <><_ 或 ><>_](./ch10-os_sync_semphore/fish/fish.c) - [哲学家吃饭问题](./ch10-os_sync_semphore/philosopher/philosopher.c) 11. **并发** :真实世界的并发编程 - [(HPC)多线程绘制Mandelbrot set](./ch11-os_concurrent_in_real_world/hpc/mandelbrot.c) - [(数据中心)go routine 示例](./ch11-os_concurrent_in_real_world/datacenter/fib.go) - [(数据中心)go channel 实现生产消费者](./ch11-os_concurrent_in_real_world/datacenter/pc.go) - [(分布式机器学习)Mandelbrot set GPU绘制](./ch11-os_concurrent_in_real_world/gpu/mandelbrot.cu) 12. (13)**并发** :并发 Bug 和应对 - [死锁的应对:锁的顺序](./ch12_13-os_concurrent_bug_category_defense/deadlock/lock-ordering.c) - [防御性编程: xv6 spinlock](./ch12_13-os_concurrent_bug_category_defense/spinlock/spinlock-xv6.c) - [自动运行时检查: lockdep](./ch12_13-os_concurrent_bug_category_defense/runtimecheck/lockdep.c) - [自动运行时检查: AddressSanitizer ](./ch12_13-os_concurrent_bug_category_defense/runtimecheck/uaf.c) - [自动运行时检查: ThreadSanitizer(数据竞争)](./ch12_13-os_concurrent_bug_category_defense/runtimecheck/alipay.c) 14. **并发**:多处理器系统与中断机制 - [模拟纸带输入进行指令执行](./ch14_os_interrupt/rvemu/rvemu.c) - [!!轻量级的RISC-V32位模拟器](./ch14_os_interrupt/rv32ima/rv32ima.h) - [!!内核spinlock的中断(依赖AbstractMachine)](./ch14_os_interrupt/spinlock_interrupt/spinlock.c) - [!!50行实现操作系统内核(依赖AbstractMachine)](./ch14_os_interrupt/50linesos/thread-os.c) 15. **虚拟化**:操作系统上的进程 - [!!线程操作系统与上下文切换(依赖AbstractMachine)](./ch15-os_process/thread_and_process/thread-os.c) - [(fork)“状态机的复制”-并发](./ch15-os_process/fork/fork-demo.c) - [(fork)“状态机的复制”-缓冲区](./ch15-os_process/fork/fork-printf.c) - [(execve)“状态机的重置”-环境变量](./ch15-os_process/execve/execve-demo.c) 16. **虚拟化**:Linux 操作系统 - [qemu启动minix](./ch16-os_linux/minix/Makefile) - [minimal linux](./ch16-os_linux/minimal_linux/Makefile) 17. **虚拟化**:进程的地址空间 - [静态链接和动态链接的进程的地址空间](./ch17-os_linux_process_address/process_address/Makefile) - [mmap使用示例](./ch17-os_linux_process_address/mmap/mmap-alloc.c) - [扫描并修改进程的内存的特定地址的值](./ch17-os_linux_process_address/hack/knight.c) - [运行时patch代码](./ch17-os_linux_process_address/hack/hack.py) 18. **虚拟化**: 操作系统实验生存指南 - [patch热更新函数代码](./ch18-os_lab_live_guide/dsu/dsu.c) - [!!OSLab实验-最小线程操作系统的调试(依赖AbstractMachine)](./ch18-os_lab_live_guide/thread-os/visualize.py) 19. **虚拟化**:系统调用和 UNIX Shell - [freestanding shell 代码](./ch19-os_systemcall_unixshell/freestanding-shell/sh.c) 20. **虚拟化**:C 标准库的实现 - [多线程 memset的问题](./ch20-os_standard_c/memset/memset-race.c) - [environ 内置环境变量](./ch20-os_standard_c/env/env.c) 21. (22) **虚拟化**:可执行文件的加载 - [加载最小可执行文件到内存执行](./ch21_22-os_executable_files/loader/loader.c) - [加载并执行静态可执行文件](./ch21_22-os_executable_files/loader/loader-static.c) - [!!动态链接可执行文件的模拟加载实现](./ch21_22-os_executable_files/dlbox/dlbox.c) - [使用自定义的ld.so](./ch21_22-os_executable_files/customized_loader/ld.S) - [LD_PRELOAD hook 内存分配](./ch21_22-os_executable_files/preload/hook.c) 23. **虚拟化**:应用视角的操作系统(状态机模型的应用) - 回顾:没有实验代码 24. **虚拟化**:进程的实现(操作系统内核实现) - [进程的实现:COW机制](./ch24-os_process_impl/cow_test/cow_test.c) - [进程的实现:内存页面共享(查看函数的物理地址)](./ch24-os_process_impl/vm/vm.c) - [真实的调度器:NUMA下多线程调度的问题](./ch24-os_process_impl/numa_perf/Makefile) 25. **持久化**:存储设备原理 - 没有实验代码 26. **持久化**:输入输出设备 - 没有实验代码 27. **持久化**:设备驱动程序与文件系统 - [linux设备驱动:内核模块实现设备](./ch27-os_linux_device_driver/customized_driver/driver.c) 28. **持久化**:FAT 和 UNIX 文件系统 - [扫描 FAT 文件系统](./ch28-os_fat_unix/fat_tree/fat_tree.c) 29. **持久化**:持久数据的可靠性 - [文件系统损坏的model-check](./ch29-os_available_durable_data/system_crash/fs-crash.py) 30. 课程总结 - 没有实验代码