【操作系统】设备管理

    操作系统的设备管理这块,很大的精力都是为了缩短时间,提高效率吧。因为一旦涉及到这些外围设备,最大的特征就是慢腾腾。CPU一秒钟把一篇word处理完了,打印出来试试;CPU就想读某一条数据,从硬盘读出来试试。总之,对于外围设备,总有一个话题就是,再快一点。



1.磁盘驱动调度——从硬盘上快速的找到数据

    

    我们常常需要从硬盘上找到需要的数据,而找到这个数据就需要三个参数:柱面号、磁头号、扇区号。磁头号可以直接选择,而找到具体是哪个柱面就需要移臂调度,来找到是哪条磁道,再通过旋转调度,来找到是哪个扇区。

    所以,物理上耗费时间的就是移臂和旋转。下面,就来阐述如何快速的进行这两个调度。 


  • 移臂调度:就是在磁盘上纵向寻找磁道的调度。我们所谓的寻找具体的柱面号,就是在找具体的磁道,那个数据所在的那个圆圈。单从这个机械臂的角度来看,它的世界只是上下移动。而它的任务就是快速移动到我们要的那个磁道位置,然后通过磁盘在下面的自动旋转,磁头就可以读具体磁道上的数据,很像老式唱片机的感觉。而怎么移动机械臂可以达到效率最高呢?这里就涉及三个算法
  • 具体算法:如果访问磁道6、10、 2 (1)先来先服务算法:6-10-2,就是哪个先请求就访问那一个;(2)电梯调度算法:6-2-10,就是沿臂的方向访问,一般是向小号走,走到头后返回;(3)最短时间算法:就看看当前的位置,距离哪个最近就访问哪个就好了。

  • 旋转调度:就是在旋转中的磁盘上寻找自己想要的扇区。可是磁盘一直在旋转,我们每读一个扇区之后需要时间处理,等我们想读第二个扇区的时候,早转跑了,所以我们不得不再度寻找第二块扇区在哪。当然,通过旋转调度就可以解决这个问题,我们在处理完数据之后,磁头能够反应的时候,把第二块就安排在那里就好了。这就是旋转调度,重新分配扇区的位置,使每读完一块之后,下一次读的时候该扇区就在它的面前。




2.缓冲技术——CPU还是不想等你们这些慢腾腾的外设

    

    即使外设都想尽各种办法提高自己的处理速度,不断优化自己工作方式,提高自己的效率。但是,你本身的物理属性就决定你永远都不能和CPU是一个能量级的。即使像硬盘那样,创造出了各种调度方式,但是除非你产生质的变化,物理现实世界出现了革命性的新技术,彻底的改变了你,你才有可能跟上CPU的节奏。不过,现实是,CPU同样在发展,外设看起来总是慢一步。

    所以,硬件上突破不了,我们就引入新的技术,缓冲技术 → 在主存储器上开设缓冲区


  • 单缓冲:拿读硬盘数据为例,硬盘读的慢不是吗?在CPU处理数据的时候,硬盘就继续读啊,读到缓冲区里,然后CPU处理完之后就直接处理新的数据。
  • 存在的问题:CPU读缓冲区的时候,硬盘也是无法工作的,因为缓冲区没有腾出来;而且,只能输入或者输出,每次做一件事

  • 双缓冲:此技术可以解决单缓冲的问题,当CPU读第一缓冲区的时候,硬盘可以继续像第二缓冲区读数据。同时,该技术也可以解决输入输出并行问题。
  • 存在的问题:有的数据需要短时间内重复使用,但是现在需要每次都重新读入

  • 缓冲池:此技术可以解决双缓冲的问题,通过开辟一组缓冲区,每次需要数据的时候检测一下该数据是否在缓冲池内,这样,就可以减少启动磁盘的次数,提高文件传输速度。

    ——————————————————————————————————————————————

   举个生活中的小例子,一天我在家修理板凳,我的小乌龟帮我。最开始是要什么去仓库给我拿什么;然后改进为我工作的时候,可以继续拿下一个需要的工具放在手边(单缓冲);接着说用完的放左手边,要用的放右手边(双缓冲);最后发现有些工具太常用了,干脆整一个工作台吧,把一些常用数据就放上面,省的一次次取(缓冲池)。




总结

    

    当然这里还有通道技术和虚拟设备技术,比较简单就不再赘述了。

    其实我们可以看出来在设备管理这块,主要解决的问题还是速度,关于效率,在计算机里是个永恒的话题啊,尤其在慢悠悠的外设这,更是上升为主要矛盾了。所以,各个硬件就是不断优化自己的工作方式,同时内部也不是一味的等待,通过自己的内部协调,创造出缓冲技术用来弥补外设的不足。

    总之,还是那句话,遇到问题,解决问题。我们现在看到的一个个技术都是那时候前辈们解决问题的卓越方案。





你可能感兴趣的:(【操作系统】设备管理)