MIT6.828 Lab2: Challenge

编程入门 行业动态 更新时间:2024-10-06 22:32:32

MIT6.828 Lab2: <a href=https://www.elefans.com/category/jswz/34/1768875.html style=Challenge"/>

MIT6.828 Lab2: Challenge

Challenge 1:大页机制的实现
  需要了解PTE_PS位的作用以及修改内存分布的代码,没有仔细去研究实现,等以后深入到linux内核中的大页机制时再补充。

Challenge 2:
  showmapping、dump等命令的实现。
  回答:
  在实现之前为了提供更好的命令交互,修改了一下command结构体和help命令,修改代码如下:

//monitor.c
struct Command {const char *name;const char *desc;const char *usage;// return -1 to force monitor to exitint (*func)(int argc, char** argv, struct Trapframe* tf);
};int
mon_help(int argc, char **argv, struct Trapframe *tf)
{int i;if (argc == 2) {for (i = 0; i < NCOMMANDS; i++)if (strcmp(argv[1], commands[i].name) == 0)break;if (i >= NCOMMANDS)cprintf("Command \"%s\" hasn't been implemented!\n", argv[1]);elsecprintf("%s\nUsage: %s\n", commands[i].desc, commands[i].usage);}else {for (i = 0; i < NCOMMANDS; i++)cprintf("%s - %s\n", commands[i].name, commands[i].desc);}return 0;
}

  针对参数错误,添加错误检查的宏:

//kern/monitor.c
#define TESTERR(a)  {if(a)  goto ERR;}

  showmapping的实现思路:
  1.命令格式为showmapping [begin] [end]
  2.将begin和end转换为页对齐
  3.使用page_lookup函数查找虚拟地址对应的物理页
  4.输出物理页相关信息包括权限位情况
  实现代码如下:

//kern/pmap.h
static inline char*
pagepri2str(pte_t pte, char *buf)
{int i;static const char *str[] = { "_________SR_", "AVLGPDACTUWP" };for (i = 0; i < 12; i++)buf[i] = str[pte >> (11 - i) & 0x1][i];buf[i] = '\0';return buf;
}//kern/monitor.c
int
mon_showmapping(int argc, char **argv, struct Trapframe *tf)
{uint32_t begin, end;char *endptrb, *endptre;if (argc == 2) {  //showmapping [begin, begin+PGSIZE]begin = ROUNDDOWN((uint32_t) strtol(argv[1], &endptrb, 0), PGSIZE);end = begin + PGSIZE;TESTERR(*endptrb != '\0');}else if (argc == 3) {   //showmapping [begin, end]begin = ROUNDDOWN((uint32_t) strtol(argv[1], &endptrb, 0), PGSIZE);end = ROUNDUP((uint

更多推荐

MIT6.828 Lab2: Challenge

本文发布于:2024-03-05 21:45:26,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1713524.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Challenge

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!