freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

unixlinux操作系統(tǒng)內(nèi)核結(jié)構(gòu)-在線瀏覽

2025-07-13 19:42本頁面
  

【正文】 通常 (default)打開三個(gè)文件: 標(biāo)準(zhǔn)輸入文件( fd=0) 標(biāo)準(zhǔn)輸出文件( fd=1) 標(biāo)準(zhǔn)錯(cuò)誤輸出文件( fd=2) 例如: grep abc grep abc file1 grep abc file1 file2 grep abc file1 file2 2 file3 管道( pipe): A進(jìn)程將標(biāo)準(zhǔn)輸出重新定向到管道中去; B進(jìn)程將標(biāo)準(zhǔn)輸入重新定向從管道中來。分配和收回存貯區(qū)和索引節(jié)點(diǎn) 5.設(shè)備管理 對(duì) I/O設(shè)備進(jìn)行有控制的存取(多進(jìn)程系統(tǒng)的特征) 內(nèi)核提供的服務(wù)的特點(diǎn): 服務(wù)是透明的 ①文件類型透明 : 用戶可不關(guān)心是普通文件還是外部設(shè)備,但 要關(guān)心文件類型! ②文件系統(tǒng)的透明 : 文件系統(tǒng)類型、存放的物理位置。 “核心分配資源” : 一個(gè)在核心狀態(tài)下執(zhí)行的進(jìn)程分配資源。 read write open A 進(jìn)程 B 進(jìn)程 C 進(jìn)程 中斷與例外 ? 中斷(要保存上下文) : 來自 進(jìn)程之外 的事件(外設(shè)、時(shí)鐘等)引起的,發(fā)生在兩條指令執(zhí)行之間,中斷服務(wù)完畢后從下一條指令繼續(xù)執(zhí)行。 處理機(jī)執(zhí)行級(jí) 用一組特權(quán)指令給處理機(jī)設(shè)置一個(gè)執(zhí)行級(jí) ,以屏蔽同級(jí)和低級(jí)的中斷,最大限度地減少其它事件的干擾,使當(dāng)前任務(wù)順利執(zhí)行并盡快完成;但開放更高級(jí)的中斷,以響應(yīng)更緊迫的請(qǐng)求。 核心永遠(yuǎn)是活躍的 普通進(jìn)程具有特定的生命周期(除非人為設(shè)定為無限循環(huán)) read write open close . . . 核心代碼段 A進(jìn)程 B進(jìn)程 open read read write 映射 映射 只是用戶進(jìn)程中的核心態(tài)下運(yùn)行的代碼段常駐內(nèi)存,而非整個(gè)用戶進(jìn)程常駐內(nèi)存。 第二章 核心導(dǎo)言 ? UNIX操作系統(tǒng)的體系結(jié)構(gòu) “ 文件 ”和“ 進(jìn)程 ”是 UNIX系統(tǒng)的兩個(gè)最基本實(shí)體和中心概念, UNIX系統(tǒng)的所有操作都是以這兩者為基礎(chǔ)的。 硬 件 硬 件 控 制 字符設(shè)備 塊設(shè)備 設(shè)備驅(qū)動(dòng)程序 高速緩沖 文件子系統(tǒng) 系 統(tǒng) 調(diào) 用 界 面 程 序 庫 進(jìn)程控制 子系統(tǒng) 進(jìn)程間通訊 調(diào)度程序 存儲(chǔ)管理 用戶程序 用戶級(jí) 核心級(jí) 核心級(jí) 硬件級(jí) 陷入 ? 系統(tǒng)概念 文件系統(tǒng)概貌 1.索引節(jié)點(diǎn)( index node——inode) inode特征 : ? 文件的內(nèi)部名稱(或代號(hào)),方便機(jī)器操作; ? 每個(gè)文件都有一個(gè)且只有一個(gè) inode與之對(duì)應(yīng); ? inode存放文件的靜態(tài)參數(shù):存放地點(diǎn)、所有者、文件類型、存取權(quán)限、文件大小等; ? 每個(gè)文件都可以有多個(gè)名字,但都映射到同一個(gè)inode上; ? 各 inode之間以 inode號(hào)相區(qū)別; 2.鏈結(jié)( link) ——對(duì)應(yīng)命令名 ln 文件 i節(jié)點(diǎn) abc xyz 文件名 每個(gè)鏈接名可以放在不同的目錄下(同一個(gè)文件系統(tǒng)下); 如鏈接數(shù)不為零,則文件(節(jié)點(diǎn))仍然存在。 abc和 xyz具有相同的 i結(jié)點(diǎn)號(hào); ③減少移植應(yīng)用程序時(shí),因使用指定位置的文件,而拷貝該文件到指定位置去的麻煩。 ? 鏈接的是“符號(hào)”而不是文件,因此“符號(hào)”可以是不存在的文件,即無意義的字符串。 ? “普通鏈結(jié)”中各名字必須在同一文件系統(tǒng)中,“符號(hào)鏈結(jié)” 可在不同的文件系統(tǒng)中。這樣要使用(打開)同一個(gè)文件的進(jìn)程不必再到盤上去尋找了,(共享?。? 5.用戶打開文件表(或稱用戶文件描述符表) 在系統(tǒng)中每一個(gè)進(jìn)程都有一個(gè)描述該進(jìn)程的數(shù)據(jù)結(jié)構(gòu) user(類似于描述文件的 i節(jié)點(diǎn)),在 user中有一個(gè)數(shù)組, 存放一組指針指向系統(tǒng)打開文件表中該進(jìn)程打開的文件所對(duì)應(yīng)的表項(xiàng)。 這個(gè) u_ofile數(shù)組就是該進(jìn)程的用戶打開文件表。 因?yàn)橐粋€(gè)進(jìn)程在一個(gè)時(shí)間片內(nèi)可能讀寫不完所需內(nèi)容,需要在下一個(gè)時(shí)間片繼續(xù)從上一個(gè)時(shí)間片結(jié)束時(shí)的讀寫位置開始讀寫,故在進(jìn)程生存期間應(yīng)保持一讀寫指針。 A進(jìn)程 B進(jìn)程 file表 活動(dòng) inode表 用戶打開文件表 系統(tǒng)打開文件表 活動(dòng) i節(jié)點(diǎn)表 為什么要單獨(dú)設(shè)立一個(gè) file表來存放讀寫指針呢? 由于可能有多個(gè)進(jìn)程要共享一個(gè)被打開文件的inode,而每個(gè)進(jìn)程的 讀寫指針都不相同 ,故不能放在 inode表中。 因此只能在用戶打開文件表和活動(dòng) inode表之外再建立一個(gè)系統(tǒng)打開文件表( file表)來存放讀寫指針。 由于任一時(shí)刻只有一個(gè)進(jìn)程在運(yùn)行(微觀上看),故該文件也只要求內(nèi)存中有一個(gè)副本即可 ,只是各個(gè)進(jìn)程有自己的讀寫指針而已。對(duì)其它資源的共享采用的是與之相似的另外幾種方法。它包括存儲(chǔ)器映象、通用寄存器映像,地址映射空間、打開文件狀態(tài)等。對(duì)映像的執(zhí)行也就是一個(gè)程序在虛擬機(jī)上動(dòng)態(tài)執(zhí)行的過程。文件的幻數(shù)( magic number) 機(jī)器類型 程序入口點(diǎn) 正文段 —— 程序的功能代碼 數(shù)據(jù)標(biāo)識(shí)段 —— 標(biāo)識(shí)未初始化的數(shù)據(jù)要占用的空間大小 其它信息段 —— 主要用于存放符號(hào)表 2. 程序的執(zhí)行 一個(gè)進(jìn)程在執(zhí)行系統(tǒng)調(diào)用 exec時(shí),把可執(zhí)行文件裝入本進(jìn)程的三個(gè)區(qū)域中: 正文區(qū) :對(duì)應(yīng)可執(zhí)行文件的正文段 數(shù)據(jù)區(qū) :對(duì)應(yīng)可執(zhí)行文件的數(shù)據(jù)標(biāo)識(shí)段 堆棧區(qū) :新建立的進(jìn)程工作區(qū) 堆棧主要用于 傳遞參數(shù),保護(hù)現(xiàn)場,存放返回地址以及為局部動(dòng)態(tài)變量 提供存儲(chǔ)區(qū)。核心棧和用戶棧不能交叉使用。有如下程序,在主程序中調(diào)用函數(shù),并進(jìn)行參數(shù)傳遞: main (int argc, char *argv[ ]) { char buf[1024]。 … readfile (buf, number)。 int temp。 0進(jìn)程 是由機(jī)器上電時(shí)“手工”創(chuàng)建的,調(diào)用 fork創(chuàng)建了1進(jìn)程后,成為 對(duì)換進(jìn)程( swap)。 父進(jìn)程 調(diào)用 fork系統(tǒng)調(diào)用的進(jìn)程 子進(jìn)程 由系統(tǒng)調(diào)用 fork產(chǎn)生的進(jìn)程 除 0進(jìn)程外,其它所有進(jìn)程都是另一個(gè)進(jìn)程調(diào)用 fork后產(chǎn)生的。 ②就緒狀態(tài) 此時(shí)進(jìn)程基本具備了運(yùn)行條件,正在等待使用處理機(jī)。 運(yùn)行 睡眠 就緒 喚醒 中斷 5. 在 UNIX環(huán)境下,進(jìn)程有如下特征: ① 每個(gè)進(jìn)程在 核心進(jìn)程表 ( proc數(shù)組)都占有一項(xiàng),在其中保留相應(yīng)的狀態(tài)信息。(抗病毒傳播的重要原因之一) 第三章 數(shù)據(jù)緩沖區(qū)高速緩沖 硬件緩存( cache) 由一種高速寄存器( register)組成,主要解決 CPU與 RAM之間的 速度差 問題。 數(shù)據(jù)緩沖區(qū)高速緩沖是 UNIX特有的對(duì)數(shù)據(jù) 并發(fā)訪問 的一種控制機(jī)制。 存 儲(chǔ) 區(qū) 因?yàn)榫彌_區(qū)首部與數(shù)據(jù)存儲(chǔ)區(qū)之間有一一對(duì)應(yīng)的關(guān)系,所以通常把兩者統(tǒng)稱為緩沖區(qū)。 緩沖區(qū)首部 緩沖區(qū)首部的定義 : struct buf { 緩沖區(qū)標(biāo)志 標(biāo)識(shí)緩沖區(qū)狀態(tài) 緩沖區(qū)鏈接指針 向前向后串成鏈表 空閑緩沖區(qū)鏈表指針 聯(lián)結(jié)空閑緩沖區(qū) 設(shè)備號(hào) 標(biāo)識(shí)緩沖區(qū) 塊號(hào) union{ 緩沖區(qū)中的數(shù)據(jù)類型 數(shù)據(jù)塊 超級(jí)塊 柱面塊 i節(jié)點(diǎn)塊 }b_un 其它控制信息 } 緩沖池的結(jié)構(gòu) 最近最少使用( LRU)算法: Least Recently Used ① 程序設(shè)計(jì)采用模塊化和層次化結(jié)構(gòu),盡量避免使用 goto語句,程序跳轉(zhuǎn)少,適應(yīng)“流水線( pipeline)”體系結(jié)構(gòu)的系統(tǒng); ② 特定時(shí)間段內(nèi),程序在一個(gè)相對(duì)集中空間(代碼段)內(nèi)運(yùn)行,涉及的數(shù)據(jù)(廣義的:文件名、變量、指針和數(shù)組等)的個(gè)數(shù)相對(duì)較少; ③ 當(dāng)前使用過的數(shù)據(jù),馬上還要使用的可能性最大,較長時(shí)間未用過的數(shù)據(jù),即將使用的可能性最小。這些數(shù)據(jù)馬上還要使用的可能性最小??臻e鏈表是一個(gè)以空閑緩沖區(qū)鏈表頭開始的“ 雙向循環(huán)鏈表 ”。 鏈 表 頭 空 閑 緩 沖 區(qū) 1 空 閑 緩 沖 區(qū) 2 空 閑 緩 沖 區(qū) 3 空 閑 緩 沖 區(qū) n 空閑緩沖區(qū)鏈表操作 ① 取用任意空閑緩沖區(qū) 從空閑緩沖區(qū)鏈表的表頭位置取下一個(gè)空閑緩沖區(qū),后面的空閑緩沖區(qū)依次向前移動(dòng)。只有當(dāng)該空閑緩沖區(qū)所裝數(shù)據(jù)出錯(cuò)時(shí)才掛到鏈頭。 當(dāng)系統(tǒng)不斷從鏈頭取用空閑緩沖區(qū),又把使用過的(裝有數(shù)據(jù)的)緩沖區(qū)掛到鏈尾,一個(gè)裝有有效數(shù)據(jù)的緩沖區(qū)就會(huì)逐漸向鏈表頭移動(dòng)。 空閑緩沖區(qū)分類 系統(tǒng)中共設(shè)置了四個(gè)空閑緩沖區(qū)鏈表,根據(jù)緩沖區(qū)的不同用途而把它的放入不同的空閑緩沖區(qū)鏈表中。這四個(gè)空閑鏈表是: 0空閑緩沖區(qū)鏈表 ——存放文件系統(tǒng)超級(jí)塊 1空閑緩沖區(qū)鏈表 ——存放通常使用的數(shù)據(jù)塊 2空閑緩沖區(qū)鏈表 ——存放延遲寫、無效數(shù)據(jù)或錯(cuò)誤內(nèi)容 3空閑緩沖區(qū)鏈表 ——存放沒有對(duì)應(yīng)存儲(chǔ)空間的緩沖區(qū)首部 如果某種類型的空閑緩沖區(qū)不夠用時(shí),核心也從其它空閑緩沖區(qū)鏈表中取用空閑緩沖區(qū)。 hashno = ((diskno + blkno) / RND) % BUFHSZ diskno: 設(shè)備號(hào) blkno: 塊號(hào) BUFHSZ: 最大 hash值,通常為 63。 每一個(gè) hash 鏈表都是一個(gè)由鏈表頭指向的 雙向循環(huán)鏈表 ,查找某一個(gè)指定 hashno 值的緩沖區(qū)時(shí),也是從相應(yīng)的 hash鏈表的表頭位置開始向表尾方向進(jìn)行查找。 鏈 表 頭 緩 沖 區(qū) 1 緩 沖 區(qū) 2 緩 沖 區(qū) 3 緩 沖 區(qū) n hash 鏈表的結(jié)構(gòu) 緩沖區(qū) 緩沖區(qū) 緩沖區(qū) 緩沖區(qū) 緩沖區(qū) 緩沖區(qū) 緩沖區(qū) 緩沖區(qū) 緩沖區(qū) 空閑鏈表頭 Hash鏈表頭 hashno=0 hashno=1 hashno=62 緩沖池的結(jié)構(gòu) 緩沖區(qū)的使用 如果要找特定緩沖區(qū),根據(jù) hashno從相應(yīng)的 hash鏈表的表頭處開始逐個(gè)向后查找; 如果找到,則直接取用,并將其移動(dòng)到 hash鏈的鏈頭; 如果未找到,則從相應(yīng)的空閑緩沖區(qū)鏈表的表頭處取下一個(gè)空閑緩沖區(qū),填入相應(yīng)數(shù)據(jù),重新計(jì)算其 hashno,并放到新的hash鏈表的表頭; 釋放緩沖區(qū)時(shí),將該緩沖區(qū)仍保留在原 hash隊(duì)列中,同時(shí)掛接到空閑緩沖區(qū)鏈表的表尾。如果不空閑,則它只能處在某一個(gè) hash鏈表中。不存在脫離 hash鏈表
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1