- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
OSppt_05
第四节 I/O软件 I/O软件的总体设计目标是高效率和通用性。 前者是要确保I/O设备与CPU的并发性,以提高资 源利用率;后者则是指尽可能地提供简单抽象、清 晰而统一的接口,采用统一标准的方法,来管理所 有的设备及所需的I/O操作。因此,通常将I/O软件 组织成一种层次结构。 1、I/O软件的设计目标和原则 具体而言,I/O软件应达到下面的几个目标 与具体设备无关 统一命名 对错误的处理,尽可能在接近硬件的层面处理 缓冲技术 设备的分配和释放 I/O控制方式 2、中断处理程序 中断处理层的主要工作有:进行进程上下文的切 换,对处理中断信号源进行测试,读取设备状态和修 改进程状态等。 对于为每一类设备设置一个I/O进程的设备处理 方式,其中断处理程序的处理过程分成以下几个步骤。 唤醒被阻塞的驱动(程序)进程 转入相应的设备处理程序 中断处理 恢复被中断进程的现场 设备驱动程序的功能 接收由I/O进程发来的命令和参数,转换为具体要求 检查用户I/O请求的合法性,了解设备状态,传递或设置参数 发出I/O命令,启动设备,或挂在相应的设备队列上 及时响应由控制器或通道发来的中断请求 对于设有通道的计算机系统,根据I/O请求自动构成通道程序 设备处理方式 为每一类设备设置一个进程,专门用于执行这类设备的I/O操作。 在整个系统中设置一个I/O进程,专门用于执行系统中所有各类设备的I/O操作。也可以设置一个输入进程和一个输出进程,分别处理系统中所有各类设备的输入或输出操作。 不设置专门的设备处理进程,而只为各类设备设置相应的设备处理程序(模块),供用户进程或系统进程调用。 LUT的设置问题 在整个系统只设置一张LUT,不允许在LUT中具有相同的逻辑设备名,多用于单用户系统中。 为每个用户设置一张LUT,放入进程的PCB中。通常用在多用户系统中。 5、用户层的I/O软件 一般而言,大部分的I/O软件都在操作系统内部, 但仍有一小部分在用户层,包括与用户程序链接在一 起的库函数,以及完全运行于内核之外的一些程序。 用户层软件必须通过一组系统调用来取得操作系统 服务。在现代的高级语言以及C语言中,通常提供了与 各系统调用一一对应的库函数,用户程序通过调用对 应的库函数使用系统调用。但在许多现代操作系统中 ,系统调用本身已经采用C语言编写,并以函数形式提 供,所以在使用C语言编写的用户程序中,可以直接使 用这些系统调用。 磁盘的类型 固定头磁盘:每条磁道上都有磁头,装在磁臂中。 移动头磁盘:每个盘面一个磁头,装在磁臂中,磁头能够移动以寻道。 磁盘访问时间 寻道时间Ts 把磁臂(磁头)移动到指定磁道上所经历的时间,包含启动磁臂和磁头移动n条磁道所花费的时间。 是一组在逻辑上属于磁盘, 而物理上是驻留在内存中 的盘块。 磁盘高速缓存的形式 第一种是在内存中开辟一个单独的存储空间来作 为磁盘高速缓存,其大小是固定的,不会受应用程 序多少的影响; 第二种是把所有未利用的内存空间变为一个缓冲 池,供请求分页系统和磁盘I/O时(作为磁盘高速缓 存)共享。此时高速缓存的大小显然不再是固定的。 数据交付方式 数据交付 指针交付 置换算法 现在不少系统在设计其高速缓存的置换算法时,除了 考虑到最近最久未使用这一原则外, 还考虑了以下 几点: 访问频率 可预见性 数据的一致性 周期性地写回磁盘 提前读(Read-Ahead) 延迟写 优化物理块的分布 虚拟盘 廉价磁盘冗余阵列是利用一台磁盘阵列控制器统一管 理和控制一组磁盘驱动器,组成一个速度快 、可靠性高、 性能价格比好的大容量磁盘系统。 并行交叉存取 RAID的分级 RAID 0级 RAID 1级 RAID 3级 RAID 5级 RAID 6级和RAID 7级。 RAID的优点 可靠性高 磁盘I/O速度高 性能/价格比高 SPOOLing系统的组成 输入井和输出井: 在磁盘上开辟的两个大存储空间 输入缓冲区和输出缓冲区: 在内存中开辟的两个缓冲区 输入进程Spi和输出进程Spo: 是内存中的两个进程 输入进程SPi 输出进程SPo 输入缓冲区Bi 输出缓冲区Bo 输入 设备 输出 设备 磁盘 输入井 输出井 共享打印机 SPOOLing系统接收到用户进程的打印输出请求后: 由输出进程在输出井中为之申请一个空闲磁盘块区,并将要打印的数据送入其中; 输出进程再为用户进程申请一张空白的用户请求打印表,并将用户的打印要求填入其中,再将该表挂到请求打印队列上。 当打印机空闲时,输出进程将从请求
文档评论(0)