Linux高级I/O机制

系统 1649 0

Linux高级I/O机制

Linux高级I/O机制

一、课程目标

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机制和网络服务端应用

六、课程资源

      可获取的课程资源见: 教学资源

Linux高级I/O机制


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论