目录
一, I/O设备概述
即输入输出(Input/Output)设备, 如键盘, 鼠标, 打印机, 显示器, 磁盘网卡等。
1.1 设备控制器
每一个输入输出单元由两个部分组成, 一个是机械部分(如显示器), 一个是电子部分(如显卡)。
示意图:
二, I/O 地址
每个设备控制器里面都有寄存器, 用于CPU通信, 如控制寄存器, 状态寄存器, 数据寄存器等。
2.1 I/O独立编址
给所有设备控制器中的每一个寄存器分配一个唯一的I/O端口地址。
特点: 需要专门的输入输出指令, 但易区分是对内存访问还是对I/O设备访问
2.2 内存映像编址
把设备控制器中的寄存器都映射为一个内存地址
区别图:
特点: 编程方便, 无需专门I/O指令, 但每一次都要判断访问的是内存还是I/O。
2.3 混合编址
把以上两种情况结合起来, 对于设备控制器中的寄存器, 采用独立编址, 对于设备缓冲区, 采用内存映像编址。
三, I/O 控制方式
即对设备控制器中的各种寄存器进行通信。
3.1 程序循环检测
每一次I/O操作都循环地区检测设备的当前状态。即繁忙等待方式, 一直占用CPU
示意图:
3.2 中断驱动方式
即依赖硬件支持, 使用中断驱动方式, 在I/O操作完成后发送中断信号, 防止死等。
3.3 直接内存访问方式
增加硬件, 独立于CPU运行, 可直接访问系统总线, 每一次的读写由DMA控制器来完成, CPU通过写操作对其发送命令。
原理图:
四, I/O软件
软件的层次图:
中断处理程序: I/O设备完成一次操作, 设备控制器向中断控制器发信号, 进而中断控制器想CPU发信号, 从而触发一次中断, 执行中断处理程序。
设备驱动程序: 控制设备运行的程序, 有设备的生产厂商提供。
设备独立的I/O软件: 主要有两个接口, 一个是应用程序与系统之间的接口, 一个是操作系统与I/O设备之间的接口。
用户空间的I/O软件: 库函数与Spooling技术(实现对独占设备的共享, 如打印机的共享)。
Spooling技术原理图:
五, 磁盘
5.1 磁盘的组成
柱面: 由所有盘面上, 半径相同的所有磁道组成。
扇区: 对于每一个磁道, 平均划分为一个个的小格子, 每个小格子就是一个扇区。
磁盘结构图:
盘面结构:
磁盘的读写: 以扇区为单位, 一般为512B, 修改一个字节也需一个扇区整体重写。
5.2 磁盘调度算法
访问一个磁盘扇区时间 = 柱面定位时间 + 旋转延迟时间(找扇区) + 数据传送时间
先来先服务: 效率不高, 磁头可能反复移动, 增加了柱面定位时间。
最短定位时间优先算法: 优先选择从当前磁头出发, 移动距离最短的先访问。如果需要访问的扇区位于磁盘中间, 会比较有利; 位于磁盘两端, 则不利。
电梯法: 从当前位置出发, 先沿一个反向, 然后再换一个方向, 对于任何一组访问, 磁头移动距离最多为柱面的总数的两倍。
5.3 固态硬盘原理
备注: 隧穿层本质上也相当于绝缘体,所以电子们只能被关押着, 但随着时间的流逝,不断地有电子“越狱”成功。即固态硬盘能够存储数据的年限。
固态硬盘有擦写次数限制: 浮栅晶体管擦写的过程中,电子反复在隧穿层反复进出,导致隧穿层损坏,不能有效的阻拦电子,失去了隧穿层应有的作用。
原理参考: SSD原理
六, 文件系统
6.1 文件的概述
文件的命名: 文件名 + 扩展名
文件的结构: 无结构(当前使用), 简单的记录结构, 复杂结构(树形结构)
文件的分类: 普通文件(二进制文件, ASCII文件), 目录文件(文件夹)
多级目录结构图:
6.2 文件系统的布局
示意图:
MBR: 主引导记录, 用来启动计算机。
分区表: 记录每一个分区的起始扇区和大小。
引导块: 功能是将该分区中存放的操作系统程序装入到内存(操作系统不一定需要在C盘)。
备注: 计算机启动后, 主板上的BIOS程序被执行, 检查并设置系统中各种硬件资源。将MBR当中的引导程序装入到内存中运行, 将活动分区(装有操作系统的分区)的引导块当中的程序装入到内存中运行, 即操作系统程序。
6.3 文件系统的实现
数据结构为文件控制块(FPC);物理结构有连续结构, 链表结构, 索引结构。
6.3.1 连续结构
即顺序结构, 把文件的各个逻辑块安装顺序存放在连续的物理块中。
特点:易于实现, 磁盘访问快, 但文件不能动态增长, 会有外部碎片。
示意图:
6.3.2 链表结构
文件的各个逻辑块依次放在若干个物理块中, 各个块通过指针连接起来。
特点:文件大小可以动态变化, 但访问文件只能顺序访问, 不能随机访问。
示意图:
6.3.3 索引结构
把文件的每一个逻辑块对应的物理块编号直接记录在一个物理块中, 此物理块做索引块。
示意图: