完善进程模型与通信:设计新原型操作系统

需积分: 0 0 下载量 147 浏览量 更新于2024-08-05 收藏 247KB PDF 举报
本实验是关于计算机科学与技术专业的操作系统课程实践,主要针对2016级学生王凯祺(学号16337233)进行的进程通信实验。实验目标有两个关键点:一是深化进程模型的理解,通过设计和实现一组合作并发进程,使它们能够协同工作;二是掌握操作系统中的核心功能,如fork(), wait(), 和 exit() 系统调用。 实验要求在上一阶段的原型操作系统基础上进行进化,保持原有的基础特性,着重实现以下几个关键部分: 1. **基本原语的内核实现**:要求实现 do_fork(), do_wait(), do_exit(), blocked(), 和 wakeup() 控制原语,这些是操作系统中用于创建、等待和退出进程的核心操作。 2. **系统调用实现**:内核层面要实现 fork(), wait(), 和 exit() 这三个系统调用。这些调用允许用户空间的程序与内核进行交互,fork()用于创建新进程,wait()用于等待子进程结束,exit()则终止当前进程。 3. **进程控制块的扩展**:为了支持更多的进程和通信机制,需要对进程控制块 (PCB) 进行扩展。新增的数据项包括表示进程状态(死亡、就绪、运行、阻塞)、父进程PID、子进程数量以及退出子进程的返回值等。 在这个过程中,实验者采用了一种简化的方法,将进程状态减少到四种,通过中断服务程序处理fork(), exit(), 和 wait() 的逻辑。这些中断服务程序负责修改进程控制块的状态,以完成相应的进程操作。 实验步骤分为设计思路和扩展进程控制块两部分。设计思路强调了核心原语和中断在操作系统中的作用,以及如何通过修改进程控制块来实现这些功能。扩展进程控制块则具体描述了新的数据结构及其用途,如status字段用于跟踪进程状态,father_pid用于记录父进程关系,son_cnt表示子进程数量等。 这个实验不仅涉及基础的进程管理,还涉及到操作系统内核的设计和实现,以及对进程间通信的理解和应用,是一次全面锻炼操作系统原理和编程技能的重要实践。