linux中i/o(Linux高级I/O机制)
导读:2011-08-20 14:11...
2011-08-20 14:11
一 、课程目标
I/O常常是现代应用程序的性能瓶颈 ,为突破这个瓶颈 ,现代操作系统不断推出新的I/O机制 ,使高性能的I/O编程变成可能 。本次课程将讨论Linux下几种高性能I/O的机制 ,这些功能都是基于成熟的系统调用 ,通过本次课程的学习 ,学员将掌握以下内容:
传统File I/O; 散/聚 I/O (Scatter/Gather I/O); 阻塞式和非阻塞式I/O; I/O多路复用; select() , poll(); Event poll (epoll); 异步I/O; 运用I/O多路复用机制和异步I/O机制提高网络应用的并发响应和性能 。二 、参训要求
参加本次课程的学员须具备以下能力:
本次课程使用 C语言 教学 ,所以学员需拥有较好的C语言基础; 能熟练使用常用的Linux命令; 由于本次课程涉及socket编程 ,所以学员需有Linux下socket编程的经历; 能熟练使用gcc 、gdb 、熟练撰写makefile; 最好熟练使用vi 、emacs等文本编辑器其中的一种 。三 、课程实践环境
学员自备电脑 操作系统:GNU/Linux 2.6+(建议使用Redhat AS 5+或Ubuntu 、Fedora) 编译器:GCC v4.1+ 、GDB v7.0+ 可选IDE:Eclipse CDT四 、课程大纲
本次课程由以下几个部分构成:
1 、预备知识
理解:UNIX下一切皆文件 I/O的实质和I/O的步骤2 、文件I/O
Linux I/O系统调用与C标准库stdio的比较 I/O系统调用: open(), close(), read(), write() 控制I/O的Buffer 读写指针的定位:lseek() I/O控制:ioctl() 原子操作和数据竞态 文件控制: fcntl() 文件打开的状态标志(status flags) 文件描述符 复制文件描述符 (dup(), dup2())3 、散/聚I/O (Scatter/Gather I/O)
什么是散/聚 I/O ,为什么需要散/聚 I/O 系统调用:readv(), writev()4、I/O多路复用 (I/O Multiplexing)
什么是I/O多路复用 I/O多路复用和多线程并发处理I/O的区别 select(), poll():传统的UNIX I/O多路复用机制 select(), pselect() poll(), ppoll() Epoll:Linux系统新的I/O多路复用机制 Event poll介绍 创建epoll实例 控制epoll 等待I/O事件 epoll的两种触发方式:水平触发(level-triggered) 、边缘触发(edge-triggered)5 、异步I/O
关于同步I/O:阻塞式I/O和非阻塞式I/O 什么异步I/O 理解同步I/O和异步I/O的差别 异步I/O重要数据结构:异步I/O控制块--struct aiocb 异步读、写操作:aio_read(), aio_write() 检查异步操作的结果:aio_error(), aio_return() 取消异步操作:aio_cancel() 异步文件同步:aio_fsync()6 、使用高性能I/O机制提高网络服务端应用的性能
为什么传统的I/O机制会导致服务端应用的性能瓶颈 使用select()和poll()实现ACE中的Reactor模式 使用epoll实现ACE中的Reactor模式 在网络应用中使用异步I/O机制:模拟ACE中Proactor模式和框架 实例演示 ,区别传统I/O机制和高性能I/O机制对于服务端应用的重要性五 、时间安排
课程时间:2天 ,以每天6小时计 ,具体安排如下:
Day1 1 - 预备知识 2 - 文件I/O 3 - 散/聚 I/O 4 - I/O多路复用 Day2 5 - 异步I/O 6 - 高性能I/O机制和网络服务端应用六 、课程资源
可获取的课程资源见:教学资源 。
声明:本站所有文章,如无特殊说明或标注 ,均为本站原创发布 。任何个人或组织 ,在未征得本站同意时,禁止复制 、盗用 、采集 、发布本站内容到任何网站 、书籍等各类媒体平台 。如若本站内容侵犯了原著者的合法权益 ,可联系我们进行处理 。
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!