实验目的
通过设计一个SPOOLING假脱机输出的模拟程序,更好地理解和掌握SPOOLING假脱机技术.。
实验内容
1.设计一个实现SPOOLING技术的进程
设计一个SPOOLING输出进程和两个请求输出的用户进程。
当用户需要输出时,调用请求输出进程,将需要输出的信息输出到输出井。
SPOOLING输出进程工作时,根据请求块记录的各进程要输出的信息,将其实际输出到显示器。这里,SPOOLING进程与请求输出的用户进程可并发运行。
2.设计进程调度算法
进程调度采用随机算法,这与进程输出信息的随机性相一致。两个请求输出的用户进程的调度概率各为45%,SPOOLING输出进程为10%,这由随机数发生器产生的随机数模拟决定。
3.数据结构
进程控制快PCB
struct pcb //进程控制块PCB
{
int id; //进程标识
int status; //状态
int length; //输出长度
int buf[BUFFERNUM];//输出缓冲
}
其中状态可用值为
0:就绪状态
1:等待状态1,表示输出井满,请求输出的用户进程必须等待
2:等待状态2,表示输出井空,SPOOLING输出进程必须等待
3:等待状态3,表示输出请求块使用完,请求输出的用户进程必须等待
4:结束状态
请求输出块
struct req