作业系统第十六章系统服务常式.ppt

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
作业系统第十六章系统服务常式.ppt

作業系統 第十六章 系統服務常式 第十六章 系統服務常式 中斷簡介 中斷描述表 例外處理 中斷處理 軟體中斷 系統呼叫 裝置驅動程式 摘要 中斷簡介 (1) 中斷被定義為會暫停目前指令的執行而跳到特定程式去執行的事件 中斷大致可分為 4 類 外部中斷 例外中斷 陷阱中斷 軟體中斷 中斷簡介 (2) Intel 的文件中有另一種中斷的定義。CPU 會將暫停目前指令而跳到特定程式去執行的事件分為中斷與例外 中斷 可遮罩中斷 不可遮罩中斷 例外 失敗 陷阱 中止 程式例外 中斷描述表 中斷描述表是一種系統表格,主要目的是將每一個中斷或例外的向量對應至適當的中斷或例外處理器 IDT 包含三種描述器型態 任務閘門 中斷閘門 陷阱閘門 閘門描述器的格式 例外處理 Linux 利用例外來達成兩個不同的目的 傳送信號給行程告知有異常狀況發生 處理需求分頁 Linux 例外處理器的執行流程,可分為三個步驟: 在核心的堆疊內儲存大部分暫存器的內容,這個部分的程式碼是由組合語言所撰寫 利用高階語言 C 函式處理例外 藉由 ret_from_exception() 函式離開例外處理器 中斷處理 為了使中斷處理器快速地完成,Linux 將中斷割成兩半 頂半部:具急迫性的動作 底半部:不急迫的動作 中斷處理器要執行的四個基本動作 將 IRQ 的值和暫存器的內容放在核心的堆疊內 通知中斷控制器該 IRQ 已經處理完成,可以繼續服務其他中斷 執行所有共享此 IRQ 的中斷服務常式 最後跳至 ret_from_intr() 的位址終止執行 串列連結兩個 8259A 中斷處理 第十六章 系統服務常式 中斷簡介 軟體中斷 底半部 Softirq Tasklet 系統呼叫 裝置驅動程式 摘要 軟體中斷 底半部的作用是將較不急迫的動作延後處理以縮短中斷延遲 底半部的設計是不可重複進入的,因此底半部強烈要求序列化 Softirq 如同 Linux 2.2 中的底半部,不過它是可重複進入的,甚至兩個處理器可以同時執行相同的 softirq 在 Linux 2.4 也有一個類似底半部的機制稱為 tasklet Tasklet 架構在 softirq 之上,不過它們要求本身序列化 底半部 底半部是一個低優先權的函式用來處理中斷 所有的底半部皆被事先定義在核心裏,而且最多只有 32 個 核心會在適當時機執行底半部的工作 核心完成一個系統呼叫 核心完成一個例外處理 核心終止 do_IRQ() 函式(即完成中斷處理) 核心執行 schedule() 函式選擇新的行程給 CPU 執行 從中斷或例外處理返回 Softirq Softirq 與底半部都是將中斷處理的一部分動作延遲到後面執行 softirq 的設計使得 SMP 的系統能夠更有彈性地去處理中斷 核心內每1個 CPU 可以禁止、啟動、執行不同的 softirq 副本,並且有規律地輪詢 softirqs 的旗標 softirq向量表和旗標 Tasklet Tasklet 與 softirqs 主要的不同點在於 tasklet 是可以被動態註冊的 同一個 tasklet 不能夠同時執行於多個 CPU tasklet串列 第十六章 系統服務常式 中斷簡介 軟體中斷 系統呼叫 執行系統呼叫 參數傳遞 封裝常式 裝置驅動程式 摘要 系統呼叫 讓使用者模式下的行程能夠使用磁碟、印表機等硬體裝置,作業系統提供了一組介面稱為系統呼叫 提供介於應用程式與硬體間的介面的好處 它使得程式設計更為容易 增加系統的安全性 介面讓程式能夠獲得更佳的可攜性 執行系統呼叫 使用者行程執行系統呼叫時,CPU 會切換至核心模式,並開始執行核心函式 為了將不同的系統呼叫號碼對應至適當的系統呼叫服務常式,Linux 核心中使用了一個系統呼叫分派表 執行一個系統呼叫 參數傳遞 呼叫系統呼叫時,通常需要傳遞參數給作業系統 在 Intel IA-32 的架構下,使用暫存器來傳遞參數有 2 個條件必須滿足 參數的長度不能超過暫存器大小 參數的個數不能超過 6 個 封裝常式 核心執行緒也能夠使用系統呼叫,只不過在核心內不能夠使用程式庫的函式,因此需要透過封裝常是來執行 Linux 定義六個巨集來簡化封裝常式的宣告 系統呼叫流程圖 第十六章 系統服務常式 中斷簡介 軟體中斷 系統呼叫 裝置驅動程式 字元與區塊裝置 核心程式環境 撰寫裝置驅動程式 摘要 裝置驅動程式 裝置驅動程式是核心之中,由一些函式與資料所組成的 I/O 裝置的軟體介面 裝置驅動程式可以被多個使用者的應用程式所同時共享 Linux 裝置驅動程式有以下幾點特徵 包含可以與硬體裝置溝通的常式,並提供作業系統統一的使

文档评论(0)

docinpfd + 关注
实名认证
内容提供者

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

版权声明书
用户编号:5212202040000002

1亿VIP精品文档

相关文档