头歌操作系统 课后作业4.3:段页式内存管理 答案 无解析

第1关:第一次页故障

版本1内核环境配置详情请移步前几关~头歌操作系统 课后作业3.1:进程的描述与状态

启动gdb调试器:

b schedule
c

p task
p task[0]->pid
p task[1]->pid

p &current
p page_fault
quit

 启动dbg调试器:

b 0xb124
c
x/wx 0x1fa20
creg

x/wx 0x0+16*4
x/wx 0xffe000+37*4
u/30

b 0xb15a
c
x/wx 0x0+16*4
x/wx 0xffe000+37*4
s
quit

启动gdb调试器:

b 145
c
n

x/5i $eip
quit

第一关文档答案:

第2关:父子进程间的共享内存通信实现

编程要求

本关任务:改写版本 1.3 内核,使得 0 号进程顺序循环输出小写字母 abc . . . ,每输出一个字母就执行 pause 系统调用; 1 号进程的行为类似,只不过将小写变为大写;同时要求两个进程输出的字符是关联递增的,即如果 0 号进程上一次输出了字符a,那么这一次如果是 1 号进程运行,那它应该输出字符B,反之亦然,运行画面如下图所示。(要求还是使用 int 0x81 输出字符,且不能修改 int 0x81 的实现方式)

配置版本内核1.3,注意复制的文件路径~具体操作此不再赘述。详情请移步以下链接~头歌操作系统 课堂练习4.1:段式内存管理 答案_蓝莓奶油饺子·的博客-CSDN博客

使用VScode修改文件:

(注:以下标注的代码行数可能根据不同环境会有所不同,不同时请根据上下文代码进行判断增删代码的位置~)

打开如图所示路径下的main.c文件:

 在62行位置添加代码:

 在114行位置添加代码:

 在150行位置添加代码:

 将155行-158行的原文件代码替换为如图所示的框内代码:

 将171-174行的原文件代码替换为如图所示的框内代码:

 

 保存main.c文件,再用同样的方法打开如图所示路径下的memory.c文件:

 在133行添加代码如图所示:

 将178行代码注释或删除,添加红框内代码:

保存memory.c文件,并在命令行对1.3/linux重新编译,如图所示:

 最后在运行虚拟机即可,如图所示:

猜你喜欢

转载自blog.csdn.net/kercii/article/details/130608741