操作系统的设备管理

广义的IO设备

对CPU而言,凡事对CPU进行数据输入的都是输入设备;同理,凡事对CPU进行数据输出的都是输出设备
比如,CPU可能对数据进行了运算,然后把数据写到内存里面,此时内存对于CPU来说就是输出设备。这里的IO操作指的就是CPU对高速缓存或者内存进行读写。

对广义的IO设备按照一定特性进行如下分类

1.按照使用特性分类

  • 存储设备(U盘、内存、磁盘)
  • 交互型设备(键盘、鼠标、显示器)

2.按照信息交换的单位分类

  • 块设备(磁盘、SD卡等都是使用数据块和计算机进行信息交互)
  • 字符设备(使用字符为数据单位来进行交互,包括了打印机、shell终端)

3.按照设备共享属性分类

  • 独占设备
  • 共享设备
  • 虚拟设备

4.按照传输速率分类

  • 低俗设备
  • 中速设备
  • 高速设备

IO设备的缓冲区

解决CPU与IO设备速率不匹配的问题
减少CPU处理IO请求的频率,并提高CPU与IO设备之间的并行性

在这里插入图片描述
上图左边是程序与IO设备的交互,图中进行了4次交互,如果使用了IO设备的缓冲区,就可以把程序所需要的数据写进缓冲区里面,就可以把4次交互编程1次交互。以此提高IO设备与程序的工作效率。

上面提及的缓冲区只属于某一特定的IO进程,成为专用缓冲区。如果这样的IO进程比较多时,对内存的消耗就会很大。因此,操作系统划分了可以供多个进程使用的公共缓存区,就是缓冲池。
在这里插入图片描述
缓冲池如何工作:
如上图,进程与IO设备进行数据交互使用了缓冲区,但这个缓冲区不是进程专属,是从图右边的缓冲池取出来的。缓冲池 里存在多个缓冲区,进程需要使用的时候就从缓冲池里面取出某一个缓冲区,使用结束后再归还给缓冲池。 达到了多进程共同使用缓冲区的要求,也可以减少对内存的消耗。

SPOOLing技术

操作系统设备管理的一项重要技术,

  1. 是一种关于慢速字符设备如何与计算机主机交换信息的一种技术。 因此,这一技术也是为了解决CPU与IO设备速率不匹配问题。
  2. 它是利用高速共享设备将低速独享设备模拟成高速共享设备,可以逻辑上,系统为每一个用户都分配一台独立的高速独享设备。
  3. 它是虚拟设备技术,可以在一台物理设备虚拟成多个独立共享的高速独享设备。

SPOLing技术如何工作?
在这里插入图片描述
假设有三个进程都需要使用打印机,由于打印机是速度很低的设备,多个进程都需要使用打印机会等待很久。
如果此时使用SPOOLing技术,它不会直接把打印机分配给某一个进程,而是在共享设备磁盘进行输出。SPOOLing技术会在磁盘分配一个存储空间,进程的输出数据会以文件的形式保存在SPOOLing的存储空间里。各个进程的数据输出会形成一个输出队列,然后通过SPOOLing技术的进程去控制打印机的进程以此将队列里面的文件实际打印出来。
在SPOOLing系统里,实际上没有任何一个设备分配给具体的进程,而是在输入或者输出的存储空间里面为这个进程分配一个存储区,并且建立一张IO的请求表。如此一来,SPOOLing技术就把逻辑设备虚拟成为了共享设备。磁盘所用到的空间称之为输出井,同样的也有输入井。
SPOOLing技术把进程和打印机的同步调用变成了异步调用。即进程实际使用的并不是打印机,而是把进程的输出写到磁盘里面,然后由SOOLing技术将这些文件或者数据送到打印机里面去。大大提升进程的工作效率。

简单的总结

  1. 在输入与输出之间增加了排队转存储的环节(输入井、输出井)
  2. SPOOLing负责输入或输出与低速设备之间的调度
  3. 在逻辑上,进程直接与告诉设备交互,减少了进程的等待时间