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

正文內(nèi)容

linux存儲管理ppt課件-資料下載頁

2024-10-19 04:55本頁面
  

【正文】 如硬盤的一個分區(qū),稱作交換設備,效率較高; ? 另一種用文件系統(tǒng)中固定長度的文件,稱作交換文件,效率較低。 ? LINUX允許并行管理 MAX_SWAPFILES個交換空間( MAX_SWAPFILES的缺省值為8)。 交換空間的格式 ? 前 4096字節(jié)是一個以字符串 “ SWAP_SPACE”結尾的位圖。位圖的每一位( bit)對應一個交換空間的頁面,置位表示對應的頁面可用于換頁操作。 ? 第 4096字節(jié)之后則是真正存放換出頁面的空間。 ? 這樣,每個交換空間最多可容納 ( 409610) * 8 – 1 = 32687個頁面。 啟用交換空間 int sys_swapon(const char * swapfile, int swapflags)。 ? 第一個參數(shù) swapfile是設備名或文件名 , ? swapflags規(guī)定交換空間的優(yōu)先數(shù) 。 該參數(shù)中 ,SWAP_FLAG_PREFER( 0X8000) 必須置位 ,SWAP_FLAG_PRIO_MASK(0X7FFF)指定一個正的優(yōu)先數(shù) 。 如果沒有指定優(yōu)先數(shù) , swapon自動給出一個負的優(yōu)先數(shù) , 負優(yōu)先數(shù)的取值決定于 swapon的調(diào)用次數(shù) 。 每注冊一個交換空間,就在 swap_info表中填一項 swap_info_struct結構 25 struct swap_info_struct swap_info[MAX_SWAPFILES]。 49 struct swap_info_struct { 50 unsigned int flags。 /* 如果 SWP_USED位置位 , 則被占用 。 如果 SWP_WRITEOK, 則該交換空間準備就緒 。 */ 51 kdev_t swap_device。 /* 對于交換設備 , swap_device屬性表示交換設備的主 、 次設備號 */ 52 spinlock_t sdev_lock。 /* 對于此設備的互斥鎖 */ 53 struct dentry * swap_file。 /* 對于交換文件 , swap_file屬性指向該文件的 inode */ 54 struct vfsmount *swap_vfsmnt。 55 unsigned short * swap_map。/* 指向一張表 , 其每一字節(jié)按順序對應交換空間的一個頁面 , 字節(jié)的值代表了引用該頁面的進程數(shù) */ 56 unsigned int lowest_bit。 /*交換空間中的第一個沒有被任何進程使用的交換頁在 swap_map數(shù)組中的下標 */ 57 unsigned int highest_bit。 /* 交換空間中最后一個沒被任何進程使用的交換頁的下標 */ 58 unsigned int cluster_next。 /*上次從當前的 cluster中成功分配的交換頁面的后繼頁面在 swap_map數(shù)組中的下標 */ 59 unsigned int cluster_nr。 /* 當前 cluster中可供使用的交換頁面的個數(shù) */ 60 int prio。 /*交換空間的優(yōu)先級 。 優(yōu)先級越高 , 交換文件申請交換頁面的時候越優(yōu)先考慮 */ 61 int pages。 /* 表示該交換空間尚有多少空閑空間可供保存進程換出的物理頁 */ 62 unsigned long max。 63 int next。 /*指向下一項交換空間的的指針 */ 64 }。 153 struct swap_list_t { 154 int head。 /* head of priorityordered swapfile list */ 155 int next。 /* swapfile to be used next */ 156 }。 23 struct swap_list_t swap_list = {1, 1}。 注銷交換空間 int sys_swapoff(const char * swapfile)。 交換空間的工作 kswapd進程換出頁面時 , 調(diào)用 try_to_swap_out() 測試頁面的年齡 。 如果某物理頁面可以換出 , 則調(diào)用 get_swap_page向 , 得到一地址entry。 該地址寫入進程頁表中那個原來描述換出物理頁面的頁表項 , 替換了其中的頁幀地址 。 最后 , 調(diào)用rw_swap_page(),將換出的物理頁面寫到 entry指定的交換空間某個頁面中 。 反過來 , 當缺頁中斷發(fā)生時 , 缺頁中斷服務程序可以根據(jù)產(chǎn)生缺頁的地址 ( 由 CR2寄存器給出 ) , 找到描述該頁面的頁表項 。 頁表項的 Present位應該為 0, 最高 20位指出該頁面保存在哪個交換空間的哪個頁面中 。 然后 , 經(jīng)一系列函數(shù)調(diào)用后 , 讀入該頁面 。 第二章 LINUX存儲管理 頁交換進程和頁面換出 kswapd ? 當物理頁面不夠時 , 利用 kswapd釋放部分物理頁面 ,將它們的內(nèi)容寫到交換空間 。 ? kswapd 是一特殊的進程 , 稱內(nèi)核態(tài)線程 ( kernel thread) 。 ? 注意 , kernel thread完全不同于通常意義上的線程 。它是沒有虛擬存儲空間的進程 , 它只運行在內(nèi)核態(tài) ,直接使用物理地址空間 。 同類型的進程還有 bdflush和init。 ? kswapd的作用超越了字面上的描述 。 它不僅能將頁面換出到交換空間 ( 交換區(qū)或交換文件 ) , 它也保證系統(tǒng)中有足夠的空閑頁面以保持存儲系統(tǒng)高效地運行 。 第二章 LINUX存儲管理 缺頁中斷和頁面換入 ?由于只有該映像區(qū)的開始部分調(diào)入內(nèi)存,因此,進程遲早會執(zhí)行到那些尚未調(diào)入內(nèi)存的代碼。 產(chǎn)生缺頁中斷 ? 當一個進程訪問了一個還沒有有效頁表項的虛擬地址時(即頁表項的 P位為 0),處理器將產(chǎn)生缺頁中斷,通知操作系統(tǒng),并將出現(xiàn)缺頁的虛存地址(在 CR2寄存器中)和缺頁時訪問虛存的模式一并傳遞給 LINUX的缺頁中斷服務程序。 缺頁中斷服務程序為do_page_fault() set_trap_gate(14, amp。page_fault)。 /* arch/i386/kernel/ */ ENTRY(page_fault) /* arch/i386/kernel/ */ pushl $SYMBOL_NAME(do_page_fault) jmp error_code /* 異常中斷服務程序的統(tǒng)一入口 */ 中斷服務流程 ? 根據(jù)控制寄存器 CR2傳遞的缺頁地址 , 找到用來表示出現(xiàn)缺頁的虛擬存儲區(qū)的 vm_area_struct結構 。 ? 如果沒有找到與缺頁相對應的 vm_area_struct結構 , 那么說明進程訪問了一個非法存儲區(qū) , LINUX向進程發(fā)送信號SIGSEGV。 ? 接著檢測缺頁時訪問模式是否合法 。 如果進程對該頁的訪問超越權限 , 例如試圖對只允許讀操作的頁面進行寫操作 , 系統(tǒng)也將向該進程發(fā)送一個信號 , 通知進程的存儲訪問出錯 。 ? 主要流程參見文件
點擊復制文檔內(nèi)容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1