作業系統 第十六章 系統服務常式.

Slides:



Advertisements
Similar presentations
Linux 操作系统分析 中国科学技术大学计算机系 陈香兰( 0512 - ) Autumn 2010.
Advertisements

定 格 入 格 破 格 —— 新诗仿写复习训练 仿照下列句子,再把 “ 人生 ” 比喻成 “ 大海 ”“ 天空 ” , 造两个句子。 如果说人生是一首优美的乐曲,那么痛苦则 是其中一个不可或缺的音符。 参考答案: 1 、如果说人生是一望无际的大海,那么挫折则 是其中一个骤然翻起的浪花。 2 、如果说人生是一片湛蓝的天空,那么失意则.
《微型计算机技术 及应用》 ( 第 4 版) —— 戴梅萼 史嘉权. 目标 深刻理解 牢固掌握 灵活应用.
第 3 章操作系统基础 3.1 操作系统概述 3.2 操作系统的功能模块 3.3 典型操作系统概述.
高雄縣立福誠高級中學暑假文藝營系列之一 贏在寫作力 講師:李菀菁、林正隆.
南山中學 102學年度 性別平等教育週性別教育 性騷擾防治.
報告人:教育部會計處處長 黃 永 傳 日 期:103 年12 月27 日
性教育教學模組設計 主題:身體自主權 台中市忠明國小 巫偉鈴.
整体销售方案 中山市美好物业代理有限公司
開南大學 資訊管理學系 學分學程相關說明.
厦门大学数据库实验室 刘颖杰 2014年11月15日 实习总结报告 厦门大学数据库实验室 刘颖杰 2014年11月15日.
新建本科院校 应用型人才培养若干问题探析 张德江.
精品开放课程的 建设与应用 谢幼如 教授 广东省高校教育技术中心 华南师范大学教育信息技术学院
龙芯多媒体电脑教室培训 龙梦极域电子教室 江苏龙芯梦兰科技股份有限公司.
臺中市頭家國小 生理衛生講座 青春期的奧秘 ‧說到青春期,你會想到? ‧班級表現最好的,有獎徵答有優先權。 葉孟娟老師、黃文玲老師.
CPU 一、基本知识 二、常见品牌 三、评价指标 四、AMD VS Intel 五、单核与双核 六、多核
第二章 项目一:企业厂区与车间平面设计 1.
香港普通話研習社科技創意小學 周順強老師.
第2章:企業組織 張緯良 世新大學資訊管理系.
1. 民主社會裡,公民的參與有其重要性,而透過政治參與無法達成下列哪一項目的?
日本的环境保护政策 化生 邱慧雯.
Windows Server 2003操作系统相关配置
第8章 机床操作 主讲:臧红彬 博士.
第七章 异常控制流 CPU控制流的概念 进程上下文切换 异常和中断的基本概念 异常和中断的响应和处理
Chapter 6 時序.
任务2: 通报的写作.
把握命题趋势 ★ 科学应考 实现最后阶段的有效增分
第十二章 生产与费用循环审计.
CPU的制造 罗曼琳
用字母表示数 A=X+Y+Z 执教:建阳市西门小学 雷正明.
Xen基础架构安全性分析 云朋
資策會 南區資訊處 教育訓練中心 吳建興 個人電腦組裝 PC DIY 資策會 南區資訊處 教育訓練中心 吳建興
第8章 现代微型计算机 x86系列微处理器 8.2 微型计算机体系结构 8.3 存储管理技术 8.4 多任务管理与I/O管理
第7章 中断与异常.
中国科学技术大学计算机系 陈香兰(0512- ) spring 2011
第 3 章 中断和中断处理 硬件中断机制是一个操作系统内核中非常重要的部分。它的设计直接影响到操作系统整体的性能。它与硬件平台和内核的其它部分,如内存管理、进程调度、设备驱动等都有很密切的关系。因此,它也是操作系统中比较复杂的一个模块。 Linux的硬件中断机制的设计有很多独到之处,本章把kernel.
CH.8 硬體管理.
… 第一节 外设的定时方式与信息交换 一、外围设备的定时方式 CPU 1、速度极慢或简单的外围设备 2、慢速或中速的外围设备
陈香兰 助教:陈博、李春华 Spring 2009 嵌入式操作系统 陈香兰 助教:陈博、李春华 Spring 2009.
计算机组装、维修及 实训教程 第15章 微机硬件的组装 2018年12月25日星期二.
2018年12月29日 单片机原理与应用 单片机概述.
亚东科技出品 神盾终端免运维管理系统 亚东科技出品
第五章,抢占式调度(lab3).
作業系統實習課(三) -建造新的System Call-
主日信息: 講題:腳步 經文:箴言16:1~9 大綱: 壹、人的心 貳、人的謀算 參、交託耶和華 肆、耶和華的指引 金句:箴16:9
中国科学技术大学计算机系 陈香兰(0512- ) 助教:孟宁 Fall 2009
第五章 中断与异常 中断的基本知识 中断描述符表的初始化 中断处理 中断的下半部处理机制 中断的应用-时钟中断.
7.1.1 设备管理的功能(P95) 分配设备:按设备的不同类型和操作系统选用的算法分配。包括分配相应的通道、设备控制器以及对未分配到的任务或怍业进行排队等; 控制和实现真正的输入输出操作。包括通道程序控制、启动设备、及时响应及处理中断讯号等; 对输入输出缓冲区进行管理。例如逻辑名的管理,多个缓冲区的分时以及串并行操作,同类多个外部设备的均衡工作,避免“忙的忙”和“闲的闲”;
认识计算机系统.
新一代无盘技术 在图书馆电子阅览室的应用 报告人:张智翔 /4/9.
生源地信用助学贷款系统 操作培训课件 福建省农村信用社联合社 张健明 2014年6月30日 共1-78页.
作業系統 第三章 作業系統結構.
8051單晶片 蘇恆生 老師.
作業系統 第十六章 系統服務常式.
第 3 章、組合語言 作者:陳鍾誠 旗標出版社.
Chap2 Stack & Queue.
本节内容 代码跨段 本质就是修改CS段寄存器 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
微型计算机原理与接口技术 (第2版) 赵宏伟 于秀峰 黄永平 秦贵和 北京:科学出版社 出版 吉林大学计算机科学与技术学院 制作.
中国科学技术大学计算机系 陈香兰(0512- ) Spring 2011
第五章 输入/输出系统 本章讨论: 接口的基本概念 总线的基本概念 中断方式及其接口组成 中断方式及其接口组成 DMA方式及其接口组成
主題四: 教育發展與大學學群 報告人: 張明敏老師.
第12章 中断 罗文坚 中国科大 计算机学院
架构师成长感悟 吴隆烽
第1章 单片机及其开发环境 教学内容 初识单片机 单片机应用系统 Keil µVision软件的使用.
厉害了,我的国! 15会计2班团支部 2018年4月20日.
一、学生实验:探究——电流与电压、电阻的关系
4.1 概 述 4.2 组合体视图绘制方法 4.3 组合体的尺寸标注 4.4 组合体视图的读图方法
104 四技二專甄選入學 簡章解析 輔導室 何乙娟.
本节内容 任务段 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
Presentation transcript:

作業系統 第十六章 系統服務常式

第十六章 系統服務常式 中斷簡介 中斷描述表 例外處理 中斷處理 軟體中斷 系統呼叫 裝置驅動程式 摘要

中斷簡介 (1) 中斷被定義為會暫停目前指令的執行而跳到特定程式去執行的事件 中斷大致可分為 4 類 外部中斷 例外中斷 陷阱中斷 軟體中斷

中斷簡介 (2) Intel 的文件中有另一種中斷的定義。CPU 會將暫停目前指令而跳到特定程式去執行的事件分為中斷與例外 中斷 例外 可遮罩中斷 不可遮罩中斷 例外 失敗 陷阱 中止 程式例外

中斷描述表 中斷描述表是一種系統表格,主要目的是將每一個中斷或例外的向量對應至適當的中斷或例外處理器 IDT 包含三種描述器型態 任務閘門 中斷閘門 陷阱閘門

閘門描述器的格式 000 0 0 0 0 1 1 1 0 保留 P DPL 0 0 1 1 0 TSS分段選擇器 位移(16-31) 0 1 1 1 1 分段選擇器 位移(0-15) 63 48 47 44 40 32 63 48 47 44 40 37 32 63 48 47 44 40 37 32 31 16 0 31 16 0 31 16 0 陷阱閘門描述器 中斷閘門描述器 任務閘門描述器

例外處理 Linux 利用例外來達成兩個不同的目的 Linux 例外處理器的執行流程,可分為三個步驟: 傳送信號給行程告知有異常狀況發生 處理需求分頁 Linux 例外處理器的執行流程,可分為三個步驟: 在核心的堆疊內儲存大部分暫存器的內容,這個部分的程式碼是由組合語言所撰寫 利用高階語言 C 函式處理例外 藉由 ret_from_exception() 函式離開例外處理器

中斷處理 為了使中斷處理器快速地完成,Linux 將中斷割成兩半 中斷處理器要執行的四個基本動作 頂半部:具急迫性的動作 底半部:不急迫的動作 中斷處理器要執行的四個基本動作 將 IRQ 的值和暫存器的內容放在核心的堆疊內 通知中斷控制器該 IRQ 已經處理完成,可以繼續服務其他中斷 執行所有共享此 IRQ 的中斷服務常式 最後跳至 ret_from_intr() 的位址終止執行

串列連結兩個 8259A 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7 8259A Slave 8259A Master INT IRO IRQ

中斷處理 IDT[32+n] INT PIC IRQn_interrupt() do_IRQ(n) 中斷處理常式1 中斷處理常式2 硬體 軟體 (中斷處理)

第十六章 系統服務常式 中斷簡介 軟體中斷 底半部 Softirq Tasklet 系統呼叫 裝置驅動程式 摘要

軟體中斷 底半部的作用是將較不急迫的動作延後處理以縮短中斷延遲 底半部的設計是不可重複進入的,因此底半部強烈要求序列化 Softirq 如同 Linux 2.2 中的底半部,不過它是可重複進入的,甚至兩個處理器可以同時執行相同的 softirq 在 Linux 2.4 也有一個類似底半部的機制稱為 tasklet Tasklet 架構在 softirq 之上,不過它們要求本身序列化

底半部 底半部是一個低優先權的函式用來處理中斷 所有的底半部皆被事先定義在核心裏,而且最多只有 32 個 核心會在適當時機執行底半部的工作 核心完成一個系統呼叫 核心完成一個例外處理 核心終止 do_IRQ() 函式(即完成中斷處理) 核心執行 schedule() 函式選擇新的行程給 CPU 執行

從中斷或例外處理返回 schedule() 重新排程 v86_signal_return: signal_return: 是 否 save_v86_state() do_signal() restore_all 巢狀的核心控制路徑? ret_from_intr: ret_from_exception: ret_from_sys_call: GET_CURRENT 須要 重新排程? 訊號未處理? v86 保護模式?

Softirq Softirq 與底半部都是將中斷處理的一部分動作延遲到後面執行 softirq 的設計使得 SMP 的系統能夠更有彈性地去處理中斷 核心內每1個 CPU 可以禁止、啟動、執行不同的 softirq 副本,並且有規律地輪詢 softirqs 的旗標

softirq向量表和旗標 softirq_pending[NR_CPU] 遮罩位元 00001101 softirq_vec[32] 處理器0和資料0 tasklet 處理器 softirq_pending[NR_CPU] softirq_vec[32] 遮罩位元

Tasklet Tasklet 與 softirqs 主要的不同點在於 tasklet 是可以被動態註冊的 同一個 tasklet 不能夠同時執行於多個 CPU

tasklet串列 NULL tasklet_vec[cpu].list tasklet list

第十六章 系統服務常式 中斷簡介 軟體中斷 系統呼叫 執行系統呼叫 參數傳遞 封裝常式 裝置驅動程式 摘要

系統呼叫 讓使用者模式下的行程能夠使用磁碟、印表機等硬體裝置,作業系統提供了一組介面稱為系統呼叫 提供介於應用程式與硬體間的介面的好處 它使得程式設計更為容易 增加系統的安全性 介面讓程式能夠獲得更佳的可攜性

執行系統呼叫 使用者行程執行系統呼叫時,CPU 會切換至核心模式,並開始執行核心函式 為了將不同的系統呼叫號碼對應至適當的系統呼叫服務常式,Linux 核心中使用了一個系統呼叫分派表

執行一個系統呼叫 … xyz() sys_xyz() { } system_call: sys_xyz() ret_from_sys_call: iret xyz() { int 0x80 使用者模式 核心模式 應用程式執行系統呼叫 在libc標準程式庫內的封裝常式 系統呼叫處理器 系統呼叫服務常式

參數傳遞 呼叫系統呼叫時,通常需要傳遞參數給作業系統 在 Intel IA-32 的架構下,使用暫存器來傳遞參數有 2 個條件必須滿足 參數的長度不能超過暫存器大小 參數的個數不能超過 6 個

封裝常式 核心執行緒也能夠使用系統呼叫,只不過在核心內不能夠使用程式庫的函式,因此需要透過封裝常是來執行 Linux 定義六個巨集來簡化封裝常式的宣告

系統呼叫流程圖 清除堆疊 Call write() 將 write() 所需參數放入堆疊 將系統呼叫號碼放在暫存器中 Int 0x80 跳回使用者程式 libc 函式庫 使用者 程式碼 0xFFFFFFFF 實體記憶體位址 作業系統 空間 指派 系統呼叫服務常式 1 2 4 5 6 7 8 3 system_call() sys_call_table

第十六章 系統服務常式 中斷簡介 軟體中斷 系統呼叫 裝置驅動程式 字元與區塊裝置 核心程式環境 撰寫裝置驅動程式 摘要

裝置驅動程式 裝置驅動程式是核心之中,由一些函式與資料所組成的 I/O 裝置的軟體介面 裝置驅動程式可以被多個使用者的應用程式所同時共享 Linux 裝置驅動程式有以下幾點特徵 包含可以與硬體裝置溝通的常式,並提供作業系統統一的使用介面 裝置驅動程式是一個自訂的元件,可以動態地從作業系統中加入或移除 可以管理並控制在使用者程式與週邊裝置之間的資料傳遞 包含一段使用者所定義的核心,可以讓程式或是週邊裝置以 "/dev" 目錄下的檔案形式供其他行程使用

裝置驅動程式與系統關係圖 使用者行程 /dev/dev_file 裝置驅動程式 硬體裝置 使用者空間 核心空間

字元與區塊裝置 字元和區塊裝置是 Linux 中兩種最主要的裝置類別 字元裝置與檔案相似,利用位元組串流方式存取資料 區塊裝置則可以使用檔案系統

核心程式環境 驅動程式必須是核心的一部分,才可以服務中斷與存取裝置硬體,並且要能夠有效率地處理中斷 多個行程同時共享裝置驅動程式中的中斷或是同步區段的資料時,資料就必須要使用臨界區以避免發生錯誤 在多 CPU 的系統中無法利用關閉中斷的方式來達到互斥,所以必須要利用旋轉鎖的方式來實作臨界區

撰寫裝置驅動程式 裝置驅動程式主要分為以下幾個部分 初始函式 註冊 IRQ 與中斷處理函式 裝置操作函式 離開函式

摘要 (1) 中斷被定義為會暫停目前指令的執行而跳到特定程式去執行的事件 中斷大致可分為 外部中斷 例外中斷 陷阱中斷 軟體中斷 中斷描述表主要的目的是將每個中斷或例外的向量,對應到中斷或例外處理器的位址

摘要 (2) IDT 包含3種描述器型態 Linux 的例外主要可達到兩種不同的目的 軟體中斷在 Linux 2.4 上包含3種型式 任務閘門 中斷閘門 陷阱閘門 Linux 的例外主要可達到兩種不同的目的 傳送信號給行程告知有異常狀況發生 處理需求分頁 軟體中斷在 Linux 2.4 上包含3種型式 底半部 Softirq tasklet

摘要 (3) 系統呼叫是介於應用程式與硬體間的一個額外階層 裝置的驅動程式主要分為四個部分 程式撰寫容易 增加系統的安全性 是程式獲得更佳的可攜性 裝置的驅動程式主要分為四個部分 初始函式 註冊 IRQ 與中斷處理函式 裝置操作函式 離開函式