1 Star 0 Fork 0

WHC/xv6-course

Create your Gitee Account
Explore and code with more than 12 million developers,Free private repositories !:)
Sign up
This repository doesn't specify license. Please pay attention to the specific project description and its upstream code dependency when using it.
Clone or Download
contribute
Sync branch
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
README

XV6 操作系统实践

如果觉得讲解得好,请喝一杯咖啡也是极好的

img/pay.jpg

捐赠

好心的捐赠大佬可以备注一下: xv6+昵称 我会在下面会记录一下,感谢!

date name
<2023-12-27 Wed> V*i
<2023-12-30 Sat> *一

简介

XV6 是 MIT 开发的一个教学用的完整的类 Unix 操作系统,并且在 MIT 的操作系统课程 6.828 中使用

  1. 它源自 Dennis Ritchie 和 Ken Thompson 的 Unix Version 6 (v6)
  2. 通过阅读并理解 XV6 的代码,可以清楚地了解操作系统中众多核心的概念 (1w)
  3. 目前 MIT XV6 操作系统支持 x86 和 riscv 两种体系结构

主题

总结

date
  1. 开始录制时间 2023 年 10 月 23 日
  2. 内存相关
    • 但是很多操作系统的实现更加精巧;例如,
    • xv6 不能向磁盘中请求页,
    • 没有实现 copy-on-write 的 fork 操作
      • fork -> exec
    • 共享内存和惰性分配页(lazily-allocated page)
      • malloc(..)
    • x86 支持段式内存转换,但 xv6 仅用它来实现 proc 这种有固定地址
      • segment
      • paging
    • 在内存较多的机器上使用 x86 的 4MB 大小的“超级页”, xv6 不支持
      • database join/select
  3. 进程相关
    • 我们最好以锁为基础来构建高级的同步队列,虽然 xv6 并没有这么做
      • spinlock/sleeplock
      • queue, TaskPoolExecutor/ 信号量 semaphore
    • 让每个进程都有优先级。主要思想是优先处理高优先级的可运行进程。
      • proc.c 优先级 nicevalue
    • 但是由于要权衡多项指标,例如要保证公平性和高的吞吐量,调度算法往往很快变得复杂起来
    • 复杂的调度算法还会无意中导致像优先级倒转(priority inversion)和护航(convoy)这样的现象
    • Linux 内核的 sleep 用一个显式的进程队列代替 xv6 中的等待队列(wait channel);而该队列本身内部还有锁
      • sleep/wakeup
    • 信号量是另一种合作机制
  4. 驱动相关
    • 用户在读一个文件的时候,这个文件的数据将会被拷贝两次。
      • 第一次是由驱动从硬盘拷贝到内核内存,之后通过 read 系统调用,从内核内存拷贝到用户内存。
      • ide => bcache buf->data
      • dinode => inode
      • 零拷贝
    • 日志记录不是唯一的崩溃后的恢复机制
      • recover_from_log / redo log
      • 比如,UNIX 系统中的 fsck 命令来检查每个文件和目录以及各个块和 i 节点可用的链表,
      • 查找并解决出现的不一致问题
    • 如果磁盘操作失败,xv6 报警
      • 使用冗余来掩饰磁盘错误
      • RAID 冗余磁盘阵列

答疑

  1. 12a 答疑一 12a-Q&A.org | 视频 12a
  2. 34a 答疑二 34a-Q&A.org | 视频 34a
  3. 34b 答疑三 34b-Q&A.org | 视频 34b

资源

  1. MIT 课程官网 6.828
  2. x86 版本 xv6-public
  3. riscv 版本 xv6-riscv
  4. gas 手册 gas
  5. Unix 源代码 Unix Heritage Society

Empty file

About

Cancel

Releases

No release

Contributors

All

Activities

Load More
can not load any more
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C
1
https://gitee.com/whc_softHardware/xv6-course.git
git@gitee.com:whc_softHardware/xv6-course.git
whc_softHardware
xv6-course
xv6-course
master

Search