【实验目的】
1.加深对进程概念及进程管理各部分内容的理解。
2.熟悉进程管理中主要数据结构的设计和进程调度算法、进程控制机构、同步机构、通讯机构的实施。 【实验要求】
1.调试并运行一个允许n 个进程并发运行的进程管理模拟系统。了解该系统的进程控制、同2.步及通讯机构,每个进程如何用一个 PCB 表示、其内容的设置;各进程间的同步关系;系统在运行过程中显示各进程的状态和有关参数变化情况的意义。 【实验环境】
具备Windows或MS-DOS操作系统、带有Turbo C 集成环境的PC机。 【实验重点及难点】
重点:理解进程的概念,进程管理中主要数据结构的设计和进程调度算法、进程控制 机构、同步机构、通讯机构的实施。
难点:实验程序的问题描述、实现算法、数据结构。 【实验内容】 一.阅读实验程序
程序代码见【实验例程】。 二.编译实验例程
用Turbo C 编译实验例程。
三.运行程序并对照实验源程序阅读理解实验输出结果的意义。
【问题与讨论】
系统为进程设置了几种状态?说明这些状态的含义。
三种。就绪、执行、阻塞。就绪:处于就绪状态的进程已经得到除 CPU之外的其他资源,只要由调度得到处理机,便可立即投入执行。执行:只有处于内存就绪状态的进程在得到处理机后才能立即投入执行。阻塞:进程因等待某个事件发生而放弃处理机进入等待状态。 采用何种方式来模拟时间片?简要说明实现方法。
系统分时执行各进程,并规定3个进程的执行概率均为33%。通过产生随机数x来模拟时间片。当进程process1访问随机数x时,若x ≥0.33;当进程process2访问x时,若x<0.33或x≥0.66;当进程process3访问x时,若x<0.66,分别认为各进程的执行时间片到限,产生“时间片中断”而转入低就绪态t。 进程调度算法采用剥夺式最高优先数法。各进程的优先数通过键盘输入予以静态设置。调度程序每次总是选择优先数最小(优先权最高)的就绪进程投入执行。先从r状态进程中选择,在从t状态进程中选择。当现行进程唤醒某个等待进程,且被唤醒进程的优先数小于现行进程时,则剥夺现行进程的执行权。 各进程在使用临界资源s1和s2时,通过调用信号量sem1和sem2上的P,V操作来实现同步,阻塞和唤醒操作负责完成从进程的执行态到等待态到就绪态的转换。 系统启动后,在完成必要的系统初始化后便执行进程调度程序。但执行进程因“时间片中断”,或被排斥使用临界资源,或唤醒某个等待资源时,立即进行进程调度。当3个进程都处于完成状态后,系统退出运行
由于输出结果较多,一屏显示不完,如何较好地阅读程序输出?
一是在程序中控制输出的行数,比如20行,输出后用gets停顿一下,继续时 回车即可;
还有一种更简单办法,运行时将输出重定向到文件:c:\\程序名> doc.txt,然后使用记事本或dos下的Edit查看doc.txt里的输出内容。
描述进程管理主控程序的算法(流程图或N-S图)。
main
初始化 处处石化初
scheduler 有进程管理 N (exe≠NIL) Y 进程3 进程1 进程2
END
图1 进程管理主控程序
描述进程调度程序的算法(流程图或N-S图)。
(1)
scheduler 有r态就
Y
N Y Y
Y
N
实验截图:
N N
Y Y N
因篇幅问题不能全部显示,请点此查看更多更全内容