Linux高級I/O機制
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機制和網絡服務端應用
六、課程資源
????? 可獲取的課程資源見: 教學資源 。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
