🏷️ 知识点:缓冲区
设系统缓冲区和用户工作区均采用单缓冲,从外设读入 1 个数据块到系统缓冲区的时间为 100,从系统缓冲区读入 1 个数据块到用户工作区的时间为 5,对用户工作区中的 1 个数据块进行分析的时间为 90(如下图所示)。
进程从外设读入并分析 2 个数据块的最短时间是( )。
A.200
B.295
C.300
D.390
[tag_link] 正确答案:C在 单缓冲 中,数据块 1 从外设到用户工作区的总时间为 105,在这段时间中,数据块 2 没有进行操作。在数据块 1 进行分析处理 时,数据块 2 从外设到用户工作区的总时间为 105,这段时间是并行的。再加上处理数据块 2 的时间 90,总时间为 300,答案为 C。
在系统内存中设置磁盘缓冲区的主要目的是( )。
A. 减少磁盘 I/O 次数 B. 减少平均寻道时间 C. 提高磁盘数据可靠性 D. 实现设备无关性
[tag_link] 正确答案:A磁盘和内存的速度差异,决定了可以将内存经常访问的文件调入磁盘缓冲区,从高速缓存中复制的访问比磁盘 I/O 的机械操作要快很多。
下列选项中,不会影响系统缺页率的是()。
A. 页面置换算法
B. 工作集的大小
C. 进程的数量
D. 页缓冲队列的长度
[tag_link]
正确答案:D
页置换算法会影响缺页率,例如,LRU 算法的缺页率通常要比 FIFO 算法的缺页 率低,排除 A。工作集的大小决定了分配给进程的物理块数,分配给进程的物理块数越多, 缺页率就越低,排除 B。进程的数量越多,对内存资源的竞争越激烈,每个进程被分配的物 理块数越少,缺页率也就越高,排除 C。页缓冲队列是将被淘汰的页面缓存下来,暂时不写 回磁盘,队列长度会影响页面置换的速度,但不会影响缺页率,答案选 D。
某文件占 10 个磁盘块,现要把该文件磁盘块逐个读入主存缓冲区,并送用户区进行分析,假设一个缓冲区与一个磁盘块大小相同,把一个磁盘块读入缓冲区的时间为 100μs,将缓冲区的数据传送到用户区的时间是 50μs,CPU 对一块数据进行分析的时间为 50μs。在单缓冲区和双缓冲区结构下,读入并分析完该文件的时间分别是( )。
A. 1500μs、1000μs
B. 1550μs、1100μs
C. 1550μs、1550μs
D. 2000μs、2000μs
[tag_link]
正确答案:B
在 单缓冲区 中,当上一个磁盘块从缓冲区读入用户区完成时,下一磁盘块才能开始读入,也就是当最后一块磁盘块读入用户区完毕时所用时间为 150×10=1500μs,加上处理最后一个磁盘块的时间 50μs,得 1550μs。在 双缓冲 中,不存在等待磁盘块从缓冲区读入用户区的问题,10 个磁盘块可以连续从外存读入主存缓冲区,加上将最后一个磁盘块从缓冲区送到用户区的传输时间 50μs 以及处理时间 50μs,也就是 100×10+50+50=1100μs。
下列优化方法中,可以提高文件访问速度的是( )。
Ⅰ. 提前读
Ⅱ. 为文件分配连续的簇
Ⅲ. 延迟写
Ⅳ. 采用磁盘高速缓存
A. 仅Ⅰ、Ⅱ B. 仅Ⅱ、Ⅲ C. 仅Ⅰ、Ⅲ、Ⅳ D. Ⅰ、Ⅱ、Ⅲ、Ⅳ
[tag_link]
正确答案:D
II 和 IV 显然均能提高文件访问速度。对于 I,提前读是指在读当前盘块时,将下一个可能要访问的盘块数据读入缓冲区,以便需要时直接从缓冲区中读取,提高了文件的访问速度。对于 III,延迟写是先将写数据写入缓冲区,并置上“延迟写”标志,以备不久之后访问,当缓冲区需要再次被分配出去时才将缓冲区数据写入磁盘,减少了访问磁盘的次数,提高了文件的访问速度,III 也正确,答案选 D。
CPU 输出数据的速度远高于打印机的打印速度,为解决这一矛盾,可采用的技术是( )。
A. 并行技术 B. 通道技术 C. 缓冲技术 D. 堆存技术
[tag_link]
正确答案:C
CPU输出数据的速度远高于打印机的打印速度,这种速度不匹配会导致CPU经常处于等待状态,降低系统整体效率。 为了解决这一矛盾,缓冲技术被广泛应用。 缓冲技术通过在内存中设置一个缓冲区,CPU将数据快速输出到缓冲区中暂存,然后打印机可以按照自己的较慢速度从缓冲区中读取数据。 这样,CPU在输出数据后无需直接等待打印机完成,可以继续执行其他任务,从而平滑了速度差异,提高了资源利用率和系统吞吐量。 其他选项中,并行技术主要用于同时执行多个任务或使用多个设备,但在此场景下,单个CPU与单个打印机的速度矛盾并未直接通过并行解决; 通道技术是一种I/O管理方式,通过专用处理器处理I/O操作以减少CPU干预,但它更侧重于优化I/O流程,而非专门针对速度不匹配; 堆存技术并非标准计算机术语,可能指堆内存管理或其他存储方式,与解决速度矛盾无关。 因此,缓冲技术是最直接且有效的选择。
某操作系统采用双缓冲区传送磁盘上的数据。设一次从磁盘将数据传送到缓冲区所用时间为 T 1 ,一次将缓冲区中数据传送到用户区所用时间为 T 2 (假设 T 2 远小于 T 1 、 T 3 ),CPU 处理一次数据所用时间为 T 3 ,则处理该数据共重复 n 次该过程,系统所用总时间为( )。
A.
B.
C.
D.
[tag_link]
正确答案:D
在双缓冲区系统中,处理每个数据块需经历三个阶段:从磁盘读入缓冲区(时间 T 1 )、从缓冲区传送到用户区(时间 T 2 ,且 T 2 远小于 T 1 和 T 3 )、CPU 处理(时间 T 3 )。 双缓冲区允许重叠不同数据块的 I/O 操作与 CPU 处理,即当 CPU 处理一个数据块时,可以同时从磁盘读入下一个数据块。 处理 n 个数据块时,第一个数据块需顺序完成三个阶段,耗时 T 1 + T 2 + T 3 。 后续数据块的处理起始时间受限于磁盘读和 CPU 处理中的较慢者,因为读操作与 CPU 处理可并行,但各自串行执行。 因此,从第二个数据块开始,每个数据块的处理时间由 max ( T 1 , T 3 ) 主导,加上必须的传输时间 T 2 (已包含在第一个块中)。 总时间即为第一个块的完整时间加上后续 n − 1 个块的最大阶段时间,即 ( n − 1 ) × max ( T 1 , T 3 ) + T 1 + T 2 + T 3 。 若 T 1 ≥ T 3 ,总时间为 n × T 1 + T 2 + T 3 ; 若 T 3 > T 1 ,总时间为 T 1 + T 2 + n × T 3 。 两种情形均与选项 D 一致。 其他选项未正确反映重叠操作的时间优化,故错误。
(7 分)有三个进程 PA、PB 和 PC 合作解决文件打印问题:PA 将文件记录从磁盘读入主存的缓冲区 1,每执行一次读一个记录;PB 将缓冲区 1 的内容复制到缓冲区 2,每执行一次复制一个记录;PC 将缓冲区 2 的内容打印出来,每执行一次打印一个记录。缓冲区的大小等于一个记录的大小。请用 P、V 操作来保证文件的正确打印。
[tag_link]
**【解析】** 本题考查用 PV 操作解决进程的同步互斥问题。
进程 PA、PB、PC 之间的关系为:PA 与 PB 共用一个单缓冲区,PB 又与 PC 共用一个单缓冲区,其合作方式如下图所示。当缓冲区 1 为空时,进程 PA 可将一个记录读入其中;若缓冲区 1 中有数据且缓冲区 2 为空,则进程 PB 可将记录从缓冲区 1 复制到缓冲区 2 中;若缓冲区 2 中有数据,则进程 PC 可以打印记录。在其他条件下,相应进程必须等待。事实上,这是一个生产者-消费者问题。
为遵循这一同步规则,应设置 4 个信号量 empty1、empty2、full1、full2,信号量 empty1 及 empty2 分别表示缓冲区 1 及缓冲区 2 是否为空,其初值为 1;信号量 full1 及 full2 分别表示缓冲区 1 及缓冲区 2 是否有记录可供处理,其初值为 0。相应的进程描述如下:
semaphore empty1 = 1; // 缓冲区 1 是否为空
semaphore full1 = 0; // 缓冲区 1 是否有记录可供处理
semaphore empty2 = 1; // 缓冲区 2 是否为空
semaphore full2 = 0; // 缓冲区 2 是否有记录可供处理
cobegin {
process PA() {
while(TRUE) {
从磁盘读入一条记录;
P(empty1);
将记录存入缓冲区 1;
V(full1);
}
}
process PB() {
while(TRUE) {
P(full1);
从缓冲区 1 中取出一条记录;
V(empty1);
P(empty2);
将取出的记录存入缓冲区 2;
V(full2);
}
}
process PC() {
while(TRUE) {
P(full2);
从缓冲区 2 中取出一条记录;
V(empty2);
将取出的记录打印出来;
}
}
} coend
`