Linux高級I/O機制
2011-08-20 14:11一、課程目標
I/O常常是現(xiàn)代應(yīng)用程序的性能瓶頸,為突破這個瓶頸,現(xiàn)代操作系統(tǒng)不斷推出新的I/O機制,使高性能的I/O編程變成可能。本次課程將討論Linux下幾種高性能I/O的機制,這些功能都是基于成熟的系統(tǒng)調(diào)用,通過本次課程的學(xué)習(xí),學(xué)員將掌握以下內(nèi)容:
- 傳統(tǒng)File I/O;
- 散/聚 I/O (Scatter/Gather I/O);
- 阻塞式和非阻塞式I/O;
- I/O多路復(fù)用;
- select() ,? poll();
- Event poll (epoll);
- 異步I/O;
- 運用I/O多路復(fù)用機制和異步I/O機制提高網(wǎng)絡(luò)應(yīng)用的并發(fā)響應(yīng)和性能。
二、參訓(xùn)要求
參加本次課程的學(xué)員須具備以下能力:
- 本次課程使用 C語言 教學(xué),所以學(xué)員需擁有較好的C語言基礎(chǔ);
- 能熟練使用常用的Linux命令;
- 由于本次課程涉及socket編程,所以學(xué)員需有Linux下socket編程的經(jīng)歷;
- 能熟練使用gcc、gdb、熟練撰寫makefile;
- 最好熟練使用vi、emacs等文本編輯器其中的一種。
三、課程實踐環(huán)境
- 學(xué)員自備電腦
- 操作系統(tǒng):GNU/Linux 2.6+(建議使用Redhat AS 5+或Ubuntu、Fedora)
- 編譯器:GCC v4.1+、GDB v7.0+
- 可選IDE:Eclipse CDT
四、課程大綱
本次課程由以下幾個部分構(gòu)成:
1、預(yù)備知識
- 理解:UNIX下一切皆文件
- I/O的實質(zhì)和I/O的步驟
2、文件I/O
- Linux I/O系統(tǒng)調(diào)用與C標準庫stdio的比較
- I/O系統(tǒng)調(diào)用: open(), close(), read(), write()
- 控制I/O的Buffer
- 讀寫指針的定位:lseek()
- I/O控制:ioctl()
- 原子操作和數(shù)據(jù)競態(tài)
- 文件控制: fcntl()
- 文件打開的狀態(tài)標志(status flags)
- 文件描述符
- 復(fù)制文件描述符 (dup(), dup2())
3、散/聚I/O (Scatter/Gather I/O)
- 什么是散/聚 I/O,為什么需要散/聚 I/O
- 系統(tǒng)調(diào)用:readv(), writev()
4、I/O多路復(fù)用 (I/O Multiplexing)
- 什么是I/O多路復(fù)用
- I/O多路復(fù)用和多線程并發(fā)處理I/O的區(qū)別
- select(), poll():傳統(tǒng)的UNIX I/O多路復(fù)用機制
?
- select(), pselect()
- poll(), ppoll()
- Epoll:Linux系統(tǒng)新的I/O多路復(fù)用機制
?
- Event poll介紹
- 創(chuàng)建epoll實例
- 控制epoll
- 等待I/O事件
- epoll的兩種觸發(fā)方式:水平觸發(fā)(level-triggered)、邊緣觸發(fā)(edge-triggered)
5、異步I/O
- 關(guān)于同步I/O:阻塞式I/O和非阻塞式I/O
- 什么異步I/O
- 理解同步I/O和異步I/O的差別
- 異步I/O重要數(shù)據(jù)結(jié)構(gòu):異步I/O控制塊--struct aiocb
- 異步讀、寫操作:aio_read(), aio_write()
- 檢查異步操作的結(jié)果:aio_error(), aio_return()
- 取消異步操作:aio_cancel()
- 異步文件同步:aio_fsync()
6、使用高性能I/O機制提高網(wǎng)絡(luò)服務(wù)端應(yīng)用的性能
- 為什么傳統(tǒng)的I/O機制會導(dǎo)致服務(wù)端應(yīng)用的性能瓶頸
- 使用select()和poll()實現(xiàn)ACE中的Reactor模式
- 使用epoll實現(xiàn)ACE中的Reactor模式
- 在網(wǎng)絡(luò)應(yīng)用中使用異步I/O機制:模擬ACE中Proactor模式和框架
- 實例演示,區(qū)別傳統(tǒng)I/O機制和高性能I/O機制對于服務(wù)端應(yīng)用的重要性
五、時間安排
課程時間:2天,以每天6小時計,具體安排如下:
- Day1
?
- 1 - 預(yù)備知識
- 2 - 文件I/O
- 3 - 散/聚 I/O
- 4 - I/O多路復(fù)用
- Day2
?
- 5 - 異步I/O
- 6 - 高性能I/O機制和網(wǎng)絡(luò)服務(wù)端應(yīng)用
六、課程資源
????? 可獲取的課程資源見: 教學(xué)資源 。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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