版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第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形状,另一
2、种方法是由操作系统通知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操作
3、时,必需等到I/O操作完成才干进展下一步的操作,这种操作方式称为同步阻塞I/O方式,同步阻塞I/O方式实例分析/ exam10-1.cint fd_line,fd_kb,fd_display;char chr_from_kb10;char chr_from_line10;void test()while (1) read(fd_kb, &chr_from_kb, 1); /非阻塞write(fd_line, &chr_from_kb, 1);read(fd_line, &chr_from_line, 1);/非阻塞write(fd_display, &chr_f
4、rom_line, 1);同步非阻塞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方式头文件#include #include #include 函数
5、原型int fcntl(int fildes, int cmd)int fcntl(int fildes, int cmd, long arg)功能设置文件描画符的相关特性参数fildes文件描画符cmd操作的指令arg操作的参数前往值错误,前往-1,否那么,依操作而定多路复用多路复用I/O方式方式 概念 基于多路复用I/O方式的进程可同时对多个文件描画符的读写形状进展检测,直到发现这些描画符中某个的形状发生了变化时前往。这阐明检测到某文件的I/O操作曾经完成。此时,进程可根据前往的形状进展真正的读写操作。多路复用多路复用I/O方式方式多路复用多路复用I/O方式方式头文件#include 函数
6、原型int select(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,struct timeval *timeout)功能I/O多路复用参数n 表示最大的文件描画符+1readfds 可读文件描画符集合writefds 可写文件描画符集合exceptfds 异常文件描画符集合timeout 超时终了时间前往值0 超时前往n假设检测到文件描画符形状发生改动,前往形状改动的个数0 假设发生错误,信号驱动的I/O方式概念 信号驱动I/O方式是利用文件描画符的I/O形状的变化,产生SIGIO信号,经过对SIGIO信号的处置,读
7、写相应的数据。信号驱动的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方
8、式。异步I/O方式 在POSIX 1003.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映射头文件#include 函数原型void * mmap(void *start, size_t length, int pr
9、ot , int flags, int fd, off_t offset)功能将文件的内容映射至内存参数start内存开场位置length映射内容的长度prot设定存取权限flags设定运转方式fd文件描画符offset在文件中的偏移量前往值胜利,前往内存映射的开场地址,否那么,前往-1文件锁文件锁文件锁文件锁当多个进程同时存取同一个文件时,有能够出现数据不一致的景象。为了防止这种景象的发生,在多个进程同时存取同一个文件时,必需遵守一定的规那么。锁就是这样一种机制。1. 共享锁2. 互斥锁文件锁文件锁头文件#include 函数原型int flock(int fd, int op)功能a为一个
10、翻开的文件描画符上锁或解锁参数fd已翻开的文件描画符opa加锁方式前往值胜利,前往0,否那么,前往-1,同时errno被设置终端终端I/O终端的行为方式终端的行为方式终端的行为的变化可经过改动其属性来实现,但由于终端所涉及的属性比较多,因此,不同属性值的组合,会使得终端表现出不同的行为方式。常用终端行为方式有以下三种:1. 规范方式2. 非规范方式3. 原始方式规范方式概念 这是我们常用的方式,是终端设备驱动通常运用的方式。终端驱动将从键盘接纳的字符暂时存放于编辑缓冲区。因此,用户可对键盘输入进展行编辑,直至接纳到回车键。终端驱动在接纳到回车键后,将编辑缓冲区中的内容传送给运用程序。在这种方式
11、下,终端驱动还担任对一些特殊字符进展处置,如CTRL-C等。非规范方式概念 在这种方式下,终端驱动封锁了编辑缓冲区,驱动将从键盘上接纳的字符直接传送给运用程序,其中包括退格键和光标挪动键等,这些键不再具有编辑功能,但依然保管了对一些特殊字符的处置。原始方式概念 在这种方式下,终端驱动不仅封锁了编辑缓冲区,而且也封锁了对一些特殊字符的处置,如退格键、光标挪动键和CTRL-C键等。终端驱动将接纳的恣意一个字符都上传给运用程序。终端方式的设置API函数tcgetattr()tcsetattr()struct termios tcflag_t c_iflag; / 输入方式tcflag_t c_oflag; / 输出方式 tcflag_t c_cflag; / 控制方式tcflag_t c_lflag; / 本地方式cc_t c_ccNCCS; / 特殊控制字元终端方式的设置头文件#include 函数原型int tcgetattr(int fd, struct termios *info)功能获取终端设备驱动程序的属性参数fd 终端文件描画符in
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026海南海口市美兰区校园招聘教师45人备考题库(一)含完整答案详解(夺冠)
- 2026湖南岳阳市云溪区“四海揽才”教师人才校园招聘13人备考题库附答案详解(巩固)
- 2026江铜集团江铜国贸第二批次社会招聘23人备考题库【有一套】附答案详解
- 绿色施工技术培训方案
- 瓦屋面施工技术要点方案
- 施工合同管理与执行方案
- 2026新疆第四师总医院春季招聘88人备考题库(名校卷)附答案详解
- 2026浙江温州瓯海区三垟街道社区卫生服务中心面向社会招聘工作人员1人备考题库带答案详解(综合题)
- 2026广东佛山高明技师学院、佛山市高明区职业技术学校招聘事业编制教师8人备考题库及参考答案详解ab卷
- 2026广东清远市阳山县融媒体中心招聘新闻人员4人备考题库一套附答案详解
- 第三章 开展社会工作服务应重点掌握的相关政治理论 社会工作综合能力(初级)
- 印刷操作员操作知识模拟考核试卷含答案
- 2025-2026学年六年级美术下册教学设计
- 2025年山东铁投集团社会公开招聘59人笔试参考题库附带答案详解
- 限额以下小型工程常见安全隐患指导手册(2026版)
- NLRP3炎症小体激活与细胞焦亡的信号关联
- 公路养护工节假日后复工安全考核试卷含答案
- 屋面防水施工安全措施方案
- 2025年详版征信报告个人信用报告样板模板新版可编辑
- 2026春招:中国联通笔试题及答案
- TCCIIA0004-2024精细化工产品分类
评论
0/150
提交评论