系统调度IPC和页面失效控制lab4v01.PDF

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
系统调度IPC和页面失效控制lab4v01

第六章. 系统调度,IPC 和页面失效控制 (lab4 )(v0.1) 6.1. 实验目标 MIT 这次实验是在Lab3 进程和中断管理的基础上实现,目标是在他们的JOS 操作系统 中实现多进程管理和进程间消息通信的功能。 在实验三中,我们知道进程是一个执行中的程序实例。利用分时技术,操作系统上同时 可以运行多个进程。分时技术的基本原理是把CPU 的运行时间划分成一个个规定长度的时 间片(实验中一个时间片为 100ms),让每个进程在一个时间片内运行。当进程的时间片用 完时系统舅利用调度程序切换到另一个进程去运行。当一个进程在执行时,CPU 的所有寄 存器中的值、进程的状态以及堆栈中的内容被称为该进程的上下文。当内核需要切换至另一 个进程时,它需要保存当前进程的所有状态,即保存当前进程的上下文,以便在再次执行该 进程时,能够恢复到切换时的状态执行下去。 在操作系统的进程调度方式中有抢占式和非抢占式,本实验中采用抢占式进程调度,即 现行进程在运行过程中,如果有重要或紧迫的进程到达(其状态必须为就绪),则现运行进 程将被迫放弃处理机,系统较处理机立刻分配给新到达的进程,其需要时钟中断处理程序实 现。其中如何产生多个进程以及如何进行进程切换是本实验的目标。 程序的代码比较零散,主要集中在kern 和lib 目录下。该实验可以分为3 部分:实现调 度算法、创建新的进程环境和进程间通信。第一部分通过循环轮转(Round-Robin )调度算 法实现多用户进程;第二部分通过实现类似于Unix 进程创建的fork ()函数创建新的进程 以及实现用户态下的缺页错误处理函数;最后通过时钟中断实现用户进程间的消息通信等。 本实验中的函数在kern 下主要是完成以下文件: kern/sched.c kern/syscall.c kern/trapentry.S kern/trap.c kern/env.c 在lib 目录下需要完成的文件包括: lib/pfentry.S lib/pgfault.c lib/fork.c lib/ipc.c 在本次实验过程中没有检查函数,不过 JOS 给出了一些用户进程,在实验中运行这些 进程和文档说明中的结果对照,如果出现问题可以利用bochs 设置断点查看相关的错误,也 可以用 cprintf 打印相关信息,来查看是否运行正确。只有每次运行正确之后才能继续下面 的实验,确保错误只出现在当前代码中。 6.2. 背景知识 通过实验二和实验三,JOS 系统在完成了内存分页管理以及进程结构初始化和中断初始 化之后,已经可以简单的运行一个进程,并可以使用中断系统进行系统调用了。在主要函数 i386_init() 中,对进程结构初始化和中断初始化之后,又增加了支持多进程环境的两个函数 pic_init();和kclock_init(); ,前者是初始化8259A 的中断控制器,为后面的时钟中断做准备, 后者是初始化8253 可编程定时器,用来产生时钟中断(系统定义每秒100 次,即8253 被设 置成每隔10ms 就发出一个时钟中断信号)。 在JOS 系统内核启动之后,系统创建了一个用户idle 进程,即传统意义上的守护进程 (一个周期性运行或总是等待某个事件的后台进程),是系统中的后台服务进程,它是一个 生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的 事件。守护进程常常在系统引导装入时启动,在系统关闭时终止。Linux 系统有很多守护进 程,大多数服务都是通过守护进程实现的。在JOS 系统中,idle 进程周期性的调用调度函数, 调度执行就绪的进程。 在系统启动了用户进程之后,内核函数i386_init();调用调度函数sched_yield();开始执行 第一个用户进程并周期性的执行就绪的用户进程。 我们知道,现代操作系统都是多用户多进程环境,因此,当前 JOS 只运行一个进程是 远远不够的。在本实验中,我们让JOS 支持多进程(像现代操作系统那样),通过创建新的 进程以及实现简单的多进程调度算法来实现。 6.3. 多进程管理的实现 在这个实验中,主要是实现调度算法以及创建新的进程,并实现用户态下的 frok

文档评论(0)

xiaozu + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档