第十六章系统服务常式.PPTVIP

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十六章系统服务常式

作業系統 第十六章 系統服務常式 第十六章 系統服務常式 中斷簡介 中斷描述表 例外處理 中斷處理 軟體中斷 x 系統呼叫 裝置驅動程式 摘要 中斷簡介 中斷被定義為會暫停目前指令的執行而跳到特定程式去執行的事件 中斷大致可分為 4 類 外部中斷:硬體裝置觸發,例如計時器中斷 例外中斷:由CPU產生,通常是因為指令執行時發失錯誤,例如除以零 陷阱中斷:程式是先安排好的中斷,例如系統呼叫時,利用中斷來要求核心提供系統服務 軟體中斷:完全由程式所控制而非作業系統,因此不會改變CPU的執行指令順序。雖然與一般中斷的定義不同,但是在linux內通稱為軟體中斷 Intel 定義之中斷 Intel 的文件中有另一種中斷的定義。CPU 會將暫停目前指令而跳到特定程式去執行的事件分為中斷與例外 中斷 可遮罩中斷 不可遮罩中斷 可被處理器偵測之例外 失敗 陷阱 中止 程式例外 由程式中主動要求 中斷描述表 Interrupt Descriptor Table、IDT 中斷描述表是一種系統表格,主要目的是將每一個中斷或例外的向量對應至適當的中斷或例外處理器 IDT 包含三種描述器型態 任務閘門 中斷閘門 陷阱閘門 閘門描述器的格式 例外處理 Linux 利用例外來達成兩個不同的目的 傳送信號給行程告知有異常狀況發生 處理需求分頁 Linux 例外處理器的執行流程,可分為三個步驟: 在核心的堆疊內儲存大部分暫存器的內容,這個部分的程式碼是由組合語言所撰寫 利用高階語言 C 函式處理例外 藉由 ret_from_exception() 函式離開例外處理器 中斷處理 為了使中斷處理器快速地完成,Linux 將中斷割成兩半 頂半部:具急迫性的動作 底半部:不急迫的動作 IRQ (interrupt request) 每個有中斷能力的硬體裝置均有一IRQ輸出線,連接到中斷控制器的輸入端 中斷處理 中斷控制器的運作機制 If IRQ連線有訊號產生 將收到的訊號轉換成中斷向量 將中斷向量儲存在中斷控制器的I/O Port,使得CPU可借由匯流排讀取 送訊號到CPU的INTR腳位,也就是發出中斷訊號 等待CPU將回應訊號(ACK)寫入中斷控制器的I/O Port,並同時崇設INTR End If Repeat Steps 1 and 2 中斷處理 中斷處理器要執行的四個基本動作 將 IRQ 的值和暫存器的內容放在核心的堆疊內 通知中斷控制器該 IRQ 已經處理完成,可以繼續服務其他中斷 執行所有共享此 IRQ 的中斷服務常式 最後跳至 ret_from_intr() 的位址終止執行 中斷處理 第十六章 系統服務常式 中斷簡介 軟體中斷 x 底半部 Softirq Tasklet 系統呼叫 裝置驅動程式 摘要 第十六章 系統服務常式 中斷簡介 軟體中斷 x 系統呼叫 執行系統呼叫 參數傳遞 封裝常式 裝置驅動程式 摘要 系統呼叫 讓使用者模式下的行程能夠使用磁碟、印表機等硬體裝置,作業系統提供了一組介面稱為系統呼叫 提供介於應用程式與硬體間的介面的好處 它使得程式設計更為容易 增加系統的安全性 介面讓程式能夠獲得更佳的可攜性 執行系統呼叫 使用者行程執行系統呼叫時,CPU 會切換至核心模式,並開始執行核心函式 為了將不同的系統呼叫號碼對應至適當的系統呼叫服務常式,Linux 核心中使用了一個系統呼叫分派表 執行一個系統呼叫 參數傳遞 呼叫系統呼叫時,通常需要傳遞參數給作業系統 在 Intel IA-32 的架構下,使用暫存器來傳遞參數有 2 個條件必須滿足 參數的長度不能超過暫存器大小 參數的個數不能超過 6 個 封裝常式 核心執行緒也能夠使用系統呼叫,只不過在核心內不能夠使用程式庫的函式,因此需要透過封裝常是來執行 Linux 定義六個巨集來簡化封裝常式的宣告 _syscall0 到 _syscall5 將欲傳遞的參數放入適當的暫存器內 並執行對應的系統呼叫 系統呼叫流程圖 第十六章 系統服務常式 中斷簡介 軟體中斷 系統呼叫 裝置驅動程式 字元與區塊裝置 核心程式環境 撰寫裝置驅動程式 摘要 裝置驅動程式 裝置驅動程式是核心之中,由一些函式與資料所組成的 I/O 裝置的軟體介面 裝置驅動程式可以被多個使用者的應用程式所同時共享 Linux 裝置驅動程式有以下幾點特徵 包含可以與硬體裝置溝通的常式,並提供作業系統統一的使用介面 裝置驅動程式是一個自訂的元件,可以動態地從作業系統中加入或移除 可以管理並控制在使用者程式與週邊裝置之間的資料傳遞 包含一段使用者所定義的核心,可以讓程式或是週邊裝置以 /dev 目錄下的檔案形式供其他行程使用 裝置驅動程式與系統關係圖 字元與區塊裝置 字元

文档评论(0)

2105194781 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档