磁盘的表面由一些磁性物质组成,可以用这些磁性物质来记录一些二进制数据。
磁盘的表面被划分为了一个个磁道,一个小圈就是一个磁道。
一个磁道又被划分成了一个个扇区,每个扇区就是一个个磁盘块,各个扇区存放的数据量相同。
需要把磁头移动到想要读/写扇区所在的磁道,磁盘会转起来,让目标扇区从磁头下面划过,才能完成对扇区的读/写操作。
一个磁盘有很多盘面,每个盘面有一个磁头,这些磁头由磁头臂 统一带动往里或者往外移动。
可以使用(柱面号,盘面号,扇区号)来定位任意一个“磁盘块”
磁头是否可以移动分为:
寻找时间(寻道时间):在读/写数据前,将磁头移动到指定磁道所花的时间,时间包括
寻道时间T = s+m*n;
延迟时间TR:通过旋转磁盘,使得磁头定位到目标扇区所需要的时间,设磁盘转速为r,则平均所需的延迟时间TR = (1/2)*(1/r) = 1/2r。
1/r就是转一圈所需的时间,找到目标扇区平均需要转半圈,因此再乘以1/2.
所以买磁盘的时候要看转速,速度越快,读写越快
传输时间:从磁盘读出或者向磁盘写入数据所需的时间,假设磁盘转速为r,此次读/写的字节数为b,每个磁道上的字节数为N。则:传输时间 = (1/r)*(b/N)=b/(rN)
每个磁道可以存N字节数据,因此b字节的数据需要b/N个磁道才能存储,而读写一个磁道所需的时间刚好又是一转所需的时间1/r。
延迟时间和传输时间都与磁盘转速有关,而转速是硬件的固有熟悉,因此操作系统无法优化延迟时间和传输时间。
根据进程请求访问磁盘的先后顺序进行调度。
假设磁头的初始位置在100磁道,有多个进程新后陆续在请求访问55、58、39、18、90、160、150、38、184磁道
通过计算得到磁头总共移动了45+3+19+21+72+70+10+112+146=498个磁道
SSTF算法会优先处理的磁道是当前磁头最近的磁道,可以保证每次的寻道时间最短,但是不能保证总的寻道时间最短。(其实就是贪心,只能保证眼前最优,但未必整体最优)。
假设磁头的初始位置在100磁道,有多个进程新后陆续在请求访问55、58、39、18、90、160、150、38、184磁道
总共移动了248个磁道
只有磁头移动到最外侧磁道才能往内移动,移动到最内侧磁道才能往外侧移动。
假设磁头的初始位置在100磁道,有多个进程新后陆续在请求访问55、58、39、18、90、160、150、38、184磁道
如果在磁头移动方向上没有其他请求,可以立即改变磁头移动方向。
假设磁头的初始位置在100磁道,有多个进程新后陆续在请求访问55、58、39、18、90、160、150、38、184磁道
规定磁头朝某个特定方向移动的时候才处理磁道上面的请求,而返回的时候直接快速到起始端而不处理任何请求。
假设磁头的初始位置在100磁道,有多个进程新后陆续在请求访问55、58、39、18、90、160、150、38、184磁道
总共移动(200-100+200+90-0)=390个磁道
如果磁头移动方向上已经没有磁到访问请求了,就可以立即让磁头返回,并且只需返回到有磁道访问请求的位置即可
磁盘读入一个扇区数据之后需要一小段时间进行处理,如果逻辑上相邻的扇区在物理上也相邻,则读入几个连续的逻辑扇区,可能需要很长的“延迟时间”
可以使用==交替编号(使逻辑上相邻的在物理上有一定的间隔)==的策略,即让逻辑上相邻的扇区在物理上有一定的间隔,可以使读取连续的逻辑扇区所需的时间延迟更小。
为什么柱面号要在盘面号之前?
所谓坏块就是坏了、无法正常使用的扇区就是“坏块”,这属于硬件故障,操作系统是无法修复的,应该将坏块标记出来,以免错误使用到它。
对于简单的磁盘,可以在逻辑格式化的时候(建立文件系统的时候)对整个磁盘进行坏块检查,标明哪些扇区是坏扇区。比如:在FAT表上标明。
对于复杂的磁盘,磁盘控制器会维护一个坏块链表。
在磁盘出厂前进行低级格式化时就将坏块链进行初始化。
会保留一些“备用“扇区”,用于替换坏块,这种方案称为扇区备用。
”IO“设备就是“输入/输出”
IO设备就是可以将数据输入(如鼠标、键盘就是典型的输入型设备)到计算机或者接收计算机输出数据的外部设备(显示器-输出型设备),属于计算机的硬件部件。
UNIX系统将外部设备抽象成一种特殊的文件,用户可以使用与文件操作相同的方式对外部设备进行操作。
IO设备的组成:
IO设备的机械部件主要用来执行具体的IO操作
比如我们看得见摸得着的鼠标/键盘的按钮,显示屏的LED,移动硬盘的磁臂、磁盘盘面。
IO设备的电子部件通常是一块插入主板扩充槽的印刷电路板。
CPU无法直接控制IO设备的机械部件,因此IO设备还需要一个电子部件作为CPU和IO设备机械部件之间的中介,用于实现CPU队设备的控制。
这个电子部件就是IO控制器,又称为设备控制器,CPU可以控制IO控制器,又由IO控制器来控制设备的机械部件。
IO控制器的功能:
接受和识别CPU发出的命令
如CPU发来的read/write命令,IO控制器中会有相应的控制寄存器来存放命令和参数。
向CPU报告设备的状态
数据交换
地址识别
学习的时候需要考虑的问题有:
引入中断机制,由于IO设备速度很慢,因此在CPU发出读/写命令之后,可将等待IO的进程阻塞,先切换到别的进行运行,当IO结束之后,控制器会向CPU发出一个中断信号,CPU检测到中断信号后,会保存当前进程的运行环境信息,转去执行中断处理程序处理该中断。
之前的读/写操作都必须经过CPU,DMA不再经过CPU
通道:一种硬件,可以理解为弱鸡版的CPU,通道可以识别并执行一系列通道指令