I/O 操作的实现 用户空间 I/O 软件 I/O 硬件与软件的接口 内核空间 I/O 软件. I/O 和文件操作 ° 主要教学目标 – 通过揭示高级语言程序中的 I/O 及文件操作请求的底层实 现机制,使学生深刻理解 OS 在输入 / 输出系统中的重要 作用;深刻理解计算机中硬件和软件如何协调工作以完.

Slides:



Advertisements
Similar presentations
高校教师、高级项目经理 任铄 QQ : 第一章 操作系统引论 1.1 操作系统的目标和作用 1.2 操作系统的发展过程 1.3 操作系统的基本特性 1.4 操作系统的主要功能 1.5 OS 结构设计.
Advertisements

面向侧面的程序设计 方林博士 本文下载地址:
高级服务器设计和实现 1 —— 基础与进阶 余锋
阻塞操作. 在 linux 里,一个等待队列由一个 wait_queue_head_t 类型的结构来描述 等待队列的初始化: static wait_queue_head_t testqueue; init_waitqueue_head(&testqueue);
Linux 系统. 操作系统发展需求 1 没有操作系统 2 简单批处理操作系统 3 多道程序设计的批处理 4 多道程序设计的分时操作系统 5 多处理机并行系统 6 网络操作系统 7 分布式操作系统.
NAT与ICMP交互.
第九章、输入输出原理 原著 谭志虎 主讲(改编) 蒋文斌.
操作系统概念 第二章:计算机系统结构.
第七章 计算机输入输出系统与 接口技术.
初级会计电算化 (用友T3) 制作人:张爱红.
实用操作系统概念 张惠娟 副教授 1.
设备管理.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
在PHP和MYSQL中实现完美的中文显示
计算机基础知识 丁家营镇九年制学校 徐中先.
陈香兰 助教:陈博、李春华 Spring 2009 嵌入式操作系统 陈香兰 助教:陈博、李春华 Spring 2009.
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
第三章 微机基本系统的设计 第一章 8086程序设计 第二章 MCS-51程序设计 第四章 存贮器与接口 第五章 并行接口
存储系统.
中国科学技术大学计算机系 陈香兰 Fall2013 第九讲 设备管理 中国科学技术大学计算机系 陈香兰 Fall2013.
大学计算机基础 典型案例之一 构建FPT服务器.
PostgreSQL 8.3 安装要点 四川大学计算机学院 段 磊
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
文件读写实践 广州创龙电子科技有限公司 01 广州创龙电子科技有限公司
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
S 数控机床故障诊断与维修.
第八章 I/O操作的实现 用户空间I/O软件 I/O硬件与软件的接口 内核空间I/O软件
《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:
CPU结构和功能.
Windows 7 的系统设置.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
第二章 登录UNIX操作系统.
内容摘要 ■ 课程概述 ■ 教学安排 ■ 什么是操作系统? ■ 为什么学习操作系统? ■ 如何学习操作系统? ■ 操作系统实例
《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:
C语言程序设计 主讲教师:陆幼利.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
微机系统的组成.
第四章 MCS-51定时器/计数器 一、定时器结构 1.定时器结构框图
K60入门课程 02 首都师范大学物理系 王甜.
本节内容 随机读取 视频提供:昆山爱达人信息技术有限公司.
实验四、TinyOS执行机制实验 一、实验目的 1、了解tinyos执行机制,实现程序异步处理的方法。
Logo语言. Logo语言 视图窗口 小海龟 ?: 提示符 l: 光标 命令窗口.
实验七 安全FTP服务器实验 2019/4/28.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
信号量(Semaphore).
iSIGHT 基本培训 使用 Excel的栅栏问题
第八章 总线技术 8.1 概述 8.2 局部总线 8.3 系统总线 8.4 通信总线.
LOGIX500软件入门 西安华光信息技术有限公司 2008年7月11日.
本节内容 文件系统 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
无线网络特性展现 张琦.
HSC高速输出例程 HORNER APG.
第六章设备管理 本章重点: 1.掌握设备管理的功能和任务; 2.掌握设备的分类方法; 3.掌握I/O控制的实现;
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
本节内容 Windows线程切换_时钟中断切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
_08文件操作 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
阻塞式模型 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
第六章 I/O接口 一、I/O接口的功能 第一节 概 述 一、I/O 接口的功能 二、I/O接口的一般结构 第二节 输入输出寻址方式和指令
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
24 or 1024? PWN Jawbone Up24 手环.
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
李元金 计算机与信息工程学院 第 18 讲 设备管理(2) 李元金 计算机与信息工程学院 1/
入侵检测技术 大连理工大学软件学院 毕玲.
工业机器人入门使用教程 ESTUN机器人 主讲人:李老师
DSP技术与应用 电子与信息技术系.
Presentation transcript:

I/O 操作的实现 用户空间 I/O 软件 I/O 硬件与软件的接口 内核空间 I/O 软件

I/O 和文件操作 ° 主要教学目标 – 通过揭示高级语言程序中的 I/O 及文件操作请求的底层实 现机制,使学生深刻理解 OS 在输入 / 输出系统中的重要 作用;深刻理解计算机中硬件和软件如何协调工作以完 成计算机功能。 ° 主要教学内容 –I/O 子系统的组成和层次结构 – 用户空间 I/O 软件 –I/O 硬件与软件的接口 – 内核空间 I/O 软件

DMA 方式的基本要点 °DMA 方式的基本思想 在高速外设和主存间直接传送数据 由专门硬件(即: DMA 控制器)控制总线进行传输 °DMA 方式适用场合 高速设备(如:磁盘、光盘等) 成批数据交换,且数据间间隔时间短,一旦启动,数据连续读写 ° 采用 “ 请求 - 响应 ” 方式 每当高速设备准备好数据就进行一次 “DMA 请求 ” , DMA 控制器接受 到 DMA 请求后,申请总线使用权 DMA 控制器的总线使用优先级比 CPU 高,为什么? ° 与中断控制方式结合使用 在 DMA 控制器控制总线进行数据传送时, CPU 执行其他程序 DMA 传送结束时,要通过 “DMA 结束中断 ” 告知 CPU

读一个磁盘扇区 - 第一步 Main memory ALU Register file CPU chip Disk controller Graphics adapter USB controller mouse keyboard Monitor Disk I/O bus Bus interface CPU 对 DMA 控制器初始化: 将传送方向(读)、传送数据个数、 磁盘逻辑块号、主存起始地址等参数 送到 DMA 控制器 发送 ” 启动 DMA 传送 “ 命令 DMA 控制器 传送数据个数被 送到计数器中

读一个磁盘扇区 – 第二步 Main memory ALU Register file CPU chip Disk controller Graphics adapter USB controller MouseKeyboardMonitor Disk I/O bus Bus interface 磁盘控制器读相应的扇区,并由 DMA 控制器控制总线把数据从磁盘控制器 送主存,此时, CPU 执行其他进程 DMA 控制器 每传送一个数据 ,则计数器减 1

读一个磁盘扇区 – 第三步 Main memory ALU Register file CPU chip Disk controller Graphics adapter USB controller MouseKeyboardMonitor Disk I/O bus Bus interface 当 DMA 传送结束 ( 计数为 0) , DMA 控制器 向 CPU 发出 “DMA 结束中断请求 ” ,要求 CPU 进行相应的后处理。 DMA 控制器

DMA 方式下 CPU 的工作 copy_string_to_kernel(strbuf, kernelbuf, n); // 将字符串复制到内核缓冲区 initialize_DMA ( ); // 初始化 DMA 控制器(准备传送参数) *DMA_control_port=START;// 发送 “ 启动 DMA 传送 ” 命令 scheduler ( ); // 阻塞用户进程 P ,调度其他进程执行 acknowledge_interrupt();// 中断回答(清除中断请求) unblock_user ( );// 用户进程 P 解除阻塞,进入就绪队列 return_from_interrupt(); // 中断返回 例子:采用 DMA 方式进行字符串输出 sys_write 进行字符串输出的程序段 : ”DMA 结束 “ 中断服务程序: CPU 仅在 DMA 控制器初始化和处理 “DMA 结束中断 “ 时介入,在 DMA 传送过程中不参与,因而 CPU 用于 I/O 的开销非常小。 DMA 控制器接受到 “ 启动 ” 命令后,控制总线进行 DMA 传送。通常用 ” 周期挪用 法 “ :设备每准备好一个数据,挪用一次 ” 存储周期 “ ,使用一次总线事务进行 数据传送,计数器减 1 。计数器为 0 时,发送 DMA 结束中断请求

例:中断、 DMA 方式下 CPU 的开销 设处理器按 500MHz 的速度执行,硬盘控制器中有一个 16B 的数据缓存器,磁盘传 输速率为 4MB/Sec ,在磁盘传输数据过程中,要求没有任何数据被错过,并假定 CPU 访存和 DMA 访存没有冲突。 ( 1 )若用中断方式,每次传送的开销(包括用于中断响应和处理的时间)是 500 个 时钟周期。如果硬盘仅用 5% 的时间进行传送,那么处理器用在硬盘 I/O 操作上所 花的时间百分比(主机占用率)为多少? ( 2 )若用 DMA 方式,处理器用 1000 个时钟进行 DMA 传送初始化,在 DMA 完成后的 中断处理需要 500 个时钟。如果每次 DMA 传送 8000B 的数据块,那么当硬盘进行 传送的时间占 100% (即:硬盘一直进行读写,并传输数据)时,处理器用在硬盘 I/O 操作上的时间百分比(主机占用率)为多少? 想象一下:假定大仓库门口有一个箱子,可放 16 个零件。要将大仓库中的一批零 件运到小仓库中,可以有几种方法? 中断方式:每装满一个箱子就喊车床上的技工来运到车间,再从车间运到小仓库 DMA 方式:车床技工停下来告诉搬运工说,一次要 8000 个零件放到小仓库固定 的地方,然后回到车床工作;搬运工开始分两组工作,一组从大仓库搬货到箱子 中,另一组将箱子直接运到小仓库指定地方,搬完 8000 个后, 搬运工告知技工已 完成任务,技工进行相应处理。 上述两种方式中,哪种方式的生产效率更高呢?

例:中断、 DMA 方式下 CPU 的开销 ° 中断传送: 硬盘每次中断,可以以 16 字节为单位进行传送,为保证没有任何数据被 错过,应达到每秒 4MB /16B=250k 次中断的速度; 每秒钟用于中断的时钟周期数为 250kx500=125x10 6 ; 在一次数据传输中,处理器花费在 I/O 上的时间的百分比为: 125x10 6 /(500x10 6 )=25% ; 假定硬盘仅用其中 5% 的时间来传送数据,则处理器花费在 I/O 方面的百 分比为 25%x5%=1.25% 。 °DMA 传送: 每次 DMA 传送将花费 8000B/(4MB/Sec)≈2x10 -3 秒; 一秒钟内有 1/(2x10 -3 )=500 次 DMA 传送; 如果硬盘一直在传送数据的话,处理器必须每秒钟花 ( )x500=750x10 3 个时钟周期来为硬盘 I/O 操作服务; 在硬盘 I/O 操作上处理器花费的时间占: 750x10 3 /(500x10 6 )=1.5x10 -3 =0.15% 。 一旦磁盘被启动传送,就以 4MB/s 的速度进行,主机要保证没有数据丢失!

I/O 操作的实现 ° 分以下三个部分介绍 第一讲:用户空间 I/O 软件 -I/O 子系统概述 - 文件的基本概念 - 用户空间的 I/O 函数 第二讲: I/O 硬件和软件的接口 -I/O 设备和设备控制器 -I/O 端口及其编址方式 -I/O 控制方式 第三讲:内核空间 I/O 软件 - 与设备无关的 I/O 软件 - 设备驱动程序 - 中断服务程序

内核空间 I/O 软件 ° 所有用户程序提出的 I/O 请求,最终都通过系统调用实现 ° 通过系统调用封装函数中的陷阱指令转入内核 I/O 软件执行 ° 内核空间 I/O 软件实现相应系统调用的服务功能 ° 内核空间的 I/O 软件分三个层次 设备无关软件层 设备驱动程序层 中断服务程序层 ° 设备驱动程序层、中断服务程序层与 I/O 硬件密切相关 系统调用服务例程,被陷阱指令调出执 行,一旦发送 “ 启动 ” 命令,则所代表的 进程被送等待队列(即被阻塞) 外设 CPU 启动启动 完成完成 启动启动 完成完成 工作 请求请求 响应响应 启动启动 请求请求 响应响应 返回返回 P 被阻塞 Q Q Q P

在 Linux 内核中单 向调用 20 次以上 read sys_read Int 0x80 触发系统调用 与设备无关层与设备无关层 设备驱动层 文件 系统 层 通用块设备层 I/O 调度层

设备无关 I/O 软件层 ° 设备驱动程序统一接口 操作系统为所有外设的设备驱动程序规定一个统一接口,这样,新设备的 驱动程序只要按统一接口规范来编制,就可在不修改操作系统的情况下, 添加新设备驱动程序并使用新的外设进行 I/O 。 所有设备都抽象成文件,设备名和文件名在形式上没有差别,设备和文件 具有统一的接口,不同设备名和文件名被映射到对应设备驱动程序。 ° 缓冲处理 每个设备的 I/O 都需使用内核缓冲区,因而缓冲区的申请和管理等处理是所 有设备公共的,可包含在与设备无关的 I/O 软件部分 ° 错误报告 I/O 操作在内核态执行时所发生的错误信息,都通过与设备无关的 I/O 软件返 回给用户进程,也即:错误处理框架与设备无关。 直接返回编程等错误,无需设备驱动程序处理,如,请求了不可能的 I/O 操 作;写信息到一个输入设备或从一个输出设备读信息;指定了一个无效缓 冲区地址或者参数;指定了不存在的设备等。 有些错误由设备驱动程序检测出来并处理,若驱动程序无法处理,则将错 误信息返回给设备无关 I/O 软件,再由设备无关 I/O 软件返回给用户进程,如 写一个已被破坏的磁盘扇区;打印机缺纸;读一个已关闭的设备等。

设备无关 I/O 软件层 ° 打开与关闭文件 对设备或文件进行打开或关闭等 I/O 函数所对应的系统调用,并不涉 及具体的 I/O 操作,只要直接对主存中的一些数据结构进行修改即可 ,这部分工作也由设备无关软件来处理。 ° 逻辑块大小处理 为了为所有的块设备和所有的字符设备分别提供一个统一的抽象视 图,以隐藏不同块设备或不同字符设备之间的差异,与设备无关的 I/O 软件为所有块设备或所有字符设备设置统一的逻辑块大小。 对于块设备,不管磁盘扇区和光盘扇区有多大,所有逻辑数据块的 大小相同,这样,高层 I/O 软件就只需处理简化的抽象设备,从而在 高层软件中简化了数据定位等处理

设备驱动程序 ° 每个外设具体的 I/O 操作需通过执行设备驱动程序来完成 ° 外设种类繁多、其控制接口不一,导致不同外设的设备驱动程序千差万别, 因而设备驱动程序与设备相关 ° 每个外设或每类外设都有一个设备控制器,其中包含各种 I/O 端口。 CPU 通 过执行设备驱动程序中的 I/O 指令访问个各种 I/O 端口 ° 设备所采用的 I/O 控制方式不同,驱动程序的实现方式也不同 程序直接控制:驱动程序完成用户程序的 I/O 请求后才结束。这种情况下, 用户进程在 I/O 过程中不会被阻塞,内核空间的 I/O 软件一直代表用户进程在 内核态进行 I/O 处理 。 中断控制:驱动程序启动第一次 I/O 操作后,将调出其他进程执行,而当前 用户进程被阻塞。在 CPU 执行其他进程的同时,外设进行 I/O 操作,此时, CPU 和外设并行工作。外设完成 I/O 时,向 CPU 发中断请求,然后 CPU 调出 相应中断服务程序执行。在中断服务程序中再次启动 I/O 操作。 DMA 控制:驱动程序对 DMA 控制器初始化后,便发送 “ 启动 DMA 传送 ” 命令 ,外设开始进行 I/O 操作并在外设和主存间传送数据。同时 CPU 执行处理器 调度程序,转其他进程执行,当前用户进程被阻塞。 DMA 控制器完成所有 I/O 任务后,向 CPU 发送一个 “DMA 完成 ” 中断请求信号。

中断服务程序 ° 中断控制和 DMA 控制两 种方式下都需进行中断 处理 ° 中断控制方式:中断服 务程序主要进行从数缓 器取数或写数据到数缓 器,然后启动外设工作 °DMA 控制方式:中断服 务程序进行数据校验等 后处理工作 在内核 I/O 软件中用到的 I/O 指 令、 “ 开中断 ” 和 “ 关中断 ” 等指令 都是特权指令,只能在操作系 统内核程序中使用

本章小结 ° 用户程序通常通过调用编程语言提供的库函数或操作系统提供的 API 函数来实现 I/O 操作 °I/O 库函数最终都会调用系统调用的封装函数,通过封装函数中 的陷阱指令使用户进程从用户态转到内核态执行 ° 在内核态中执行的内核空间 I/O 软件主要包含三个层次: 与设备无关的操作系统软件 设备驱动程序 中断服务程序 ° 具体 I/O 操作通过设备驱动程序和中断服务程序控制 I/O 硬件来实 现 ° 设备驱动程序的实现主要取决于具体的 I/O 控制方式: 程序查询方式、中断方式、 DMA 方式

本章作业 °3、4、5、6、8°3、4、5、6、8