操作系统驱动调度
- 格式:doc
- 大小:83.00 KB
- 文档页数:15
2022年武汉纺织大学外经贸学院计算机科学与技术专业《操作系统》科目期末试卷A(有答案)一、选择题1、驱动调度算法中,()算法可能会随时改变移动臂的运动方向。
A.电梯调度B.最短寻道时间优先C.扫描D.单向扫描2、现有一个容量为10GB的磁盘分区,磁盘空间以簇(Cluster)为单,位进行分配,簇的大小为4KB,若采用位图法管理该分区的空闲空问,即用.位(bit)标识一个簇是否被分配,则存放该位图所需簇的个数为()A.80B.320C.80KD.320K3、进程和程序的本质区别是()A.前者分时使用CPU,后者独占CPUB.前者存储在内存,后者存储在外存C.前者在一个文件中,后者在多个文件中D.前者为动态的,后者为静态的4、下面哪个特征是并发程序执行的特点()。
A.程序执行的间断性B.相通信的可能性C.产生死锁的可能性D.资源分配的动态性5、下列进程调度算法中,综合考虑进程等待时间和执行时间的是()A.时间片轮转调度算法B.短进程优先调度算法C.先来先服务调度算法D.高响应比优先调度算法6、当系统发生抖动(Trashing)时,可以采取的有效措施是()。
I.撤销部分进程 II.增大磁做交换区的容量 III.提高用户进程的优先级A. 仅IB.仅IIC.仅IIID.仅I,II7、不会产生内部碎片的存储管理是()。
A.分页式存储管理B.分段式存储管理C.固定分区式存储管理D.段页式存储管理8、下列指令中,不能在用户态执行的是()A.trap指令B.跳转指令C.压栈指令D.关中断指令9、中断处理和子程序调用都需要压栈以保护现场。
中断处理一定会保存而子程序调用不需要保存其内容的是()。
A.程序计数器B.程序状态字寄存器C.通用数据寄存器D.通用地址寄存器10、下列关于SPOOLing的叙述中,不正确的是()A.SPOOLing系统中必须使用独占设备B.SPOOLing系统加快了作业执行的速度C.SPOOLing系统使独占设备变成了共享设备D.SPOOLing系统利用了处理器与通道并行上作的能力11、某进程的段表内容见表,当访问段号为2、段内地址为400的逻辑地址时,进行地址转换的结果是()。
操作系统试卷3及答案一、单项选择题(本大题共15小题,每小题1分,共15分)在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题中的括号内。
1通道又被称为I/O处理器,它用于实现()之间的信息传输。
A、主存与外设B、CPU与外设C、外设与外设D、CPU与辅存2、磁盘是可共享的设备,每一时刻( )进程与它交换信息。
A、允许有两个B、可以有任意多个C、最多有1个D、至少有1个3、在存储管理的各方案中,可扩充主存容量的方案是( )存储管理。
A、固定分区B、可变分区C、连续D、页式虚拟4、分时系统中进程调度算法通常采用( )。
A、响应比高者优先B、时间片轮转法C、先来先服务D、短作业优先5、设有三个进程共享一个资源,如果每次只允许一个进程使用该资源,则用PV操作管理时信号量S的可能取值是( )。
A、1,0,-1,-2B、2,0,-1,-2C、1,0,-1D、3,2,1,06、设有三个作业J1,J2,J3,它们的到达时间和执行时间如下表:作业名到达时间执行时间J1 8:00 2小时J2 8:45 1小时J3 9:30 0.25小时它们在一台处理器上按单道运行,若采用短作业优先调度算法,则此三作业的执行次序是( )A、J3,J2,J1B、J1,J2,J3C、J1,J3,J2D、J3,J1,J27、计算机系统中设置的访管指令,( )执行。
A、只能在目态B、只能在管态C、既可在目态又可在管态D、在目态和管态下都不能8、一个多道批处理系统,提高了计算机系统的资源利用率,同时( )。
A、减少各个作业的执行时间B、增加了单位时间内作业的吞吐量C、减少单位时间内作业的吞吐量D、减少了部份作业的执行时间9、操作系统实现文件管理后,允许用户对记录式文件进行存取的最小单位是( )。
A、文件B、记录C、数据项D、字符串10、文件系统采用多级目录结构可以( )。
A、节省存储空间B、解决命名冲突C、缩短文件传送时间D、减少系统开销11、在页式虚拟存储管理中,为实现地址变换,应建立()。
2022年吉林化工学院计算机科学与技术专业《操作系统》科目期末试卷A(有答案)一、选择题1、驱动调度算法中,()算法可能会随时改变移动臂的运动方向。
A.电梯调度B.最短寻道时间优先C.扫描D.单向扫描2、为支持CD-ROM小视频文件的快速随机播放,播放性能最好的文件数据块组织方式是()。
A.连续结构B.链式结构C.直接索引结构D.多级索引结钩3、进程P1和P2均包含并发执行的线程,部分伪代码描述如下所//进程P1 //进程P2int x=0; int x=0;Thread1() Thread3(){int a; {int a:a=1; a=x;x+=1; x+=3;Thread2() Thread4(){ {int a: int b, aa=2; b=x;x+=2; x1=4;} }下列选项中,需要互斥执行的操作是()。
A. a=l与a=2B. a=x与b=xC. x+=1与x+=2D. x+=1与x+=34、进程和程序的本质区别是()A.前者分时使用CPU,后者独占CPUB.前者存储在内存,后者存储在外存C.前者在一个文件中,后者在多个文件中D.前者为动态的,后者为静态的5、一个正在访问临界资源的进程由于申请等待1/0操作而被中断时,它()。
A.允许其他进程进入与该进程相关的临界区B.不允许其他进程进入临界区C.允许其他进程抢占处理器,但不能进入该进程的临界区D.不允许任何进程抢占处理器6、总体上说,“按需调页”(Demand-Paging)是个很好的虚拟内存管理策略。
但是,有些程序设计技术并不适合于这种环境,例如()A.堆栈B.线性搜索C.矢量运算D.分法搜索7、不会产生内部碎片的存储管理是()。
A.分页式存储管理B.分段式存储管理C.固定分区式存储管理D.段页式存储管理8、用户程序在口态下使用特权指令引起的中断属于()。
A.硬件故障中断B.程序中断C.外部中断D.访管中断9、实时操作系统必须在()内处理完来白外部的事件。
2022年河南师范大学计算机科学与技术专业《操作系统》科目期末试卷A(有答案)一、选择题1、驱动调度算法中,()算法可能会随时改变移动臂的运动方向。
A.电梯调度B.最短寻道时间优先C.扫描D.单向扫描2、下面关于目录检索的论述中,正确的是()。
A.由于散列法具有较快的检索速度,因此现代操作系统中都用它来替代传统的顺序检索方法B.在利用顺序检索法时,对树形目录应采用文件的路径名,应从根目录开始逐级检索C.在利用顺序检索法时,只要路径名的一个分量名未找到,便应停止查找D.在顺序检索法的查找完成后,即可得到文件的物理地址,3、死锁与安全状态的关系是()。
A.死锁状态有可能是安全状态B.安全状态有可能成为死锁状态C.不安全状态就是死锁状态D.死锁状态一定是不安全状态4、结构(Cobegin语句1:语句2 Coend)表示语句1和语句2并发执行。
代码如下:X:=0;Y:=0;CobeginBeginX:=1;Y:=Y+X;EndBeginY:=2;X:=X+3;EndCoend当这个程序执行完时,变量X和Y的值有可能为()。
I.X=1,Y=2 II.X=1,Y=3 III.X=4,Y=6A.IB. I和IIC.II和IIID. I、II和III5、有两个并发执行的进程P1和P2,共享初值为1的变量x。
P1对x加1,P2对x减1。
加1操作和减1操作的指令序列分别如下所示://加1操作load R1,x ① //取x到寄存器R1中inc R1 ②store x, R1:③ //将R1的内容存入x//减1操作load R2,x ① //取x到寄存器R1中inc R2 ②store x, R2:③ //将R1的内容存入x两个操作完成后,x的值()。
A.可能为-1或3B.只能为1C.可能为0,1或2D.可能为-1,0,1或26、在一个操作系统中对内存采用页式存储管理方法,则所划分的页面大小()。
A.要依据内存大小而定B.必须相同C.要依据CPU的地址结构而定D.要依据内存和外存而定7、下列关于页式存储说法中,正确的是()。
2022年武汉华夏理工学院计算机科学与技术专业《操作系统》科目期末试卷B(有答案)一、选择题1、驱动调度算法中,()算法可能会随时改变移动臂的运动方向。
A.电梯调度B.最短寻道时间优先C.扫描D.单向扫描2、文件系统用位图法表示磁盘空间的分配情况,位图存于磁盘的32~127号块中,每个盘块占1024B.盘块和块内字节均从0开始编号。
假设要释放的盘块号为409612,则位图中要修改的位所在的盘块号和块内字节序号分别是()。
A.81,1B.81,2C.82,1D.82,23、下面关于进程的叙述中,正确的是()A.进程获得CPU运行是通过调度得到的B.优先级是进程调度的重要依据,确定就不能改变,C.单CPU的系统中,任意时刻都有一个进程处于运行状念D.进程申请CPU得不到满足时,其状态变为阻塞4、下面哪个不会引起进程创建()A.用户登录B.作业调度C.设备分配D.应用请求5、下列关于管程的叙述中,错误的是()。
A.管程只能用于实现进程的互斥B.管程是由编程语言支持的进程同步机制C.任何时候只能有一个进程在管程中执行D.管程中定义的变量只能被管程内的过程访问6、考虑页面替换算法,系统有m个页帧(Frame)供调度,初始时全空:引用串(Reference String)长度为p.包含了n个不同的页号,无论用什么算法,缺页次数不会少于()A.mB.pC.nD.min(m,n)7、使用修改位的目的是()。
A.实现LRU页面置换算法B.实现NRU页面置换算法C.在快表中检查页面是否进入D.检查页面是否最近被写过8、下列选项中,操作系统提供给应用程序的接口是()。
A.系统调用B.中断C.库函数D.原语9、中断处理和子程序调用都需要压栈以保护现场。
中断处理一定会保存而子程序调用不需要保存其内容的是()。
A.程序计数器B.程序状态字寄存器C.通用数据寄存器D.通用地址寄存器10、系统将数据从磁盘读到内存的过程包括以下操作:① DMA控制器发出中断请求②初始化DMA控制器并启动磁盘③从磁盘传输一块数据到内存缓冲区④执行“DMA结束”中断服务程序正确的执行顺序是():A.③①②④B.②③①④C.②①③④D.①②③④11、在SPOOLing系统中,用户进程实际分配到的是()。
2022年北京师范大学计算机科学与技术专业《操作系统》科目期末试卷B(有答案)一、选择题1、驱动调度算法中,()算法可能会随时改变移动臂的运动方向。
A.电梯调度B.最短寻道时间优先C.扫描D.单向扫描2、下列关于打开文件open()操作和关闭文件close()操作的叙述,只有()是错误的。
A.close()操作告诉系统,不再需要指定的文件了,可以丢弃它B.open()操作告诉系统,开始使用指定的文件C.文件必须先打开,后使用D.目录求必须先打开,后使用3、在单处理器的多进程系统中,进程切换时,何时占用处理器和占用多长时间取决于()A.进程响应程序段的长度B.进程总共需要运行时间的长短C.进程自身和进程调度策略D.进程完成什么功能4、有5个批处理任务A、B、C、D、E几乎同时到达一计算中心。
它们预计运行的时间分别是10min,6min,2min、4min和8min。
其优先级(由外部设定)分别为3,5,2,1和4,这里5为最高优先级。
下列各种调度算法中,其平均进程周转时间为14min 的是()。
A.时间片轮转调度算法B.优先级调度算法C.先来先服务调度算法D.最短作业优先调度算法5、下面关于进程的叙述中,正确的是()A.进程获得CPU运行是通过调度得到的B.优先级是进程调度的重要依据,确定就不能改变,C.单CPU的系统中,任意时刻都有一个进程处于运行状念D.进程申请CPU得不到满足时,其状态变为阻塞6、采用分页或分段管理后,提供给用户的物理地址空间()。
A.分页支持史大的物理空间B.分段支持更大的物理空间C.不能确定D.一样大7、在虚拟页式存储管理方案中,()完成将页面调,入内存的T作。
A.缺页中断处理B.页面淘汰过程C.工作集模型应用D.紧缩技术利用8、用户程序在口态下使用特权指令引起的中断属于()。
A.硬件故障中断B.程序中断C.外部中断D.访管中断9、下面说法错误的有()。
I分时系统中,时间片越短越好。
盛年不重来,一日难再晨。及时宜自勉,岁月不待人。 实验三 驱动调度
一、实验内容 模拟电梯调度算法,实现对磁盘的驱动调度。 二、实验目的 磁盘是一种高速、大容量、旋转型、可直接存取的存储设备。它作为计算机系统的辅助存储器,担负着繁重的输入输出任务、在多道程序设计系统中,往往同时会有若干个要求访问磁盘的输入输出请求等待处理。系统可采用一种策略,尽可能按最佳次序执行要求访问磁盘的诸输入输出请求。这就叫驱动调度,使用的算法称为驱动调度算法。驱动调度能降低为若干个输入输出请求服务所需的总时间,从而提高系统效率。本实验要求学生模拟设计一个驱动调度程序,观察驱动调度程序的动态运行过程。通过实验使学生理解和掌握驱动调度的职能。
三、数据结构 #define M 20 typedef struct PCB { char proc[M];//进程名 int cylinder_num;//柱面号 int track_num;//磁道号 int phy_num;//物理记录号 struct PCB *next; }PCB;
四、实验题目 模拟电梯调度算法,对磁盘进行移臂和旋转调度。 (1)磁盘是可供多个进程共享的存储设备,但一个磁盘每时刻只能为一个进程服务。当有进程在访问某个磁盘时,其他想访问该磁盘的进程必须等待,直到磁盘一次工作结束。当有多个进程提出输入输出要求而处于等待状态时,可用电梯调度算法从若干个等待访问者中选择一个进程,让它访问磁盘。选择访问者的工作由“驱动调度”进程来完成。 由于磁盘与处理器是可以并行工作的、所以当磁盘在作为一个进程服务时,占有处理器的另一进程可以提出使用磁盘的要求,也就是说,系统能动态地接收新的输入输出请求。为了模拟这种情况,在本实验中设置了一个“接收请求”进程。 “驱动调度”进程和“接收请求”进程能否占有处理器运行,取决于磁盘的结束中断信号和处理器调度策略。在实验中可用随机数来模拟确定这两个进程的运行顺序,以代替中断处理和处理器调度选择的过程。因而,程序的结构可参考图3—1 (2)“接收请求”进程建立一张“请求I/O”表,指出访问磁盘的进程要求访问的物理地址,表的格式为:
进程名 柱面号 磁道号 物理记录号
初始化 输入在[0,1]区间 内的一个随机数
随机数>1/2
开始
驱动调度 接受请求
继续? 结束
是 是 否
否 图3—1 程序结构 假定某个磁盘组共有200个柱面,由外向里顺序编号(0—199),每个柱面上有20个磁道,编号为0—19,每个磁道分成8个物理记录,编号0—7。进程访问磁盘的物理地址可以用键盘输入的方法模拟得到。图3—2是“接收请求”进程的模拟算法。 在实际的系统中必须把等待访问磁盘的进程排入等待列队,由于本实验模拟驱动调度,为简单起见,在实验中可免去队列管理部分,故设计程序时可不考虑“进程排入等待队列”的工作。 (3)“驱动调度”进程的功能是查“请求I/O”表,当有等待访问磁盘的进程时,按电梯调度算法从中选择一个等待访问者,按该进程指定的磁盘物理地址启动磁盘为其服务。 对移动臂磁盘来说,驱动调度分移臂调度和旋转调度。电梯调度算法的调度策略是与移动臂的移动方向和移动臂的当前位子有关的,所以每次启动磁盘时都应登记移动臂方向和当前位子。电梯调度算法是一种简单而实用的驱动调度方法,这种调度策略总是优先选择与当前柱面号相同的访问请求,从这些请求中再选择一个能使旋转距离最短的等待访问者。如果没有与当前柱面号相同的访问请求,则根据移臂方向来选择,每次总是沿臂移动方向选择一个与当前柱面号最近的访问请求,若沿这个方向没有访问请求时,就改变臂的移动方向。这种调度策略能使移动臂的移动频率极小,从而提高系统效率。用电梯调度算法实现驱动调度的模拟算法如图3-3。
图 3—2 “接收请求”模拟算法 (4)图3-1中的初始化工作包括,初始化“请求I/O”表,置当前移臂方向为里移;置当前位置为0号柱面,0号物理记录。程序运行前可假定“请求I/O”表
开始 有请求? 输入:进程 名物理地址
进程排入等待队列 登记“请求I/O表
返回 是 否 是 是 是 是 是 否 否 否 否 中已经有如干个进程等待访问磁盘。 在模拟实验中,当选中一个进程可以访问磁盘时,并不实际地启动磁盘,而用显示:“请求I/O”表;当前移臂方向;当前柱面号,物理记录号来代替图3-3中的“启动磁盘”这项工作 开始 查”请求I/O表” 有等待访问者? 有与当前柱面号相同的访问者? 当前移臂方向是向里移? 有比当前柱面号小的访问请求? 有比当前柱面号大的访问请求? 置当前移臂方向为向外移 置当前移臂方向为向里移 从大于当前柱面号的访问请求中选择一个最小者 从大于当前柱面号的访问请求中选择一个最小者 选择能使旋转距离最短的访问者 添加当前位置:柱面号;物理记录号 启动磁盘,被选中者退出“请求I/O表” 返回 五、源程序 #include"stdio.h" #include"stdlib.h" #include"conio.h" #include"string.h" #define M 20 typedef struct PCB { char proc[M];//进程名 int cylinder_num;//柱面号 int track_num;//磁道号 int phy_num;//物理记录号 struct PCB *next; }PCB; PCB *head=NULL; int direction ;//定义方向,1为up,-1为down PCB *h=NULL; //存放当前运行中的进程的信息
返回 图3-3 电梯调度模拟算法 void init () //初始化当前进程 { h=(PCB *)malloc(sizeof(PCB)); direction=1; strcpy(h->proc,"p"); h->cylinder_num = 0; h->track_num= 0; h->phy_num= 0; } //模拟记录当前运行进程 void current_process(PCB *Q) { strcpy(h->proc,Q->proc); h->cylinder_num = Q->cylinder_num; h->track_num=Q->track_num; h->phy_num=Q->phy_num; } //插入函数 void insert(PCB *p) { PCB *q; q=head; if(head==NULL) head=p; else { for(q=head;q->next!=NULL;q=q->next); p->next=q->next; q->next=p; } } void out_info() {//输出进程的信息 printf("┌────┬─────┬───────┬────────┬────┐\n"); printf("│ 进程名│ 柱面号│ 磁道号 │ 物理记录号 │ 方向 │ \n"); printf("└────┴─────┴───────┴────────┴────┘ \n"); printf(" %s \t%d \t%d \t%d",h->proc,h->cylinder_num,h->track_num,h->phy_num); } void output() { PCB *p; p=head; printf("进程名柱面号 磁道号 物理记录号\n"); if(p==NULL) { printf("---*进程表为空,接收请求或按'n'退出*----\n"); } else { while(p!=NULL) { printf("%s \t%d \t%d \t%d\n",p->proc,p->cylinder_num,p->track_num,p->phy_num); p=p->next; } } } //初始化I/O请求表 void create_PCB() { PCB *p,*q; q=head; int i,n; printf("\n"); printf("请输入I/O进程表中进程等待的个数:\n"); printf("\n"); scanf("%d",&n); printf("请依次输入进程的相关信息: (用空格分隔)\n"); printf("━━━━━━━━━━━━━━━\n"); printf("进程名,柱面号,磁道号,物理记录号\n"); for(i=1;i<=n;) { i++; //printf("请输入第%d个进程的信息:\n",i); p=(PCB *)malloc(sizeof(PCB)); scanf("%s",&p->proc); scanf("%d",&p->cylinder_num); scanf("%d",&p->track_num); scanf("%d",&p->phy_num); p->next=NULL; insert(p); } printf("━━━━━━━━━━━━━━━\n");