GNU Linux编程课件 第10章.ppt_第1页
GNU Linux编程课件 第10章.ppt_第2页
GNU Linux编程课件 第10章.ppt_第3页
GNU Linux编程课件 第10章.ppt_第4页
GNU Linux编程课件 第10章.ppt_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

第10章I O操作模式 郑谦益 韩京宇 概述 I O操作模式文件I O操作模式内存的I O映射文件锁终端I O操作 I O操作模式 I O操作模式 阻塞方式非阻塞方式同步方式异步方式 阻塞方式 概念通常 在应用程序发出I O请求后 如果I O操作不能立刻完成 Linux内核将发出读写请求的进程暂时挂起 将CPU交给其他进程 等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多路复用模式信号驱动I O模式异步I O模式 同步阻塞I O模式 概念通常 在进行I O操作时 必须等到I O操作完成才能进行下一步的操作 这种操作方式称为同步阻塞I O模式 同步阻塞I O模式 实例分析 exam10 1 cintfd line fd kb fd display charchr from kb 10 charchr from line 10 voidtest while 1 read fd kb 同步非阻塞I O模式 概念在进程发出文件读写请求后 无论I O操作是否完成 立刻返回 这样进程可继续执行后续代码 为了获知文件的I O操作是否完成 需不断地对文件I O状态进行测试 同步非阻塞I O模式 同步非阻塞I O模式 方法一 在打开文件时 设定打开的方式为非阻塞方式 例如 open fifo1 O RDONLY O NONBLOCK 方法二 如果文件已经打开 可通过fcntl函数改变文件的I O模式 方法三 如果文件已经打开 也可通过ioctl函数来改变I O操作的方式 同步非阻塞I O模式 多路复用I O模式 概念基于多路复用I O模式的进程可同时对多个文件描述符的读写状态进行检测 直到发现这些描述符中某个的状态发生了变化时返回 这表明检测到某文件的I O操作已经完成 此时 进程可根据返回的状态进行真正的读写操作 多路复用I O模式 多路复用I O模式 信号驱动的I O模式 概念信号驱动I O模式是利用文件描述符的I O状态的变化 产生SIGIO信号 通过对SIGIO信号的处理 读写相应的数据 信号驱动的I O模式 信号驱动的I O模式 实现步骤1 利用signal或sigaction函数定义信号SIGIO的处理函数 2 使用fcntl函数对文件描述符在状态发生变化产生SIGIO信号时 设置信号发送的对象 3 在运用open函数打开文件时 或运用fcntl函数对已打开的文件 设置为O ASYNC方式 异步I O模式 概念在进程发出I O读写请求后 无论I O操作是否完成 立刻返回 继续执行后续的代码 当要求的I O操作完成时 内核向发出请求的进程发送信号 通知I O操作已完成 此时 操作的数据已就需 无需在内核与用户空间之间进行拷贝 这种I O操作方式称为异步I O模式 异步I O模式 在POSIX1003 1标准中 定义了异步I O模式的函数接口 Linux内核从版本2 5开始支持异步I O模式 在文件操作集中增加了异步I O的操作接口 API函数aio read aio write aio error aio return 内存的I O映射 内存的I O映射 概念内存的I O映射是将文件某区间的内容映射至进程的虚拟地址空间的某个区域的技术 通过对文件的内存I O映射 可使用户对文件的操作转换为对内存的操作 内存的I O映射 文件锁 文件锁 当多个进程同时存取同一个文件时 有可能出现数据不一致的现象 为了避免这种现象的发生 在多个进程同时存取同一个文件时 必须遵守一定的规则 锁就是这样一种机制 1 共享锁2 互斥锁 文件锁 终端I O 终端的行为模式 终端的行为的变化可通过改变其属性来实现 但由于终端所涉及的属性比较多 因此 不同属性值的组合 会使得终端表现出不同的行为方式 常用终端行为模式有以下三种 1 规范模式2 非规范模式3 原始模式 规范模式 概念这是我们常用的模式 是终端设备驱动通常使用的模式 终端驱动将从键盘接收的字符暂时存放于编辑缓冲区 因此 用户可对键盘输入进行行编辑 直至接收到回车键 终端驱动在接收到回车键后 将编辑缓冲区中的内容传递给应用程序 在这种模式下 终端驱动还负责对一些特殊字符进行处理 如CTRL C等 非规范模式 概念在这种模式下 终端驱动关闭了编辑缓冲区 驱动将从键盘上接收的字符直接传送给应用程序 其中包括退格键和光标移动键等 这些键不再具有编辑功能 但仍然保留了对一些特殊字符的处理 原始模式 概念在这种模式下 终端驱动不仅关闭了编辑缓冲区 而且也关闭了对一些特殊字符的处理 如退格键 光标移动键和CTRL C键等 终端驱动将接收的任意一个字符都上传给应用程序 终端模式的设置 API函数tcgetattr tcsetattr structter

温馨提示

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

评论

0/150

提交评论