SPOOLING假脱机技术的模拟介绍了通过计算机程序实现的一种输入/输出管理机制,它能够有效提升系统资源利用率和作业处理效率。
设计一个SP00LING输出进程与两个请求输出的用户进程以及一个SP00LING输出服务程序。当请求输出的用户进程希望输出一系列信息时,调用该输出服务程序,由其将这些信息送入到输出井中,在遇到结束标志后表示本次文件输出完成。随后申请一个请求块(记录了用户进程的名字、在输出井中的位置以及要发送的信息长度等),等待SP00LING进程进行实际的打印或显示操作。在此过程中,SP00LING输出进程与请求输出的用户进程可以并发运行。
功能分析如下:当输入“第一个用户进程的请求为:”和“第二个用户进程的请求为:“后按下确定键,在右侧文本区会显示出两个请求输出用户的详细信息及SPOOLING输出程序处理的数据。其中,每个用户进程被调度的概率各为0.45,而SP00LING输出过程中的概率则设定在0.10左右,这些分配通过随机数生成器模拟实现。
关于各个进程的状态变化如下:
- 进程的基本状态有三种:可执行、等待和结束。
- 可执行态指该进程正在运行或处于调度准备阶段;
- 等待状态下分为三类(等待1,2,3),具体取决于不同的阻塞条件。
状态转换规则包括:
① 当一个进程完成其任务后,它将被标记为“结束”。
② 若输出服务程序在尝试向输出井中写入信息时发现空间不足,则调用该操作的用户进程会被设置到等待1的状态。
③ SP00LING进程在执行打印或显示操作期间如果遇到空闲状态下的输出井,它将进入等待2状态;
④ 每当SP00LING完成一个块的信息处理后便释放相应空间,并且让正在等候的请求变为可执行态以继续其工作。
⑤ 在用户进程通过服务程序向输出井提交信息并形成相应的请求记录之后,如果此时发现SPOOLING处于等待状态,则将其标记为“可执行”以便于后续操作;
⑥ 当一个新申请要使用请求块的调用发生时而无可用资源的情况下,该进程将被置入到等待3的状态。