欢迎来到天天文库
浏览记录
ID:8851504
大小:49.50 KB
页数:8页
时间:2018-04-09
《操作系统原理a实验指导书》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、淮海工学院操作系统原理A实验指导书计算机工程学院7实验1进程调度实验目的进程是操作系统最重要的概念之一,进程调度是操作系统内核的重要功能,本实验要求用Java或C/C++语言编写一个进程调度模拟程序,至少使用先来先服务、短进程优先、最高优先权优先或时间片轮转法四种算法中的两种算法来实现进程调度。通过本实验可加深对进程调度算法的理解。实验环境TurboC2.0/3.0或VC++6.0或Java语言实验学时4学时,必做实验。实验内容1、设计有5个进程并发执行的模拟调度程序,每个程序由一个PCB表示。2、模拟调度程序至少使用先来先服务、短进程优先、最高优先权优先或时间片轮转法四种算法中的
2、两种算法来实现进程调度。3、程序执行中应能在屏幕上显示出各进程的状态变化,以便于观察调度的整个过程。实验说明1、优先级算法说明(1)PCB的结构:IdSpanUsedNeedSatusNext优先级算法中,设PCB的结构如右图所示,其中各数据项的含义如下:Id:进程标识符号,取值1—5。Prior:优先级,随机产生,范围1—5。Used:目前已占用的CPU时间数,初值为0;当该进程被调用执行时,每执行一个时间片,Used加1。Need:进程尚需的CPU时间数,初值表示该进程需要运行的总时间,取值范围为5—10。并随机产生,每运行一个时间片need减1;need为0则进程结束。Sta
3、tus:进程状态R(运行),J(就绪),F(完成);初始时都处于就绪状态。Next:指向就绪队列中下一个进程的PCB的指针。(2)初始状态及就绪队列组织:5个进程初始都处于就绪状态,进程标识1—5,used7初值都为0。各进程的优先级随机产生,范围1—5。处于就绪状态的进程,用队列加以组织,队列按优先级由高到低依次排列,队首指针设为head,队尾指针设为tail。(3)调度原则以及运行时间的处理:正在执行的进程每执行一个时间片,其优先级减1(允许优先级为负)。进程调度将在以下情况发生:当正在运行的程序其优先级小于就绪队列队首进程的优先级时。程序中进程的运行时间以逻辑时间片为单位。2
4、、时间片轮转算法说明(1)PCB的结构(如下图所示):轮转法中,设PCB的结构如右图所示,其中各数据项的含义如下:IdSpanUsedNeedSatusNextId:进程标识符号,取值1—5。Span:在某一轮中,分配给先运行进程的时间片数,取值1—3。Used:现运行进程在本轮执行过程已用的时间片数。Need:进程尚需的CPU时间数,初值表示该进程需要运行的总时间,取值范围5—10。并随机产生,每运行一个时间片need减1;need为0则进程结束。Status:进程状态R(运行),J(就绪),F(完成);初始时所有进程处于就绪状态。Next:指向就绪队列中下一个进程的PCB的指针
5、。(2)初始状态及就绪队列组织:Span、Used在每轮开始时赋初值,Used初值值为0,Span初值要求随机产生。(3)调度原则:当一个进程被调度程序执行时,每经过一个时间片,Need减1,Used加1,如果Need为0,表示该进程结束,如果Need不为0,并且Used小于本轮Span值,则该进程可继续运行,若Need不为0,且Used等于Span值,则该进程本轮运行时间已到,应调度下一个队首进程运行。实验步骤1、理解本实验中有关调度算法的说明。2、根据调度算法的说明,画出相应的程序流程图。3、按照程序流程图,用Java/C/C++语言编程并实现。分析与思考71、逻辑时间片该如何
6、实现?2、如果不使用指针操作,是否也可以使用数组实现进程就绪队列的组织?7实验2银行家算法实验目的银行家算法是操作系统中避免死锁的典型算法,用Java或C/C++语言编写一个银行家算法的模拟程序。通过本实验可以加深对银行家算法的步骤和相关数据结构用法的更好理解。实验环境TurboC2.0/3.0或VC++6.0或Java语言实验学时4学时,必做实验。实验内容用Java或C/C++语言编写一个简单的银行家算法模拟程序,用银行家算法实现资源分配。程序能模拟多个进程共享多种资源的情形。进程可动态地申请资源,系统按各进程的申请动态地分配资源。要求程序具有显示和打印各进程的某一时刻的资源分配
7、表和安全序列;显示和打印各进程依次要求申请的资源数量以及为某进程分配资源后的有关资源数据的情况。实验说明实验中进程的数量、资源的种类以及每种资源的总量Total[j]最好允许动态指定。初始时每个进程运行过程中的最大资源需求量Max[i,j]和系统已分配给该进程的资源量Allocation[i,j]均为已知(这些数值可以在程序运行时动态输入),而算法中其他数据结构的值(包括Need[i,j]、Available[j])则需要由程序根据已知量的值计算产生。实验步骤1.认真
此文档下载收益归作者所有