⭐️ 本项目为【代码随想录知识星球】 教学项目
⭐️ 在 手写操作系统项目文档 里详细讲解:项目前置知识 + 项目细节 + 代码解读 + 项目难点 + 面试题与回答 + 简历写法 + 项目拓展。 全面帮助你用这个项目求职面试!
本项目基于麻省理工学院的 MIT 6.S081 Operating System Engineering 课程实验,通过对 xv6 操作系统的优化和扩展,完成操作系统中的常见功能模块设计与实现,以加深对操作系统核心概念和机制的理解。
Ubuntu 20.04.6 LTS
- System Calls:学习如何在 xv6 中实现新的系统调用
- Page Tables:深入理解 RISC-V 的页表机制和 xv6 的地址空间管理
- Traps:理解中断、异常和陷阱的处理机制
- Lazy Allocation:实现惰性分配机制
- Multithreading:实现用户级线程,学习并发编程
- Locks:优化操作系统锁定策略以减少争用,提高并行性,提高性能
- File System:优化和扩展 xv6 文件系统功能
- 系统调用
- 页表
- 中断
- 内存管理
- 线程
- 锁
- 文件系统
- 优化或增强虚拟内存管理功能:如通过支持超级页减少页表中 PTE 的数量,从而减少页表占用的内存和 TLB 查找的开销;消除PLIC限制,让用户程序能够使用更大的地址空间。
- 优化 xv6 的用户级线程机制:解决xv6用户级线程中线程阻塞和线程并行的问题。
- 改进缓冲区缓存的查找:将缓冲区缓存的查找操作从锁的实现改为无锁的形式,提高高并发环境的性能。
- 优化文件映射功能:实现多进程映射同一文件时共享物理页,避免内存浪费;优化惰性分配和文件映射的重复代码逻辑;实现页出与页入。