![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OS实验
文章平均质量分 84
B.D.S.
这个作者很懒,什么都没留下…
展开
-
HITOS_LAB5 进程运行轨迹的跟踪与统计
Linux。原创 2023-12-05 20:24:22 · 980 阅读 · 0 评论 -
HIT_OS_LAB4 系统调用
在内核的 include/unistd.h 添加系统调用号 修改系统调用表和调用总数 编写who.c 修改Makefile 文件 编译运行 将和分别编译成和。然后将和(位于目录下)拷贝到虚拟机目录。拷贝完成后,需要进行卸载挂载操作,并启动Bochs: 在Bochs中执行以下命令: 执行结果如图所示。接着执行脚本,使用以下命令为脚本增加执行权限: 然后运行: Q1:Linux 0.11 的系统调用参数限制和扩大限制的描述:在 Linux 0.11 中,系统调用最多能传递3个参数。这是因为在系统调用的原创 2023-11-28 18:27:32 · 892 阅读 · 0 评论 -
HIT_OS_LAB3 操作系统的引导
因此,对bootsect.s的代码进行修改,首先加载setup.s,然后显示语句“BDSOS is booting…”,最后跳转至setup.s。接下来,对bootsect.s进行修改,以使其能够加载并跳转到setup.s的起始地址执行。最后,编译文件并执行,结果如下图,bootsect.s和setup.s的修改是正确的,成功显示语句“Now we are in SETUP”最后,编译文件并执行,结果如下图,显示bootsect.s的修改是正确的,成功输出语句“BDSOS is booting…原创 2023-11-11 10:10:58 · 402 阅读 · 0 评论 -
HIT_OS_LAB2 调试分析 Linux 0.00 多任务切换
通过调用中断,修改程序运行时的cs。在进入中断前,程序当前的特权级为3,即用户模式。而触发int 0x80中断后,程序会进入内核模式,特权级变为0。在返回中断前,特权级又从0变为3,从而完成特权级的切换。在进入中断时,程序会自动将当前的一些寄存器的值压入栈内,以确保能够正确地返回原程序。然后,在执行iret指令前,程序会将之前压入栈内的信息弹出,覆盖掉现有的cs,使程序的特权级从0变为3。原创 2023-11-04 14:47:41 · 358 阅读 · 0 评论 -
HIT_OS_LAB1 调试分析 Linux 0.00 引导程序
通过这些恢复的信息,程序回到中断发生前的状态,并继续执行导致中断的指令的下一条指令。GDT 中的每一项描述符包括了段的起始地址、段的大小、访问权限等信息。在时钟中断处理程序中,通过长跳转指令(ljmp)和任务状态段(TSS)的切换,实现了任务0和任务1之间的无缝切换。然后通过IRET指令,切换到任务0的特权级,开始执行任务0的代码,实现了任务的切换。执行后,会发生栈的切换,选择的栈从init_stack切换为krn_stk0,栈底的地址会从0x0BD8切换为0x0E60,中断前的状态信息被压入栈内。原创 2023-10-29 14:11:31 · 609 阅读 · 0 评论