头歌操作系统-课后作业4.3段页式内存管理-答案-无解析
目录
头歌操作系统 课后作业4.3:段页式内存管理 答案 无解析
第1关:第一次页故障
版本1内核环境配置详情请移步前几关~
启动gdb调试器:
b schedule
c
p task
p task[0]->pid
p task[1]->pid
p ¤t
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 号进程顺序循环输出小写字母
a
、
b
、
c
. . . ,每输出一个字母就执行 pause 系统调用; 1 号进程的行为类似,只不过将小写变为大写;同时要求两个进程输出的字符是关联递增的,即如果 0 号进程上一次输出了字符
a
,那么这一次如果是 1 号进程运行,那它应该输出字符
B
,反之亦然,运行画面如下图所示。(要求还是使用 int 0x81 输出字符,且不能修改 int 0x81 的实现方式)
配置版本内核1.3,注意复制的文件路径具体操作此不再赘述。详情请移步以下链接
使用VScode修改文件:
(注:以下标注的代码行数可能根据不同环境会有所不同,不同时请根据上下文代码进行判断增删代码的位置~)
打开如图所示路径下的main.c文件:
在62行位置添加代码:
在114行位置添加代码:
在150行位置添加代码:
将155行-158行的原文件代码替换为如图所示的框内代码:
将171-174行的原文件代码替换为如图所示的框内代码:
保存main.c文件,再用同样的方法打开如图所示路径下的memory.c文件:
在133行添加代码如图所示:
将178行代码注释或删除,添加红框内代码:
保存memory.c文件,并在命令行对1.3/linux重新编译,如图所示:
最后在运行虚拟机即可,如图所示: