Contents Menu Expand Light mode Dark mode Auto light/dark mode
rCore-Tutorial-Book-v3 3.6.0-alpha.1 文档
rCore-Tutorial-Book-v3 3.6.0-alpha.1 文档

Part1 - Just do it!

  • 第零章:操作系统概述
    • 引言
    • 什么是操作系统
    • 操作系统的系统调用接口
    • 操作系统抽象
    • 操作系统的特征
    • 实验环境配置
    • 练习
    • 练习参考答案
  • 第一章:应用程序与基本执行环境
    • 引言
    • 应用程序执行环境与平台支持
    • 移除标准库依赖
    • 内核第一条指令(基础篇)
    • 内核第一条指令(实践篇)
    • 为内核支持函数调用
    • 基于 SBI 服务完成输出和关机
    • 练习
    • 练习参考答案
  • 第二章:批处理系统
    • 引言
    • 特权级机制
    • 实现应用程序
    • 实现批处理操作系统
    • 实现特权级的切换
    • 练习
    • 练习参考答案
  • 第三章:多道程序与分时多任务
    • 引言
    • 多道程序放置与加载
    • 任务切换
    • 多道程序与协作式调度
    • 分时多任务系统与抢占式调度
    • 练习
    • 练习参考答案
  • 第四章:地址空间
    • 引言
    • Rust 中的动态内存分配
    • 地址空间
    • SV39 多级页表的硬件机制
    • 管理 SV39 多级页表
    • 内核与应用的地址空间
    • 基于地址空间的分时多任务
    • 超越物理内存的地址空间
    • 练习
    • 练习参考答案
  • 第五章:进程
    • 引言
    • 进程概念及重要系统调用
    • 进程管理的核心数据结构
    • 进程管理机制的设计实现
    • 进程调度
    • 练习
    • 练习参考答案
  • 第六章:文件系统
    • 引言
    • 文件系统接口
    • 简易文件系统 easy-fs
    • 在内核中接入 easy-fs
    • 练习
    • 练习参考答案
  • 第七章:进程间通信与 I/O 重定向
    • 引言
    • 基于文件的标准输入/输出
    • 管道
    • 命令行参数与标准 I/O 重定向
    • 信号
    • 练习
    • 练习参考答案
  • 第八章:并发
    • 引言
    • 用户态的线程管理
    • 内核态的线程管理
    • 锁机制
    • 信号量机制
    • 条件变量机制
    • 并发中的问题
    • 练习
    • 练习参考答案
  • 第九章:I/O设备管理
    • 引言
    • I/O设备
    • 外设平台与串口驱动程序
    • virtio设备驱动程序
    • 练习
    • 练习参考答案

附录

  • 综合练习
  • 附录 A:Rust 系统编程入门
  • 附录 B:常见工具的使用方法
  • 附录 C:深入机器模式:RustSBI
  • 附录 D:RISC-V相关信息
    • RISCV 汇编相关
    • RISCV 硬件相关
  • 附录 E:操作系统进一步介绍
  • 术语中英文对照表

开发注记

  • 修改和构建本项目
  • reStructuredText 基本语法
  • 更新日志
Back to top

第四章:地址空间#

  • 引言
    • 本章导读
    • 实践体验
    • 本章代码树
    • 本章代码导读
  • Rust 中的动态内存分配
    • 本节导读
    • 静态与动态内存分配
      • 静态分配
      • 动态分配
    • Rust 中的堆数据结构
    • 在内核中支持动态内存分配
  • 地址空间
    • 本节导读
    • 虚拟地址与地址空间
      • 地址虚拟化出现之前
      • 加一层抽象加强内存管理
      • 增加硬件加速虚实地址转换
    • 分段内存管理
    • 分页内存管理
  • SV39 多级页表的硬件机制
    • 本节导读
    • 虚拟地址和物理地址
      • 内存控制相关的CSR寄存器
      • 地址格式与组成
      • 地址相关的数据结构抽象与类型定义
    • 页表项的数据结构抽象与类型定义
    • 多级页表
    • SV39 地址转换过程
      • 快表(TLB)
  • 管理 SV39 多级页表
    • 本节导读
    • 物理页帧管理
      • 可用物理页的分配与回收
      • 分配/回收物理页帧的接口
    • 多级页表管理
      • 页表基本数据结构与访问接口
      • 内核中访问物理页帧的方法
      • 建立和拆除虚实地址映射关系
  • 内核与应用的地址空间
    • 本节导读
    • 实现地址空间抽象
      • 逻辑段:一段连续地址的虚拟内存
      • 地址空间:一系列有关联的逻辑段
    • 内核地址空间
    • 应用地址空间
  • 基于地址空间的分时多任务
    • 本节导读
    • 建立并开启基于分页模式的虚拟地址空间
      • 创建内核地址空间
      • 检查内核地址空间的多级页表设置
    • 跳板机制的实现
      • 扩展Trap 上下文
      • 切换地址空间
      • 建立跳板页面
    • 加载和执行应用程序
      • 扩展任务控制块
      • 更新对任务控制块的管理
    • 改进 Trap 处理的实现
    • 改进 sys_write 的实现
    • 小结
  • 超越物理内存的地址空间
    • 本节导读
      • 有限的物理内存
      • 超越物理内存的方法
    • 分时复用内存
      • 动态内存分配
        • 最先匹配(first fit)策略
        • 最优匹配(best fit)策略
        • 最差匹配(worst fit)策略
        • 减少碎片
      • 覆盖(Overlay)技术
    • 内存交换
      • 交换技术
      • 虚拟内存技术
      • 页面置换机制
        • 作为交换区的存储设备
        • 页表项(Page Table Entry)
        • 内存访问异常处理
      • 页面置换策略
        • 内存层次结构与局部性原理
        • 评价指标
        • 策略范畴
        • 最优置换策略
        • FIFO置换策略
        • LRU置换策略
        • Clock置换策略
        • 工作集置换策略
        • 缺页率置换策略
      • Belady异常现象
    • 小结
  • 练习
    • 课后练习
      • 编程题
      • 问答题
    • 实验练习
      • 实践作业
        • 重写 sys_get_time
        • mmap 和 munmap 匿名映射
        • 实验要求
      • 问答作业
      • 实验练习的提交报告要求
  • 练习参考答案
    • 课后练习
      • 编程题
      • 问答题
    • 实验练习
      • 实践作业
        • 重写 sys_get_time
        • mmap 和 munmap 匿名映射
        • 实验要求
      • 问答作业
      • 实验练习的提交报告要求
Next
引言
Previous
练习参考答案
Copyright © 2020-2022, Yu Chen, Yifan Wu
Made with Sphinx and @pradyunsg's Furo