1664_MIT 6.828 JOS页管理的相关行为实现

这篇具有很好参考价值的文章主要介绍了1664_MIT 6.828 JOS页管理的相关行为实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

         这一次,看几个存储管理的辅助接口的实现。

1664_MIT 6.828 JOS页管理的相关行为实现

         这个接口给出来的提示信息还是很多的,至少从这里能够收集到这个接口实现要用到的一些辅助转换函数以及基本的要求。

1664_MIT 6.828 JOS页管理的相关行为实现

         这是对本函数接口的一个实现尝试,也按照提示注释中的信息,直接把权限属性分配全了。

         这个函数接受三个参数:pgdir是一个指向页目录表的指针,va是要查找的虚拟地址,create表示如果要查找的页表不存在是否要创建。首先,将va的高10位作为页目录项的索引,获取相应的页目录项,保存在pde中。如果该页目录项不存在,则根据create参数决定是否创建它。如果不需要创建或者创建失败,则返回NULL。如果需要创建页目录项,则首先调用page_alloc函数分配一个物理页面,并且将页面清零。然后,将该物理页面的物理地址设置到页目录项中,并设置PTE_P、PTE_U和PTE_W标志。最后,使用虚拟地址KADDR(PTE_ADDR(xxx))将页表的物理地址映射到内核虚拟地址空间,并返回指向相应页表的pte_t类型指针,加上va低12位作为页表项的索引。这里最后一步的转换也非常重要,如果不转换成一个内核的虚拟地址,接下来的访问也会出错。

1664_MIT 6.828 JOS页管理的相关行为实现

         接下来看page_lookup接口,这个返回的其实是page分配信息而不是page本身。确切说,这个查找查找的是虚拟地址对应的物理page的信息。

1664_MIT 6.828 JOS页管理的相关行为实现

         这个是按照提示做的一个函数接口的实现。

         这个函数接受三个参数:pgdir是一个指向页目录表的指针,va是要查找的虚拟地址,pte_store是一个指向指针的指针,用于保存对应的页表项。首先,调用pgdir_walk函数获取虚拟地址va对应的页表项,并检查page是否存在。如果page不存在,则返回NULL。如果page存在,则使用pte_store参数保存对应的页表项地址,并将物理地址转换成页面结构体并返回。这里使用了宏pa2page和PTE_ADDR,pa2pageE用于将物理地址转换成页面结构体,PTE_ADDR用于提取页表项中的物理地址部分。

         相比于walk函数来说,这个lookup函数很大的一个特点是只查找不创建。另外,接口传递的信息进行了进一步的转换,转成了管理所需要的页信息结构体。

1664_MIT 6.828 JOS页管理的相关行为实现

         这样,继续往下看需要考虑实现page_insert接口。

1664_MIT 6.828 JOS页管理的相关行为实现

         以上是最初的接口以及实现提示。

1664_MIT 6.828 JOS页管理的相关行为实现

         这个是对接口的一个实现尝试,但是当前page_remove()接口并没有实现。另一点,关于页表不存在时候的创建,这里是采用给walk接口指定创建符号为true来实现的。

1664_MIT 6.828 JOS页管理的相关行为实现

         这是最初的接口定义以及提示。

1664_MIT 6.828 JOS页管理的相关行为实现

         以上是一次尝试实现,但是这次用到了临近的tlb_invalidate()接口。从描述看,应该每一次对TLB,也就是两级查找的表进行修改都应该调用。看起来,前面的插入也应该增加。

1664_MIT 6.828 JOS页管理的相关行为实现

         按照上面的分析,插入改成如上设计。

         继续往下看check_page的测试,主要是针对页面的插入以及移除等操作情况的页页面合理性进行了测试。

1664_MIT 6.828 JOS页管理的相关行为实现

         测试并没有通过,看起来还是有一些地方没有处理正确。

1664_MIT 6.828 JOS页管理的相关行为实现

         这个算是自己审题的失误把,当初看到这段的时候以为是注释写错了。先把这部分修正掉,发现前面的问题并没有修正。

1664_MIT 6.828 JOS页管理的相关行为实现

         以上是修正的方式。

1664_MIT 6.828 JOS页管理的相关行为实现

         再次进行测试测试通过。文章来源地址https://www.toymoban.com/news/detail-402292.html

到了这里,关于1664_MIT 6.828 JOS页管理的相关行为实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 视频行为分析——视频图像转换与ffmpeg相关操作

    工具类说明 1.1 视频输出gif 1.2 将文件夹下图片转视频 2.1 ffmpeg安装 FFmpeg 的官方网站(https://ffmpeg.org/)上找到更详细的安装文档和指南。 2.1.1 linux 安装 编译安装:如果你需要更新或自定义的 FFmpeg 版本,你可以从源代码编译安装。你可以从 FFmpeg 的官方网站下载源代码,并按

    2024年02月11日
    浏览(39)
  • Spring 事务的相关配置、传播行为、隔离级别及注解配置声明式事务

    目录 一、事务的相关配置 1. 添加测试标签 2. 添加对应方法 3. 测试 二、事务的传播行为 三、事务的隔离级别 四、注解配置声明式事务 1. 注册事务注解驱动 2. 加上注解 3. 配置类代替xml文件中的注解事务支持 4. 测试 往期专栏文章相关导读  1. Maven系列专栏文章 2. Mybatis系列专

    2024年02月08日
    浏览(45)
  • 【Java】学生成绩管理系统(图形化界面实现相关功能)

    从功能的代码实现到界面的展示整个制作过程全部用Java语言实现。         1、在idea创建一个工程文件,在工程文件下创建一个model模块,在model模块下载创建三个package包分别用来存放(BackEndCode)后端代码包、(MainExe)主程序包、(WebCode)界面实现代码包,再在三个包中创建如

    2024年02月03日
    浏览(50)
  • python 实现学生信息管理系统+MySql 数据库,包含源码及相关实现说明~

    1、系统说明 python 编写的学生信息管理系统+MySQL数据库,实现了增删改查的基本功能。 2、数据库说明 本人使用的是 MySQL8.0 版本 数据库端口号为:3306 数据库用户名是:root 数据库名称是:practice 建立的表是:students 3、系统功能 增加学生信息 删除学生信息 修改学生信息 查

    2024年02月11日
    浏览(54)
  • mit s0681 lab2 Trace系统调用实现

    实验一 实现一个用户级别的程序,功能为,指定系统调用后,跟踪程序的系统调用情况 分析实验 实验目标为实现一个程序去跟踪指定程序的系统调用。因此目标有两个 实现一个程序 跟踪目标程序的系统调用 实现1,就需要在用户这边实现一个trace的相关程序,接收监控的

    2024年02月11日
    浏览(36)
  • 使用VSCode实现Java项目管理 Maven相关插件及配置(Maven换源)

    之前一直使用VSCode开发C、Go两种语言,现在需要对java进行学习,面对java的idea工具相对陌生,依旧想继续使用vscode作为开发工具,因此有了本篇文章 无论是idea还是vscode,最核心的功能可能就是编辑了,很多工具的优秀特性也都是来自于优秀的插件,因此首先需要配置VSCode的

    2023年04月23日
    浏览(50)
  • MIT6824——lab4(实现一个分片kv存储)的一些实现,问题,和思考

    和lab3A一样,shardctler也是一个服务,由客户端调用。这个服务建立在raft集群上, 保证容错。 shardctler也应该保证 线性一致性和重复请求的问题 ,因此也需要记录clientid和messageid。 shardctler保存了当前的分片信息,称为配置 Num:当前配置号 Shards:每一个分片对应的副本组id—

    2024年02月07日
    浏览(42)
  • 办公网络上网行为管理规划

    办公网络上网行为管理规划是确保办公网络资源的合理利用和保障网络安全的重要措施。下面是办公网络上网行为管理规划的一般性步骤和原则: 确立政策和准则: 制定明确的上网行为管理政策和准则,明确员工在办公网络上的合规要求和行为规范。 包括规定员工上网内容

    2024年02月10日
    浏览(31)
  • 行为管理(锐捷路由篇)

            大家好,我是小杜,不知不觉的已经学习了一个月了,从一个只知道些基础的“菜鸟”到现在的\\\"普鸟\\\",争取尽快进化成“老鸟”。         今天继续对相关的行为管理方面的学习,相信以后会经常遇到这种问题,需要完全熟悉的掌握。话不多说,开始今天对

    2024年02月16日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包