实验一——单处理器系统的进程调度

实验一——单处理器系统的进程调度

ID:12452119

大小:35.00 KB

页数:3页

时间:2018-07-17

实验一——单处理器系统的进程调度_第1页
实验一——单处理器系统的进程调度_第2页
实验一——单处理器系统的进程调度_第3页
资源描述:

《实验一——单处理器系统的进程调度》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验一:进程的建立及调度1.实验目的:加深对进程概念的理解,熟悉PCB的组织,深入了解创建进程的一般过程,掌握用队列组织进程的方法,掌握进程调度算法。2.实验内容编程实现创建原语,形成就绪队列,模拟实现进程的调度。具体内容包括:1)、确定进程控制块的内容,用链表组织进程控制块;2)、完成进程创建原语和进程调度原语;3)、 要求采用时间片轮转调度算法;4)、 编写主函数对所做工作进程测试。3、实验具体内容和步骤的说明 这个实验主要考虑三个问题:如何组织进程、如何创建进程和如何实现处理器调度。1)、进程的组织:首先就要设定进程控制块的内容。进程控制块PCB记录各个进程

2、执行时的情况。不同的操作系统,进程控制块所记录的信息内容不一样。操作系统功能越强,软件也越庞大,进程控制块所记录的内容也就越多。本次实验只使用必不可少的信息。一般操作系统中,无论进程控制块中信息量多少,信息都可以大致分为以下四类: ① 标识信息每个进程都要有一个惟一的标识符,用来标识进程的存在和区别于其他进程。这个标识符是必不可少的,可以用符号或编号实现,它必须是操作系统分配的。本实验中要求,采用编号方式,也就是为每个进程依次分配一个不相同的正整数。 ② 说明信息用于记录进程的基本情况,例如进程的状态、等待原因、进程程序存放位置、进程数据存放位置等等。本模拟实验中

3、,因为进程没有数据和程序,仅使用进程控制块模拟进程,所以这部分内容仅包括进程状态。③ 现场信息现场信息记录各个寄存器的内容。当进程由于某种原因让出处理器时,需要将现场信息记录在进程控制块中,当进行进程调度时,从选中进程的进程控制块中读取现场信息进行现场恢复。现场信息就是处理器的相关寄存器内容,包括通用寄存器、程序计数器和程序状态字寄存器等。在实验中,可选取几个寄存器作为代表。用大写的全局变量AX、BX、CX、DX模拟通用寄存器、大写的全局变量PC模拟程序计数器、大写的全局变量PSW模拟程序状态字寄存器。本实验要求读取一个寄存器的值,予以输出④ 管理信息管理信息记录

4、进程管理和调度的信息。例如进程优先数、进程队列指针等。实验中,仅包括队列指针。综合上面内容,建议进程控制块结构定义如下:struct pcb {int name;  //进程标识符int status;  //进程状态 int ax, bx, cx,dx; //进程现场信息,通用寄存器内容int pc;         //进程现场信息,程序计数器内容int psw;       //进程现场信息,程序状态字寄存器内容int next;       //下一个进程控制块的位置}  进程控制块定义好后,考虑如何组织进程控制块。多道程序设计系统中,往往同时创建多个进程

5、。在单处理器的情况下,每次只能有一个进程处于运行态,其他的进程处于就绪状态或阻塞状态。为了便于管理,通常把处于相同状态的进程的进程控制块链接在一起。单处理器系统中,正在运行的进程只有一个。因此,单处理器系统中的进程控制块分成三个队列:①、一个正在运行进程的进程控制块;②、就绪进程的进程控制块组成的就绪队列;③、阻塞进程的进程控制块组成的阻塞队列。由于实验模拟的是进程调度,没有对阻塞队列的操作,所以实验中只有一个指向正在运行进程的进程控制块指针和一个就绪进程的进程控制块队列指针。操作系统的实现中,系统往往在主存中划分出一个连续的专门区域存放系统的进程控制块,实验中应

6、该用数组模拟这个专门的进程控制块区域,定义如下:#define  n   10       //假定系统允许进程个数为10struct pcb  pcbarea[n];  //模拟进程控制块区域的数组这样,进程控制块的链表实际上是数据结构中使用的静态链表。进程控制块的链接方式可以采用单向和双向链表,实验中,进程控制块队列采用单向静态链表。为了管理空闲进程控制块,还应该将空闲控制块链接成一个队列。实验中采用时间片轮转调度算法,这种算法是将进程控制块按照进入就绪队列的先后次序排成队列。对就绪队列的操作就是从队头摘下一个进程控制块和从队尾挂入一个进程控制块。因此为就绪队

7、列定义两个指针,一个头指针,指向就绪队列的第一个进程控制块;一个尾指针,指向就绪队列的最后一个进程控制块。实验中指向运行进程的进程控制块指针、就绪队列指针和空闲进程控制块队列指针定义如下:intrun;    //定义指向正在运行进程的进程控制块的指针struct{int  head;int  tail;}ready;   //定义指向就绪队列的头指针head和尾指针tailint  pfree;  //定义指向空闲进程控制块队列的指针  2)、进程创建。进程创建是一个原语,因此在实验中应该用一个函数实现,进程创建的过程应该包括:①申请进程控制块:进程控制块的数量

8、是有限的,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。