- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
和缓冲观念2驱动程式
第 16 章程式設計師的設備、I/O、和緩衝觀念 驅動程式 驅動程式是相當低階的程式碼,提供應用程式和外部設備之間的介面,使用中斷機制來執行I/O設備的動作。 一個外部設備具有一個驅動程式,多個設備就有多個驅動程式。 驅動程式屬於作業系統一部份。 驅動程式目的 驅動程式最重要的目的在於設備獨立性。 驅動程式負責處理設備的所有硬體細節,讓應用程式不必理會細節,就可以簡單地控制設備。 驅動程式組成觀念 下半段:中斷發生所引入的處理程序 上半段:應用程式要求I/O動作所引入的程序 共用變數:協調以上兩個部分的狀態資訊 驅動程式架構圖 設備型態 字元導向設備 又稱為位元組導向設備 每一次傳輸一個位元組 比如:鍵盤、滑鼠 區塊導向設備 一次可以傳輸整個區塊的資料 比如:磁碟機、網路介面卡 驅動程式範例 佇列輸出動作 驅動程式會浪費時間,來輪詢設備的就緒狀態。 為了避免等待,可以在驅動程式內部建構一個佇列,專門儲存輸出請求。 驅動程式上半段不必等待回應,直接把請求堆積在佇列,發出一個中斷要求,然後返回應用程式。 等到設備結束動作後,會發生中斷,讓下半段從該佇列擷取下一個請求,啟動設備執行功能,最後再從中斷返回。 佇列請求的驅動程式 輸出動作所耗費的步驟 強迫中斷 處理器可以直接在CSR上,設定強迫中斷位元,如下: 設備CSR有一個位元B,可以要求設備發生強迫中斷。 如果設備空閒,則位元B會要求設備產生一個中斷。 如果設備忙碌,則位元B不會產生任何立即的效果。 佇列輸入動作 雙向設備 雙向設備:支援輸入和輸出傳輸的設備 單向設備:只能進行一個方向傳輸的設備 兩者之間的界限並不明顯 即使是單向設備,也可能與處理器彼此交換資訊。 比如:印表機為單向設備,但印表機硬體必須提供狀態資訊給處理器。 雙向設備 (Cont.) 驅動程式如何處理雙向設備呢? 有兩個方法: 把雙向設備當作分開的兩個設備,一個處理輸入,另一個負責輸出。 把雙向設備當作單一設備,但可以處理兩種命令,一個輸入,另一個輸出。 非同步 vs 同步程式規劃 同步程式規劃 用在傳統應用程式。 從程式開始到結束,都由指令傳輸控制。 非同步程式規劃 用在中斷機制。 程式設計師會為不同的事件,撰寫不同的程式碼。 比同步程式更具挑戰性。 資源互斥 用於非同步程式規劃 資源互斥:只能讓一方獨家使用,無法容許兩者同時使用。 應用程式的I/O觀點 少數程式設計師從事於驅動程式的撰寫工作。 程式設計師運用高階語言的階層概念,來包裝程式語言所提供的能力,隱藏低階的硬體細節,比如: 磁碟機使用檔案(file) 顯示器使用視窗(window) 執行函數庫 編譯器並不是要把I/O細節編碼到程式內部,通常應用程式執行I/O動作時,編譯器會把執行函數庫當作中間介面,編譯後的程式碼會引入函數庫功能,以便執行實際的I/O動作。 應用程式、函數庫和作業系統的關係 Unix作業系統支援的I/O函數 I/O動作成本 使用系統呼叫來引入驅動程式會造成額外負荷,相對於傳統的程序呼叫而言,顯然系統呼叫會浪費更多的成本。 降低系統呼叫次數 為了降低額外負荷和最佳化I/O效能,程式設計師必須減少應用程式所引入的系統呼叫次數,減少系統呼叫次數的關鍵技巧在於:讓每一個系統呼叫傳輸更多的資料。 緩衝 緩衝是一種重要的最佳化方法 緩衝:描述I/O累積資料的方式 緩衝器:置放資料的記憶體區域。 緩衝原則: 在輸出階段,為了減少系統呼叫的次數,先把資料累積在緩衝器,讓每一次的系統呼叫可以傳輸更多的資料。 自動緩衝 應用程式不一定要進行系統呼叫來執行I/O功能,可以讓應用程式使用函數庫功能。 如果程式語言具有內建的I/O能力,執行函數庫會建構緩衝,讓編譯器產生程式碼,以引入適當的函數庫常式。 如果程式語言沒有內建的I/O能力,程式設計師必須呼叫緩衝函數庫常式,而非系統呼叫。 函數庫的輸出函數 建構緩衝 Setup 啟始緩衝 指定緩衝器大小 典型緩衝大小從8KB到128KB output 當應用程式需要傳輸資料,會呼叫output 資料滿載後,會傳輸到OS Terminate 結束資料傳輸 強迫資料傳輸到OS 緩衝輸出的實現 清空緩衝 如果應用程式使用緩衝器,則發射出去的訊息可能正在緩衝器等待,尚未送出。 清空緩衝: 強迫應用程式立刻進行輸出 flush函數: 強迫輸出目前未全滿的緩衝器資料 緩衝器將被清空 清空緩衝的實現 terminate函數的實現 假設函數庫提供flush函數,則terminate函數可以如下實現: 先呼叫fulsh函數 來清空緩衝 清空緩衝的結論 程式設計師可以使用flush函數,來強迫緩衝器的輸出資料立刻傳送到作業系統內的驅動程式,當然如果是空的緩衝器,則flush
您可能关注的文档
- 2014年三季度发生重大生产安全事故责任企业-国家安全生产监督管理.doc
- 2011级PPT作品17班滕翔宇.ppt
- 2011年全国中等职业学校信息化教学大赛获奖-中华人民共和国教育部.doc
- 2014苏州市属医疗卫生事业单位招聘笔试备考指导-浙江中公教育.ppt
- 2016年工业转型升级强基工程重点方向汇总表.doc
- 41.食用菌液体菌种发酵制备技术-河北经合网.doc
- 2016版居民医保协议-鞍山市社会保险局.doc
- 3Agilor企业管理器-安捷(Agilor)实时数据库-中国科学院软件研究所.doc
- ASTREE味觉指纹分析仪操作简明步骤系统启动前请确认windows系统.doc
- 50篇养生集-通知.doc
最近下载
- TBNCY002-2023 西双版纳红茶 晒红茶.pdf VIP
- 机关单位人力资源管理中存在的问题及解决对策.docx VIP
- 2025年中级(四级)营销员职业技能鉴定《理论知识》真题卷(后附答案及解析).pdf VIP
- 大数据概论教学课件.pptx VIP
- 西双版纳红茶 晒红茶.docx VIP
- 室内装修全工程施工方案(3篇).docx VIP
- 2025年卫生事业单位招聘考试(中医学基础知识)历年参考题库含答案详解(5卷).docx VIP
- 50个广告分析.doc VIP
- GB32030-2022 潜水电泵能效限定值及能效等级 (2).pdf VIP
- (语文)福州时代中学2020级初一新生入学检测.pdf VIP
文档评论(0)