[每天五分钟,备战架构师-4]操作系统之设备管理

设备管理

设备管理是对计算机输入、输出系统的管理,这是操作系统最具有多样性和复杂性的部分,其主要任务是选择合适的设备进行数据传输,控制数据交换的过程,为用户提供透明的接口让用户不必关心设备的特性,为完成这些任务,需要提供的功能主要包括:缓冲区管理、设备分配、设备处理、虚拟设备管理、实现设备独立性等。

设备类型

系统设备的分类方法有很多种,比如说按有没有线分为有线设备、无线设备,具体的看思维导图吧。

设备连接

现代计算机系统对外部设备的控制通常分为:通道、控制器和设备。

__设备控制器__是计算机中的一个实体,其主要职责是控制一个或多个I/O设备,以实现I/O设备和计算机之间的数据交换,它是CPU与I/O设备之间的接口,它接收从CPU发来的命令,并去控制I/O设备工作,以使处理从繁杂的设备控制事务中解脱出来。

__通道__的主要目的是为了建立独立的I/O操作,不仅使数据的传送能独立于CPU,而且也希望有关对I/O操作的组织、管理及其结束处理尽量独立,以保证CPU有更多的时间去进行数据处理。

控制设备的软件分为与设备有关的,例如驱动程序,和与设备无关的,如控制器的公共部分。

数据传输控制

外围设备和内存之间常用的数据传送控制方式主要有以下几种方式:

程序控制方式

在早期计算机系统中,由于无中断机构,处理机对I/O设备的控制采取程序I/O方式,或称为忙-等待方式,即在处理机向控制器发出一条I/O指令启动输入设备输入数据时,要同时把状态寄存器中的忙/闲标志busy设置为1,然后便不断地循环测试busy,只有当其为0时,表示输入已经送入控制器的数据寄存器中,于是处理机将数据寄存器中的数据取出,送入内存指定单元中,这样便完成了一个字(符)的I/O。

在程序I/O方式中,由于CPU的高速性和I/O设备的低速性,致使CPU的绝大部分时间都处于等待I/O设备完成数据I/O的循环测试中,造成对CPU的极大浪费。

中断控制方式

当某进程要启动某个I/O设备工作时,便由CPU向相应的设备控制器发出一条I/O命令,然后立即返回继续执行原来的任务,设备控制器于是按照该命令的要求去控制指定I/O设备,此时,CPU与I/O设备并行操作。一旦数据进入数据寄存器,控制器便通过控制线向CPU发送一个中断信号,由CPU检查输入过程中是否出错,若无错,便由控制器发送取走数据的信号,再通过控制器及数据线将数据写入内存指定单元中。

在I/O设备输入每个数据的过程中,由于无需CPU干预,因而可使CPU与I/O设备并行工作,仅当完成一个数据输入时,才需CPU花费极短的时间去做一些中断处理。

直接存储访问方式DMA

虽然中断驱动I/O比程序I/O方式更有效,但是,它仍是以字(节)为单位进行I/O的,每当完成一个字(节)的I/O时,控制器便要向CPU请求一次中断,换言之,采用中断驱动I/O方式时的CPU是以字(节)为单位进行干预的,将这种方式用于块设备的I/O是非常低效的。

DMA方式指外部设备和内存之间开辟直接的数据交换通路。DMA控制器由三部分组成,主机与DMA控制器的接口;DMA控制器与块设备的接口;I/O控制逻辑。

通道控制方式

I/O通道方式是DMA的发展,它可以进一步减少CPU的干预,即把一个数据块的读(或写)为单位的干预减少为对一组数据块的读(或写)及有关的控制和管理为单位的干预。同时,可以实现CPU、通道、I/O设备的并行操作,提高资源利用率。

通道是通过执行通道程序,并与设备控制器共同实现对I/O设备的控制的,通道程序是由一系列通道指令(或称为通道命令)所构成的。

设备分配

多道程序系统中,设备不允许用户直接使用,而是由操作系统统一调度和控制。设备分配功能是设备管理的基本任务。设备分配程序按照一定的策略,为申请设备的用户程序分配设备,记录设备的使用情况。

磁盘调度

磁盘设备包括一个或多个物理盘片,每个盘片分一个或两个存储面,每个磁盘面被组织成若干个同心环,这种环称为磁道,各磁道之间留有必要的缝隙。每条磁道上可存储相同数目的二进制位,这样,磁盘密度即每英寸中所存储的位数,显然是内层磁道密度较外层磁道的密度高,每条磁道又被逻辑上划分成若干个扇区,一个扇区称为一个盘块(数据块)或称为磁盘扇区。一个物理记录存储在一个扇区上,磁盘上存储的物理记录块数目是由扇区数、磁道数以及盘面数决定的。

磁盘是多个进程共享的设备,当有多个进程都要求访问磁盘时,应采用一种最佳的调度算法,使各进程对磁盘的平均访问时间最小。由于在访问磁盘中,主要是寻道时间,因此,磁盘调度的目标是使磁盘的平均寻道时间最少。目前常用的磁盘调度算法有先来先服务、最短寻道时间优先及扫描等算法。

先来先服务(FCFS, First Come First Service)

这是一种最简单的磁盘调度算法,其根据进程请求访问磁盘的先后顺序进行调度,优点是公平、简单,每个进程的请求都能得到依次处理,不会出现某个进程的请求长期得不到满足的情况。

最短寻道时间优先(SSTF,Shortest Seek Time First)

要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短。但这种算法不能保证平均寻道时间最短。

扫描(SCAN)算法

SSTF算法虽然能获得较好的寻道性能,但可能会导致某个进程发生饥饿现象,因为只要有新进程的请求到达,且其所要访问的磁道与磁头当前所在磁道的距离较近,这种新进程的I/O请求必然先满足,对SSTF算法修改后形成SCAN算法,可防止老进程出现饥饿现象。该算法不仅考虑到欲访问的磁盘与当前磁道之间的距离,更优先考虑的是磁头当前的移动方向。例如,当磁头正在自里向外移动时,SCAN算法所考虑的下一个访问对象,应是其欲访问的磁道既在当前磁道之外,又是距离最近的。其类似电梯的运行,也称为电梯调度算法。

循环扫描(CSCAN)算法

SCAN算法既能够获得较好的寻道性能,又能防止饥饿现象,但是,当磁头刚从里向外移动而越过了某个磁道时,恰好又有一进程请求访问此磁道,这时,该进程必须等待,待磁头继续从里向外,然后再从外向里扫描完所有要访问的磁道后,才处理该进程的请求,致使该进程的请求被大大地推迟。为了减少这种延迟,CSCAN算法规定磁头单向移动,例如,致使自里向外移动,当磁头移到最外的磁道访问后,磁头立即返回最里的欲访问的磁道,即将最小的磁道号紧接着最大的磁道号构成循环,进行循环扫描。

NStepSCAN算法

在SSTF、SCAN、CSCAN几种调度算法中,都可能会出现磁臂停留在某处不动的情况,例如,有一个或几个进程对某个磁道具有较高的访问频率,即这些进程反复请求对某一磁道的I/O操作,从而垄断了整个磁盘设备,这一现象称为磁臂粘着。NStepSCAN算法将磁盘请求队列分成若干个长度为N的子队列,磁盘调度将按FCFS算法一次处理这些子队列,当正在处理某子队列时,如果又出现了新的磁盘请求,便将新的请求进程放入其他队列,这样就避免了出现粘着现象。当N很大时,会使N步扫描算法性能接近于SCAN算法,当N=1时,退化为FCFS算法。

FSCAN算法

其是NStepSCAN的简化,即FSCAN只将磁盘请求队列分成两个子队列,一个是由当前所有请求磁盘I/O的进程所形成的队列,由磁盘调度按SCAN算法进行处理,在扫描期间,将新出现的请求磁盘I/O的进程放入另一个等待处理的请求队列。这样,所有的新请求都被推迟到下一次扫描时处理。

SPOOLING 技术

SPOOLING(Simultaneous Peripheral Operation On Line)是低速输入输出设备与主机交换的一种技术,通常也称为“假脱机真联机”。利用SPOOLING技术,可以将低速的独占设备改造成一种可共享的设备,而且一台物理设备可以对应若干台虚拟的同类设备。SPOOLING系统必须有高速、大容量并且可随机存取的外存。

参考资料: 1、【操作系统】设备管理(五)

2、SPOOLing技术

3、操作系统--设备管理

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

【译】用Go实现一个静态博客生成器

静态站点生成器是一种工具,给一些输入(例如,markdown),使用HTML,CSS和JavaScript生成完全静态的网站。 为什么这很酷?一般来说,搭建一个...

66240
来自专栏深度学习那些事儿

WordPress中实现Markdown编辑的终极解决方案

之前我在这篇文章中简单介绍过如何利用Markdown在wordpress中进行写作:https://oldpan.me/archives/wordpress-m...

24430
来自专栏沃趣科技

Oracle压缩黑科技(三):OLTP压缩

原文链接:https://www.red-gate.com/simple-talk/sql/oracle/compression-in-oracle-part-...

38870
来自专栏Java3y

操作系统第五篇【死锁】

33340
来自专栏微服务生态

SEDA架构模型

特点:每任务一线程直线式的编程使用资源昂高,context切换代价高,竞争锁昂贵太多线程可能导致吞吐量下降,响应时间暴涨。

18630
来自专栏大眼瞪小眼

操作系统常用算法

介绍:又称为高级调度或长程调度,调度对象是作业。根据作业控制块(JCB)中的信息,审查系统能否满足用户作业的资源需求,以及按照一定的算法,从外存的后备队列中...

51010
来自专栏生信技能树

生信菜鸟团博客2周年精选文章集(6)三个最基础生信软件教程

其实我现在已经不写软件教程了! fastqc对原始测序reads质控 NCBI的blast++软件使用说明书 SRA工具sratoolkit把原始测序数据转为...

485110
来自专栏专注数据中心高性能网络技术研发

[RoCE]网络QoS总结

 1.什么是QoS QoS是一种机制,它给一个网络流赋予一个优先级,并且管理它的最低需求(guarantees),极限能力(limitations)和它相比其他...

42550
来自专栏机器之心

资源 | Parris:机器学习算法自动化训练工具

36090
来自专栏数据和云

内存为王:DBIM RAC Share Nothing架构的挑战和解决方案

陈焕生 Oracle Real-World Performance Group 成员,senior performance engineer,专注于 OLTP...

29650

扫码关注云+社区

领取腾讯云代金券