Skip to content

【代码随想录知识星球】项目分享-手写操作系统内核🔥

License

Notifications You must be signed in to change notification settings

youngyangyang04/KamaOS

Repository files navigation

OS-Kernel

⭐️ 本项目为【代码随想录知识星球】 教学项目
⭐️ 在 手写操作系统项目文档 里详细讲解:项目前置知识 + 项目细节 + 代码解读 + 项目难点 + 面试题与回答 + 简历写法 + 项目拓展。 全面帮助你用这个项目求职面试!

本项目基于麻省理工学院的 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用户级线程中线程阻塞和线程并行的问题。
  • 改进缓冲区缓存的查找:将缓冲区缓存的查找操作从锁的实现改为无锁的形式,提高高并发环境的性能。
  • 优化文件映射功能:实现多进程映射同一文件时共享物理页,避免内存浪费;优化惰性分配和文件映射的重复代码逻辑;实现页出与页入。

About

【代码随想录知识星球】项目分享-手写操作系统内核🔥

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published