1668_MIT 6.828 xv6代码中虚拟存储的配置实现分析

news/2024/11/20 4:38:04/

         全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com)

         看了xv6书籍的第二章节之后,决定看看xv6的代码实现。之前已经花了一些时间做lab2,估计这一次看代码应该会顺利一些。找一下对等的功能在xv6中是如何实现的,顺便看看xv6的一些其他的信息。

         在xv6中也有一个mmu.h的文件,跟之前试验环境中的应该是一样的东西。之前用过的一些转换功能在这里都找得到。

         这里应该是内核进入后的启动初始化信息的地方,也就是内核中C语言的开始。如果想要再往前一点,那得去找对应的内核启动汇编代码部分。

         这里能够找到页目录表的信息,而这部分是能够保障最开始的C代码运行的一个很重要的前提。

         这是页目录的定义,正好由此看一下关键参数KERNBASE,因为其他的应该都是一致的套路,然而也看到了这里的初始化用了不同的方法。

         这样是可以很清楚的知道,其实xv6和JOS的memlayout其实是不相同的。后面,再回到C代码最开始的部分。

         这里增加了一些lock的概念,暂且不去看。从这个接口以及前面的调用的参数基本上知道,在初始化的时候先进行了4MB的空间初始化用于内核最初的使用。

         之后的操作应该就是内核的页表处理了。

         这里实现了内核的虚拟存储的配置,从行为看,kalloc可能是直接分配了一个page的存储,之后进行了初始化。往后,直接进行了一个映射表的处理。

         从这里的注释以及实现看,前面的猜测,kalloc分配的是一个page的存储是准确的。继续看了内部的实现,跟之前实现的简单的存储设置相比复杂了不少。涉及到了中断保护以及一些系统本身信息的确认。

         这个功能类似之前调试过的boot_map_region(),把这个函数的代码一起拷贝过来了。当时调试这些接口的时候花了不少时间,看起来是路线错了。如果早看了xv6的书籍以及代码的时候可能会有很大的帮助。

         之后,切换新的页表。

         之前的lab2中的尝试,其实大概也就实现了这样的一些功能。这一次没有关注太多的细节,但是感觉已经对这个环节的处理也看得有一点理解了。

         最后再看一个对比实现,从这里的确是能够看到xv6代码的简洁紧凑。但是,有时候我又觉得自己的习惯不想更该,因为可能我的这种模式在结构上已经有了一个思维的框架保证我思维的理顺。


http://www.ppmy.cn/news/40926.html

相关文章

设计模式之模板模式(C++)

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 一、模板模式是什么? 模板模式是一种行为型的软件设计模式,在父类中定义了一个模板算法,只实现…

【数据结构学习3】线性表-链表、单链表

目录链式存储结构链表概念头结点的意义单链表的定义和表示单链表的基本操作链式存储结构 链表概念 概念 结点在存储器中的位置是任意的,即逻辑上相邻的数据元素在物理上不一定相邻。线性表的链式表示又称为非顺序映像或链式映像用一组物理位置任意的存储单元来存…

Java 管道 (学习代码)

目录 上代码: 输出: 执行流程可以总结如下: 上代码: package cn.net.cdsz.ccb.test;import java.io.IOException; import java.io.PipedReader; import java.io.PipedWriter;public class test {static class ReaderThread imp…

阿里云产品试用更新,产品组合试用装更划算,快来免费上云吧

最近阿里云产品又上新了,尤其是推出了最新的产品组合试用装,个人觉得阿里云关于云产品的更新迭代是非常重视的,而且每次推出的产品不仅会惊艳到用户,而且产品功能也是随着一次迭代而更加完善、强大。前段时间也写了一篇关于为什么…

多维时序 | MATLAB实现CNN-LSTM-Attention多变量时间序列预测

多维时序 | MATLAB实现CNN-LSTM-Attention多变量时间序列预测 目录多维时序 | MATLAB实现CNN-LSTM-Attention多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料预测效果 基本介绍 MATLAB实现CNN-LSTM-Attention多变量时间序列预测,CNN-LSTM结合注意力机制…

【软件安装】图数据库_Neo4j下载与安装配置详解

【软件安装】图数据库_Neo4j安装下载详解 文章目录【软件安装】图数据库_Neo4j安装下载详解1. 前言2. 下载Neo4j3. 安装 配置3.1 解压3.2 配置4. 启动Neo4j5. 参考1. 前言 因为使用Neo4j时默认是需要java-jdk的支持,因此在下载neo4j之前,需要下载jdk&a…

有限元基础编程-何晓明老师课件-一维程序实现matlab

文章目录前言一、主程序二、一维有限元求解程序-框架三、组装刚度矩阵assemble_matrix_from_1D_integral.m2.1 算法2.2 get_standard_gauss_1D.m2.3 get_Gauss_local_1D.m前言 只是为方便学习,不做其他用途,课程理论学习来自b站视频有限元基础编程-何晓明…