摘要: 引入:理解链接过程 由一个 源文件得到一个二进制可执行文件需要经历预处理、编译、汇编和链接: 预处理:包括头文件的包含、宏定义的扩展、条件编译的选择等 编译:经过词法分析、语法分析、语义分析,将源代码翻译成汇编代码 汇编:把作为中间结果的汇编代码翻译成了机器代码,即目标代码 代码在链接之前经历:源码 阅读全文
posted @ 2019-04-24 19:20 sssaltyfish 阅读(360) 评论(0) 推荐(0) 编辑
摘要: 在MIT JOS lab4的实验中,为了能够在用户态自定义处理页面错误,我们必须要知道操作的页面的属性(是否当前用户具有读写权限、是否copy on write页面),这就需要查询指向当前物理页面的页表项和目录表项获取它的属性 在之前的实验中,我们已经通过 修改 的目录表项,用此操作允许用户读取任一 阅读全文
posted @ 2019-04-18 18:21 sssaltyfish 阅读(795) 评论(1) 推荐(0) 编辑
摘要: 1. 页目录表基址(保存在CR3)为物理地址,但GDT表基址(保存在GDTR)为线性地址,为什么? A:在开启了分页后,除了 ,所有地址都要经过MMU自动进行虚拟地址到物理地址的转换,这个是无法绕过的。在进入kernel初期, 放着的还是boot时载入的gdt表的地址(这时候是物理),随后载入简易页 阅读全文
posted @ 2019-04-18 15:39 sssaltyfish 阅读(252) 评论(0) 推荐(0) 编辑
摘要: Part C:抢占式多任务处理和进程间通信(IPC) 注:根据MIT JOS的lab指导手册,以下不明确区分“环境”和“进程” 重要提醒:每次实现完系统调用,记得补充 的`syscall()`!!!!!!! 在lab4的最后一部分,我们将修改内核以支持抢占不合作环境拥有的资源并允许进程间通信 时钟中 阅读全文
posted @ 2019-04-18 14:30 sssaltyfish 阅读(267) 评论(0) 推荐(0) 编辑
摘要: Part B:fork的写时拷贝(Copy on Write Fork) 注:根据MIT JOS的lab指导手册,以下不明确区分“环境”和“进程” 重要提醒:每次实现完系统调用,记得补充 的`syscall()`!!!!!!! 如上一篇文章提及到的,Unix提供系统调用 作为创建进程的原语,它将父进 阅读全文
posted @ 2019-04-18 14:28 sssaltyfish 阅读(213) 评论(0) 推荐(0) 编辑
摘要: Part A:多处理器支持和协作式多任务处理 注:根据MIT JOS的lab指导手册,以下不明确区分“环境”和“进程” 在这部分实验中,我们将扩展JOS使之能在多处理器系统上运行,并实现一些新的系统调用以允许用户环境新建新的环境。我们还将通过 协作轮询调度( cooperative round ro 阅读全文
posted @ 2019-04-16 10:46 sssaltyfish 阅读(432) 评论(0) 推荐(0) 编辑
摘要: Part B:页面错误,断点异常和系统调用 注:根据MIT JOS的lab指导手册,以下不明确区分“环境”和“进程” 到目前位置我们以及你实现了内核基本的异常处理,现在要在此基础上利用异常处理进行系统调用。 处理页面错误 页面错误(page fault,中断向量14)是我们在本实验和往后会大量使用的 阅读全文
posted @ 2019-04-14 15:05 sssaltyfish 阅读(218) 评论(0) 推荐(0) 编辑
摘要: Part A:用户环境和异常处理 注:根据MIT JOS的lab指导手册,以下不明确区分“环境”和“进程” 用户环境创建 见上一篇: "MIT JOS系列5:用户环境(一)" 处理中断和异常 基础知识 受保护的控制转移 异常(exceptions)和中断(interrupts)都是受保护的控制转移( 阅读全文
posted @ 2019-04-14 14:55 sssaltyfish 阅读(233) 评论(0) 推荐(0) 编辑
摘要: Part A:用户环境和异常处理 注:根据MIT JOS的lab指导手册,以下不明确区分“环境”和“进程” 用户环境创建 本节中我们将实现一些内核的基本工具来支持受保护的用户进程的运行。我们将增加JOS内核的功能,为它增加一些数据结构来追踪用户进程的一些信息;创建一个单一用户的环境,并在其中加载运行 阅读全文
posted @ 2019-04-11 14:21 sssaltyfish 阅读(403) 评论(0) 推荐(0) 编辑
摘要: 在MIT JOS lab1的实验中我们了解了bootloader和kernel载入的过程,并在kernel中完成了最初的虚拟内存映射、栈设置和硬件相关的一系列初始化。在Lab2中,我们将在JOS操作系统中实现分页内存管理,其包括: 物理页面管理(对机器拥有的物理内存的管理,包括建立对应的数据结构、处 阅读全文
posted @ 2019-04-10 10:05 sssaltyfish 阅读(656) 评论(0) 推荐(0) 编辑