I/O设备管理——硬件/控制方式/软件/磁盘

I/O设备管理

参考资料:谌卫军 王浩娟《操作系统》


1.I/O设备类型

在这里插入图片描述


2. CPU与I/O设备交互流程

在这里插入图片描述
控制器:一组芯片,主要集成在主板或者,I/O设备内部
控制寄存器:操作系统通过往其中写不同的值,来执行发送/接受数据,打开/关闭操作
状态寄存器:操作系统通过读取其中的值,来自的设备当前状态(就绪,繁忙等)
数据寄存器:操作系统读取与写入数据
数据缓冲区:操作系统用来读写操作


3. I/O地址

CPU需要访问控制器,就需要I/O地址

  1. I/O独立编址:所有控制器中的每一个寄存器分配一个唯一的I/O端口编号
    构成的地址单元完全独立,与内存地址没有任何关系
指令 效果
MOV AX [2] 内存地址为2的单元内容保存到寄存器AX中
IN AX [2] I/O端口编号为2的单元内容保存到寄存器AX中
  1. 内存映射编址:所有控制器中的每一个寄存器映射为一个内存地址
    与内存地址访问完全相同,一般位于内存地址的高位,内存低址为普通内存
优点 缺点
无需专门的输入输出命令 不能对控制寄存器Cache
无需保护机制(防止用户执行I/O操作) 每次都需要去判断访问的是内存还是I/O

无需保护机制(防止用户执行I/O操作原理:内存管理中的内存保护机制,端口##### 地址排除在用户进程的逻辑空间之外,不允许他们去访问

  1. 混合编址:以上两者的综合,对于寄存器 I/O独立编址,对于数据缓冲区 内存映射编址

4. I/O控制方式

操作系统知道地址后,那又以什么方式访问呢?

  1. 循环检测:进行I/O操作,要询问I/O设备是否可用,CPU会一直询问并等到I/O操作完成,再进行下一步----造成了CPU的循环等待,十分浪费
  2. 中断机制:就是让CPU不去等待I/O操作完成,而是让中断控制器去处理,让他去叫CPU处理,但最后还是CPU处理。
    在这里插入图片描述
    注:只有中断处理器收到确认信号方可以发出新的中断信号
  3. DMA :直接内存访问
    在这里插入图片描述
    注:CPU已经发送命令让磁盘控制器读取了磁盘的数据到他的数据缓冲区
    1:向磁盘控制器发出读操作,把要写入内存地址打在总线上
    2:磁盘控制器的数据缓冲区取一个字节,写入第一步所给地址内存中
    3:前两步执行完成后,磁盘控制器向DMA控制器发送确认信号(内存字节+1,传送字节数-1 if计数器>0 返回第一步)
    注:对DMA编程指CPU可以向DMA发送读写等等操作

5. 以上已经能实现对I/O的控制,但控制过于细节,为了去掉细节,我们需要设计I/O软件,更好的管理

在这里插入图片描述

API

如WindowsAPI
BOOL ReadFile(HANDLE,LPVOID,DWORD,LPDWORD,LPOVERLAPPED);
这是一个ReadFile API 的参数,对于开发应用程序的人来说,只要知道这个函数怎么用就行,让操作系统再去操作那些细节
注:一般我们希望API分两类,阻塞I/O,形象的来说scanf ;非阻塞I/O 就会涉及到多线程编程

抽象接口

抽象接口面对的设备,所以函数原型相同,于是通过驱动程序来对抽象接口进行转换,比如参数等等,然后才能向设备控制器发送指令

设备独立的I/O软件

  1. 定义与实现了API与抽象接口
  2. 提供设备无关的数据块大小
  3. 缓存技术

拓展:Spooling技术

作用:多道让CPU可以成为多个逻辑CPU;Spooling技术让一台I/O设备成为多台逻辑I/O设备…

6.介绍具体设备—磁盘

1.结构

磁盘设备有一个或多个物理盘片,每个物理盘片有一个或者两个存储面,存储面上有若干磁道,每个磁道又分若干扇区(数据块),扇区与扇区间有扇区间隔,磁道与磁道间有磁道间隙,扇区里的不同字段有间隙

2. 格式化情况(温切斯特盘)

600个字节 ,512字节存放数据,其余放其他信息[图片来自汤小丹计算机操作系统] 下面数字为大小 单位Byte
在这里插入图片描述
Synch Byte:该字段定界符
CRC:段校验

3.磁盘访问时间

寻道时间(移到磁道)(大部分)+旋转延迟时间(移到扇区)+传输时间

4.磁盘调度算法

为了减少寻道时间
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42146775/article/details/85017369