目录
磁盘的结构
磁盘调度
磁盘读写的时间
磁盘调度算法
先来先服务算法(FCFS)
最短寻找时间优先算法(SSTF)
扫描算法(电梯算法、SCAN)
Look调度算法
循环扫描算法(C-SCAN)
减少磁盘的延迟时间
交替编号
错位命名
磁盘管理
磁盘初始化
引导块(启动块)
坏块管理
I/O设备
I/O控制器
I/O控制方式
程序直接控制方式
中断驱动方式
DMA方式
DMA 方式
通道控制方式
I/O软件层次
用户层的I/O软件
设备独立性软件
设备驱动程序
中断处理程序
假脱机系统(SPOOLing)
设备分配
缓冲区管理
磁盘是外存设备,可以用来存储信息,空间大,但是比起内存来说读取速度慢,断电后数据也不会消失
磁盘的表面是磁性物质,可以记录二进制数据
一个磁盘的磁片,会被划分为一个个的磁道(同心圆)
一个磁道又被划分为扇区,每个扇区存放数据的多少是相同的,这个扇区称为磁块
最内侧的扇区,面积小,但是存储的数据和别的扇区一样多,因此数据密度最大
磁盘信息的读取:依靠磁头臂带动磁头运动,磁头运动到目标磁盘块所在的磁道上,然后磁盘会转动,让目标磁块在磁头下划过,从而完成信息读取或者写入
盘面,柱面
所以,一个磁盘块的物理地址定义为(柱面号,盘面号,扇区号)
磁盘分类:
1、根据磁盘是否可以更换分为:固定盘磁盘和可换盘磁盘
2、根据磁头是否可以移动分类:
寻找时间(寻道时间):磁头找到指定磁道的时间;分为两部分:1、启动磁头臂的时间2、磁头在盘面上移动到指定磁道的时间
延迟时间:通过旋转磁盘,让指定的磁盘块在磁头下划过
传输时间:磁盘读写的时间
根据请求顺序执行,依次访问
选择离当前磁头最近的访问
磁头只有移动到最外侧,才可以向内移动
电梯算法要求:磁头只有移动到最外侧,才可以向内移动,Look调度算法对其优化,只要没有访问请求了,就可以向内移动
磁盘读写数据之后会需要一小段时间来处理,这就会造成连续读取的问题
例如:磁盘访问连续的1,2,3磁盘块,由于访问1结束之后,需要一小段时间来处理,那么2就无法访问,就必须等待磁盘重新转动一轮后访问
为了解决这个问题,尽量的不让逻辑上相邻的磁盘块在物理上也相邻
磁盘的柱面结构,两个磁盘的磁盘号不要对应
因为所有磁面是一起连轴转的,而磁盘读写数据之后会需要一小段时间来处理,磁盘之间扇区编号一致的话,也会存在必须等待磁盘重新转动一轮后才可以访问的问题
第一步:物理初始化,划分扇区,一个扇区包括三个部分:头,数据区域,尾
第二步:磁盘分区
第三步:逻辑格式化:创建文件系统
电脑开机时,要进行一系列的初始化,这些初始化程序称之为自举程序
一部分自举程序放在只读寄存器(ROM)中,ROM集成在主板上
大部分自举程序放在磁盘的引导块中,引导块位于磁盘的固定位置
电脑开机时,先执行ROM的自举程序,根据这个程序找到引导块位置,加载引导块的自举程序进入内存,完成初始化
坏掉的磁盘扇区,属于硬件故障,要将这个坏块位置标注出来,不给予分配
I/O就是input和output,也就是输入、输出
I/O设备就是输入或者输出数据的设备,例如鼠标,键盘,显示器……
人机交互类设备:鼠标,键盘,显示器,数据传输慢
存储设备:U盘,光盘等 数据传输快
网络通信设备:路由器,光猫等 数据传输均衡
I/O设备由机械部件和电子部件(I/O控制器)构成
CPU无法控制I/O设备的机械部件,CPU只能通过I/O设备的电子部件来实现控制I/O设备
I/O控制器的功能
I/O控制器的结构
寄存器编址
1、完成一次读写操作的过程
第一步:CPU向I/O控制器发出读指令,于是I/O控制器控制对应设备启动,设备的状态寄存器设置为1(忙碌或者未就绪)
第二步:设备准备输入的数据,这期间CPU就会一直循环检查状态位,等待设备输入完成(轮询方式)
第三步:设备数据准备完成,将数据提交给I/O控制器,并报告自身状态
第三步:I/O控制器将数据放置到数据寄存器中,并修改设备的状态寄存器成为0
第四步:CPU读取数据寄存器内容,CPU读入自己的数据寄存器,后CPU将自己的数据寄存器的数据放入内存
CPU干预频率很大(轮询检查)
DMA: 直接存储器访问
DMA 模块: 模仿处理器来控制主存和设备控制器之间的数据交换
一般而言,大部分的I/O 软件都在操作系统内部,但仍有一小部分在用户层,包括与用户程序链接在一起的库函数,以及完全运行于内核之外的一些程序。
设备独立性软件是为了应用程序独立于具体使用的物理设备。
为了实现设备的独立性,系统必须设置一张逻辑设备表(LUT,Logical Unit Table),用于将应用程序中所使用的逻辑设备名映射为物理设备名。在该表的每个表目中包含了三项:逻辑设备名、物理设备名和设备驱动程序的入口地址。LUT 的设置可采取两种方式:第一种方式是在整个系统中只设置一张LUT;第二种方式是为每个用户设置一张LUT。
设备驱动程序通常又称为设备处理程序,它是I/O 进程与设备控制器之间的通信程序,又由于它常以进程的形式存在,故以后就简称之为设备驱动进程。其主要任务是接收上层软件发来的抽象I/O 要求,如read或write命令,在把它转换为具体要求后,发送给设备控制器,启动设备去执行;此外,它也将由设备控制器发来的信号传送给上层软件。设备驱动程序的主要任务是启动指定设备。但在启动之前,还必须完成必要的准备工作,如检测设备状态是否为“忙”等。在完成所有的准备工作后,才最后向设备控制器发送一条启动命令。工作过程如下:
中断处理层的主要工作有:进行进程上下文的切换,对处理中断信号源进行测试,读取设备状态和修改进程状态等。
通过SPOOLing 技术便可将一台物理I/O 设备虚拟为多台逻辑I/O 设备,同样允许多个用户共享一台物理I/O设备。为了缓和CPU的高速性与I/O 设备低速性间的矛盾而引入了脱机输入、脱机输出技术。SPOOLing 技术是对脱机输入、输出系统的模拟。该技术是利用专门的外围控制机,将低速I/O 设备上的数据传送到高速磁盘上;或者相反。使得此时的外围操作与CPU对数据的处理同时进行。SPOOLing系统必须建立在具有多道程序功能的操作系统上,而且还应有高速随机外存的支持,这通常是采用磁盘存储技术。
多道程序的支持
共享打印机
设备分配的两种方式:
设备管理的数据结构
循环缓冲区
由系统的缓冲区构成