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

正文內(nèi)容

操作系統(tǒng)教程-第八章linux系統(tǒng)-資料下載頁

2025-01-17 12:49本頁面
  

【正文】 件中讀入內(nèi)存。在調(diào)入頁面時,調(diào)度程序會選擇一個就緒進程來運行。讀取回來的頁面將被放在一個空閑的物理頁面框中,同時修改頁表。最后進程將從發(fā)生頁面錯誤的地方重新開始運行。 ? 以上的過程即為缺頁中斷。 操作系統(tǒng)教程課件 第 82頁 機械工業(yè)出版社 ? 如果進程需要把一個虛擬頁面調(diào)入物理內(nèi)存而正好系統(tǒng)中沒有空閑的物理頁面,操作系統(tǒng)必須淘汰位于物理內(nèi)存中的某些頁面來為之騰出空間。 ? Linux使用最近最少使用( LRU)頁面置換算法來公平地選擇將要從系統(tǒng)中拋棄的頁面 操作系統(tǒng)教程課件 第 83頁 機械工業(yè)出版社 Linux內(nèi)存空間的分配與回收 ? 數(shù)據(jù)結(jié)構(gòu) ? 虛擬內(nèi)存子系統(tǒng)中負責頁面分配與回收的數(shù)據(jù)結(jié)構(gòu)用mem_map_t結(jié)構(gòu)的鏈表 mem_map來描述,這些結(jié)構(gòu)在系統(tǒng)啟動時初始化。 ? 每個 mem_map_t描述了一個物理頁面。其中幾個重要的域如下: ? count :記錄使用此頁面的用戶個數(shù)。當這個頁面在多個進程之間共享時,其值大于 1。 ? age :此域用于描述頁面的年齡,用于選擇將適當?shù)捻撁鎾仐壔蛘咧脫Q出內(nèi)存時。 ? map_nr:記錄本 mem_map_t描述的物理頁面框號。 ? 系統(tǒng)使用 free_area數(shù)組管理整個緩沖,實現(xiàn)分配和釋放頁面。 操作系統(tǒng)教程課件 第 84頁 機械工業(yè)出版社 ? Linux使用 Buddy算法來有效的分配與回收頁面塊 ? 頁面分配程序每次分配包含一個或者多個物理頁面的內(nèi)存塊。頁面以 2的次冪的內(nèi)存塊來分配。這意味著它可以分配 1個、 2個和 4個頁面的塊。只要系統(tǒng)中有足夠的空閑頁面來滿足這個要求 (nr_free_pages min_free_page),內(nèi)存分配代碼將在 free_area中尋找一個與請求大小相同的空閑塊。 free_area中的每個元素保存著一個反映這樣大小的已分配與空閑頁面的位圖。分配算法采用首次適應算法,從 free_area的 list域沿鏈搜索空閑頁面,若找到的頁面塊大于請求的塊則對其進行分割以使其大小與請求塊匹配,剩余的空閑塊被連進相應的隊列。 ? 利用位圖可以記錄內(nèi)存單元的使用情況。 操作系統(tǒng)教程課件 第 85頁 機械工業(yè)出版社 ? Linux系統(tǒng)的物理內(nèi)存頁分配采用鏈表和位圖相結(jié)合的方法,如圖 88所示。 操作系統(tǒng)教程課件 第 86頁 機械工業(yè)出版社 Linux的頁面交換機制 ? Linux使用 LRU算法作為其頁面交換的核心算法,出于安全性、穩(wěn)定性、執(zhí)行效率等等多方面的考慮, Linux所使用的 LRU交換算法已經(jīng)交織在其進程管理、文件系統(tǒng)管理等其他機制當中,它們有機的結(jié)合成為一個整體。 操作系統(tǒng)教程課件 第 87頁 機械工業(yè)出版社 ? 數(shù)據(jù)結(jié)構(gòu) ? 代表物理頁面的 page數(shù)據(jù)結(jié)構(gòu)是在文件include/linux/。 ? 系統(tǒng)維持的物理頁面供應量由兩個全局量確定,那就是 (初始化語句位于 mm/)和 inactive_target(初始化語句位于include/linux/) ? 分別為空閑頁面的數(shù)量以及不活躍頁面的數(shù)量,二者之和為正常情況下潛在的供應量 操作系統(tǒng)教程課件 第 88頁 機械工業(yè)出版社 ? 為了防止“抖動”的發(fā)生, linux將頁面的換出和內(nèi)存頁面的釋放分成兩步來做。當系統(tǒng)挑選出若干內(nèi)存頁面準備換出時,將這些頁面的內(nèi)容寫入到相應的磁盤中,并且將相應的頁面表項的內(nèi)容設置為指向磁盤頁面。但是所占據(jù)的內(nèi)存頁面卻并不立即釋放,而是將其 page結(jié)構(gòu)留在一個 cache隊列當中,并使其從“活躍狀態(tài)”轉(zhuǎn)入“不活躍狀態(tài)” ? 在 Linux當中通過一個全局的 address_space數(shù)據(jù)結(jié)構(gòu)swapper_space,把所有可交換的內(nèi)存頁面管理起來,每個可交換內(nèi)存頁面的 page數(shù)據(jù)結(jié)構(gòu)都通過其隊列頭結(jié)構(gòu)list鏈入其中的一個隊列。函數(shù) add_to_swap_cache()完成將 page結(jié)構(gòu)鏈入相應隊列的工作,它的代碼位于mm/。將內(nèi)存頁面的“換出”與“釋放”分兩步走的策略顯然可以減少抖動發(fā)生的可能,并減少系統(tǒng)在頁面交換上的開銷。 操作系統(tǒng)教程課件 第 89頁 機械工業(yè)出版社 Linux輸入和輸出系統(tǒng) ? 設備管理概述 ? I/O 控制方式 ? 設備驅(qū)動程序 ? Linux的高速緩沖機制 操作系統(tǒng)教程課件 第 90頁 機械工業(yè)出版社 ? 外圍設備是計算機系統(tǒng)中除 CPU和內(nèi)存以外的所有設備的總稱。這些外圍設備的種類繁多,物理特性也各不相同。 ? 外圍設備一般分為三大類:存儲設備、輸入輸出設備和網(wǎng)絡設備。 操作系統(tǒng)教程課件 第 91頁 機械工業(yè)出版社 設備管理概述 ? 特別文件 ? Linux 設備管理結(jié)構(gòu) ? 字符設備 ? 塊設備 操作系統(tǒng)教程課件 第 92頁 機械工業(yè)出版社 ? 設備管理是操作系統(tǒng)五大管理中最復雜的部分 ? 存儲設備是計算機用來存儲信息的設備,通常以塊為單位傳送信息,故也稱為塊設備,典型的塊大小為 512或1024字節(jié)。塊設備的存取是通過 buffer cache來進行并且可以進行隨機訪問,但最常用的訪問方法是通過文件系統(tǒng)實現(xiàn),只有塊設備才能支持可安裝文件系統(tǒng)。 ? 輸入輸出設備是無需緩沖直接讀寫的設備,通常是以字符為單位傳送信息,故也稱為字符設備。 ? 對計算機的設備進行管理有兩大目標: ? 一是提高設備的利用率 ? 二是方便用戶使用 ? 要提高設備的利用率,關鍵在于 CPU與設備,以及設備與設備之間能不能并行操作;中斷技術、通道技術和緩沖技術使它們之間的并行操作成為可能 ? 為方便用戶使用,設備管理必須屏蔽設備的物理特性,使用戶擺脫具體的物理設備的束縛 操作系統(tǒng)教程課件 第 93頁 機械工業(yè)出版社 特別文件 ? 用戶是通過文件系統(tǒng)與設備接口的,所有設備都作為特別文件,從而在管理上就具有一些共性。 ? (1)每個設備都對應文件系統(tǒng)中的一個索引節(jié)點,都有一個文件名。設備的文件名一般由兩部分構(gòu)成,第一部分是主設備號,第二部分是次設備號。 ? ( 2)應用程序通??梢酝ㄟ^系統(tǒng)調(diào)用 open()打開設備文件,建立起與目標設備的連接。 ? ( 3)對設備的使用類似于對文件的存取。打開設備文件以后,就可以通過 read()、 write()、 ioctl()等文件操作對目標設備進行操作。 ? ( 4)設備驅(qū)動程序都是系統(tǒng)內(nèi)核的一部分,它們必須為系統(tǒng)內(nèi)核或它們的子系統(tǒng)提供一個標準的接口 ? ( 5)設備驅(qū)動程序利用一些標準的內(nèi)核服務,如內(nèi)存分配等。另外,大多數(shù) Linux設備驅(qū)動程序都可以在需要時裝入內(nèi)核,不需要時可以卸載下來。 操作系統(tǒng)教程課件 第 94頁 機械工業(yè)出版社 操作系統(tǒng)教程課件 第 95頁 圖 89示出設備驅(qū)動的分層結(jié)構(gòu) 機械工業(yè)出版社 Linux 設備管理結(jié)構(gòu) ? Linux設備管理主要由系統(tǒng)調(diào)用和設備驅(qū)動程序組成。系統(tǒng)調(diào)用是上層的、與設備無關的軟件,它為用戶和內(nèi)核之間提供了一個統(tǒng)一而簡單的接口。設備驅(qū)動程序是下層的、與設備有直接關系的軟件,它直接與相應設備打交道,而且向上層內(nèi)核提供一組訪問接口。Linux設備管理層次圖見圖 810。 操作系統(tǒng)教程課件 第 96頁 機械工業(yè)出版社 字符設備 ? 在 Linux系統(tǒng)中,打印機、終端等字符設備都作為字符特別文件出現(xiàn)在用戶面前。 ? 用戶對字符設備的使用就和存取普通文件一樣。 ? 當字符設備初始化時,其設備驅(qū)動程序被添加到由 device_struct結(jié)構(gòu)組成的 chrdevs結(jié)構(gòu)數(shù)組中。 ? device_struct結(jié)構(gòu)由兩項構(gòu)成,一個是指向已登記的設備驅(qū)動程序名的指針,另一個是指向file_operations結(jié)構(gòu)的指針。而 file_operations結(jié)構(gòu)的成分幾乎全是函數(shù)指針,分別指向?qū)崿F(xiàn)文件操作的入口函數(shù)。設備的主設備號用來對chrdevs數(shù)組進行索引,如圖 811所示。 操作系統(tǒng)教程課件 第 97頁 機械工業(yè)出版社 操作系統(tǒng)教程課件 第 98頁 圖 811 字符設備驅(qū)動程序示意圖 機械工業(yè)出版社 塊設備 ? 對塊設備的存取和對文件的存取方式一樣,其實現(xiàn)機制也和字符設備使用的機制相同。 ? Linux系統(tǒng)中有一個名為 blkdevs的結(jié)構(gòu)數(shù)組,它描述了一系列在系統(tǒng)中登記的塊設備。 ? 數(shù)組 blkdevs也使用設備的主設備號作為索引,其元素類型是 device_struct結(jié)構(gòu)。該結(jié)構(gòu)中包括指向已登記的設備驅(qū)動程序名的指針和指向block_device_operations結(jié)構(gòu)的指針。 ? 在 block_device_operations結(jié)構(gòu)中包含指向有關操作的函數(shù)指針。 操作系統(tǒng)教程課件 第 99頁 機械工業(yè)出版社 ? 與字符設備不一樣,塊設備有幾種類型。每類塊設備都在 Linux系統(tǒng)內(nèi)核中登記,并向內(nèi)核提供自己的文件操作 ? 為了把各種塊設備的操作請求隊列有效地組織起來,內(nèi)核中設置了一個結(jié)構(gòu)數(shù)組 blk_dev,該數(shù)組中的元素類型是 blk_dev_struct結(jié)構(gòu)。這個結(jié)構(gòu)由三個成分組成,其主體是執(zhí)行操作的請求隊列 request_queue,還有一個函數(shù)指針 queue。 ? 當這個指針不為 0時,就調(diào)用這個函數(shù)來找到具體設備的請求隊列。還要使用該結(jié)構(gòu)中的另一個指針 data,用來提供輔助性信息,幫助該函數(shù)找到特定設備的請求隊列。每一個請求數(shù)據(jù)結(jié)構(gòu)都代表一個來自緩沖區(qū)的請求。 ? 每當緩沖區(qū)要和一個登記過的塊設備交換數(shù)據(jù)時,它都會在 blk_dev_struct中添加一個請求數(shù)據(jù)結(jié)構(gòu)( request結(jié)構(gòu)),如圖 812所示。 操作系統(tǒng)教程課件 第 100頁 機械工業(yè)出版社 操作系統(tǒng)教程課件 第 101頁 圖 812 塊設備驅(qū)動程序數(shù)據(jù)結(jié)構(gòu)示意圖 機械工業(yè)出版社 I/O 控制方式 ? 1.輪詢方式 ? 輪詢方式即程序直接控制方式,是指在 I/O過程中經(jīng)常讀取設備的狀態(tài),直到設備狀態(tài)表明請求已經(jīng)完成為止。如果設備驅(qū)動被連接進入內(nèi)核,這時使用輪詢方式將會帶來災難性后果:內(nèi)核將在此過程中 無所事事,直到設備完成此請求。但是輪詢設備驅(qū)動可以通過使用系統(tǒng)定時器,讓內(nèi)核周期性調(diào)用設備驅(qū)動中的某個例程來檢查設備狀態(tài)。定時器過程可以檢查命令狀態(tài)及 Linux軟盤驅(qū)動的工作情況。使用定時器是輪詢方式中最好的一種,但更有效的方法是使用中斷。 操作系統(tǒng)教程課件 第 102頁 機械工業(yè)出版社 ? 2.中斷方式 ? 基于中斷的設備驅(qū)動會在它所控制的硬件設備需要服務時引發(fā)一個硬件中斷。 Linux內(nèi)核需要把來自硬件設備的中斷傳遞到相應的設備驅(qū)動。這個過程是由設備驅(qū)動向內(nèi)核注冊其使用的中斷來協(xié)助完成。此中斷處理例程的地址和中斷號都將被記錄下來。對中斷資源的請求在驅(qū)動初始化時就已經(jīng)完成。如 PCI設備中斷,在啟動時進行動態(tài)分配。設備驅(qū)動必須在取得對此中斷的所有權之前找到它所控制設備的中斷號( IRQ)。 Linux通過支持標準的PCI BIOS回調(diào)函數(shù)來確定系統(tǒng)中 PCI設備的中斷信息,包括其 IRQ號。 ? 中斷以一種特殊模式發(fā)送,同時還將阻止系統(tǒng)中其它中斷的產(chǎn)生。設備驅(qū)動在其中斷處理過程中做得越少越好,這樣 Linux內(nèi)核將能很快的處理完中斷并返回中斷前的狀態(tài)中。為了在接收中斷時完成大量工作,設備驅(qū)動必須能夠使用內(nèi)核的底層處理例程或者任務隊列來對以后需要調(diào)用的那些例程進行排隊。 操作系統(tǒng)教程課件 第 103頁 機械工業(yè)出版社 ? 3.直接內(nèi)存訪問( DMA) ? 數(shù)據(jù)量比較少、數(shù)據(jù)傳傳輸率較低時,使用中斷驅(qū)動設備驅(qū)動程序能順利地在硬件設備和內(nèi)存之間交換數(shù)據(jù),否則會降低 CPU的利用率。而 DMA控制器可以在不受處理器干預的情況下在設備和系統(tǒng)內(nèi)存之間高速傳輸數(shù)據(jù)。 ? DMA控制器沒有任何虛擬內(nèi)存的概念,它只存取系統(tǒng)中的物理內(nèi)存。同時用作 DMA傳輸緩沖的內(nèi)存空間必須是連續(xù)物理內(nèi)存塊。 DMA控制器所存取物理內(nèi)存有限。由于 DMA通道地址寄存器代表 DMA地址的高 16位,而頁面寄存器記錄的是其余 8位,因此 DMA請求被限制到內(nèi)存最低的 16MB( 2的 24次方尋址空間)內(nèi)。 ? Linux通過 dma_chan(每個 DMA通道一個)數(shù)組來跟蹤 DMA通道的使用情況。 dma_chan結(jié)構(gòu)中包含有兩個域,一個是指向此 DMA通道擁有者的指針,另一個指示 DMA通道是否已經(jīng)被分配出去。 操作系統(tǒng)教程課件 第 104頁 機械工業(yè)出版社 設備驅(qū)動程序 ? 概述 ? 設備驅(qū)動程序的代碼 ? 字符設備驅(qū)動程序 ? 塊設備驅(qū)動程序 操
點擊復制文檔內(nèi)容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1