始工作
2) 由制定单元取出通道程序的起始地址,送入CAW中?通道执行各条通道指令
13、 假设当前磁头的位置是53号磁道且磁头向下(小磁道号)移动,接下来要访问的
磁道序列是:130,42,180,15,108,68,97。请分别用FCFS、SSTF、SCAN、LOOK、C-SCAN、C-LOOK调度方式,给出磁头移动过程访问的磁道序列,并分别计算其磁头移动量。
14、 假设当前磁头处在45号磁道且向0号磁道移动,磁盘总磁道数为200,当其完成当
前磁道的I/O请求后,已经到达要求访问的磁道序列是: 179,134,32,41,160,122,184,151
请分别用FCFS、SSTF、SCAN、LOOK、C-SCAN、C-LOOK、N-SCAN、N-LOOK磁头调度算法,请分别给出磁头访问磁道的序列和总移动的磁道数。
15、 下面是采用Hansen管程实现SCAN算法,请把它修改成C-SCAN调度算法。
Type diskhead=MONITOR Var busy:boolean; headpos:0..199; direction:(up,down);
cylinder:Array[0..199] Of condition; count:Array[0..199] Of integer;
Define require, release;
Procedure require(dest:0..199); Begin
If busy Then Begin
count[dest]:=count[dest]+1; wait(cylinder[dest]) End busy:=true;
If dest Else If dest>headpos Then direction:=up; headpos:=dest End; Procedure upscan; Var I:0..200; Begin I:=headpos; C-LOOK插入一段: While (I<=199)and(count[I]=0) Do Else I:=I+1; Begin If I<=199 Then I=headpos; Begin direction=down; count[I]:=count[I]-1; end signal(cylinder[I]) End C-SCAN算法: End; headpos=0; Procedure downscan; direction=up; Var I:-1..199; if count[0]>0 then Begin begin I:=headpos; count[0]=count[0]-1; While (I>=0)and(count[I]=0) Do signal(cylinder[0]); I:=I-1; end If I>=0 Then Begin count[I]:=count[I]-1; C-LOOK算法: Var I:-1..199; signal(cylinder[I]) K: integer; End Begin End; I=headpos; Procedure release; While(I>=0) Do Begin Begin busy:=false; If count[I]>0 then If direction=up Then K=I; Begin I=I-1; upscan; downscan End End If K<>headpos then Else Begin Begin direction=up; downscan; upscan count[K]=count[K]-1; End signal(cylinder[K]); End; end Procedure initialize; Var I: 0..199; Begin busy:=false; headpos:=0; direction:=up; For I:=0 To 199 Do count[I]:=0; End Begin initialize End; 16、 在磁盘的输入输出中,读写一个磁盘块由哪些时间组成?磁头优化调度主要减少那 部分时间? 寻道时间、旋转延迟、传输时间 减少寻道时间 17、 为什么要引入缓冲?软缓冲区设在内存什么区域? 为了缓解处理器与设备之间速度不匹配的矛盾,从而提高资源利用率和系统效率 软缓冲区通常设在内存系统空间中 18、 在系统缓冲池管理中,请给出用信号量和PV操作实现缓冲区申请和释放的过程。 1. 申请 2. 释放 (1) P(buf_num) (1) P(mutex) (2) P(mutex) (2) 空缓冲区入链头 (3) 取链头空缓冲区 (3) V(mutex) (4) V(mutex) (4) V(buf_num) 19、 P276图8-19给出输入型设备缓冲实现算法。请问: (1) 进程方面的算法中,处于等待状态的进程如何被唤醒? (2) 中断程序何时执行? 20、 何谓RAID技术? RAID:独立磁盘冗余阵列,是一个物理磁盘的集合,作为一个逻辑磁盘被管理和使用 21、 请用图形表示RAID0、RAID 1、RAID 5数据在各个磁盘的存放规则。 RAID0: RAID1: RAID5: 22、 SPOOLing系统有哪两部分组成? 假脱机输入和假脱机输出 23、 引入SPOOLing系统的目的是什么? 为了提高I/O设备的使用效率 24、 SPOOLing输入系统的硬件和软件有哪几部分组成?各自有什么作用? 硬件:输入机、通道、磁盘等 软件:假脱机输入程序、输入井管理程序等 25、 SPOOLing输出系统的硬件和软件有哪几部分组成?各自有什么作用? 硬件:通道、输出机、磁盘等 软件:假脱机输出程序、输出井管理程序 26、 下列有关SPOOLing系统的论述中,第 8 和第 9 条是正确的论述。 (1) 构成SPOOLing系统的基本条件,是具有外围输入机与外围输出机。 (2) 构成SPOOLing系统的基本条件,是只要具有大容量、高速硬盘作为输入井与输出井。 (3) 只要操作系统中采用了多道程序设计技术,就可以构成SPOOLing系统。 (4) SPOOLing系统是建立在分时系统中。 (5) SPOOLing系统是虚拟存储技术的体现。 (6) SPOOLing系统是在用户程序要读取数据时起动输入进程输入数据。 (7) 当输出设备忙时,SPOOLing系统中的用户程序暂停执行,待I/O 空闲时再被唤醒,去执行输出操作。 (8) SPOOLing系统实现了对I/O设备的虚拟,只要输入设备空闲,SPOOLing可预先将输入数据从设备传输到输入井中供用户程序随时读取。 (9) 在SPOOLing系统中,用户程序可以随时将输出数据送到输出井中,待输出设备空闲时再执行数据输出操作。 27、 磁盘属于 块 设备,信息存取是以 固定长度数据块 为单位进行的,磁盘的I/O控制主要采用 DMA 方式;打印机主要采用 程序中断 方式。 A: (1)字符设备;(2)独占设备;(3)块设备;(4)虚拟设备; B: (1)位;(2)字节;(3)帧;(4)固定长度数据块; C,D: (1) 循环测试;(2)程序中断;(3)DMA;(4)SPOOLing; 28、 在具有通道处理机的系统中,用户进行请求启动外设时,由 操作系统 根据 I/O请求构造通道程序以及通道状态字,并将通道程序保存在 内存 中,然后执行启动I/O命令。 A: (1) 用户程序;(2)应用程序;(3)通道;(4)操作系统; B: (1)内存;(2)硬盘;(3)通道;(4)外部设备; 29、 磁盘移动调度算法中, SSTF 的主要缺陷是具有高度局部化倾向,会推迟某些请求的服务,甚至引起饥饿。 A: (1)FCFS (2)SSTF (3)SCAN (4) C_SCAN 30、 在设备管理中,虚拟设备的引入和实现是为了充分利用设备,提高系统效率,采用 2 来模拟低速设备(输入机和打印机)的工作。 (1)SPOOLing技术,利用磁带; (2) SPOOLing技术,利用磁盘; (3) 脱机批处理2系统; (4) 移动磁臂和旋转调度技术,利用磁盘; 31、 不通过CPU进行主存与I/O设备间大量的信息交换,可以是 DMA 方式。 (1) DMA (2) 中断 (3)查询等待 (4)程序控制 32、 什么叫做稳定存储器?如何构造稳定存储器? 不丢失信息的存储器称为稳定存储器。 并不存在绝对稳定可靠的存储介质,人们只能在诸如磁盘等相对稳定可靠的存储介质上利用多副本冗余技术来构造稳定存储器。通常的做法是:在两种失效独立的存储介质上构建稳定存储器。稳定存储器的稳定性取决于这两种存储介质同时发生错误的概率,当这个概率为0时,稳定存储器才是真正的稳定。 实验综合部分: 1、 在Linux系统中,如何创建自己的静态函数库?函数库有什么命名规则? 2、 在Linux系统中,把I/O设备看做什么文件? 3、 如何创建自己的共享函数库?共享函数库有什么命名规则? 4、 在gcc命令中,参数-l 和-L分别表示什么含义?假设在编译某程序fabc.c需要引用路 径: /home/root/klib/libabcd.a 的静态函数库,并编译连接成可执行文件fabc,请给出完整的编译命令。 5、 在Linux系统中,如何实现硬链接?如何实现符号链接? 6、 用“ls -il”如何判断哪些文件采用硬链接在同一I节点上的? 7、 有如下一个shell程序: cc –o$1 $1.c cp $1.c $2 ./$1>>$2 请问其中的$1、$2什么含义?如果该shell程序名为by01.sh,则执行如下命令: ./by01.sh abc efg 则命令行参数abc和efg分别赋给那个变量? 8、 在一个shell程序中可以执行另一个shell程序,其执行方式有两种: (1) . shell程序 (2) exec shell程序 请问两者有什么区别? 9、 假设有一字符设备驱动程序driver01.c。请给出其在Linux操作系统中安装的基本步 骤。 【参考答案】 (1) 把driver01.c用gcc编译成目标模块,假设为driver01.o; (2) 接着加载该目标模块:insmod –f driver01.o;假设其加载的主设备名为driver01. (3) 在/proc/devices文件中查看设备名为driver01对应的主设备号,假设为253; (4) 根据主设备号创建设备文件:mknod /dev/driver01 c 253 0; 这样可以在系统目录/dev中查找到driver01的设备,并可以在程序中使用该设备。