版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第5章 Linux內(nèi)核簡(jiǎn)介,主要內(nèi)容 Linux核心的一般結(jié)構(gòu) 進(jìn)程的概念、進(jìn)程的調(diào)度和進(jìn)程通信 文件系統(tǒng)的構(gòu)成和管理 內(nèi)存管理 設(shè)備驅(qū)動(dòng)及中斷處理,5.1 概 述,Linux系統(tǒng)大致可分為三層: 靠近硬件的底層是內(nèi)核,即Linux操作系統(tǒng)常駐內(nèi)存部分。 中間層是內(nèi)核之外的shell層,即操作系統(tǒng)的系統(tǒng)程序部分。 最高層是應(yīng)用層,即用戶程序部分,從結(jié)構(gòu)上看,Linux操作系統(tǒng)是采用單塊結(jié)構(gòu)的操作系統(tǒng)。 一般說(shuō)來(lái),可以將操作系統(tǒng)劃分為內(nèi)核和系統(tǒng)程序兩部分。 進(jìn)程控制系統(tǒng)用于進(jìn)程管理、進(jìn)程同步、進(jìn)程通信、進(jìn)程調(diào)度和內(nèi)存管理等。 內(nèi)存管理控制內(nèi)存分配與回收。 文件系統(tǒng)管理文件、分配文件空間、管理空閑
2、空間、控制對(duì)文件的訪問并為用戶檢索數(shù)據(jù)。 Linux系統(tǒng)支持三種類型的硬件設(shè)備:字符設(shè)備、塊設(shè)備和網(wǎng)絡(luò)設(shè)備。 核心底層的硬件控制負(fù)責(zé)處理中斷以及與機(jī)器通信。,5.2 進(jìn) 程 管 理5.2.1 進(jìn)程和線程的概念,1進(jìn)程及其狀態(tài) 簡(jiǎn)單說(shuō)來(lái),進(jìn)程就是程序的一次執(zhí)行過(guò)程。 進(jìn)程至少要有三種基本狀態(tài)。這三種基本狀態(tài)是:運(yùn)行態(tài)、就緒態(tài)和封鎖態(tài)(或等待態(tài))。 進(jìn)程的狀態(tài)可依據(jù)一定的條件和原因而變化,2Linux進(jìn)程狀態(tài),3進(jìn)程的模式和類型 在Linux系統(tǒng)中,進(jìn)程的執(zhí)行模式劃分為用戶模式和內(nèi)核模式 按照進(jìn)程的功能和運(yùn)行的程序來(lái)分,進(jìn)程劃分為兩大類:一類是系統(tǒng)進(jìn)程,另一類是用戶進(jìn)程,4Linux線程 Linu
3、x把線程定義為進(jìn)程的“執(zhí)行上下文” 具有一段可執(zhí)行的程序、專用的系統(tǒng)堆??臻g、私有的“線程控制塊”(即thread_struct數(shù)據(jù)結(jié)構(gòu)) 缺少自己的存儲(chǔ)空間,5.2.2 進(jìn)程的結(jié)構(gòu),1task_struct結(jié)構(gòu) task_struct結(jié)構(gòu)包含下列幾方面的信息: 進(jìn)程狀態(tài) 調(diào)度信息 標(biāo)志符 內(nèi)部進(jìn)程通訊 鏈接信息 時(shí)間和計(jì)時(shí)器 文件系統(tǒng) 虛擬內(nèi)存 處理器信息,2進(jìn)程系統(tǒng)堆棧 每個(gè)進(jìn)程都有一個(gè)系統(tǒng)堆棧,用來(lái)保存中斷現(xiàn)場(chǎng)信息和進(jìn)程進(jìn)入內(nèi)核模式后執(zhí)行子程序(函數(shù))嵌套調(diào)用的返回現(xiàn)場(chǎng)信息。 每個(gè)進(jìn)程的系統(tǒng)堆棧和task_struct數(shù)據(jù)結(jié)構(gòu)之間存在緊密聯(lián)系,因而二者物理存儲(chǔ)空間也連在一起 系統(tǒng)堆棧的大
4、小靜態(tài)確定,用戶堆??稍谶\(yùn)行時(shí)動(dòng)態(tài)擴(kuò)展,5.2.3 對(duì)進(jìn)程的操作,1進(jìn)程的創(chuàng)建 各個(gè)進(jìn)程構(gòu)成了樹形的進(jìn)程族系 內(nèi)核在引導(dǎo)并完成了基本的初始化以后,就有了系統(tǒng)的第一個(gè)進(jìn)程(即初始化進(jìn)程,實(shí)際上是內(nèi)核線程)。除此之外,所有其他的進(jìn)程和內(nèi)核線程都由這個(gè)原始進(jìn)程或其子孫進(jìn)程所創(chuàng)建。 除初始化進(jìn)程外,其他進(jìn)程都是用系統(tǒng)調(diào)用fork( )和clone( )創(chuàng)建的。 fork( )是全部復(fù)制 ,而clone( ) 有選擇地復(fù)制,2進(jìn)程的等待 父進(jìn)程可用系統(tǒng)調(diào)用wait3( )等待它的任一個(gè)子進(jìn)程終止,也可以用系統(tǒng)調(diào)用wait4( )等待某個(gè)特定的子進(jìn)程終止。 wait3( )算法如下: (1)如果父進(jìn)程沒有
5、子進(jìn)程,則出錯(cuò)返回。 (2)如果發(fā)現(xiàn)有一個(gè)終止的子進(jìn)程,則取出子進(jìn)程的進(jìn)程號(hào),把子進(jìn)程的CPU使用時(shí)間等加到父進(jìn)程上,釋放子進(jìn)程占用的task_struct和系統(tǒng)空間堆棧,以供新進(jìn)程使用。 (3)如果發(fā)現(xiàn)有子進(jìn)程,但都不處于終止態(tài),則父進(jìn)程睡眠,等待由相應(yīng)的信號(hào)喚醒。,3進(jìn)程的終止 進(jìn)程可使用系統(tǒng)調(diào)用exit( )終止自己 其實(shí)現(xiàn)算法如下: (1)撤消所有的信號(hào)量。 (2)釋放其所有的資源,包括存儲(chǔ)空間、已打開的文件、工作目錄、信號(hào)處理表等。 (3)置進(jìn)程狀態(tài)為“終止態(tài)”(TASK_ZOMBIE)。 (4)向它的父進(jìn)程發(fā)送子進(jìn)程終止的信號(hào)。 (5)執(zhí)行進(jìn)程調(diào)度。,4進(jìn)程映像的更換 改換進(jìn)程映像
6、的工作很復(fù)雜,是由系統(tǒng)調(diào)用execve( )實(shí)現(xiàn)的,它用一個(gè)可執(zhí)行文件的副本來(lái)覆蓋該進(jìn)程的內(nèi)存空間。 ELF可執(zhí)行文件格式示意圖 execve( )系統(tǒng)調(diào)用的基本算法如下: (1)驗(yàn)證文件的可執(zhí)行性,即用戶 有權(quán)執(zhí)行它。 (2)讀文件頭,檢查它是一個(gè)可裝入模塊。 (3)釋放原有的內(nèi)存空間。 (4)按照可執(zhí)行文件的要求分配新的內(nèi)存空間,并裝入內(nèi)存。,5.2.4 進(jìn)程調(diào)度,進(jìn)程調(diào)度機(jī)制主要涉及到調(diào)度方式、調(diào)度時(shí)機(jī)和調(diào)度策略 1調(diào)度方式 基本上采用“搶占式優(yōu)先級(jí)”方式 2調(diào)度策略三種不同的調(diào)度策略 SCHED_FIFO短實(shí)時(shí)進(jìn)程,對(duì)時(shí)間性要求比較強(qiáng) SCHED_RR較長(zhǎng)時(shí)間的實(shí)時(shí)進(jìn)程,對(duì)應(yīng)“時(shí)間片輪
7、轉(zhuǎn)法” SCHED_OTHER交互式的分時(shí)進(jìn)程,這類進(jìn)程的優(yōu)先權(quán)取決于兩個(gè)因素:一個(gè)因素是進(jìn)程剩余時(shí)間配額;另一個(gè)是進(jìn)程的優(yōu)先數(shù)nice 優(yōu)先數(shù)越小,其優(yōu)先級(jí)越高 后臺(tái)進(jìn)程的優(yōu)先級(jí)低于任何交互(前臺(tái))進(jìn)程的優(yōu)先級(jí),3調(diào)度時(shí)機(jī) (1)當(dāng)前進(jìn)程調(diào)用系統(tǒng)調(diào)用nanosleep( )或者pause( ),使自己進(jìn)入睡眠狀態(tài),主動(dòng)讓出一段時(shí)間的CPU使用權(quán)。 (2)進(jìn)程終止,永久地放棄對(duì)CPU的使用。 (3)在時(shí)鐘中斷處理程序執(zhí)行過(guò)程中,發(fā)現(xiàn)當(dāng)前進(jìn)程連續(xù)運(yùn)行的時(shí)間過(guò)長(zhǎng)。 (4)當(dāng)喚醒一個(gè)睡眠進(jìn)程時(shí),發(fā)現(xiàn)被喚醒的進(jìn)程比當(dāng)前進(jìn)程更有資格運(yùn)行。 (5)一個(gè)進(jìn)程通過(guò)執(zhí)行系統(tǒng)調(diào)用來(lái)改變調(diào)度策略或者降低自身的優(yōu)先權(quán)
8、(如nice命令),從而引起立即調(diào)度。 4調(diào)度算法,5.2.5 shell基本工作原理,它不屬于內(nèi)核部分, 而是在核心之外, 以用戶態(tài)方式運(yùn)行。 其基本功能是解釋并 執(zhí)行用戶打入的各種 命令,實(shí)現(xiàn)用戶與 Linux核心的接口。,5.3 文 件 系 統(tǒng),支持多種不同的文件系統(tǒng),如:ext, FAT, ext2, ext3, MINIX, MS DOS, SYSV等。目前,Linux主要使用的文件系統(tǒng)是ext3。 5.3.1 ext2文件系統(tǒng) ext2文件系統(tǒng)支持標(biāo)準(zhǔn)UNIX文件類型:普通文件、目錄文件、特別文件和符號(hào)鏈接。 ext2文件系統(tǒng)可以管理特別大的分區(qū)。 ext2文件系統(tǒng)支持長(zhǎng)文件名,最
9、大長(zhǎng)度為255個(gè)字符。 ext2文件系統(tǒng)為超級(jí)用戶保留了一些數(shù)據(jù)塊,約為5%。,1ext2文件系統(tǒng)的物理結(jié)構(gòu),2塊組的構(gòu)造 每個(gè)塊組中包含超級(jí)塊、組描述結(jié)構(gòu)、塊位圖、索引節(jié)點(diǎn)位圖、索引節(jié)點(diǎn)表和數(shù)據(jù)塊。 (1)超級(jí)塊(Superblock) 超級(jí)塊中包含有文件系統(tǒng)本身的大小和形式的基本信息。 每個(gè)塊組都一個(gè)超級(jí)塊。 超級(jí)塊中包含:幻數(shù)、修訂級(jí)別 、安裝計(jì)數(shù)和最大安裝數(shù) 、塊組號(hào)碼 、數(shù)據(jù)塊大小 、每組數(shù)據(jù)塊的個(gè)數(shù)、空閑塊 、空閑索引節(jié)點(diǎn) 、第一個(gè)索引節(jié)點(diǎn) (2)塊組描述結(jié)構(gòu)(Block Group Descriptor) 每個(gè)數(shù)據(jù)塊組都有一個(gè)描述它的數(shù)據(jù)結(jié)構(gòu),即塊組描述結(jié)構(gòu)。 包含以下信息:數(shù)據(jù)
10、塊位示圖 、索引節(jié)點(diǎn)位示圖、索引節(jié)點(diǎn)表 、空閑塊數(shù)、空閑索引節(jié)點(diǎn)數(shù)和已用目錄數(shù)。,3索引節(jié)點(diǎn)(Inode) 索引節(jié)點(diǎn)又被稱為I節(jié)點(diǎn),每個(gè)文件都有惟一一個(gè)索引節(jié)點(diǎn)。ext2文件系統(tǒng)的索引節(jié)點(diǎn)起著文件控制塊的作用,利用這種數(shù)據(jù)結(jié)構(gòu)可對(duì)文件進(jìn)行控制和管理。 索引節(jié)點(diǎn)有兩種形式:盤索引節(jié)點(diǎn)(如ext2_inode)和內(nèi)存索引節(jié)點(diǎn)(如inode)。 盤索引節(jié)點(diǎn)包括以下一些主要內(nèi)容: (1)文件模式,描述文件屬性和類型。 (2)文件屬主信息,包括文件主標(biāo)志號(hào)和同組用戶標(biāo)志號(hào)。 (3)文件大小,即文件的字節(jié)大小。 (4)時(shí)間戳,包括索引節(jié)點(diǎn)建立的時(shí)間、最近訪問時(shí)間、最后修改時(shí)等。 (5)文件鏈接計(jì)數(shù)。 (6
11、)數(shù)據(jù)塊索引表。利用多重索引表的結(jié)構(gòu)存放指向文件數(shù)據(jù)塊的指針。 內(nèi)存索引節(jié)點(diǎn)除了具有盤索引節(jié)點(diǎn)的主要信息外,還增添了反映該文件動(dòng)態(tài)狀態(tài)的項(xiàng)目,4多重索引結(jié)構(gòu),5ext2中的目錄項(xiàng) 當(dāng)創(chuàng)建一個(gè)文件時(shí),就構(gòu)成一個(gè)目錄項(xiàng),并添加到相應(yīng)的目錄文件中。一個(gè)目錄文件可以包含很多目錄項(xiàng),每個(gè)目錄項(xiàng)(如ext2文件系統(tǒng)的ext2_dir_entry_2)包含的信息有: 索引節(jié)點(diǎn)號(hào) 目錄項(xiàng)長(zhǎng)度 名字長(zhǎng)度 文件類型 文件名字,6位示圖 利用一串二進(jìn)位的值來(lái)反映該塊組中數(shù)據(jù)塊的分配情況,也稱作位向量(Bit Vector)法。 設(shè)下列數(shù)據(jù)塊是空閑的: 2,3,4,5,8,9,10,11,12,13,17,18,25
12、,26,27,. 則塊位示圖的表示為:100001100000011100111111000.,5.3.2 虛擬文件系統(tǒng),1VFS系統(tǒng)結(jié)構(gòu) VFS是建立在具體文件系 統(tǒng)之上的,它為用戶程序 提供一個(gè)統(tǒng)一的、抽象的、 虛擬的文件系統(tǒng)界面。這 個(gè)抽象的界面主要由一組 標(biāo)準(zhǔn)的、抽象的有關(guān)文件 操作構(gòu)成,以系統(tǒng)調(diào)用的 形式提供給用戶程序,2.VFS超級(jí)塊 每個(gè)安裝的文件系統(tǒng)都有一個(gè)VFS超級(jí)塊,其中包含以下主要信息: 設(shè)備標(biāo)識(shí)符 索引節(jié)點(diǎn)指針 數(shù)據(jù)塊大小 超級(jí)塊操作集 文件系統(tǒng)類型 文件系統(tǒng)的特殊信息 3VFS索引節(jié)點(diǎn) VFS中每個(gè)文件和目錄都有一個(gè)且只有一個(gè)VFS索引節(jié)點(diǎn),4Linux文件系統(tǒng)的邏輯
13、結(jié)構(gòu),5文件系統(tǒng)的安裝與拆卸 根文件系統(tǒng)一旦安裝上,則在整個(gè)系統(tǒng)運(yùn)行過(guò)程中是不能卸載的 其他的文件系統(tǒng)(例如, 由軟盤構(gòu)成的文件系統(tǒng)) 可以根據(jù)需要(如從硬盤 向軟盤復(fù)制文件),作為 子系統(tǒng)動(dòng)態(tài)地安裝到 主系統(tǒng)中,6VFS索引節(jié)點(diǎn)緩存和目錄緩存 其基本思想是,VFS索引節(jié)點(diǎn)在數(shù)據(jù)結(jié)構(gòu)上被鏈入不同的散列隊(duì)列,具有相同散列值的VFS索引節(jié)點(diǎn)在同一隊(duì)列中。設(shè)置一個(gè)散列表,其中每一項(xiàng)包含一個(gè)指向VFS索引節(jié)點(diǎn)散列隊(duì)列的頭指針。散列值是根據(jù)文件系統(tǒng)所在塊設(shè)備的標(biāo)志符和索引節(jié)點(diǎn)號(hào)碼計(jì)算出來(lái)的 目錄緩存也采用散列表的方法 進(jìn)行管理。表中每一項(xiàng)都是一 個(gè)指針,指向有相同散列值的 目錄緩存隊(duì)列。散列值是利用 文
14、件系統(tǒng)所在設(shè)備的號(hào)碼和目 錄名來(lái)計(jì)算的,7數(shù)據(jù)塊緩沖區(qū) 采用多重緩沖技術(shù),來(lái)平滑和加快文件信息從內(nèi)存到磁盤的傳輸 一個(gè)緩沖區(qū)由兩部分組成:存放數(shù)據(jù)的緩沖區(qū)和一個(gè)緩沖控制塊 緩沖區(qū)和緩沖控制塊是一一對(duì)應(yīng)的。系統(tǒng)通過(guò)緩沖控制塊來(lái)實(shí)現(xiàn)對(duì)緩沖區(qū)的管理 所有處于“空閑”狀態(tài)的buffer_head 都鏈入自由鏈中,它只有一條。具有相同散列值(是由設(shè)備的標(biāo)志符和數(shù)據(jù)塊的塊號(hào)生成的)的緩沖區(qū)組成一條散列隊(duì)列,可以有多個(gè)散列隊(duì)列。,5.4 內(nèi) 存 管 理,Linux系統(tǒng)采用了虛擬內(nèi)存管理機(jī)制,就是交換和請(qǐng)求分頁(yè)存儲(chǔ)管理技術(shù) 5.4.1 請(qǐng)求分頁(yè)機(jī)制 1分頁(yè)概念 邏輯空間分頁(yè) 內(nèi)存空間分頁(yè) 頁(yè)面和內(nèi)存塊的大小是
15、由硬件確定的 邏輯地址表示 內(nèi)存分配原則 頁(yè)表,2請(qǐng)求分頁(yè)的基本思想 請(qǐng)求分頁(yè)提供虛擬存儲(chǔ)器 在每一個(gè)頁(yè)表項(xiàng)中增加一個(gè)狀態(tài)位表示一個(gè)頁(yè)面是否已裝入內(nèi)存塊 如果地址轉(zhuǎn)換機(jī)構(gòu)遇到一個(gè)具有N狀態(tài)的頁(yè)表項(xiàng)時(shí),便產(chǎn)生一個(gè)缺頁(yè)中斷,3Linux的多級(jí)頁(yè)表 Linux進(jìn)程的虛存空間 Linux系統(tǒng)采用三級(jí)頁(yè)表的方式,4內(nèi)存頁(yè)的分配與釋放 Linux系統(tǒng)采用兩種方法來(lái)管理內(nèi)存頁(yè):位圖和鏈表 頁(yè)組中內(nèi)存頁(yè)的數(shù)量依次按2的倍數(shù)遞增,5.4.2 內(nèi)存交換,內(nèi)核的交換守護(hù)進(jìn)程kswapd :有自己的進(jìn)程控制塊task_struct結(jié)構(gòu),它與其他進(jìn)程一樣受內(nèi)核的調(diào)度。但是,它沒有自己獨(dú)立的地址空間,只使用系統(tǒng)空間,所以
16、也把它稱為線程。它的任務(wù)就是保證系統(tǒng)中有足夠的空閑內(nèi)存頁(yè)。 當(dāng)系統(tǒng)啟動(dòng)時(shí),交換守護(hù)進(jìn)程由內(nèi)核的init(初始化)進(jìn)程啟動(dòng)。被定時(shí)喚醒 。 所做的工作主要分為兩部分:將若干不常用的活躍內(nèi)存頁(yè)面變?yōu)椴换钴S狀態(tài);清理不活躍的“臟”頁(yè)面,或者回收一些內(nèi)存頁(yè),使之成為空閑的內(nèi)存頁(yè)。 作為交換空間的交換文件實(shí)際就是普通文件,但它們所占的磁盤空間必須是連續(xù)的,5.5 進(jìn) 程 通 信5.5.1 信號(hào)機(jī)制,1信號(hào)概念 信號(hào)(signal,稱為軟中斷)機(jī)制是在軟件層次上對(duì)中斷機(jī)制的一種模擬 該機(jī)構(gòu)通常包括三部分: (1)信號(hào)的分類、產(chǎn)生和傳送。 (2)對(duì)各種信號(hào)預(yù)先規(guī)定 的處理方式。 (3)信號(hào)的檢測(cè)和處理。,2
17、信號(hào)分類 信號(hào)號(hào)碼 符號(hào)表示 含義 1 SIGHUP 遠(yuǎn)程用戶掛斷 2 SIGINT 輸入中斷信號(hào)(Ctrl+C) 3 SIGQUIT 輸入退出信號(hào)(Ctrl+) 4 SIGILL 非法指令 5 SIGTRAP 遇到調(diào)試斷點(diǎn) 6 SIGIOT IOT指令 7 SIGBUS 總線超時(shí) 8 SIGFPE 浮點(diǎn)異常 9 SIGKILL 要求終止進(jìn)程(不可屏蔽) 10 SIGUSR1 用戶自定義 11 SIGSEGV 越界訪問內(nèi)存 12 SIGUSR2 用戶自定義 13 SIGPIPE 管道文件只有寫進(jìn)程,沒有讀進(jìn)程 14 SIGALRM 定時(shí)報(bào)警信號(hào) 15 SIGTERM 軟件終止信號(hào) 17 SIG
18、CHLD 子進(jìn)程終止 19 SIGSTOP 進(jìn)程暫停運(yùn)行 30 SIGPWR 電源故障,3進(jìn)程對(duì)信號(hào)可采取的處理方式 進(jìn)程彼此間也可用系統(tǒng)提供的系統(tǒng)調(diào)用(如kill( ))發(fā)送信號(hào) 普通進(jìn)程只能向具有相同uid和gid的進(jìn)程發(fā)送信號(hào)或向相同進(jìn)程組中的其他進(jìn)程發(fā)送信號(hào) 進(jìn)程接到信號(hào)后,在一定時(shí)機(jī)(如中斷處理末尾)做相應(yīng)處理,可采取以下處理方式: (1)忽略信號(hào)。進(jìn)程可忽略收到的信號(hào),但不能忽略SIGKILL和SIGSTOP信號(hào)。 (2)阻塞信號(hào)。進(jìn)程可以選擇對(duì)某些信號(hào)予以阻塞。 (3)由進(jìn)程處理該信號(hào)。用戶在trap命令中可以指定處理信號(hào)的程序,從而進(jìn)程本身可在系統(tǒng)中標(biāo)明處理信號(hào)的處理程序的地址
19、。當(dāng)發(fā)出該信號(hào)時(shí),就由標(biāo)明的處理程序進(jìn)行處理。 (4)由系統(tǒng)進(jìn)行默認(rèn)處理。如上所述,系統(tǒng)內(nèi)核對(duì)各種信號(hào)(除用戶自定義之外)都規(guī)定了相應(yīng)的處理程序。在默認(rèn)情況下,信號(hào)就由內(nèi)核處理,即執(zhí)行內(nèi)核預(yù)定的處理程序。,4對(duì)信號(hào)的檢測(cè)和處理流程 信號(hào)的檢測(cè)與處理的過(guò)程如圖所示。圖中的標(biāo)出處理流程的順序。從圖中可以看出,信號(hào)的檢測(cè)是在系統(tǒng)空間中進(jìn)行,而對(duì)信號(hào)的處理卻是在用戶空間中執(zhí)行。,5.5.2 管道文件,一個(gè)管道線就是連接兩個(gè)進(jìn)程的一個(gè)打開文件 由系統(tǒng)自動(dòng)處理二者間的同步、調(diào)度和緩沖。管道文件允許兩個(gè)進(jìn)程按先入先出(FIFO)的方式傳送數(shù)據(jù),而它們可以彼此不知道對(duì)方的存在 每個(gè)管道只有 一個(gè)內(nèi)存頁(yè)面用 做
20、緩沖區(qū),該頁(yè) 面是按環(huán)型緩沖 區(qū)的方式來(lái)使用 的。 Linux系統(tǒng)也支持 命名管道,5.5.3 System V IPC機(jī)制,Linux系統(tǒng)也支持UNIX System V版本中的三種進(jìn)程間通信機(jī)制,它們是: 消息通信 共享內(nèi)存 信號(hào)量,5.6 設(shè) 備 管 理5.6.1 設(shè)備管理概述,所有設(shè)備都作為特別文件,從而在管理上就具有下列共性: (1)每個(gè)設(shè)備都對(duì)應(yīng)文件系統(tǒng)中的一個(gè)索引節(jié)點(diǎn),都有一個(gè)文件名。 (2)應(yīng)用程序通??梢酝ㄟ^(guò)系統(tǒng)調(diào)用open( )打開設(shè)備文件,建立起與目標(biāo)設(shè)備的連接。 (3)對(duì)設(shè)備的使用類似于對(duì)文件的存取。 (4)設(shè)備驅(qū)動(dòng)程序是系統(tǒng)內(nèi)核的一部分,它們必須為系統(tǒng)內(nèi)核或者它們的子
21、系統(tǒng)提供標(biāo)準(zhǔn)的接口。 (5)設(shè)備驅(qū)動(dòng)程序利用一些標(biāo)準(zhǔn)的內(nèi)核服務(wù),如內(nèi)存分配等。另外,大多數(shù)Linux設(shè)備驅(qū)動(dòng)程序都可以在需要時(shí)裝入內(nèi)核,不需要時(shí)卸載下來(lái)。,設(shè)備驅(qū)動(dòng)的分層結(jié)構(gòu),5.6.2 設(shè)備驅(qū)動(dòng)程序和內(nèi)核之間的接口,1可安裝模塊 可安裝模塊是可以在系統(tǒng)運(yùn)行時(shí)動(dòng)態(tài)地安裝和拆卸的內(nèi)核模塊,即經(jīng)過(guò)編譯但尚未連接的目標(biāo)文件(后綴為.o)。 設(shè)備驅(qū)動(dòng)程序或者與設(shè)備驅(qū)動(dòng)緊密相關(guān)的部分(如文件系統(tǒng))都是利用可安裝模塊實(shí)現(xiàn)的。 在通常情況下,用戶利用系統(tǒng)提供的插入模塊工具和移走模塊工具來(lái)裝卸可安裝模塊。,2字符設(shè)備 用戶對(duì)字符設(shè)備的使用就和存取普通文件一樣。在應(yīng)用程序中使用標(biāo)準(zhǔn)的系統(tǒng)調(diào)用來(lái)打開、關(guān)閉、讀寫字符設(shè)備。,3塊設(shè)備 對(duì)塊設(shè)備的存取與對(duì)文件的存取方式一樣,其實(shí)現(xiàn)機(jī)制也與字符設(shè)備使用的機(jī)制相同。,5.7 中斷、異常和系統(tǒng)調(diào)用 5.7.1 中斷處理,1中斷響應(yīng) 一般說(shuō)來(lái),中斷響應(yīng)順序執(zhí)行下述三步動(dòng)作: (1)中止當(dāng)前程序的執(zhí)行; (2)保存原程序的斷點(diǎn)信息(主要是程序計(jì)數(shù)器PC和程序狀態(tài)寄存器PS的內(nèi)容); (3)從中斷控制器取出中斷向量,轉(zhuǎn)到相應(yīng)的處理程序。,2中斷處理 核心對(duì)中斷處理的順序主要由以下動(dòng)作完成: 保存正在運(yùn)行進(jìn)程的各寄存器的內(nèi)容,把它們放入核 心棧的新幀面中。 確定“
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 道客礦山安全培訓(xùn)課件
- 2025遠(yuǎn)程監(jiān)測(cè)助力心衰管理:肺動(dòng)脈壓監(jiān)測(cè)指導(dǎo)臨床實(shí)踐與效益解析課件
- 哈三中2025-2026學(xué)年高三上學(xué)期期末考試歷史試卷(含答案)
- 邊坡安全培訓(xùn)課件
- 十八項(xiàng)核心制度(終版)
- 車險(xiǎn)理賠培訓(xùn)課件
- 露天礦山火災(zāi)演練方案風(fēng)險(xiǎn)辨識(shí)
- 2026年食品安全培訓(xùn)考試考試題及答案
- 酒店員工辭職退職制度
- 酒店應(yīng)急預(yù)案演練制度
- 游戲公司運(yùn)營(yíng)風(fēng)險(xiǎn)控制預(yù)案
- 山東省臨沂市2024-2025學(xué)年高二數(shù)學(xué)上學(xué)期期中試題
- DZ∕T 0248-2014 巖石地球化學(xué)測(cè)量技術(shù)規(guī)程(正式版)
- JTJ-T-257-1996塑料排水板質(zhì)量檢驗(yàn)標(biāo)準(zhǔn)-PDF解密
- 殘疾人法律維權(quán)知識(shí)講座
- 瀝青維護(hù)工程投標(biāo)方案技術(shù)標(biāo)
- 水電站建筑物課程設(shè)計(jì)
- 兒童行為量表(CBCL)(可打印)
- 硒功能與作用-課件
- 《英語(yǔ)教師職業(yè)技能訓(xùn)練簡(jiǎn)明教程》全冊(cè)配套優(yōu)質(zhì)教學(xué)課件
- DB53∕T 1034-2021 公路隧道隱蔽工程無(wú)損檢測(cè)技術(shù)規(guī)程
評(píng)論
0/150
提交評(píng)論