🏷️ 知识点:缓冲区

共 8 道相关题目

2013 年第 27 题 操作系统 选择题

设系统缓冲区和用户工作区均采用单缓冲,从外设读入 1 个数据块到系统缓冲区的时间为 100,从系统缓冲区读入 1 个数据块到用户工作区的时间为 5,对用户工作区中的 1 个数据块进行分析的时间为 90(如下图所示)。

2012_Q41_1

进程从外设读入并分析 2 个数据块的最短时间是( )。

缓冲区

A.200

B.295

C.300

D.390

[tag_link] 正确答案:C在 单缓冲 中,数据块 1 从外设到用户工作区的总时间为 105,在这段时间中,数据块 2 没有进行操作。在数据块 1 进行分析处理 时,数据块 2 从外设到用户工作区的总时间为 105,这段时间是并行的。再加上处理数据块 2 的时间 90,总时间为 300,答案为 C。


2015 年第 28 题 操作系统 选择题

在系统内存中设置磁盘缓冲区的主要目的是( )。

缓冲区

A. 减少磁盘 I/O 次数 B. 减少平均寻道时间 C. 提高磁盘数据可靠性 D. 实现设备无关性

[tag_link] 正确答案:A磁盘和内存的速度差异,决定了可以将内存经常访问的文件调入磁盘缓冲区,从高速缓存中复制的访问比磁盘 I/O 的机械操作要快很多。


2022 年第 30 题 操作系统 选择题

下列选项中,不会影响系统缺页率的是()。

A. 页面置换算法

B. 工作集的大小

C. 进程的数量

D. 页缓冲队列的长度

[tag_link]

正确答案:D

页置换算法会影响缺页率,例如,LRU 算法的缺页率通常要比 FIFO 算法的缺页 率低,排除 A。工作集的大小决定了分配给进程的物理块数,分配给进程的物理块数越多, 缺页率就越低,排除 B。进程的数量越多,对内存资源的竞争越激烈,每个进程被分配的物 理块数越少,缺页率也就越高,排除 C。页缓冲队列是将被淘汰的页面缓存下来,暂时不写 回磁盘,队列长度会影响页面置换的速度,但不会影响缺页率,答案选 D。


2011 年第 31 题 操作系统 选择题

某文件占 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。


2018 年第 31 题 操作系统 选择题

下列优化方法中,可以提高文件访问速度的是( )。

Ⅰ. 提前读

Ⅱ. 为文件分配连续的簇

Ⅲ. 延迟写

Ⅳ. 采用磁盘高速缓存

缓冲区

A. 仅Ⅰ、Ⅱ B. 仅Ⅱ、Ⅲ C. 仅Ⅰ、Ⅲ、Ⅳ D. Ⅰ、Ⅱ、Ⅲ、Ⅳ

[tag_link]

正确答案:D

II 和 IV 显然均能提高文件访问速度。对于 I,提前读是指在读当前盘块时,将下一个可能要访问的盘块数据读入缓冲区,以便需要时直接从缓冲区中读取,提高了文件的访问速度。对于 III,延迟写是先将写数据写入缓冲区,并置上“延迟写”标志,以备不久之后访问,当缓冲区需要再次被分配出去时才将缓冲区数据写入磁盘,减少了访问磁盘的次数,提高了文件的访问速度,III 也正确,答案选 D。


模拟卷 年第 32 题 操作系统 选择题

CPU 输出数据的速度远高于打印机的打印速度,为解决这一矛盾,可采用的技术是( )。

A. 并行技术 B. 通道技术 C. 缓冲技术 D. 堆存技术

缓冲区

[tag_link]

正确答案:C

CPU输出数据的速度远高于打印机的打印速度,这种速度不匹配会导致CPU经常处于等待状态,降低系统整体效率。 为了解决这一矛盾,缓冲技术被广泛应用。 缓冲技术通过在内存中设置一个缓冲区,CPU将数据快速输出到缓冲区中暂存,然后打印机可以按照自己的较慢速度从缓冲区中读取数据。 这样,CPU在输出数据后无需直接等待打印机完成,可以继续执行其他任务,从而平滑了速度差异,提高了资源利用率和系统吞吐量。 其他选项中,并行技术主要用于同时执行多个任务或使用多个设备,但在此场景下,单个CPU与单个打印机的速度矛盾并未直接通过并行解决; 通道技术是一种I/O管理方式,通过专用处理器处理I/O操作以减少CPU干预,但它更侧重于优化I/O流程,而非专门针对速度不匹配; 堆存技术并非标准计算机术语,可能指堆内存管理或其他存储方式,与解决速度矛盾无关。 因此,缓冲技术是最直接且有效的选择。


模拟卷 年第 32 题 操作系统 选择题

某操作系统采用双缓冲区传送磁盘上的数据。设一次从磁盘将数据传送到缓冲区所用时间为 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 一致。 其他选项未正确反映重叠操作的时间优化,故错误。


模拟卷 年第 44 题 操作系统 综合题

(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
`