




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 引入線程的概念后,可把進(jìn)程和線程的使用分為以下幾種模型: 單進(jìn)程單進(jìn)程/ /單線程模型單線程模型(如MS-DOS):整個(gè)系統(tǒng)只有一個(gè)進(jìn)程、一個(gè)線程 單進(jìn)程單進(jìn)程/ /多線程模型多線程模型:在單進(jìn)程/多線程模型中,整個(gè)系統(tǒng)有一個(gè)進(jìn)程、多個(gè)線程 多進(jìn)程多進(jìn)程/ /單線程模型單線程模型(如傳統(tǒng)的UNIX):在多進(jìn)程/單線程模型中,整個(gè)系統(tǒng)有多個(gè)進(jìn)程,每個(gè)進(jìn)程只有一個(gè)線程 多進(jìn)程多進(jìn)程/ /多線程模型多線程模型(如Windows NT、Solaris、Mach等):在多進(jìn)程/多線程模型中,系統(tǒng)有多個(gè)進(jìn)程,每個(gè)進(jìn)程又可包含多個(gè)線程 嵌入式系統(tǒng)的核心-嵌入式微處理器 實(shí)時(shí)多任務(wù) 存儲區(qū)保護(hù) 可擴(kuò)展的處理
2、器結(jié)構(gòu) 功耗低與通用計(jì)算機(jī)區(qū)別 通用: 方便用戶管理計(jì)算機(jī)資源 追求系統(tǒng)資源最大利用率 RTOS 調(diào)度的實(shí)時(shí)性 響應(yīng)時(shí)間可確定性 高可靠性 RTOS的衡量指標(biāo) 系統(tǒng)響應(yīng)時(shí)間(System response time ):系統(tǒng)發(fā)出處理要求到系統(tǒng)給出應(yīng)答信號的時(shí)間; 任務(wù)切換時(shí)間(Context-switching time):任務(wù)之間切換而使用的時(shí)間; 中斷延遲(Interrupt latency time ) :是計(jì)算機(jī)接收到中斷信號到操作系統(tǒng)作出響應(yīng),并完成換道轉(zhuǎn)入中斷服務(wù)程序的時(shí)間;RTOS的任務(wù)調(diào)度機(jī)制 決定了多任務(wù)能力與實(shí)時(shí)性 通用模式: 調(diào)度策略:優(yōu)先級調(diào)度、時(shí)間片輪轉(zhuǎn)調(diào)度 調(diào)度方式
3、:搶占式、不可搶占式、選擇可搶占式 時(shí)間片:定長時(shí)間片與變長時(shí)間片 RTOS一般使用搶占式任務(wù)調(diào)度 在微內(nèi)核中保留哪些東西? 進(jìn)程管理 存儲管理 進(jìn)程間通信 中斷響應(yīng)框架微內(nèi)核的優(yōu)點(diǎn) 小而且簡單,容易理解,容易維護(hù) 各模塊可以獨(dú)立開發(fā) 系統(tǒng)配置靈活方便 大多數(shù)嵌入式實(shí)時(shí)內(nèi)核:單進(jìn)程/多線程模型,或簡單地稱為任務(wù)模型 把整個(gè)應(yīng)用當(dāng)作一個(gè)沒有定義的進(jìn)程來對待; 應(yīng)用則被劃分為多個(gè)任務(wù)的形式來進(jìn)行處理。 適用于實(shí)時(shí)性要求較高的、相對簡單的應(yīng)用適用于實(shí)時(shí)性要求較高的、相對簡單的應(yīng)用 也有一些嵌入式實(shí)時(shí)操作系統(tǒng)采用了多進(jìn)程/多線程模型: 系統(tǒng)中包含多個(gè)進(jìn)程,每個(gè)進(jìn)程對應(yīng)又包含多個(gè)線程 適合于處理復(fù)雜的應(yīng)
4、用適合于處理復(fù)雜的應(yīng)用任務(wù)的定義及其主要特性 任務(wù)是一個(gè)具有獨(dú)立功能的無限循環(huán)的程序段的一次運(yùn)行活動,是實(shí)時(shí)內(nèi)核調(diào)度的單位,具有以下特性: 動態(tài)性動態(tài)性:任務(wù)狀態(tài)是不斷變化的。 一般分為就緒態(tài)、運(yùn)行態(tài)和等待態(tài)。 在多任務(wù)系統(tǒng)中,任務(wù)的狀態(tài)將隨著系統(tǒng)的需要不斷進(jìn)行變化。 并行性并行性: 系統(tǒng)中同時(shí)存在多個(gè)任務(wù),這些任務(wù)在宏觀上是同時(shí)運(yùn)行的。 異步獨(dú)立性異步獨(dú)立性: 每個(gè)任務(wù)各自按相互獨(dú)立的不可預(yù)知的速度運(yùn)行,走走停停。 任務(wù)的內(nèi)容 任務(wù)主要包含以下內(nèi)容: 代碼代碼:一段可執(zhí)行的程序 數(shù)據(jù)數(shù)據(jù):程序所需要的相關(guān)數(shù)據(jù)(變量、工作空間、緩沖區(qū)等) 堆棧堆棧 程序執(zhí)行的上下文環(huán)境程序執(zhí)行的上下文環(huán)境任務(wù)
5、的內(nèi)容 任務(wù)與程序的區(qū)別: 任務(wù)能真實(shí)地描述工作內(nèi)容的并發(fā)性,而程序不能; 程序是任務(wù)的組成部分 除程序外,任務(wù)還包括數(shù)據(jù)、堆棧及其上下文環(huán)境等內(nèi)容; 程序是靜態(tài)的,任務(wù)是動態(tài)的; 任務(wù)有生命周期,有誕生、有消亡,是短暫的;而程序是相對長久的; 一個(gè)程序可對應(yīng)多個(gè)任務(wù),反之亦然; 任務(wù)具有創(chuàng)建其他任務(wù)的功能,而程序沒有。 任務(wù)狀態(tài)與變遷 任務(wù)擁有的資源情況是不斷變化的,導(dǎo)致任務(wù)狀態(tài)也表現(xiàn)出不斷變化的特性。 不同的實(shí)時(shí)內(nèi)核實(shí)現(xiàn)方式對任務(wù)狀態(tài)的定義不盡相同,但是都可以概括為三種基本的狀態(tài): 等待等待(waiting):任務(wù)在等待某個(gè)事件的發(fā)生; 就緒就緒(ready): 任務(wù)等待獲得處理器資源;
6、執(zhí)行執(zhí)行(running):任務(wù)獲得處理器資源,所包含的代碼內(nèi)容正在被執(zhí)行。 任務(wù)狀態(tài)與變遷 任務(wù)會在不同的狀態(tài)之間進(jìn)行轉(zhuǎn)換,即任務(wù)狀態(tài)的變遷就緒態(tài)就緒態(tài)運(yùn)行態(tài)運(yùn)行態(tài)等待態(tài)等待態(tài)獲得獲得CPUCPU被高優(yōu)先級被高優(yōu)先級任務(wù)搶占或任務(wù)搶占或超時(shí)超時(shí)獲得資源獲得資源需要需要資源資源任務(wù)切換任務(wù)切換任務(wù)切換時(shí)機(jī)時(shí)機(jī)中斷、自陷中斷、自陷運(yùn)行任務(wù)因缺乏資源而被運(yùn)行任務(wù)因缺乏資源而被阻塞阻塞時(shí)間片輪轉(zhuǎn)調(diào)度時(shí)時(shí)間片輪轉(zhuǎn)調(diào)度時(shí)高優(yōu)先級任務(wù)處于就緒時(shí)高優(yōu)先級任務(wù)處于就緒時(shí)退出退出第三節(jié)任務(wù)調(diào)度基于優(yōu)先級的可搶占調(diào)度基于優(yōu)先級的可搶占調(diào)度時(shí)間片輪轉(zhuǎn)調(diào)度時(shí)間片輪轉(zhuǎn)調(diào)度靜態(tài)調(diào)度靜態(tài)調(diào)度*動態(tài)調(diào)度動態(tài)調(diào)度*靜態(tài)調(diào)度與動
7、態(tài)調(diào)度之間的比較靜態(tài)調(diào)度與動態(tài)調(diào)度之間的比較* 設(shè)計(jì)調(diào)度程序時(shí),通常需要綜合考慮如下因素: CPU的使用率(CPU utilization) 輸入/輸出設(shè)備的吞吐率 響應(yīng)時(shí)間(responsive time) 公平性 截止時(shí)間調(diào)度算法 搶占式調(diào)度和非搶占式調(diào)度:任務(wù)在運(yùn)行過程中能否被打斷的處理情況。 搶占式調(diào)度:正在運(yùn)行的任務(wù)可能被其他任務(wù)所打斷。 非搶占式調(diào)度:一旦任務(wù)開始運(yùn)行,該任務(wù)只有在運(yùn)行完成而主動放棄CPU資源,或是因?yàn)榈却渌Y源被阻塞的情況下才會停止運(yùn)行。 實(shí)時(shí)內(nèi)核大都采用了搶占式調(diào)度算法,使關(guān)鍵任務(wù)能夠打斷非關(guān)鍵任務(wù)的執(zhí)行,確保關(guān)鍵任務(wù)的截止時(shí)間能夠得到滿足。搶占式和非搶占調(diào)度
8、 搶占式調(diào)度算法要更復(fù)雜些,且需要更多的資源,并可能在使用不當(dāng)?shù)那闆r下會造成低優(yōu)先級任務(wù)出現(xiàn)長時(shí)間得不到執(zhí)行的情況。 非搶占式調(diào)度算法常用于那些任務(wù)需要按照預(yù)先確定的順序進(jìn)行執(zhí)行,且只有當(dāng)任務(wù)主動放棄CPU資源后,其他任務(wù)才能得到執(zhí)行的情況。搶占式和非搶占調(diào)度內(nèi)核的可搶占性 內(nèi)核可搶占與不可搶占:執(zhí)行內(nèi)核提供的系統(tǒng)調(diào)用的過程中,是否可以被中斷打斷。 可搶占內(nèi)核:即使正在執(zhí)行的是內(nèi)核服務(wù)函數(shù),也能響應(yīng)中斷,并且中斷服務(wù)程序退出時(shí)能進(jìn)行任務(wù)重新調(diào)度: 如果有優(yōu)先級更高的任務(wù)就緒,就立即讓高優(yōu)先級任務(wù)運(yùn)行,不要求回到被中斷的任務(wù),將未完成的系統(tǒng)調(diào)用執(zhí)行完?;趦?yōu)先級的可搶占調(diào)度 基于優(yōu)先級的可搶占調(diào)
9、度方式 如果出現(xiàn)具有更高優(yōu)先級的任務(wù)處于就緒狀態(tài)時(shí),當(dāng)前任務(wù)將停止運(yùn)行,把CPU的控制權(quán)交給具有更高優(yōu)先級的任務(wù),使更高優(yōu)先級的任務(wù)得到執(zhí)行。 實(shí)時(shí)內(nèi)核需要確保CPU總是被具有最高優(yōu)先級的就緒任務(wù)所控制。 當(dāng)一個(gè)具有比當(dāng)前正在運(yùn)行任務(wù)的優(yōu)先級更高的任務(wù)處于就緒狀態(tài)的時(shí)候,實(shí)時(shí)內(nèi)核應(yīng)及時(shí)進(jìn)行任務(wù)切換,保存當(dāng)前正在運(yùn)行任務(wù)的上下文,切換到具有更高優(yōu)先級的任務(wù)的上下文。實(shí)時(shí)系統(tǒng) 在實(shí)時(shí)計(jì)算中,系統(tǒng)的正確性不僅僅依賴于計(jì)算的邏輯結(jié)果而且依賴于結(jié)果產(chǎn)生的時(shí)間 響應(yīng)時(shí)間限定 可預(yù)知實(shí)時(shí)操作系統(tǒng)與I/O 實(shí)時(shí)操作系統(tǒng)還需要有效的中斷處理能力來處理異步事件和高效的I/O能力來處理有嚴(yán)格時(shí)間限制的數(shù)據(jù)收發(fā)應(yīng)用。
10、就是: 系統(tǒng)應(yīng)該有在事先定義的時(shí)間范圍內(nèi)識別和處理離散的事件的能力。 系統(tǒng)能夠處理和存儲控制系統(tǒng)所需要的大量的數(shù)據(jù)。 周期性的系統(tǒng) 非周期性系統(tǒng) 硬實(shí)時(shí)系統(tǒng) 災(zāi)難后果 軟實(shí)時(shí)系統(tǒng) 性能下降 圖1 VFS與具體文件系統(tǒng)的關(guān)系與具體文件系統(tǒng)的關(guān)系用戶程序(進(jìn)程)用戶程序(進(jìn)程)VFSminixFAT設(shè)備文件設(shè)備文件Ext2文件系統(tǒng)操作的系統(tǒng)文件系統(tǒng)操作的系統(tǒng)調(diào)用界面,包括調(diào)用界面,包括read(),write(),open(),close()等等函數(shù)函數(shù)sys_read() sys_write() sys_open()等等通過通過file結(jié)構(gòu)結(jié)構(gòu)中的中的f_op指指針實(shí)現(xiàn)的針實(shí)現(xiàn)的”文件系統(tǒng)總文件
11、系統(tǒng)總線線”用戶空間用戶空間系統(tǒng)空間系統(tǒng)空間251.4 計(jì)算機(jī)體系結(jié)構(gòu)分類 1.馮諾依曼結(jié)構(gòu) 26 ALU,Controller, Memory, Input,Output 核心部件:早期是CPU,后來是Memory 存儲程序(stored program):程序以數(shù)字形式存在,可以與數(shù)據(jù)一樣被讀寫馮諾依曼結(jié)構(gòu)五大部件272.哈佛體系結(jié)構(gòu)28哈佛體系結(jié)構(gòu) 程序與數(shù)據(jù)有單獨(dú)的存儲器 PC只能指向程序存儲器 目前仍然廣泛應(yīng)用 指令cache與數(shù)據(jù)cache 適用于實(shí)時(shí)信號處理(大部分的DSP) 大量數(shù)據(jù)流入計(jì)算機(jī) 數(shù)據(jù)必須在精確的時(shí)間內(nèi)處理完成291.5 RISC和CISC 計(jì)算機(jī)自40年代中葉問
12、世以來,其體系結(jié)構(gòu)的發(fā)展經(jīng)歷了:簡單復(fù)雜極其復(fù)雜簡單復(fù)雜極其復(fù)雜 CISC:復(fù)雜指令系統(tǒng)計(jì)算機(jī) RISC:精簡指令系統(tǒng)計(jì)算機(jī) RISC一般性能比CISC高CISCCISC:復(fù)雜指令集(:復(fù)雜指令集(Complex Instruction Set ComputerComplex Instruction Set Computer)具有大量的指令和尋址方式,指令長度可變具有大量的指令和尋址方式,指令長度可變8/28/2原則:原則:80%80%的程序只使用的程序只使用20%20%的指令的指令大多數(shù)程序只使用少量的指令就能夠運(yùn)行。大多數(shù)程序只使用少量的指令就能夠運(yùn)行。RISCRISC:精簡指令集(:精簡
13、指令集(Reduced Instruction Set Computer)Reduced Instruction Set Computer)只包含最有用的指令,指令長度固定只包含最有用的指令,指令長度固定確保數(shù)據(jù)通道快速執(zhí)行每一條指令確保數(shù)據(jù)通道快速執(zhí)行每一條指令使使CPUCPU硬件結(jié)構(gòu)設(shè)計(jì)變得更為簡單硬件結(jié)構(gòu)設(shè)計(jì)變得更為簡單312.1 嵌入式片上系統(tǒng)( SoC ) SoC - System on Chip CPU + DSP + USB + TCP/IP + GPRS + GSM + IEEE1394 + BLUETOOCH + SOC的優(yōu)點(diǎn): 改變內(nèi)部工作電壓,減少功耗 減少芯片對外管腳數(shù)
14、,簡化制造過程 減少外圍驅(qū)動與電路板之間的信號傳遞,提高速度 內(nèi)嵌的線路可以避免外部電路板在信號傳遞時(shí)引起的干擾322.2 SOC的設(shè)計(jì)開發(fā)33SoC 芯片設(shè)計(jì)中 的IP 模塊 SoC 的設(shè)計(jì)基礎(chǔ)是IP(Intellectual Property)復(fù)用技術(shù)。 已有的IC 電路以模塊的形式在SoC 芯片設(shè)計(jì)中調(diào)用這些可以被重復(fù)使用的IC 模塊就叫做IP 模塊 IP 模塊是一種預(yù)先設(shè)計(jì)好,已經(jīng)過驗(yàn)證,具有某種確定功能的集成電路、器件或部件。它有3 種不同形式:軟IP 核(soft IP core)、固IP 核(firm IP core)和硬IP 核(hard IP core) 34高速緩存、 MM
15、U 解決方法: 1。 求助于高速緩存來提高內(nèi)存的平均性能。 2。存儲管理單元(MMU)進(jìn)行地址轉(zhuǎn)換,它在一個(gè)小的物理內(nèi)存中提供相對較大的虛擬存儲空間。35高速緩存、 MMU 解決方法: 1。 求助于高速緩存來提高內(nèi)存的平均性能。 2。存儲管理單元(MMU)進(jìn)行地址轉(zhuǎn)換,它在一個(gè)小的物理內(nèi)存中提供相對較大的虛擬存儲空間。36虛擬地址存儲系統(tǒng) 37總線協(xié)議 基本構(gòu)件是四周期握手協(xié)議 : 握手保證當(dāng)兩個(gè)設(shè)備想通信時(shí),一個(gè)準(zhǔn)備好發(fā)送,另一個(gè)準(zhǔn)備好接收。 握手使用兩根用來進(jìn)行握手的電線enq(表示查詢)和ack(表示應(yīng)答)。 在握手期間,有專用的電線用來傳輸數(shù)據(jù)。 38四周期握手描述 1) 設(shè)備1升高它
16、的輸出電平來發(fā)查詢信號,它告訴設(shè)備2應(yīng)準(zhǔn)備好監(jiān)聽數(shù)據(jù)。2) 當(dāng)設(shè)備2準(zhǔn)備好接收數(shù)據(jù)時(shí),它升高它的輸出電平來發(fā)應(yīng)答信號。這時(shí),設(shè)備1和2已準(zhǔn)備好發(fā)送或接收。3) 一旦數(shù)據(jù)傳送完畢,設(shè)備2降低它的輸出電平表示它已經(jīng)接收完數(shù)據(jù)。4) 看見應(yīng)答信號變低,設(shè)備1降低它的輸出電平。 在握手結(jié)束時(shí),雙方握手信號均為低電平,就像開始握手前一樣。因此,系統(tǒng)回到其初始狀態(tài),為下一次以握手方式傳輸數(shù)據(jù)做準(zhǔn)備。 39四周期握手協(xié)議 40內(nèi)存管理機(jī)制 靜態(tài)分配系統(tǒng)在啟動前系統(tǒng)在啟動前,所有的任務(wù)都獲得了所需要的所,所有的任務(wù)都獲得了所需要的所有內(nèi)存,運(yùn)行過程中將不會有新的內(nèi)存請求。有內(nèi)存,運(yùn)行過程中將不會有新的內(nèi)存請求
17、。在強(qiáng)實(shí)時(shí)系統(tǒng)中,減少內(nèi)存分配在時(shí)間上可能帶來的在強(qiáng)實(shí)時(shí)系統(tǒng)中,減少內(nèi)存分配在時(shí)間上可能帶來的不確定性。不確定性。不需要操作系統(tǒng)進(jìn)行專門的內(nèi)存管理操作。不需要操作系統(tǒng)進(jìn)行專門的內(nèi)存管理操作。系統(tǒng)使用內(nèi)存的效率比較低下,只適合于那些強(qiáng)實(shí)時(shí),系統(tǒng)使用內(nèi)存的效率比較低下,只適合于那些強(qiáng)實(shí)時(shí),且應(yīng)用比較簡單,任務(wù)數(shù)量可以靜態(tài)確定的系統(tǒng)。且應(yīng)用比較簡單,任務(wù)數(shù)量可以靜態(tài)確定的系統(tǒng)。 內(nèi)存管理機(jī)制動態(tài)分配 堆(堆(heap):應(yīng)用通過分配():應(yīng)用通過分配(malloc)與釋)與釋放(放(free)操作來使用內(nèi)存。)操作來使用內(nèi)存。堆會帶來碎片堆會帶來碎片:內(nèi)存被逐漸劃分為位于已被使用區(qū)域之間的越來越小內(nèi)
18、存被逐漸劃分為位于已被使用區(qū)域之間的越來越小的空閑區(qū)域。的空閑區(qū)域。垃圾回收垃圾回收:對內(nèi)存堆進(jìn)行重新排列,把碎片組織成為大的連續(xù)可對內(nèi)存堆進(jìn)行重新排列,把碎片組織成為大的連續(xù)可用內(nèi)存空間。但垃圾回收的時(shí)間長短不確定:不適合用內(nèi)存空間。但垃圾回收的時(shí)間長短不確定:不適合于處理實(shí)時(shí)應(yīng)用。于處理實(shí)時(shí)應(yīng)用。在實(shí)時(shí)系統(tǒng)中,避免內(nèi)存碎片的出現(xiàn),而不是在在實(shí)時(shí)系統(tǒng)中,避免內(nèi)存碎片的出現(xiàn),而不是在出現(xiàn)內(nèi)存碎片時(shí)進(jìn)行回收出現(xiàn)內(nèi)存碎片時(shí)進(jìn)行回收。 內(nèi)存管理機(jī)制 常用管理方式:常用管理方式: 固定大小存儲區(qū)固定大小存儲區(qū):在指定邊界的一塊地址連續(xù)的內(nèi)存空間中,在指定邊界的一塊地址連續(xù)的內(nèi)存空間中,實(shí)現(xiàn)固定大小內(nèi)存
19、塊的分配。實(shí)現(xiàn)固定大小內(nèi)存塊的分配。 可變大小存儲區(qū)可變大小存儲區(qū):在指定邊界的一塊地址連續(xù)的內(nèi)存空間中,在指定邊界的一塊地址連續(xù)的內(nèi)存空間中,實(shí)現(xiàn)可變大小內(nèi)存塊的分配。實(shí)現(xiàn)可變大小內(nèi)存塊的分配。 應(yīng)用根據(jù)需要從固定大小存儲區(qū)或者可變大應(yīng)用根據(jù)需要從固定大小存儲區(qū)或者可變大小存儲區(qū)中獲得一塊內(nèi)存空間,用完后將該小存儲區(qū)中獲得一塊內(nèi)存空間,用完后將該內(nèi)存空間釋放回相應(yīng)的存儲區(qū)。內(nèi)存空間釋放回相應(yīng)的存儲區(qū)。1 缺少M(fèi)MU支持的內(nèi)存管理 內(nèi)存管理是操作系統(tǒng)中非常重要的子模塊。 如同普通操作系統(tǒng)一樣,在嵌入式操作系統(tǒng)中,內(nèi)存管理實(shí)現(xiàn)的好壞對系統(tǒng)性能有決定性的作用。 1.1 3種內(nèi)存管理模型 操作系統(tǒng)的
20、內(nèi)存管理模型可以分成如下3種:1. 單一程序模型 這是沒有硬件地址轉(zhuǎn)換的內(nèi)存管理模型。 應(yīng)用程序始終在物理內(nèi)存中的同一地址空間運(yùn)行,一個(gè)時(shí)刻只有一個(gè)應(yīng)用程序被加載運(yùn)行,程序加載器把應(yīng)用程序加載到內(nèi)存低端,將操作系統(tǒng)加載到高端。 一個(gè)應(yīng)用程序可以對所有的物理內(nèi)存地址進(jìn)行尋址。 早期的操作系統(tǒng)受限于硬件能力多采用這種模型,現(xiàn)代操作系統(tǒng)中這種內(nèi)存管理方式已經(jīng)不見了。2. 多程序模型 這也是沒有硬件地址轉(zhuǎn)換的內(nèi)存管理模型。 即使沒有硬件地址轉(zhuǎn)換功能,多個(gè)程序也可以共享相同的物理地址。 在程序被加載到內(nèi)存的時(shí)候,改變程序中尋址指令(load,store,jump)所使用的地址值為當(dāng)前被加載到的位置。 u
21、Clinux正是使用了這種模型。3. 具有地址轉(zhuǎn)換硬件的內(nèi)存管理模型 應(yīng)用程序使用的是虛擬地址,CPU實(shí)際執(zhí)行程序所使用的是物理地址,從虛擬地址到物理地址的轉(zhuǎn)換需要操作系統(tǒng)和MMU(Memory Management Unit)硬件的參與。 標(biāo)準(zhǔn)Linux以及大多數(shù)現(xiàn)代操作系統(tǒng)都使用這種內(nèi)存管理模型。體系結(jié)構(gòu)API設(shè)備管理設(shè)備管理中斷驅(qū)動程序中斷驅(qū)動程序串口驅(qū)動程序串口驅(qū)動程序鍵盤驅(qū)動程序鍵盤驅(qū)動程序串口卡串口卡A 硬件抽象硬件抽象串口卡串口卡B 硬件抽象硬件抽象串口串口1串口串口2串口串口4串口串口2串口串口3串口串口1驅(qū)動邏輯層驅(qū)動邏輯層硬件抽象層硬件抽象層設(shè)備設(shè)備設(shè)備管理層設(shè)備管理層AP
22、I層層為了有效組織和管理各種不同的設(shè)備,可以采用分層的思想,把為了有效組織和管理各種不同的設(shè)備,可以采用分層的思想,把I/OI/O系統(tǒng)系統(tǒng)從上到下分為四層,分別為從上到下分為四層,分別為APIAPI、設(shè)備管理、驅(qū)動邏輯和硬件抽象。、設(shè)備管理、驅(qū)動邏輯和硬件抽象。體系結(jié)構(gòu) 提供硬件的多種使用模式API設(shè)備管理設(shè)備管理驅(qū)動程序驅(qū)動程序硬件抽象硬件抽象應(yīng)用程序(用戶程序、操作系統(tǒng)及其組件等)應(yīng)用程序(用戶程序、操作系統(tǒng)及其組件等)xlanchen2008.3.14Embedded Operating systems52Boot Loader的典型結(jié)構(gòu)框架 由于 Boot Loader 的實(shí)現(xiàn)依賴于
23、CPU 體系結(jié)構(gòu),大多數(shù) Boot Loader 都分為 stage1 和 stage2 兩大部分 Stage1 依賴于 CPU 體系結(jié)構(gòu),如設(shè)備初始化代碼 通常用匯編語言實(shí)現(xiàn),短小精悍 Stage2 通常用C語言 可以實(shí)現(xiàn)復(fù)雜功能 代碼具有較好的可讀性和可移植性 xlanchen2008.3.14Embedded Operating systems53Boot Loader的stage1 Stage1直接運(yùn)行在固態(tài)存儲設(shè)備上,通常包括以下步驟 硬件設(shè)備初始化 為加載 Boot Loader的stage2準(zhǔn)備RAM空間 拷貝 Boot Loader的stage2到RAM 空間中 設(shè)置好堆棧 跳
24、轉(zhuǎn)到 stage2 的 C 入口點(diǎn) xlanchen2008.3.14Embedded Operating systems54Boot Loader的stage2通常包括以下步驟1. 初始化本階段要使用到的硬件設(shè)備2. 檢測系統(tǒng)內(nèi)存映射(memory map)3. 將 kernel 映像和根文件系統(tǒng)映像從 flash 上讀到 RAM 空間中4. 為內(nèi)核設(shè)置啟動參數(shù)5. 調(diào)用內(nèi)核嵌入式Linux的軟件層次 一個(gè)嵌入式 Linux 系統(tǒng)從軟件的角度看通??梢苑譃樗膫€(gè)層次: 引導(dǎo)加載程序。包括固化在固件(firmware)中的 boot 代碼(可選)和 Boot Loader 兩大部分 Linux內(nèi)
25、核。特定于嵌入式板子的定制內(nèi)核及內(nèi)核的啟動參數(shù) 文件系統(tǒng)。包括根文件系統(tǒng)和建立于 Flash 內(nèi)存設(shè)備之上的文件系統(tǒng)通常用RAM-Disk來作為根文件系統(tǒng) 用戶應(yīng)用程序。特定于用戶的應(yīng)用程序xlanchen2008.3.14Embedded Operating systems55引導(dǎo)加載程序 引導(dǎo)加載程序是系統(tǒng)加電后運(yùn)行的第一段軟件代碼 BIOS的主要任務(wù)是 進(jìn)行硬件檢測和資源分配 將MBR中的OS Boot Loader讀到系統(tǒng)的 RAM 中 將控制權(quán)交給 OS Boot Loader Boot Loader 的主要運(yùn)行任務(wù)是 將內(nèi)核映象從硬盤上讀到 RAM 中 跳轉(zhuǎn)到內(nèi)核的入口點(diǎn)去運(yùn)行,也
26、即啟動操作系統(tǒng)。 xlanchen2008.3.14Embedded Operating systems56三、linux啟動流程 初始化流程 1 加電或復(fù)位 2 BIOS的啟動 3 Boot Loader 4 操作系統(tǒng)初始化1 加電或復(fù)位 冷啟動過程開始,中央處理器進(jìn)入復(fù)位狀態(tài),將內(nèi)存中的所有數(shù)據(jù)清零,對內(nèi)存進(jìn)行校驗(yàn),如果沒錯,CS寄存器將置入FFFF,IP寄存器置入0000,這個(gè)CS:IP組合指向的是BIOS的入口。系統(tǒng)就是這樣進(jìn)入BIOS啟動過程的。2 BIOS啟動 上電自檢POST(Power On Self Test) 對系統(tǒng)內(nèi)的硬件設(shè)備進(jìn)行監(jiān)測和連接 最后,BIOS將從軟盤或硬盤上
27、讀入Boot Loader.如果從硬盤啟動,BIOS將讀入該盤的零柱面零磁道1扇區(qū)(MBR),這個(gè)扇區(qū)上就放著Boot Loader.2 BIOS啟動 除了啟動程序,BIOS還提供了一組中斷以便于對硬件設(shè)備的訪問。我們知道,當(dāng)鍵盤上的某一鍵被按下,CPU就會產(chǎn)生一個(gè)中斷并把這個(gè)鍵的信息讀入。 在操作系統(tǒng)沒有被裝入以前(Bootsect.S還沒有被讀入),中斷的響應(yīng)程序由BIOS提供。3 Boot Loader Boot Loader是一段匯編代碼,存放在MBR中,它的主要作用就是將系統(tǒng)啟動代碼讀入內(nèi)存。3 Boot Loader 因?yàn)樵趩舆^程中,BIOS會把Boot Loader讀入內(nèi)存,并
28、把控制權(quán)交給它。MBR(硬盤啟動)內(nèi)的代碼就是Boot Loader或者它的一部分,為了說明Boot loader的實(shí)現(xiàn),先解釋磁盤結(jié)構(gòu)。3 Boot Loader 一個(gè)硬盤在DOS文件系統(tǒng)下可被分為四個(gè)基本分區(qū),可以把一個(gè)基本分區(qū)定義為一個(gè)擴(kuò)展分區(qū),然后再把這個(gè)基本分區(qū)分為一個(gè)或多個(gè)邏輯分區(qū)。 整個(gè)硬盤的分區(qū)表存放在硬盤的第一個(gè)扇區(qū)(MBR),每個(gè)擴(kuò)展分區(qū)也對應(yīng)一個(gè)分區(qū)表,它存放在該擴(kuò)展分區(qū)對應(yīng)的第一個(gè)扇區(qū)里。 除主引導(dǎo)扇區(qū)外,每個(gè)基本分區(qū)和擴(kuò)展分區(qū)也有自己的引導(dǎo)扇區(qū),結(jié)構(gòu)與MBR相同,但邏輯分區(qū)的引導(dǎo)扇區(qū)不能用于啟動。3 Boot Loader 如果是硬盤啟動,Boot Loader將查找
29、主分區(qū)表中標(biāo)記為活動分區(qū)的表項(xiàng),把該表項(xiàng)對應(yīng)的分區(qū)的引導(dǎo)扇區(qū)讀入,然后將控制權(quán)交給該扇區(qū)內(nèi)的引導(dǎo)程序。3 Boot Loader 如果計(jì)算機(jī)上裝有不只一個(gè)操作系統(tǒng),僅僅MS-DOS的Boot Loader無法完成這種工作,需要一個(gè)可以多重起動的工具,下面介紹Linux下最常用的LILO.3 Boot Loader LILO實(shí)際上是一個(gè)在Linux環(huán)境下編寫的Boot Loader程序,主要功能是引導(dǎo)Linux操作系統(tǒng)的啟動。 LILO的功能實(shí)際上是有幾個(gè)程序共同實(shí)現(xiàn)的,它們是: (1)Map Installer 這是LILO用于管理啟動文件的程序。它將boot loader寫入引導(dǎo)分區(qū),創(chuàng)建紀(jì)
30、錄文件以映射內(nèi)核的啟動。 (2)The boot loader 它負(fù)責(zé)把Linux內(nèi)核或其他操作系統(tǒng) 的引導(dǎo)分區(qū)讀入內(nèi)存。還提供命令行接口,讓用戶選擇從哪個(gè)操作系統(tǒng)啟動和加入啟動參數(shù)。 (3)其他文件:主要包括用于存放Map Installer記錄的map文件和存放LILO配置信息的配置文件。4 進(jìn)入操作系統(tǒng) Boot Loader 做了這么多工作,一言以蔽之,只是把操作系統(tǒng)的代碼調(diào)入內(nèi)存,所以當(dāng)它執(zhí)行完后,自然該把控制權(quán)交給操作系統(tǒng),由操作系統(tǒng)的啟動程序來完成剩下的工作。4 進(jìn)入操作系統(tǒng) 把控制權(quán)交給Setup.S這段程序 進(jìn)入保護(hù)模式,同時(shí)把控制權(quán)交給Head.S Head.S調(diào)用/ini
31、t/main.C中的start_kernel函數(shù),啟動程序從start_kernel()函數(shù)繼續(xù)執(zhí)行Boot Loader 的概念 Boot Loader 是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的第一段小程序。 初始化硬件設(shè)備 建立內(nèi)存空間的映射圖 將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。 加載操作系統(tǒng)內(nèi)核映象到RAM中,并將系統(tǒng)的控制權(quán)傳遞給它 例如:Linuxxlanchen2008.3.14Embedded Operating systems69ICE ICE(In-Circuit Emulator)是一種用于替代目標(biāo)機(jī)上CPU的設(shè)備,即在線仿真器。 它比
32、一般的CPU有更多的引出線,能夠?qū)?nèi)部的信號輸出到被控制的目標(biāo)機(jī)。 ICE上的Memory也可以被映射到用戶的程序空間,這樣即使目標(biāo)機(jī)不存在的情形下也可以進(jìn)行代碼的調(diào)試。邊界掃描技術(shù)(JTAG) JTAG標(biāo)準(zhǔn)測試訪問接口與邊界掃描結(jié)構(gòu)(Standard Test Access Port and Boundary Scan Architecture),已被IEEE1149.1標(biāo)準(zhǔn)所采納,是面向用戶的測試接口。 該接口一般由4個(gè)引腳組成: 測試數(shù)據(jù)輸入(TDI) 測試數(shù)據(jù)輸出(TDO) 測試時(shí)鐘(TCK) 測試模式選擇引腳(TMS) 異步測試復(fù)位引腳(TRST,可選)邊界掃描技術(shù)(JTAG) 優(yōu)點(diǎn)
33、 可以通過邊界掃描操作測試整個(gè)板的電氣連接,特別為表面貼元件提供方便 各個(gè)引腳信號的采樣,并可強(qiáng)制引腳輸出用以測試外圍芯片 可以軟件下載、執(zhí)行、調(diào)試和控制,為復(fù)雜的實(shí)時(shí)跟蹤調(diào)試提供路徑 可以進(jìn)行多內(nèi)核和多處理器的板級和芯片級的調(diào)試,通過串接 ,為芯片制造商提供芯片生產(chǎn)、測試的途徑 不占用系統(tǒng)資源,能夠調(diào)試沒有外部總線的芯片,代價(jià)非常小 邊界掃描技術(shù)(JTAG) 缺點(diǎn) 通過串口依次傳遞數(shù)據(jù),速度比較慢 只能進(jìn)行軟件斷點(diǎn)級別的調(diào)試 不能完成實(shí)時(shí)跟蹤和多種事件觸發(fā)等復(fù)雜調(diào)試功能 幾種增強(qiáng)版本 ARM芯片的實(shí)時(shí)調(diào)試方案(E-TRACE) 背景調(diào)試模式BDM 片上仿真OnCE I/O時(shí)間時(shí)間內(nèi)聚內(nèi)聚功能
34、功能內(nèi)聚內(nèi)聚時(shí)間時(shí)間內(nèi)聚內(nèi)聚 搶占式調(diào)度和非搶占式調(diào)度:任務(wù)在運(yùn)行過程中能否被打斷的處理情況。 搶占式調(diào)度:正在運(yùn)行的任務(wù)可能被其他任務(wù)所打斷。 非搶占式調(diào)度:一旦任務(wù)開始運(yùn)行,該任務(wù)只有在運(yùn)行完成而主動放棄CPU資源,或是因?yàn)榈却渌Y源被阻塞的情況下才會停止運(yùn)行。 實(shí)時(shí)內(nèi)核大都采用了搶占式調(diào)度算法,使關(guān)鍵任務(wù)能夠打斷非關(guān)鍵任務(wù)的執(zhí)行,確保關(guān)鍵任務(wù)的截止時(shí)間能夠得到滿足。搶占式和非搶占調(diào)度內(nèi)核的可搶占性 內(nèi)核可搶占與不可搶占:執(zhí)行內(nèi)核提供的系統(tǒng)調(diào)用的過程中,是否可以被中斷打斷。 可搶占內(nèi)核:即使正在執(zhí)行的是內(nèi)核服務(wù)函數(shù),也能響應(yīng)中斷,并且中斷服務(wù)程序退出時(shí)能進(jìn)行任務(wù)重新調(diào)度: 如果有優(yōu)先級更
35、高的任務(wù)就緒,就立即讓高優(yōu)先級任務(wù)運(yùn)行,不要求回到被中斷的任務(wù),將未完成的系統(tǒng)調(diào)用執(zhí)行完。內(nèi)核的可搶占性 不可搶占內(nèi)核:不可搶占內(nèi)核有兩種情況 內(nèi)核服務(wù)函數(shù)不能被中斷:系統(tǒng)在執(zhí)行內(nèi)核服務(wù)函數(shù)時(shí)處于關(guān)中斷狀態(tài),不能響應(yīng)外部可屏蔽中斷,這樣就會在一定程度上延遲中斷響應(yīng)時(shí)間。 能被中斷但是不能進(jìn)行任務(wù)重新調(diào)度。 系統(tǒng)在執(zhí)行內(nèi)核服務(wù)函數(shù)時(shí)可以響應(yīng)中斷,不會延遲中斷響應(yīng)時(shí)間; 但是在中斷退出時(shí)不進(jìn)行任務(wù)重新調(diào)度。基于優(yōu)先級的可搶占調(diào)度 基于優(yōu)先級的可搶占調(diào)度方式 如果出現(xiàn)具有更高優(yōu)先級的任務(wù)處于就緒狀態(tài)時(shí),當(dāng)前任務(wù)將停止運(yùn)行,把CPU的控制權(quán)交給具有更高優(yōu)先級的任務(wù),使更高優(yōu)先級的任務(wù)得到執(zhí)行。 實(shí)時(shí)內(nèi)
36、核需要確保CPU總是被具有最高優(yōu)先級的就緒任務(wù)所控制。 當(dāng)一個(gè)具有比當(dāng)前正在運(yùn)行任務(wù)的優(yōu)先級更高的任務(wù)處于就緒狀態(tài)的時(shí)候,實(shí)時(shí)內(nèi)核應(yīng)及時(shí)進(jìn)行任務(wù)切換,保存當(dāng)前正在運(yùn)行任務(wù)的上下文,切換到具有更高優(yōu)先級的任務(wù)的上下文。平面內(nèi)存模式:平面內(nèi)存模式:應(yīng)用程序和系統(tǒng)程序能夠?qū)φ麄€(gè)內(nèi)存空間進(jìn)應(yīng)用程序和系統(tǒng)程序能夠?qū)φ麄€(gè)內(nèi)存空間進(jìn)行訪問。行訪問。平面內(nèi)存模式比較簡單,易于管理,性能也平面內(nèi)存模式比較簡單,易于管理,性能也比較高。比較高。適合于程序簡單、代碼量小和實(shí)時(shí)性要求比適合于程序簡單、代碼量小和實(shí)時(shí)性要求比較高的領(lǐng)域。較高的領(lǐng)域。內(nèi)存保護(hù):內(nèi)存保護(hù):應(yīng)用比較復(fù)雜、程序量比較大的情況;應(yīng)用比較復(fù)雜、程序
37、量比較大的情況;防止應(yīng)用程序破壞操作系統(tǒng)或是其他應(yīng)用程防止應(yīng)用程序破壞操作系統(tǒng)或是其他應(yīng)用程序的代碼和數(shù)據(jù)。序的代碼和數(shù)據(jù)。概述 內(nèi)存保護(hù)內(nèi)存保護(hù)內(nèi)存保護(hù) 內(nèi)存保護(hù)可通過硬件提供的MMU(memory management unit)來實(shí)現(xiàn)。 目前,大多數(shù)處理器都集成了MMU: 大幅度降低那些通過在處理器外部添加MMU模塊的處理方式所存在的內(nèi)存訪問延遲。 MMU現(xiàn)在大都被設(shè)計(jì)作為處理器內(nèi)部指令執(zhí)行流水線的一部分,使得使用MMU不會降低系統(tǒng)性能,相反,如果系統(tǒng)軟件不使用MMU,還會導(dǎo)致處理器的性能降低。 在某些情況下,不使能MMU,跳過處理器的相應(yīng)流水線,可能導(dǎo)致處理器的性能降低80%左右。 內(nèi)
38、存保護(hù) MMU通常具有如下功能: 內(nèi)存映射內(nèi)存映射; 檢查邏輯地址是否在限定的地址范圍限定的地址范圍內(nèi),防止頁面地址越界; 檢查對內(nèi)存頁面的訪問是否違背特權(quán)信息特權(quán)信息,防止越權(quán)操作內(nèi)存頁面; 在必要的時(shí)候(頁面地址越界或是頁面操作越權(quán))產(chǎn)生異常異常。 理想情況下 高優(yōu)先級任務(wù)就緒后,能夠立即搶占低優(yōu)先級任務(wù)而得到執(zhí)行。 但在有多個(gè)任務(wù)需要使用共享資源的情況下,可能會出現(xiàn)高優(yōu)先級任務(wù)被低優(yōu)先級任務(wù)阻塞,并等待低優(yōu)先級任務(wù)執(zhí)行的現(xiàn)象。 優(yōu)先級反轉(zhuǎn)(priority inversion):高優(yōu)先級任務(wù)需要等待低優(yōu)先級任務(wù)釋放資源,而低優(yōu)先級任務(wù)又正在等待中等優(yōu)先級任務(wù)的現(xiàn)象。優(yōu)先級反轉(zhuǎn) 理想情況下
39、 高優(yōu)先級任務(wù)就緒后,能夠立即搶占低優(yōu)先級任務(wù)而得到執(zhí)行。 但在有多個(gè)任務(wù)需要使用共享資源的情況下,可能會出現(xiàn)高優(yōu)先級任務(wù)被低優(yōu)先級任務(wù)阻塞,并等待低優(yōu)先級任務(wù)執(zhí)行的現(xiàn)象。 優(yōu)先級反轉(zhuǎn)(priority inversion):高優(yōu)先級任務(wù)需要等待低優(yōu)先級任務(wù)釋放資源,而低優(yōu)先級任務(wù)又正在等待中等優(yōu)先級任務(wù)的現(xiàn)象。優(yōu)先級反轉(zhuǎn)優(yōu)先級繼承協(xié)議優(yōu)先級繼承協(xié)議的基本思想是: 當(dāng)一個(gè)任務(wù)阻塞了一個(gè)或多個(gè)高優(yōu)先級任務(wù)時(shí),該任務(wù)將不使用其原來的優(yōu)先級,而使用被該任務(wù)所阻塞的所有任務(wù)的最高優(yōu)先級作為其執(zhí)行臨界區(qū)的優(yōu)先級。 當(dāng)該任務(wù)退出臨界區(qū)時(shí),又恢復(fù)到其最初的優(yōu)先級。 優(yōu)先級天花板協(xié)議 使用優(yōu)先級天花板協(xié)議的目
40、的在于解決優(yōu)先級繼承協(xié)議中存在的死鎖和阻塞鏈問題。 優(yōu)先級天花板指控制訪問臨界資源的信號量的優(yōu)先級天花板。 信號量的優(yōu)先級天花板為所有使用該信號量的任務(wù)的最高優(yōu)先級。 在優(yōu)先級天花板協(xié)議中,如果任務(wù)獲得信號量,則在任務(wù)執(zhí)行臨界區(qū)的過程中,任務(wù)的優(yōu)先級將被抬升到所獲得信號量的優(yōu)先級天花板。 在實(shí)際應(yīng)用中,廣義的中斷通常被分為中斷、自陷和異常(exception)等類別。 中斷是由于中斷是由于CPU外部的原因而改變程序執(zhí)行外部的原因而改變程序執(zhí)行流程的過程,屬于流程的過程,屬于異步事件異步事件,又稱為,又稱為硬件硬件中斷中斷。自陷和異常則為。自陷和異常則為同步事件同步事件; 自陷表示通過處理器所擁
41、有的自陷表示通過處理器所擁有的軟件指令軟件指令、可預(yù)期地使處理器正在執(zhí)行的程序的執(zhí)行可預(yù)期地使處理器正在執(zhí)行的程序的執(zhí)行流程發(fā)生變化,以執(zhí)行特定的程序。自陷流程發(fā)生變化,以執(zhí)行特定的程序。自陷是是顯式的事件顯式的事件,需要無條件地執(zhí)行;,需要無條件地執(zhí)行; Motorola 68000系列中的系列中的Trap指令指令 ARM中的中的SWI指令指令 Intel 80 x86中的中的INT指令指令 概述 中斷的分類 分類方式 硬件中斷是否可以被屏蔽:硬件中斷是否可以被屏蔽: 可屏蔽中斷可屏蔽中斷和和不可屏蔽中斷不可屏蔽中斷 中斷源:中斷源: 硬件中斷硬件中斷和和軟件中斷軟件中斷 中斷信號的產(chǎn)生:中
42、斷信號的產(chǎn)生: 邊緣觸發(fā)中斷邊緣觸發(fā)中斷和和電平觸發(fā)中斷電平觸發(fā)中斷 中斷服務(wù)程序的調(diào)用方式:中斷服務(wù)程序的調(diào)用方式: 向量中斷向量中斷、直接中斷直接中斷和和間接中斷間接中斷 向量中斷、直接中斷和間接中斷 向量中斷:通過中斷向量來調(diào)用中斷服務(wù)程序。 直接中斷:中斷對應(yīng)的中斷服務(wù)程序的入口地址是一個(gè)固定值,當(dāng)中斷發(fā)生的時(shí)候,程序執(zhí)行流程將直接跳轉(zhuǎn)到中斷服務(wù)程序的入口地址,執(zhí)行中斷服務(wù)程序。 間接中斷:中斷服務(wù)程序的入口地址由寄存器提供。 中斷處理的過程 中斷處理的過程分為: 中斷檢測中斷檢測 中斷響應(yīng)中斷響應(yīng) 中斷處理中斷處理 中斷檢測 中斷檢測在每條指令結(jié)束時(shí)進(jìn)行,檢測是否有中斷請求或是否滿足
43、異常條件。 為滿足中斷處理的需要,在指令周期中使用了為滿足中斷處理的需要,在指令周期中使用了中斷周期中斷周期。 在中斷周期中,處理器檢查是否有中斷發(fā)生,在中斷周期中,處理器檢查是否有中斷發(fā)生,即是否出現(xiàn)中斷信號。即是否出現(xiàn)中斷信號。 沒有中斷信號:處理器繼續(xù)運(yùn)行,并通過取指周期沒有中斷信號:處理器繼續(xù)運(yùn)行,并通過取指周期取當(dāng)前程序的下一條指令;取當(dāng)前程序的下一條指令; 有中斷信號:將進(jìn)入中斷響應(yīng),對中斷進(jìn)行處理。有中斷信號:將進(jìn)入中斷響應(yīng),對中斷進(jìn)行處理。 取指令取指令執(zhí)行指令執(zhí)行指令檢查中斷檢查中斷處理中斷處理中斷開始開始停止停止取周期取周期執(zhí)行周期執(zhí)行周期中斷周期中斷周期允許中斷允許中斷中
44、斷和指令周期中斷和指令周期 不允許不允許中斷中斷中斷響應(yīng) 中斷響應(yīng)是由處理器內(nèi)部硬件完成的中斷序列,而不是由程序執(zhí)行的。 在Intel 80 x86中,中斷響應(yīng)過程的操作如下: 對可屏蔽中斷,從對可屏蔽中斷,從82598259中斷控制器芯片讀取中斷向量中斷控制器芯片讀取中斷向量號;號; 將標(biāo)志寄存器將標(biāo)志寄存器EFLAGEFLAG、CSCS和和IPIP壓棧;壓棧; 對于硬件中斷,復(fù)位標(biāo)志寄存器中的對于硬件中斷,復(fù)位標(biāo)志寄存器中的IFIF和和TFTF位,禁止位,禁止可屏蔽外部中斷和單步異常;可屏蔽外部中斷和單步異常; 根據(jù)中斷向量號,查找中斷向量表,根據(jù)中斷服務(wù)程根據(jù)中斷向量號,查找中斷向量表,
45、根據(jù)中斷服務(wù)程序的首址轉(zhuǎn)移到中斷服務(wù)程序執(zhí)行。序的首址轉(zhuǎn)移到中斷服務(wù)程序執(zhí)行。中斷處理 中斷處理:執(zhí)行中斷服務(wù)程序。 中斷服務(wù)程序用來處理自陷、異?;蚴侵袛唷V袛喾?wù)程序用來處理自陷、異?;蚴侵袛?。 盡管導(dǎo)致自陷、異常和中斷的事件不同,但大盡管導(dǎo)致自陷、異常和中斷的事件不同,但大都具有相同的中斷服務(wù)程序結(jié)構(gòu)。都具有相同的中斷服務(wù)程序結(jié)構(gòu)。 中斷處理 中斷服務(wù)程序的主要內(nèi)容: 保存上下文:保存中斷服務(wù)程序?qū)⒁褂玫谋4嫔舷挛模罕4嬷袛喾?wù)程序?qū)⒁褂玫乃屑拇嫠屑拇嫫鞯膬?nèi)容器的內(nèi)容,以便于在退出中斷服務(wù)程序之前進(jìn)行恢復(fù);,以便于在退出中斷服務(wù)程序之前進(jìn)行恢復(fù); 如果中斷向量被多個(gè)設(shè)備所共享,為
46、了確定產(chǎn)生該中如果中斷向量被多個(gè)設(shè)備所共享,為了確定產(chǎn)生該中斷信號的設(shè)備,需要斷信號的設(shè)備,需要輪詢輪詢這些設(shè)備的中斷狀態(tài)寄存器;這些設(shè)備的中斷狀態(tài)寄存器; 獲取中斷相關(guān)的其他信息;獲取中斷相關(guān)的其他信息; 對中斷進(jìn)行具體的處理;對中斷進(jìn)行具體的處理; 恢復(fù)保存的上下文恢復(fù)保存的上下文; 執(zhí)行執(zhí)行中斷返回指令中斷返回指令,使,使CPUCPU的控制返回到被中斷的程序的控制返回到被中斷的程序繼續(xù)執(zhí)行。繼續(xù)執(zhí)行。實(shí)時(shí)內(nèi)核的中斷管理 中斷服務(wù)程序通常包括三個(gè)方面的內(nèi)容: 中斷前導(dǎo):中斷前導(dǎo): 保存中斷現(xiàn)場,進(jìn)入中斷處理。保存中斷現(xiàn)場,進(jìn)入中斷處理。 用戶中斷服務(wù)程序:用戶中斷服務(wù)程序: 完成對中斷的具體處理。完成對中斷的具體處理。 中斷后續(xù):中斷后續(xù): 恢復(fù)中斷現(xiàn)場,退出中斷處理。恢復(fù)中斷現(xiàn)場,退出中斷處理。 實(shí)時(shí)內(nèi)核的中斷管理 如果中斷處理導(dǎo)致系統(tǒng)中出現(xiàn)比被中
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 西湖大學(xué)《木版畫》2023-2024學(xué)年第二學(xué)期期末試卷
- 淮南聯(lián)合大學(xué)《科技論文寫作建工》2023-2024學(xué)年第二學(xué)期期末試卷
- 上??萍即髮W(xué)《微積分(下)》2023-2024學(xué)年第二學(xué)期期末試卷
- 量子計(jì)算在云計(jì)算中的應(yīng)用-洞察闡釋
- 廣東以色列理工學(xué)院《工程造價(jià)審計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 重慶水利電力職業(yè)技術(shù)學(xué)院《郵政快遞技術(shù)與裝備》2023-2024學(xué)年第二學(xué)期期末試卷
- 華為5G核心網(wǎng)與邊緣計(jì)算的協(xié)同設(shè)計(jì)-洞察闡釋
- 區(qū)塊鏈技術(shù)在綠色供應(yīng)鏈中的作用
- 藥物藥效學(xué)評價(jià)模型行業(yè)跨境出海項(xiàng)目商業(yè)計(jì)劃書
- 品牌故事數(shù)字化檔案庫行業(yè)深度調(diào)研及發(fā)展項(xiàng)目商業(yè)計(jì)劃書
- 新媒體營銷技術(shù)與應(yīng)用PPT完整全套教學(xué)課件
- 第5章紅外教學(xué)課件
- 卡氏肺孢子蟲肺炎
- 大足縣某水庫除險(xiǎn)加固工程施工組織設(shè)計(jì)
- 基于單片機(jī)數(shù)字電壓表電路設(shè)計(jì)外文文獻(xiàn)原稿和譯文
- JJG 1149-2022電動汽車非車載充電機(jī)(試行)
- 2023版浙江評審衛(wèi)生高級專業(yè)技術(shù)資格醫(yī)學(xué)衛(wèi)生刊物名錄
- GB/T 1689-1998硫化橡膠耐磨性能的測定(用阿克隆磨耗機(jī))
- GB/T 16823.3-2010緊固件扭矩-夾緊力試驗(yàn)
- 江蘇省金陵中學(xué)2023學(xué)年物理高一下期末調(diào)研試題(含答案解析)
- 2023年合肥城建發(fā)展股份有限公司校園招聘筆試模擬試題及答案解析
評論
0/150
提交評論