操作系统IO硬件管理_第1页
操作系统IO硬件管理_第2页
操作系统IO硬件管理_第3页
操作系统IO硬件管理_第4页
操作系统IO硬件管理_第5页
已阅读5页,还剩81页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、11第五章第五章 I/O设备管理设备管理操作系统的目标就是给用户提供一个高操作系统的目标就是给用户提供一个高层的机器接口(虚拟机);层的机器接口(虚拟机);在现代计算机系统中,有大量的输入输在现代计算机系统中,有大量的输入输出设备,其种类繁多,差异大。而且随出设备,其种类繁多,差异大。而且随着技术的发展,着技术的发展,新设备新设备也不断地出现。也不断地出现。因此,如何管理好这些设备,使资源得因此,如何管理好这些设备,使资源得以合理的利用,是操作系统的一个主要以合理的利用,是操作系统的一个主要功能。功能。22 I/O硬件硬件 I/O控制方式控制方式 I/O软件软件 磁盘磁盘本章的组织结构本章的组

2、织结构335.1 I/O硬件硬件 对于对于I/O硬件,硬件,操作系统操作系统所关心的并不是所关心的并不是硬件自身的设计、制造和维护,而是如何来硬件自身的设计、制造和维护,而是如何来对它进行编程,即该设备给软件提供的接口对它进行编程,即该设备给软件提供的接口是什么,包括它所接受的控制命令、所完成是什么,包括它所接受的控制命令、所完成的功能,以及所返回的出错报告。的功能,以及所返回的出错报告。445.1.1 I/O设备的类型设备的类型人机交互设备人机交互设备:视频显示设备视频显示设备,键盘键盘,打印机打印机;按交互方向分类:按交互方向分类: 输入设备:键盘、鼠标、扫描仪;输入设备:键盘、鼠标、扫描

3、仪; 到计算机中到计算机中 输出设备:显示器、打印机;输出设备:显示器、打印机; 从计算机中从计算机中 输入输入/输出:磁盘、网卡。输出:磁盘、网卡。55按数据组织分类:按数据组织分类: 块设备块设备:以数据块来作为信息的存储和传输单:以数据块来作为信息的存储和传输单位,每个数据块都有一个地址,可以直接定位位,每个数据块都有一个地址,可以直接定位和访问和访问.数据块之间的读写操作是相互独立的数据块之间的读写操作是相互独立的,如磁盘;,如磁盘; 字符设备字符设备:以字符作为信息的存储和传输单位:以字符作为信息的存储和传输单位,只给顺序访问,只给顺序访问-数据即字符流,无定位无寻数据即字符流,无定

4、位无寻址,如鼠标;址,如鼠标;按数据传输率分类:按数据传输率分类:低速低速(如键盘如键盘)、中速、中速(如打如打印机印机)、高速、高速(如网卡、磁盘如网卡、磁盘)。665.1.2 设备控制器设备控制器机械部分机械部分电子部分电子部分每一个每一个I/O单元由两部分组成:单元由两部分组成:机械部分机械部分和和 电子部分电子部分。把它们分开,以提供更加模块化、更通用的设计。把它们分开,以提供更加模块化、更通用的设计。视频控视频控制器制器77机械部分即为机械部分即为I/O设备本身设备本身;电子部分称为:电子部分称为:设备控制器设备控制器(device controller)或)或适配器适配器(adap

5、ter)。)。 适配器适配器的形式通常是印刷电路卡,可以插入的形式通常是印刷电路卡,可以插入到主板的扩充槽中;到主板的扩充槽中; 控制器控制器的形式是一组芯片的形式是一组芯片,主要集成在主版或主要集成在主版或I/O设备内部;设备内部;两者功能相同两者功能相同:完成设备与主机间的连接和完成设备与主机间的连接和通讯。通讯。8例如例如:v显示器显示器-机械设备机械设备,不能显示字符不能显示字符v视频控制器视频控制器(显卡显卡)-插在主版上插在主版上v显示器与显卡相连显示器与显卡相连-从计算机读数据显示从计算机读数据显示995.1.3 I/O地址地址 每个设备控制器都有一些每个设备控制器都有一些寄存器

6、寄存器用来与用来与CPU通信。通通信。通过这些寄存器中写入不同的值,过这些寄存器中写入不同的值,OS能命令该设备去能命令该设备去执行发送数据、接收数据、打开、关闭等操作;执行发送数据、接收数据、打开、关闭等操作;OS也也能通过读取这些寄存器的值来了解设备的当前状态。能通过读取这些寄存器的值来了解设备的当前状态。 此外,许多控制器还有一个此外,许多控制器还有一个数据缓冲区数据缓冲区供供OS读写。读写。CPU外外部部设设备备控控制制逻逻辑辑电电路路控制寄存器控制寄存器状态寄存器状态寄存器数据寄存器数据寄存器1010现在的问题是:现在的问题是:CPU如何与设备控制器当如何与设备控制器当中的寄存器进行

7、通信?中的寄存器进行通信?如何访问设备的数据如何访问设备的数据缓冲区?因为这不是普通的缓冲区?因为这不是普通的内存访问内存访问!方法有三种:方法有三种: I/O独立编址;独立编址; 内存映像编址;内存映像编址; 混合编址。混合编址。11111. I/O独立编址独立编址w 基本思路:给控制器中的基本思路:给控制器中的每一个寄存器每一个寄存器分配一个唯分配一个唯一的一的I/O端口(端口(I/O port)编号,称为)编号,称为I/O端口地址,端口地址,然后用专门的然后用专门的I/O指令对端口进行操作;指令对端口进行操作;w 这些端口地址所构成的这些端口地址所构成的地址空间是完全独立的,地址空间是完

8、全独立的,与内存的地址空间没有与内存的地址空间没有关系。例如:关系。例如:IN R0 4 表示读入表示读入I/O端口地址为端口地址为4的内容;的内容;MOV R0 4 表示读入表示读入内存地址为内存地址为4的内容;的内容;1212w优点:优点:I/O设备不占用内存地址空间,而且设备不占用内存地址空间,而且程序设计时,易于区分是对内存操作还是对程序设计时,易于区分是对内存操作还是对I/O端口操作。端口操作。w例子:例子:8086/8088,给,给I/O端口分配的地址端口分配的地址空间空间64K,0000HFFFFH, 只有只有IN和和OUT指令进行读写操作。指令进行读写操作。1313Linux0

9、.11/boot/setup.smov al,#0 x11 ! initialization sequenceout #0 x20,al ! send it to 8259A-1mov al,#0 x20 ! start of hardware ints(0 x20) out #0 x21,almov al,#0 x28 ! start of hardware ints(0 x28) out #0 xA1,alin al,#0 x64 ! 8042 status port ! 键盘控制器状态寄存器键盘控制器状态寄存器test al,#2jnz empty_8042 ! is input buf

10、fer full?14142. 内存映像编址内存映像编址w 基本思路:把所有控制器当中的每一个寄存器都映基本思路:把所有控制器当中的每一个寄存器都映射为一个内存地址,专门用于射为一个内存地址,专门用于I/O操作(功能上),操作(功能上),对这些单元的读写操作即为普通的内存访问操作。对这些单元的读写操作即为普通的内存访问操作。w 端口地址空间与内存的地址空间统一编址,前者是端口地址空间与内存的地址空间统一编址,前者是后者的一部分,一般位于后者的顶端部分。后者的一部分,一般位于后者的顶端部分。1515w优点:优点:F 编程方便,无需编程方便,无需专门的专门的I/O指令指令(C vs. 汇汇编编);

11、F 对普通的内存单元可进行的所有操作指令对普通的内存单元可进行的所有操作指令均可作用于均可作用于I/O端口,如端口,如TEST指令;指令;F 无须专门的保护机制来防止用户进程执行无须专门的保护机制来防止用户进程执行I/O。1616w缺点:缺点:F 不能对控制寄存器的内容进行不能对控制寄存器的内容进行Cache,必,必须关闭;须关闭;F 每一次都要判断访问的是内存还是每一次都要判断访问的是内存还是I/O。17173. 混合编址混合编址w 基本思路:对于设备控制器中的寄存器,采用独立基本思路:对于设备控制器中的寄存器,采用独立编址的方法;而对于设备的数据缓冲区,采用内存编址的方法;而对于设备的数据

12、缓冲区,采用内存映像编址的方法。映像编址的方法。w 例如:例如:Pentium,把内存地址空间,把内存地址空间640K1M保留作保留作为设备的数据缓冲区,另外,还有一个独立的为设备的数据缓冲区,另外,还有一个独立的I/O端口地址空间,从端口地址空间,从0到到64K。1818PC机上的部分机上的部分I/O端口地址端口地址(本图摘自(本图摘自Silberschatz, Galvin and Gagne: “Operating System Concepts”)1919到目前为止,已经介绍了到目前为止,已经介绍了I/O设备的类型、设备的类型、设备的控制器、设备的控制器、I/O的端口地址。现在的的端口

13、地址。现在的问题是:根据已有的这些知识,现在问题是:根据已有的这些知识,现在能否能否开始编程使用这些开始编程使用这些I/O设备,完成相应的输设备,完成相应的输入输出功能呢?若能,如何来使用?入输出功能呢?若能,如何来使用?答案是能!答案是能!方法:程序循环检测方法:程序循环检测I/O(Programmed I/O)。20205.2 I/O控制方式控制方式程序循环检测方式程序循环检测方式(Programmed I/O);中断驱动方式中断驱动方式(Interrupt-driven I/O);直接内存访问方式直接内存访问方式(DMA, Direct Memory Access);21215.2.1

14、程序循环检测方式程序循环检测方式w 基本思路:基本思路:在程序(设备驱动程序)中通过在程序(设备驱动程序)中通过不断地检不断地检测测I/OI/O设备的当前状态设备的当前状态,来控制,来控制I/OI/O操作的完成。具体操作的完成。具体来说,在进行来说,在进行I/OI/O操作之前,要循环地检测设备是否就操作之前,要循环地检测设备是否就绪;在绪;在I/OI/O操作进行之中,要循环地检测设备是否已完操作进行之中,要循环地检测设备是否已完成;在成;在I/OI/O操作完成之后,还要把输入的数据保存到内操作完成之后,还要把输入的数据保存到内存(输入操作)。从硬件来说,控制存(输入操作)。从硬件来说,控制I/

15、OI/O的所有工作均的所有工作均由由CPUCPU来完成。来完成。w 也称为也称为繁忙等待繁忙等待方式(方式(busy waiting)或)或轮询轮询方式方式(polling)。)。w 缺点:在进行缺点:在进行I/O操作时,一直占用操作时,一直占用CPU时间。时间。2222一个例子一个例子已知已知I/O地址采用内存映像编址的方式,现需要地址采用内存映像编址的方式,现需要在打印机上打印一个字符串在打印机上打印一个字符串“ABCDEFGH”。基本思路:把这基本思路:把这8个字符逐个送到打印机设备的个字符逐个送到打印机设备的I/O端口地址(内存地址)。端口地址(内存地址)。A B C D E F G

16、H内存内存pprinter_status_regprinter_data_register2323for (i = 0; i sys_read);该函数又调用相应的设备驱动程序,驱动该函数又调用相应的设备驱动程序,驱动程序在启动程序在启动I/O操作后被阻塞操作后被阻塞(-driver_read);I/O操作完成后,将产生一个中断,然后中操作完成后,将产生一个中断,然后中断处理程序将接管断处理程序将接管CPU,并唤醒被阻塞的,并唤醒被阻塞的驱动程序。驱动程序。方案一方案一5353驱动程序以什么形式存在?单独的一个进驱动程序以什么形式存在?单独的一个进程吗?调用驱动时程吗?调用驱动时有无进程切换有

17、无进程切换?中断处理程序是谁写的?中断处理程序是谁写的?OS or 厂商厂商?设备驱动程序与中断处理程序(两个设备驱动程序与中断处理程序(两个进程进程间)如何同步?间)如何同步?如果有多个进程同时都要访问该如果有多个进程同时都要访问该I/O设备,设备,该怎么办?该怎么办?问题问题5454我们要为一个简单的字符输入设备实现相我们要为一个简单的字符输入设备实现相应的设备驱动程序。应的设备驱动程序。当用户进程需要当用户进程需要I/O操作时,启动相应操作时,启动相应系统系统调用调用,最终执行各种设备统一的对外接口,最终执行各种设备统一的对外接口函数函数read(devID, buf, size)。设备

18、驱动程序主要由两个函数组成:设备驱动程序主要由两个函数组成:foo_read(),该设备对,该设备对read接口函数的具体接口函数的具体实现。实现。foo_interrupt(),中断处理函数。,中断处理函数。一个例子一个例子5555size_t foo_read(struct file *filp, char *buf, size_t count, loff_t *ppos) foo_dev_t *foo_dev = filp-private_data; if(down_interruptible(&foo_dev-sem)/互斥互斥 return -ERESTARTSYS; foo

19、_dev-intr = 0; /同步同步 outb(DEV_FOO_READ, DEV_FOO_CONTROL_PORT); wait_event_interruptible(foo_dev-wait, (foo_dev-intr = 1); / 被阻塞被阻塞 if (put_user(foo_dev-data, buf) return -EFAULT; up(&foo_dev-sem); return 1;5656void foo_interrupt(int irq,void *dev_id, struct pt_regs *regs) foo-data = inb(DEV_FOO_

20、DATA_PORT); foo-intr = 1; wake_up_interruptible(&foo-wait);用户进程用户进程A 系统调用系统调用 read foo_read 被阻塞被阻塞 用户进程用户进程B 被中断被中断 foo_interrupt A被唤醒被唤醒5757方案方案1只适合需要互斥访问的设备。只适合需要互斥访问的设备。块设备如何处理?块设备如何处理?例如:例如:A进程访问磁盘的第进程访问磁盘的第i个数据块个数据块,B进程也要访问第进程也要访问第i个数据块,如何个数据块,如何优化,减少优化,减少I/O操作?操作?5858数据结构:数据结构:请求队列请求队列(req

21、uest queue););块设备驱动程序:块设备驱动程序:上层函数上层函数,负责管理请,负责管理请求队列;求队列;底层函数底层函数,负责与硬件打交道,负责与硬件打交道,完成真正的完成真正的I/O;I/O请求的提交与真正实现是分离的。各个请求的提交与真正实现是分离的。各个用户进程(通过内核)调用上层函数,提用户进程(通过内核)调用上层函数,提交交I/O请求请求(mak_request),然后阻塞;底层函数,然后阻塞;底层函数则从队列中取出每个则从队列中取出每个I/O请求,并完成之。请求,并完成之。能够对各个能够对各个I/O请求进行优化,如数据块的请求进行优化,如数据块的重组。重组。方案二方案二

22、5959Example: A scsi disk driver in UNIXsdstrategy: do error checking, if device is not busy, issue a start request for the specific unit (disk).sdustart: find the proper queue for this unit, put the request on the queue, issue start.sdstart: request the resources needed for the request (scsi bus or

23、DMA resources).sdgo: write the commands to the controller, set the interrupt vector, issue the start request to the controller.sdintr: called from I/O interrupt, finish the request (schedule the waiting process), issue a new request if there is one.60605.3.5 设备独立的设备独立的I/O软件软件设备独立的设备独立的I/O软件是系统内核的一部分

24、,它的基软件是系统内核的一部分,它的基本任务是实现所有设备都需要的一些通用的本任务是实现所有设备都需要的一些通用的I/O功功能,并向用户级软件提供一个统一的能,并向用户级软件提供一个统一的接口接口。实现的主要功能:实现的主要功能: 给上层应用的统一接口;给上层应用的统一接口; 与设备驱动程序的统一接口;与设备驱动程序的统一接口; 提供与设备无关的数据块大小;提供与设备无关的数据块大小; 缓冲技术;缓冲技术;6161 提供与设备无关的数据块大小提供与设备无关的数据块大小磁盘的访问是以扇区为单位,但不同的磁盘可能磁盘的访问是以扇区为单位,但不同的磁盘可能会有不同的扇区大小,因此,设备独立的会有不同

25、的扇区大小,因此,设备独立的I/OI/O软件软件可以向上层掩盖这一事实,并提供统一的逻辑块可以向上层掩盖这一事实,并提供统一的逻辑块大小,例如,它可以将若干个物理扇区合并成一大小,例如,它可以将若干个物理扇区合并成一个逻辑块,这样,对于上层的软件来说,它们所个逻辑块,这样,对于上层的软件来说,它们所面对的都是一些抽象的设备,这些设备都使用相面对的都是一些抽象的设备,这些设备都使用相同大小的逻辑块。同大小的逻辑块。6262 缓冲技术缓冲技术w 基本思想:在实现数据的基本思想:在实现数据的I/O操作时,为缓解操作时,为缓解CPU与外部设备之间速度不匹配的矛盾,提高资源利用与外部设备之间速度不匹配的

26、矛盾,提高资源利用率,在内存中开辟一个空间,用作率,在内存中开辟一个空间,用作缓冲区(缓冲区(36M、3、1)。63635.3.6 用户空间的用户空间的I/O软件软件虽然大多数的虽然大多数的I/O软件都包含在操作系统中,但也有软件都包含在操作系统中,但也有一小部分是与用户程序进行链接的库函数,或者是一小部分是与用户程序进行链接的库函数,或者是完全运行在用户空间的程序。完全运行在用户空间的程序。v 库函数:如库函数:如C语言里与语言里与I/O有关的库函数有关的库函数write、read等,它们实质上只是将它们的参数再传递给等,它们实质上只是将它们的参数再传递给系统调用函数,并由后者来完成实际的系

27、统调用函数,并由后者来完成实际的I/O操作;操作;v Spooling技术:在多道系统中,一种处理独占设技术:在多道系统中,一种处理独占设备的方法。备的方法。6464Spooling技术技术w 利用利用假脱机技术假脱机技术(SPOOLing, Simultaneous Peripheral Operation On Line, 也称虚拟设备技术)也称虚拟设备技术)可把独占设备转变成具有共享特征的虚拟设备,从可把独占设备转变成具有共享特征的虚拟设备,从而提高设备利用率。而提高设备利用率。w 基本思想:在多道系统中,对于一个独占的设备,基本思想:在多道系统中,对于一个独占的设备,专门利用一道程序(

28、专门利用一道程序(SPOOLing程序)来完成对该程序)来完成对该设备的设备的I/O操作。操作。Application AApplication BSPOOLingProgramDeviceVirtual I/OActual I/O6565w 优点:优点: 高速的虚拟高速的虚拟I/O操作:应用程序的虚拟操作:应用程序的虚拟I/O比实比实际际I/O速度提高,缩短应用程序的执行时间。另速度提高,缩短应用程序的执行时间。另一方面,程序的虚拟一方面,程序的虚拟I/O操作时间和实际操作时间和实际I/O操操作时间分离开来。作时间分离开来。 实现对独占设备的共享:由实现对独占设备的共享:由Spooling程

29、序提供虚程序提供虚拟设备,可以对独占设备依次共享使用。拟设备,可以对独占设备依次共享使用。w 举例:打印机是一种独占设备,可用举例:打印机是一种独占设备,可用Spooling技术技术 创建一个创建一个Spooling进程进程 (后台打印程序后台打印程序, daemon)和一个和一个Spooling目录。当进程需要打印一个文件目录。当进程需要打印一个文件时,首先生成将要打印的文件,并放入时,首先生成将要打印的文件,并放入Spooling目录,然后由目录,然后由daemon进程来负责打印。进程来负责打印。66665.4 磁盘磁盘磁盘的硬件;磁盘的硬件;磁盘格式化;磁盘格式化;磁盘调度算法;磁盘调度

30、算法;出错处理。出错处理。67675.4.1 磁盘的硬件磁盘的硬件w 磁盘的硬件结构:磁盘(软盘和硬盘)由一个或多磁盘的硬件结构:磁盘(软盘和硬盘)由一个或多个金属盘片组成,这些盘片组合固定在一根旋转轴个金属盘片组成,这些盘片组合固定在一根旋转轴上,由同一个马达驱动。每个盘片有上下两个盘面,上,由同一个马达驱动。每个盘片有上下两个盘面,在盘面上涂有磁性材料,信息就记录在这些盘面上。在盘面上涂有磁性材料,信息就记录在这些盘面上。在每个盘面上方,都有一个磁头,它固定在一个磁在每个盘面上方,都有一个磁头,它固定在一个磁头臂上,而磁头臂又固定在一个传动装置上。通过头臂上,而磁头臂又固定在一个传动装置上

31、。通过磁头的读写装置,磁盘上的信息可以被写入、读出磁头的读写装置,磁盘上的信息可以被写入、读出和修改。和修改。6868磁道磁道扇区扇区柱面柱面读写磁头读写磁头磁头臂磁头臂盘片盘片传动装置传动装置旋转轴旋转轴移动方向移动方向6969w 磁道磁道:当传动装置固定在某个位置时,若盘面旋转:当传动装置固定在某个位置时,若盘面旋转一圈,磁头所能访问的圆环区域;一圈,磁头所能访问的圆环区域;w 柱面柱面:在所有盘面上,半径相同的所有磁道即组成:在所有盘面上,半径相同的所有磁道即组成一个柱面;一个柱面;w 扇区扇区:每一个磁道被划分为若干个扇区;:每一个磁道被划分为若干个扇区;w 磁盘的访问过程磁盘的访问过

32、程:以扇区作为最小的寻址和存取单:以扇区作为最小的寻址和存取单位。首先移动传动装置,通过它来移动磁头,从而位。首先移动传动装置,通过它来移动磁头,从而定位正确的柱面。然后选中相应的磁头,等我们想定位正确的柱面。然后选中相应的磁头,等我们想要的扇区正好路过这个磁头正下方的时候,就可以要的扇区正好路过这个磁头正下方的时候,就可以对它进行访问了。对它进行访问了。7070w如何写一个字节?读修改写如何写一个字节?读修改写 读入包含该字节的扇区;读入包含该字节的扇区; 修改该字节;修改该字节; 把整个扇区写回到磁盘;把整个扇区写回到磁盘;7171参数参数IBM 360-KB软盘软盘Barracuda 1

33、80硬盘硬盘柱面数柱面数4024247磁道数磁道数 柱面柱面224扇区扇区 磁道磁道9609(平均平均)扇区扇区 磁盘磁盘72035742000字节数字节数 扇区扇区512512磁盘容量磁盘容量360KB181GB柱面定位柱面定位(相邻相邻)6毫秒毫秒0.8毫秒毫秒柱面定位柱面定位(平均平均)77毫秒毫秒7.4毫秒毫秒旋转时间旋转时间200毫秒毫秒8.33毫秒毫秒马达启马达启/停时间停时间250毫秒毫秒20秒秒扇区传送时间扇区传送时间22毫秒毫秒17微秒微秒7272虚拟磁盘地址虚拟磁盘地址w 物理地址:柱面号、盘面号(磁头号)、扇区号;物理地址:柱面号、盘面号(磁头号)、扇区号;这隐含着两个约

34、束条件:每个柱面上的盘面个数都这隐含着两个约束条件:每个柱面上的盘面个数都是一样的;每个磁道上的扇区个数都是一样的。是一样的;每个磁道上的扇区个数都是一样的。w 考虑到半径不同的磁道,其圆环区域的考虑到半径不同的磁道,其圆环区域的面积不同面积不同,现代磁盘在设计时,把所有磁道按半径大小,划分现代磁盘在设计时,把所有磁道按半径大小,划分为若干个环带,在不同环带上,每个磁道所划分的为若干个环带,在不同环带上,每个磁道所划分的扇区数是不一样的,这就违背了第二个约束条件;扇区数是不一样的,这就违背了第二个约束条件;w 虚拟地址:把每个磁道多少个扇区等物理细节隐藏虚拟地址:把每个磁道多少个扇区等物理细节

35、隐藏在设备内部,对外提供统一的虚拟地址在设备内部,对外提供统一的虚拟地址(x, y, z),即,即虚拟的柱面号、盘面号和扇区号,对内再将其映射虚拟的柱面号、盘面号和扇区号,对内再将其映射为实际的柱面、盘面和扇区(由控制器完成)。为实际的柱面、盘面和扇区(由控制器完成)。7373物理扇区分布物理扇区分布虚拟扇区分布虚拟扇区分布32 4 + 16 4 = 19224 8 = 19274745.4.2 磁盘格式化磁盘格式化w 硬盘的格式化可分为三个步骤,即低级格式化、分硬盘的格式化可分为三个步骤,即低级格式化、分区和高级格式化。区和高级格式化。w 低级格式化:标出低级格式化:标出磁道磁道和和扇区扇区

36、,在相邻的扇区之间,在相邻的扇区之间有狭窄的间隙隔开。一个扇区的格式是:相位编码有狭窄的间隙隔开。一个扇区的格式是:相位编码(preamble)数据区纠错码()数据区纠错码(ECC)。)。F 相位编码:以某个特定的位组合模式开始,向相位编码:以某个特定的位组合模式开始,向硬件表明这是一个新扇区的开始。还包括柱面硬件表明这是一个新扇区的开始。还包括柱面号、扇区号、扇区大小等类似信息;号、扇区号、扇区大小等类似信息;F 数据区:由格式化程序确定其大小,一般数据区:由格式化程序确定其大小,一般512;F 纠错码:包含冗余信息,用来纠正读取错误;纠错码:包含冗余信息,用来纠正读取错误;7575w 分区

37、分区:用分区软件把整个硬盘划分为若干个逻辑分:用分区软件把整个硬盘划分为若干个逻辑分区,每个分区可视为一个独立的磁盘。在多数计算区,每个分区可视为一个独立的磁盘。在多数计算机上,用第机上,用第0个扇区来存放一些系统启动代码和一个扇区来存放一些系统启动代码和一个分区表,记录了每个分区的起始扇区和大小。个分区表,记录了每个分区的起始扇区和大小。w 高级格式化高级格式化:对每一个逻辑分区,分别进行一种高:对每一个逻辑分区,分别进行一种高级格式化(即通常的格式化操作),生成一个引导级格式化(即通常的格式化操作),生成一个引导块、空闲存储管理结构、根目录和一个空白的文件块、空闲存储管理结构、根目录和一个

38、空白的文件系统。对不同的分区,可以使用不同的文件系统,系统。对不同的分区,可以使用不同的文件系统,如如FAT16、FAT32、NTFS等。等。76765.4.3 磁盘调度算法磁盘调度算法磁盘的访问是以扇区作为最小的寻址和存取单位,磁盘的访问是以扇区作为最小的寻址和存取单位,在访问一个磁盘扇区时,所需的时间主要有:在访问一个磁盘扇区时,所需的时间主要有: 柱面定位时间:磁头在磁头臂牵引下,移动到指柱面定位时间:磁头在磁头臂牵引下,移动到指定柱面的机械运动时间;定柱面的机械运动时间; 旋转延迟时间:等待指定的扇区旋转到磁头的正旋转延迟时间:等待指定的扇区旋转到磁头的正下方所需的机械运动时间;它与磁

39、盘转速有关,下方所需的机械运动时间;它与磁盘转速有关,如:软盘转速可为如:软盘转速可为600rpm(每分钟转速每分钟转速),硬盘可,硬盘可为为7,200rpm至至10,000rpm; 数据传送时间:从指定扇区读写数据的时间。数据传送时间:从指定扇区读写数据的时间。7777方法方法1:合理地组织磁盘数据的存储位置合理地组织磁盘数据的存储位置。例子:磁盘的转速为例子:磁盘的转速为10,000rpm,每个磁道有,每个磁道有300个扇个扇区,每个扇区有区,每个扇区有512字节,现要读一个字节,现要读一个150KB的文件。的文件。假设柱面定位假设柱面定位(平均平均)时间为时间为6.9毫秒,旋转延迟毫秒,

40、旋转延迟(平均平均)时时间为旋转时间的一半间为旋转时间的一半(3ms),扇区数据传送时间,扇区数据传送时间17微秒;微秒;(1)文件由同一个磁道上的文件由同一个磁道上的300个连续扇区构成:个连续扇区构成:(2)文件由文件由300个随机分布的扇区构成:个随机分布的扇区构成:随机分布时的访问时间为连续分布时的随机分布时的访问时间为连续分布时的187倍。倍。如何提高磁盘访问速度?如何提高磁盘访问速度?6.9ms + 3ms + 6ms = 15.9ms; (why?)(6.9ms + 3ms + 0.017ms)*300 = 2975.1ms;7878方法方法2:磁盘调度。:磁盘调度。如何提高磁盘

41、访问速度?如何提高磁盘访问速度?w 对于大多数磁盘来说,柱面定位时间(磁头移动时对于大多数磁盘来说,柱面定位时间(磁头移动时间)在访问时间中占主要部分,因此减少平均的柱间)在访问时间中占主要部分,因此减少平均的柱面定位时间将有效地改进系统的输入输出性能。面定位时间将有效地改进系统的输入输出性能。w 基本思路:来自基本思路:来自不同进程不同进程的磁盘访问请求构成一个的磁盘访问请求构成一个随机分布的请求队列。磁盘调度的基本思路就是通随机分布的请求队列。磁盘调度的基本思路就是通过对这些过对这些I/O请求的执行顺序进行调整,来减少整请求的执行顺序进行调整,来减少整个请求队列所对应的平均柱面定位时间。个

42、请求队列所对应的平均柱面定位时间。w 磁盘调度算法:磁盘调度程序所采用的算法。磁盘调度算法:磁盘调度程序所采用的算法。谁来做这件事情?谁来做这件事情?79791. 先来先服务算法先来先服务算法w 先来先服务先来先服务(First-Come First-Served, FCFS):按访:按访问请求到达的先后顺序来依次执行。问请求到达的先后顺序来依次执行。w 优点:简单、公平;优点:简单、公平;w 缺点:效率不高。相邻的两次访问请求可能相距甚缺点:效率不高。相邻的两次访问请求可能相距甚远,从而使磁头反复地移动较长的距离。远,从而使磁头反复地移动较长的距离。w 举例:假设一个磁盘总共有举例:假设一个

43、磁盘总共有200个柱面,它们的编个柱面,它们的编号为号为0199,访问请求的到达顺序为(柱面号):,访问请求的到达顺序为(柱面号):98,183,37,122,14,124,65,67,磁头的起,磁头的起始位置在始位置在53,计算磁头移动总距离。,计算磁头移动总距离。8080(本图摘自(本图摘自Silberschatz, Galvin and Gagne: “Operating System Concepts” )458514685108110592在在FCFS算法下,在算法下,在8次磁盘访问中,磁头总共移动次磁盘访问中,磁头总共移动的距离为的距离为640,平均的移动距离为,平均的移动距离为80。81812. 最短定位时间优先最短定位时间优先w 最短定位时间优先最短定位时间优先(Shortest Seek Time First, SSTF):从访问请求队列当中,选择从当前磁头位置出发,从访问请求队列当中,选择从当前磁头位置出发,移动最少的访问请求去执行。移动最少的访问请求去执行。w 该算法的目标是使每次磁头移动时间最少。它不一该算法的目标是使每次磁头移动时间最少。它不一定是最短平均柱面定位时间,但比定是最短平均柱面定位时间,但比FCFS算法有更算法有更好的性能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论