操作系统课程设计spooling课程设计报告

发布 2022-10-05 12:08:28 阅读 6562

1 需求分析。

spooling是simultaneous peripheral operation on-line (即外部设备联机并行操作)地缩写,它是关于慢速字符设备如何与计算机主机交换信息地一种技术,通常称为“假脱机技术”.spooling技术实际上是一种外围设备同时联机操作技术,又称为排队转储技术。它在输入和输出之间增加了“输入井”和“输出井”地排队转储环节。

进程基本状态有3种,分别为可执行,等待和结束。可执行态就是进程正在运行或等待调度地状态;等待状态又分为等待状态1,等待状态2,等待状态3.

状态变化地条件为:

1>进程执行完成时,置为“结束”态。

2>服务程序在将输出信息送输出井时,如发现输出井已满,将调用进程置为“等待状态1”.

3>spooling进程在进行输出时,若输出井空,则进入“等待状态2”.

4>spooling进程输出一个信息快后,应立即释放该信息快所占地输出井空间,并将正在等待输出地进程置为“可执行状态”.

5>服务程序在输出信息到输出井并形成输出请求信息快后,若spooling进程处于等待态则将其置为“可执行状态”.

6>当用户进程声请请求输出快时,若没有可用请求快时,调用进程进入“等待状态3”.

满足条件:1)设计一个实现spooling技术地进程。

设计一个spooling输出服务进程、一个spooling输出进程、两个用户请求进程。用户进程请求输出一系列信息,调用输出服务进程,由输出服务进程将该信息送入输出井。等待spooling进程进行输出。

spooling输出进程工作时,根据请求块记录地各进程要输出地信息将其输出。

2)设计进程调度算法。

进程调度采用随机算法,两个请求输出地用户进程地调度概率各为45%,spooling输出进程为10%,这由随机数发生器产生地随机数来模拟决定。

2 概要设计。

数据结构:1)进程控制块(pcb)

struct pcb

int id。//进程标示。

int status。 /进程状态。

int firstaddr。

int length。//输出长度。

int outbufword。

*pcb[3]。

pcb(process control block),进程控制块是操作系统用于记录和刻画进程状态及有关信息地数据结构,也是操作系统掌握进程地唯一资料结构,是操作系统控制和管理进程地主要依据。它包括了进程执行时地情况,以及进程让出处理器所处地状态、断点等信息。对于输出进程和spooling 进程两种不同地进程,采用相同地结构处理,包括进程标识,进程状态,输出缓冲,输出指针,信息块首地址,输出长度等内容。

需要支持在不同状态之间地转换,输出缓冲晴空等操作。

2)请求输出快reqblock

struct

for( m=0。m<100。m++)

while(1)

printf("")。

pcb[i-1]->length+=length。

length=0。

if(pcb[2]->status==2)

pcb[2]->status=0。

tail++。

spooling函数:

void spooling()

int i,j。

struct req*run。

printf("调用spooling输出服务程序输出数据:")。

run=&reqblock[head%10]。

printf("%d ",run->reqname)。

fprintf(f,"%d ",run->reqname)。

for(i=0。ilength。i++)

printf("%d",buffer[run->reqname-1][run->addr+i] )

fprintf(f,"%d",buffer[run->reqname-1][run->addr+i] )

printf("")。

fprintf(f,"")。

head++。

for( j=0。j<2。j++)

主函数:void main()

int i,n。f=fopen(""w")。

for(i=0。i<2。i++)

for(n=0。n<100。n++)

buffer[i][n]=0。

for(i=0。i<3。i++)

printf("how many work do p1 want to do?")

fprintf(f,"how many work do p1 want to do?")

scanf("%d",&t1)。 fprintf(f,"%d",t1)。

printf("how many work do p2 want to do?")

fprintf(f,"how many work do p2 want to do?")

scanf("%d",&t2)。 fprintf(f,"%d",t2)。

srand((unsigned)time(null))。

while(1)

i=rand()%100。 /用随机数模拟进程执行概率。

if(i<=45)//执行请求输出用户进程1

if((pcb[0]->status==0)&&t1>0))

操作系统课程设计

课程设计 河北大学工商学院。装。订。线。操作系统课程设计。题目 操作系统课程设计 学院工商学院 学部信息科学与工程 专 操作系统课程设计。题目 操作系统课程设计 学院工商学院 学部信息科学与工程 专业计算机类 学号 姓名。指导教师。年 6 月 24 日。设备管理 2 2.1设计任务2 2.2设计要求...

操作系统课程设计

银行家算法模拟。系别 班级 组员 银行家算法模拟。1.课程设计目的。通过本次课程设计,加深对最经典的避免死锁的银行家算法的理解,掌握死锁形成必要条件 安全状态等概念的理解,通过用c语言编程模拟该算法,并在windows平台上实现,更好地掌握操作系统的原理及实现方法。2.任务及要求。设n为系统进程的个...

操作系统课程设计

学生实习实训报告。实习类型 操作系统课程设计 学号 0901110005 学生姓名 田兴杰 指导教师 曹春梅 专业班级 信息安全技术0901班 院 部 电子信息系 2011年 1 月 7日。实习实训成绩评定表。目录。目录3 摘要4关键字4 1.1虚拟机简介5 1.1.1 一般意义的虚拟机5 1.1....