操作系统进程管理与调度的模拟

操作系统进程管理与调度的模拟

ID:10980698

大小:59.00 KB

页数:7页

时间:2018-07-09

操作系统进程管理与调度的模拟_第1页
操作系统进程管理与调度的模拟_第2页
操作系统进程管理与调度的模拟_第3页
操作系统进程管理与调度的模拟_第4页
操作系统进程管理与调度的模拟_第5页
资源描述:

《操作系统进程管理与调度的模拟》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、题目:进程管理与调度模拟系统一、实验目的1、掌握进程在三种基本状态中变化的原理与过程。2、掌握“先来先服务”、“短作业优先”、“优先级”、“时间片轮转”调度算法的原理与特点。二、实验内容:采用面向对象的程序设计方法来设计进程管理与调度模拟系统。要写出各个程序模块必要分析说明。三、实验分析:在进程管理与调度模拟系统中,共涉及到两个类和一个结构体:PCB结构体、链队列类和OS类。操作系统启动后,在系统内将存在PCB池,用来存放进程的PCB结构,PCB池的大小决定了系统中能同时存在的进程数量。在本系统

2、中,假定系统能同时存在的进程数为20个,用一个PCB的数组来表示。PCB池中的PCB会有四种状态:运行状态、就绪状态、阻塞状态和空闲状态,所以,在操作系统中将会有四种队列:运行队列、就绪对列、阻塞队列和空闲队列。进程的创建随着操作系统的调度,将会在这四种队列中变迁。四、实验过程:1、设计PCB和链表A、PCB采用结构体设计,用于描述进程运行所需的全部信息,作为OS对并发执行的进程进行控制和管理的根据,其贯穿进程的整个生命周期,是进程存在的唯一标志。其结构图如下:idnamestatusnextp

3、riorityIOdeviceIOreqblockfortimereqtime_cpuaddressId:进程内部标识符。用于标识一个进程name:进程外部标识符。也用于标识一个进程。Status:进程当前状态。作为进程调度的参考。Priority:进程优先级。作为进程调度的参考。Next:状态指针。用于指向同状态的下一个PCBIodevice:外设清单。作为进程调度的参考。Blockfor:阻塞原因,作为唤醒进程的标志。Ioreq:进程还需要的外部设备,作为进程调度的参考。Timereq:进程

4、要求的执行时间,用于控制进程的运行。time_cpu:已经执行的时间,用于控制进程的运行。Address:地址指针。通过它来运行模拟进程要执行的代码。B、链表设计成一个类(List)。表的示意图如下:就绪队列指针阻塞队列指针空闲队列指针执行指针C、PCB1PCB2PCB3PCB4PCB5PCB6PCB7PCB8PCB9...43087901链表类的数据及其所支持的操作如下图:ListintNodeNum;charstatus;PCBListHead;PCBListTail;StatusAppen

5、dPCB(PCBdatap);PCBDeletePCB(intpid);voidDisplayList();voidDisplayPCB(PCBpcb);PCBFindPCB(intpid,PCB&pre);PCBFindPCB(intpnum);charGetListStatus();intGetNodeNum();StatusisEmpty();voidSetNodeNum(intk);StatusGetFirstPCB(PCB&pcb);voidSetStatus(chars);voidS

6、etListHead(PCBpcb);voidSetListTail(PCBpcb);List(charnodetype="就绪");virtual~List();各操作函数功能说明如下:StatusAppendPCB(PCBdatap);将指定PCB加入链表。PCBDeletePCB(intpid);删除指定的PCB结点voidDisplayList();显示整个链表voidDisplayPCB(PCBpcb);显示PCB中的详细信息PCBFindPCB(intpid,PCB&pre);查找指

7、定的结点PCBFindPCB(intpnum);查找链表中的第pnum个结点charGetListStatus();取得当前链表PCB结点的状态intGetNodeNum();取得链表的结点数voidSetNodeNum(intk);设置链表结点数StatusisEmpty();判断链表是否为空StatusGetFirstPCB(PCB&pcb);取第一个结点voidSetStatus(chars);设置状态标识voidSetListHead(PCBpcb);设置头指针voidSetListTa

8、il(PCBpcb);设置尾指针List(charnodetype="就绪");构造函数,初始化virtual~List();虚函数链表的构造函数:voidList::SetNodeNum(intk)设置链表结点数{NodeNum=k;return;}voidList::SetStatus(chars);设置状态标识{status=s;return;}voidList::SetListHead(PCBpcb)设置头指针{ListHead=pcb;}voidList::SetListTail(PC

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

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

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