操作系统14:缓冲区和磁盘调度算法

文章详细介绍了缓冲区管理的单缓冲区、双缓冲区和环形缓冲区的概念及工作原理,以及缓冲池的组成和工作方式。同时,讨论了磁盘存储器的性能和调度,包括磁盘数据组织、格式化、分区,并深入讲解了FCFS、SSTF、SCAN、C-SCAN等磁盘调度算法的特点和应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1、缓冲区管理

(1)单缓冲区和双缓冲区

1.1 - 单缓冲区

1.2 - 双缓冲区

(2)环形缓冲区/多缓冲区

(3)缓冲池(Buffer Pool)

3.1 - 缓冲池的组成

3.2 - 缓冲池的工作方式

2、磁盘存储器的性能和调度

(1)磁盘的数据组织和格式

(2)磁盘格式化和磁盘分区

(3)磁盘调度算法

3.1 - 先来先服务(FCFS)

3.2 - 最短寻道时间优先(SSTF)

3.3 - 磁盘扫描(SCAN)算法

3.4 - 循环扫描(C-SCAN)算法

3.5 - NStep-SCAN 调度算法

3.6 - F-SCAN 调度算法


1、缓冲区管理

        缓冲区是一个存储区域,它可以由专门的硬件寄存器组成,也可以由内存组成。

        由寄存器组成的缓冲区较小,成本较高,一般仅用在对速度要求非常高的场合,如存储器管理中所用的联想存储器,设备控制器中用的数据缓冲区等。更多情况下,都是使用内存作为缓冲区。

(1)单缓冲区和双缓冲区

        如果在生产者与消费者之间未设置任何缓冲,生产者与消费者之间在时间上会相互限制。例如,生产者已经完成了数据的生产,但消费者尚未准备好接收,生产者无法把所生产的数据交付给消费者,此时生产者必须暂停等待,直到消费者就绪。如果在生产者与消费者之间设置了一个缓冲区,则生产者无需等待消费者就绪,便可把数据输出到缓冲区//例如消息队列

1.1 - 单缓冲区

        当用户进程发出 I/O请求时,操作系统便在主存中为之分配一个缓冲区。

        由于缓冲区是共享资源,生产者与消费者在使用缓冲区时必须互斥。如果消费者尚未取走缓冲区中的数据,即使生产者又生产出新的数据,也无法将它送入缓冲区,生产者等待。

1.2 - 双缓冲区

        为了加快输入和输出速度,提高设备利用率,又引入了双缓冲区机制,也称为缓冲对换(Buffer Swapping)。在设备输入时,先将数据送入第一缓冲区,装满后便转向第二缓冲区。//表面上看,无非就是多了一份缓冲区容量

        双缓冲区在两台机器之间的通信应用

        如果两台机器之间的通信仅使用单缓冲区,那么它们之间在任一时刻都只能实现单方向的数据传输。例如,只允许把数据从 A 传送到 B 或者从 B 传送到 A,而绝不允许双方同时向对方发送数据。//半双工通信

        为了实现双向数据传输,必须在两台机器中都设置两个缓冲区,一个用作发送缓冲区,另一个用作接收缓冲区。

(2)环形缓冲区/多缓冲区

        环形缓冲区由多个缓冲区的组成,其每个缓冲区的大小相同。其中的缓冲区可分为三种类型:空缓冲区 R已装满数据的缓冲区 G 以及正在使用的缓冲区 C,如下图所示。//多缓冲区

        因此,环形缓冲区也包含多个指针。如,用于指示下一个有数据的缓冲区 G 的指针 Nextg,指示下次可用的空缓冲区 R 的指针 Nexti,以及用于指示正在使用的缓冲区 C 的指针 Current。

// 对空间的循环使用,比如循环队列等

(3)缓冲池(Buffer Pool)

        当系统较大时,会有许多的循环缓冲区,这不仅要消耗大量的内存空间,而且其利用率不高。为了提高缓冲区的利用率,可以使用既可用于输入又可用于输出的公用缓冲池,在池中设置了多个可供进程共享的缓冲区//统一管理缓冲区

        缓冲池与缓冲区的区别在于:缓冲区仅仅是一组内存块的链表࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

swadian2008

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值