欢迎来到天天文库
浏览记录
ID:48514828
大小:319.32 KB
页数:13页
时间:2020-02-06
《操作系统实验_Spooling技术.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、......学号P1514032专业计算机科学与技术姓名实验日期2017.12.21教师签字成绩实验报告【实验名称】Spooling系统模拟【实验目的】体会操作系统中spooling假脱机输入输出的过程,以及缓冲区,输入井,输出井,输出缓冲区间的关系,井管理程序的作用。【实验原理】Spooling技术实质上是利用一个共享设备的一个存储区,并不是真正占有这一设备,用户进程把要完成的任务以及文件的形式存入存储区,在存储区中排队并等待SPOOLING系统调度,只有被SPOOLING系统调度并输入,此项任务才真正完成,通过SPOOLING技术可以使独占设备成为共享设备,由此大大提高了设备的使
2、用率,节约了硬件资源。Spooling系统主要有以下三部分组成:.专业.专注.......(1)输入井和输出井。这是在磁盘上开辟的两个大存储空间。输入井是模拟脱机输入时的磁盘设备,用于暂存I∕O设备输入的数据;输出井是模拟脱机输出时磁盘,用于暂存用户程序的输出数据。(2)输入缓冲区和输出缓冲区。为了缓和CPU和磁盘之间速度不匹配的矛盾,在内存中要开辟两个缓冲区:输入缓冲区和输出缓冲区。输入缓冲区用于暂存由输入设备送来的数据,以后再传送到输入井。输出缓冲区用于暂存从输出井送来的数据,以后在传送给输出设备。(3)输入进程SPi和输出进程SP0。这里利用两个进程来模拟脱机I∕O时的外围控制
3、机。其中,进程SPi模拟脱机输入时的外围控制机,将用户要求的数据从输入机通过输入缓冲区再送到输入井,当CPU需要输入数据时,直接从输入井读入内存;进程SP0模拟脱机输出时的外围控制机,把用户要求输出的数据先从内存送到输出井,待输出设备空闲时,再将输出井中的数据经过输出缓冲区送到输出设备上【实验内容】.专业.专注.......数据结构:#defineN1000//设置缓冲区最大为100intbuffer_num;//缓冲区实际大小intinput_nums[N];//设置输入数组intinput_num;//io设备输入大小doubletime=0;//需求时间intread_time
4、;//每个字符读取到缓冲区的时间intread_time2;//缓冲区输入到#管理主要函数:voidinit()//初始化缓冲区,初始化输入voidset_time()//设置时间voidinput_process()//Spooling模拟voidoutput_runtime()//输出时间函数流程图:.专业.专注........专业.专注.......实验源代码:#include#include#defineN1000//设置缓冲区最大为100intbuffer_num;//缓冲区实际大小intwell[N];intpos=0;intinp
5、ut_nums[N];intinput_num;//io设备输入大小doubletime=0;intread_time;intread_time2;voidset_time()//设置时间{printf("输入读取一个字符的时间");scanf("%d",&read_time);printf("输入缓冲区到#管理的时间");scanf("%d",&read_time2);}voidinit()//初始化缓冲区,初始化输入{.专业.专注.......printf("输入缓冲区大小");scanf("%d",&buffer_num);printf("输入io设备要输入的数字量
6、");scanf("%d",&input_num);for(inti=1;i<=input_num;i++)input_nums[i]=i;}voidinput_process()//输入进程{inti,j=0;printf("缓冲区的内容为:");if(input_num<=buffer_num){j=0;for(i=0;i7、k++).专业.专注.......{Sleep(read_time2*20);//模拟缓冲区到输入#时间printf(".");}printf("");Sleep(read_time2*20);//模拟缓冲区到输入#时间time+=read_time*j+(j*1.0/buffer_num)*read_time2;return;}for(i=0;i
7、k++).专业.专注.......{Sleep(read_time2*20);//模拟缓冲区到输入#时间printf(".");}printf("");Sleep(read_time2*20);//模拟缓冲区到输入#时间time+=read_time*j+(j*1.0/buffer_num)*read_time2;return;}for(i=0;i
此文档下载收益归作者所有