【MIT 6.S081】2020, 实验记录(3),Lab: page tables

news2024/9/25 11:20:50

目录

    • Task
      • Task 1: Print a page table

Task

Task 1: Print a page table

该实验需要增加一个 vmprint 函数,用于打印一个 page table,实现过程可以参考 vm.c 文件中的 freewalk() 函数。

在 defs.h 中增加 vmprint 的定义:

void            vmprint(pagetable_t);

在 vm.c 中代码如下:

// 打印一行 PTE
void print_pte(int index, pte_t pte, uint64 pa, int level) {
  for (int j = level; j > 0; j--) {
    if (j != 1) {
      printf(".. ");
    } else {
        printf("..");
    }
  }
  printf("%d: pte %p pa %p\n", index, pte, pa);
}

// 递归地打印 page table
void display_pt(pagetable_t pagetable, int level) {
  static const int PTE_NUMBERS = 512;  // 每个 page 的 PTE 数量
  for (int i = 0; i < PTE_NUMBERS; i++) {
    pte_t pte = pagetable[i];
    if ((pte & PTE_V) && (pte & (PTE_R|PTE_W|PTE_X)) == 0) {
      uint64 child = PTE2PA(pte);
      print_pte(i, pte, child, level);
      display_pt((pagetable_t) child, level + 1);
    } else if (pte & PTE_V) {
      print_pte(i, pte, PTE2PA(pte), level);
    }
  }
}

/**
 * display the page table
 */
void
vmprint(pagetable_t pagetable)
{
  printf("page table %p\n", pagetable);
  display_pt(pagetable, 1);
}

在 exec.c 的 exec() 函数中,return argc 之前增加对 vmprint 的调用:

int
exec(char *path, char **argv)
{
  ...
  if (p->pid == 1) {
    vmprint(p->pagetable);
  }
  return argc;
  ...
}

实现结果:输入 make qemu

task-1 测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1380243.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

海外融合CDN之火伞云

在当今互联网全球化的时代&#xff0c;出海业务已经成为许多企业的必然选择。在海外市场上&#xff0c;快速、稳定的内容传输对于企业的成功至关重要。然而&#xff0c;如何合理的运用多家CDN供应商的资源实现智能化的调度&#xff0c;以及如何与业务更紧密地结合起来&#xff…

前端背景收集之烟花背景

文章目录 &#x1f412;个人主页&#x1f3c5;Vue项目常用组件模板仓库&#x1f4d6;前言&#xff1a;&#x1f380;源码如下&#xff1a; &#x1f412;个人主页 &#x1f3c5;Vue项目常用组件模板仓库 &#x1f4d6;前言&#xff1a; 本篇博客主要提供前端背景收集之烟花背景…

基于微信小程序的音乐平台 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示 四、核心代码4.1 查询单首音乐4.2 新增音乐4.3 新增音乐订单4.4 查询音乐订单4.5 新增音乐收藏 五、免责说明 一、摘要 1.1 项目介绍 基于微信小程序JAVAVueSpringBootMySQL的音乐平台&#xff0c;包含了音乐…

七通道NPN 达林顿管GC2003,专为符合标准 TTL 而制造

GC2003 内部集成了 7 个 NPN 达林顿晶体管&#xff0c;连接的阵列&#xff0c;非常适合逻辑接口电平数字电路&#xff08;例 如 TTL&#xff0c;CMOS 或PMOS 上/NMOS&#xff09;和较高的电流/电压&#xff0c;如电灯电磁阀&#xff0c;继电器&#xff0c;打印机或其他类似的负…

C++力扣题目513找树左下角的值

给定一个二叉树的 根节点 root&#xff0c;请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1示例 2: 输入: [1,2,3,4,null,5,6,null,null,7] 输出: 7 思路 本题要找出树的最后一行的最左边的值。此时大家应该想…

四大会计假设

目录 一. 会计主体假设二. 持续经营假设三. 会计期间假设四. 货币计量假设 \quad \quad 一. 会计主体假设 \quad 会计主体: 会计工作为其服务的特定单位或组织。 会计主体的定义 1.具有一定数量的资金。 2.进行独立的生产经营或其他活动。 3.实行独立核算。 \quad 会计主体假设…

EVA-CLIP: Improved Training Techniques for CLIP at Scale论文解读

文章目录 前言一、摘要二、引言三、贡献四、模型方法五、论文链接总结 前言 最近&#xff0c;我一直在搞多模态大模型相关工作&#xff0c;也深知CLIP结构重要性&#xff0c;而EVA-CLIP论文是在CLIP模型基础上进行了一系列trick&#xff0c;实现优越CLIP模型的方法&#xff0c…

代码随想录算法训练营第四天 |链表总结

1、每次先加判断&#xff1a; if (head null) {return head;} 2、ListNode dummy new ListNode(-1, head);和ListNode dummy new ListNode(-1);区别&#xff1a; 在Java中&#xff0c;ListNode dummy new ListNode(-1, head); 和 ListNode dummy new ListNode(-1); 的主…

C语言数组基础知识

目录 一维数组&#xff1a; 一维数组的创建&#xff1a; 一维数组的访问&#xff1a; 一维数组在内存中的存储&#xff1a; 二维数组&#xff1a; 二维数组的创建&#xff1a; 二维数组的初始化&#xff1a; 二维数组的使用&#xff1a; 二维数组在内存中的存储&#x…

RK3568驱动指南|第十二篇 GPIO子系统-v

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

码牛课堂首推——鸿蒙南北双向开发学习路线图标准版~

鸿蒙&#xff01;鸿蒙&#xff01;鸿蒙&#xff01; 要说2023-2024年IT圈最火爆的名词&#xff0c;一定是鸿蒙&#xff01; 2023年9月25日&#xff0c;华为发布会正式宣布2024年第一季度将推出HarmonyOS NEXT版本&#xff0c;这意味着鸿蒙原生应用开发将彻底摆脱Android手机系…

基于视频智能分析技术的AI烟火检测算法解决方案

一、背景需求 根据国家消防救援局公布的数据显示&#xff0c;2023年共接报处置各类警情213.8万起&#xff0c;督促整改风险隐患397万处。火灾危害巨大&#xff0c;必须引起重视。传统靠人工报警的方法存在人员管理难、场地数量多且分散等问题&#xff0c;无法有效发现险情降低…

2024年美赛数学建模思路 - 复盘:校园消费行为分析

文章目录 0 赛题思路1 赛题背景2 分析目标3 数据说明4 数据预处理5 数据分析5.1 食堂就餐行为分析5.2 学生消费行为分析 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 赛题背景 校园一卡通是集…

ArrayList源码阅读

文章目录 简介例子继承结构概览代码分析成员变量方法迭代器子列表 总结参考链接 本人的源码阅读主要聚焦于类的使用场景&#xff0c;一般只在java层面进行分析&#xff0c;没有深入到一些native方法的实现。并且由于知识储备不完整&#xff0c;很可能出现疏漏甚至是谬误&#x…

activiti流程图+动态表单

使用技术 jeecg-bootactivitivue3form-create 简单效果展示 流程图绘制 审批人配置 动态表单配置 流程审批 流程审批记录 填写表单信息 源码地址 后台&#xff1a;https://gitee.com/houshixin/jmg-boot前端&#xff1a;https://gitee.com/houshixin/jmg-ui

【MySQL】导入导出SQL脚本及远程备份---超详细介绍

目录 前言&#xff1a; 一 navcat导入导出 1.1 导入 1.2 导出 二 mysqldump 导入导出 2.1 导入 2.2 导出 三 load data infile命令导入导出 3.1 导入 3.2 导出 四 远程备份 五 思维导图 前言&#xff1a; 随着当今企业发展&#xff0c;数据库的数据越来越多&…

HTML标签(一)

目录 HTML语法规范 基本语法概述 标签关系 HTML基本结构标签 第一个HTML网页 开发工具 VSCode的使用&#xff1a; VScode工具生成骨架标签新增代码 文档类型声明标签 lang语言种类 字符集 总结 HTML常用标签 标签语义 标题标签 段落标签 换行标签 文本格式化…

vue前端开发自学,异步加载组件,提升用户端的客户体验度

vue前端开发自学,异步加载组件,提升用户端的客户体验度&#xff01;现实项目开发时&#xff0c;组件的数量非常庞大&#xff0c;如果都是一口气加载完&#xff0c;对手机用户来说&#xff0c;体验度会很差。因此&#xff0c;非常有必要使用异步加载。 那就是&#xff0c;用到了…

【贪心】重构字符串

/*** 思路&#xff1a;如果s长度小于2&#xff0c;直接返回s&#xff0c;假设字符串s的长度为n。* n为偶数&#xff0c;如果字符串中的某个字符数量超过 n/2 则肯定会存在相邻的字符。* n为奇数&#xff0c;如果字符串中的某个字符的数量超过 &#xff08;n1&am…

强力推荐:本地文件加密软件—超详细加密步骤来了!

在数字化时代&#xff0c;数据安全问题日益受到人们的关注。 为了保护个人和企业的重要信息不被泄露&#xff0c;越来越多的人开始使用文件加密软件。 尤其是常常会有数据泄露风险的企业更是需要一款非常给力的加密工具来保护企业数据安全。 一、选择合适的加密软件 在选择加…