《Linux設(shè)備驅(qū)動(dòng)開發(fā)詳解》第8章、Linux設(shè)備驅(qū)動(dòng)中的阻塞與非阻塞IO
資料介紹
阻塞操作是指在執(zhí)行設(shè)備操作時(shí)若不能獲得資源則掛起進(jìn)程,直到滿足可操作的條件后再進(jìn)行操作。
被掛起的進(jìn)程進(jìn)入休眠狀態(tài),被從調(diào)度器的運(yùn)行隊(duì)列移走,直到等待的條件被滿足。而非阻塞操作的進(jìn)程
在不能進(jìn)行設(shè)備操作時(shí)并不掛起,它或者放棄,或者不停地查詢,直至可以進(jìn)行操作為止。
驅(qū)動(dòng)程序通常需要提供這樣的能力:當(dāng)應(yīng)用程序進(jìn)行 read()、write()等系統(tǒng)調(diào)用時(shí),若設(shè)備的資源不能
獲取,而用戶又希望以阻塞的方式訪問設(shè)備,驅(qū)動(dòng)程序應(yīng)在設(shè)備驅(qū)動(dòng)的 xxx_read()、xxx_write()等操作中將
進(jìn)程阻塞直到資源可以獲取,此后,應(yīng)用程序的 read()、write()等調(diào)用才返回,整個(gè)過程仍然進(jìn)行了正確的
設(shè)備訪問,用戶并沒有感知到;若用戶以非阻塞的方式訪問設(shè)備文件,則當(dāng)設(shè)備資源不可獲取時(shí),設(shè)備驅(qū)
動(dòng)的 xxx_read()、xxx_write()等操作應(yīng)立即返回,read()、write()等系統(tǒng)調(diào)用也隨即被返回。
阻塞從字面上聽起來似乎意味著低效率,實(shí)則不然,如果設(shè)備驅(qū)動(dòng)不阻塞,則用戶想獲取設(shè)備資源只
能不停地查詢,這反而會(huì)無謂地耗費(fèi) CPU 資源。而阻塞訪問時(shí),不能獲取資源的進(jìn)程將進(jìn)入休眠,它將
CPU 資源讓給其他進(jìn)程。
因?yàn)樽枞倪M(jìn)程會(huì)進(jìn)入休眠狀態(tài),因此,必須確保有一個(gè)地方能夠喚醒休眠的進(jìn)程。喚醒進(jìn)程的地方
最大可能發(fā)生在中斷里面,因?yàn)橛布Y源獲得的同時(shí)往往伴隨著一個(gè)中斷。
代碼清單 8.1 和代碼清單 8.2 分別演示了以阻塞和非阻塞方式讀取串口一個(gè)字符的代碼。實(shí)際的串口
編程中,若使用非阻塞模式,還可借助信號(hào)(sigaction)以異步方式訪問串口以提高 CPU 利用率,而這里
僅僅是為了說明阻塞與非阻塞的區(qū)別。
- 《Linux設(shè)備驅(qū)動(dòng)開發(fā)詳解》第4章、Linux內(nèi)核模塊 0次下載
- 《Linux設(shè)備驅(qū)動(dòng)開發(fā)詳解》第5章、Linux文件系統(tǒng)與設(shè)備文件系統(tǒng) 0次下載
- 《Linux設(shè)備驅(qū)動(dòng)開發(fā)詳解》第6章、字符設(shè)備驅(qū)動(dòng) 23次下載
- 《Linux設(shè)備驅(qū)動(dòng)開發(fā)詳解》第7章、Linux設(shè)備驅(qū)動(dòng)中的并發(fā)控制 10次下載
- 《Linux設(shè)備驅(qū)動(dòng)開發(fā)詳解》第9章、Linux設(shè)備驅(qū)動(dòng)中的異步通知與異步IO 0次下載
- 《Linux設(shè)備驅(qū)動(dòng)開發(fā)詳解》第10章、中斷與時(shí)鐘PDF免費(fèi)下載 0次下載
- 《Linux設(shè)備驅(qū)動(dòng)開發(fā)詳解》第11章、內(nèi)存與IO訪問 6次下載
- 《Linux設(shè)備驅(qū)動(dòng)開發(fā)詳解》第13章、Linux塊設(shè)備驅(qū)動(dòng) 18次下載
- 《Linux設(shè)備驅(qū)動(dòng)開發(fā)詳解》第14章、Linux終端設(shè)備驅(qū)動(dòng) 8次下載
- 《Linux設(shè)備驅(qū)動(dòng)開發(fā)詳解》第15章、Linux的I2C核心、總線與設(shè)備驅(qū)動(dòng) 8次下載
- 《Linux設(shè)備驅(qū)動(dòng)開發(fā)詳解》第16章、Linux網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng) 5次下載
- 《Linux設(shè)備驅(qū)動(dòng)開發(fā)詳解》第17章、Linux音頻設(shè)備驅(qū)動(dòng) 17次下載
- 《Linux設(shè)備驅(qū)動(dòng)開發(fā)詳解》第18章、LCD設(shè)備驅(qū)動(dòng) 13次下載
- 《Linux設(shè)備驅(qū)動(dòng)開發(fā)詳解》第20章、USB主機(jī)與設(shè)備驅(qū)動(dòng) 8次下載
- 《Linux設(shè)備驅(qū)動(dòng)開發(fā)詳解》第23章、Linux設(shè)備驅(qū)動(dòng)的移植 9次下載
- Linux 驅(qū)動(dòng)開發(fā)與應(yīng)用開發(fā),你知道多少? 871次閱讀
- 什么是阻塞和非阻塞? 525次閱讀
- Verilog中阻塞和非阻塞賦值金規(guī) 1358次閱讀
- 時(shí)序邏輯中的阻塞和非阻塞 3091次閱讀
- VerilogHDL語言:清阻塞賦值和非阻塞賦值 1174次閱讀
- IEEE Verilog阻塞賦值和非阻塞賦值的區(qū)別 1.1w次閱讀
- 如何寫一個(gè)Linux設(shè)備驅(qū)動(dòng)程序 4532次閱讀
- Linux設(shè)備驅(qū)動(dòng)開發(fā)的基本知識(shí) 4393次閱讀
- 米爾科技Linux設(shè)備驅(qū)動(dòng)研究淺談 2035次閱讀
- 米爾科技LINUX設(shè)備驅(qū)動(dòng)程序教程 2103次閱讀
- 基于PXA255開發(fā)板外圍字符設(shè)備的嵌入式Linux字符設(shè)備驅(qū)動(dòng)設(shè)計(jì)與應(yīng)用 1199次閱讀
- 基于嵌入式Linux內(nèi)核的系統(tǒng)設(shè)備驅(qū)動(dòng)程序開發(fā)設(shè)計(jì) 1209次閱讀
- 想要駕馭Linux驅(qū)動(dòng)開發(fā),必須深刻理解Linux總線設(shè)備驅(qū)動(dòng)框架 1w次閱讀
- 深入分析verilog阻塞和非阻塞賦值 1426次閱讀
- 關(guān)于Linux設(shè)備驅(qū)動(dòng)中input子系統(tǒng)的介紹 2711次閱讀
下載排行
本周
- 1TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 2開關(guān)電源基礎(chǔ)知識(shí)
- 5.73 MB | 6次下載 | 免費(fèi)
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計(jì)
- 0.60 MB | 3次下載 | 免費(fèi)
- 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 0.61 MB | 2次下載 | 免費(fèi)
- 6基于FPGA的C8051F單片機(jī)開發(fā)板設(shè)計(jì)
- 0.70 MB | 2次下載 | 免費(fèi)
- 751單片機(jī)窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費(fèi)
- 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33564次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21548次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6653次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191185次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183278次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論