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

正文內(nèi)容

操作系統(tǒng)operatingsystem(編輯修改稿)

2025-08-15 03:00 本頁面
 

【文章內(nèi)容簡介】 動層是 I/O管理的主要部分。 各層之間的界面并不是死的,各層之間的確切界面是依賴于具體系統(tǒng)的。 amp。I/O軟件設(shè)計的一個關(guān)鍵目標(biāo)是設(shè)備獨立性。 除了直接與設(shè)備打交道的低層軟件之外,其他部分的軟件不依賴于硬件。 I/O軟件獨立于設(shè)備,當(dāng) I/O設(shè)備更新時,沒有必要重新編寫全部設(shè)備軟件。在一些操作系統(tǒng)中,只要安裝了相應(yīng)的設(shè)備驅(qū)動程序,就可以很方便地安裝好新的 I/O設(shè)備。甚至不必重新編譯就能將設(shè)備管理程序移到別處執(zhí)行。 I/O軟件的組成amp。概述 : I/O設(shè)備管理軟件一般分為四層: 中斷處理程序,設(shè)備驅(qū)動程序,與設(shè)備無關(guān)的系統(tǒng)軟件以及用戶空間的 I/O軟件 。其中低層與硬件相關(guān),把硬件與較高層次的軟件隔離開來。而最高層軟件則向用戶提供一個友好的、統(tǒng)一的接口。 中斷處理程序 中斷 是指計算機(jī)在執(zhí)行期間, 系統(tǒng)內(nèi)發(fā)生任何非尋常的或非預(yù)期的急需處理事件 ,使得 CPU暫時中斷當(dāng)前的執(zhí)行程序而轉(zhuǎn)去執(zhí)行相應(yīng)的事件處理程序,待處理完畢后又返回原來被中斷處繼續(xù)執(zhí)行或調(diào)度新的進(jìn)程執(zhí)行。 開中斷和關(guān)中斷是為了保證某段程序執(zhí)行的原子性。 中斷又分為 外中斷和內(nèi)中斷 。 外中斷 是指來自處理器和內(nèi)存之外的中斷,如 I/O設(shè)備發(fā)出的 I/O中斷等。內(nèi)中斷 是指在處理器和內(nèi)存內(nèi)部產(chǎn)生的中斷,又稱為陷阱( trap)。 中斷處理程序 I/O設(shè)備之間數(shù)據(jù)傳輸 I/O系統(tǒng)采用了中斷方式來控制 I/O設(shè)備和內(nèi)存與 CPU之間的數(shù)據(jù)傳送。 在硬件結(jié)構(gòu)上,這種方式要求 CPU與 I/O設(shè)備(或控制器)之間有相應(yīng)的中斷請求線,而且在 I/O設(shè)備控制器的控制狀態(tài)寄存器上有相應(yīng)的中斷允許位。 在中斷方式下, CPU與 I/O設(shè)備之間數(shù)據(jù)傳輸?shù)牟襟E:( 1)某個進(jìn)程需要數(shù)據(jù)時,處理器發(fā)出指令啟動 I/O設(shè)備準(zhǔn)備數(shù)據(jù)。同時,該指令還打開 I/O設(shè)備控制狀態(tài)寄存器中的中斷允許位,以便在需要時,中斷程序可以被調(diào)度執(zhí)行。 中斷處理程序( 2)該進(jìn)程放棄處理器,等待相關(guān) I/O操作完成,此時進(jìn)程調(diào)度程序會調(diào)度其他就緒進(jìn)程使用處理器。另一種方式是該進(jìn)程在能夠運行的情況下將繼續(xù)運行,直到中斷信號來臨 。 ( 3)當(dāng) I/O操作完成時, I/O設(shè)備控制器通過中斷請求線向處理器發(fā)出中斷信號。處理器收到中斷信號后,轉(zhuǎn)向預(yù)先設(shè)計好的中斷處理程序?qū)?shù)據(jù)傳送工作進(jìn)行相應(yīng)的處理。( 4)得到數(shù)據(jù)的進(jìn)程,轉(zhuǎn)入就緒狀態(tài)。在隨后的某個時刻,進(jìn)程調(diào)度程序會選中該進(jìn)程繼續(xù)工作。 中斷處理程序 I/O設(shè)備完成了 I/O操作后,控制器便向 CPU發(fā)出一中斷請求, CPU響應(yīng)中斷后便轉(zhuǎn)向中斷處理程序。 無論是哪種 I/O設(shè)備,其中斷處理程序的處理過程大體相同,其步驟如下 :( 1) CPU響應(yīng)中斷后,則關(guān)中斷,使其進(jìn)入不可再次響應(yīng)中斷的狀態(tài)。( 2)當(dāng)中斷處理程序開始執(zhí)行時,用信號或信號量機(jī)制,將處于阻塞狀態(tài)的設(shè)備驅(qū)動程序進(jìn)程喚醒。( 3)保護(hù)被中斷進(jìn)程的執(zhí)行現(xiàn)場。即將當(dāng)前處理機(jī)狀態(tài)字 PSW、程序計數(shù)器 PC以及被中斷進(jìn)程的 CPU現(xiàn)場(包含所有的 CPU寄存器)等都保存到中斷棧中。 中斷處理程序( 4)分析中斷原因,調(diào)用相應(yīng)的設(shè)備中斷處理程序。由處理器對各個中斷源進(jìn)行測試,以確定引起本次中斷的 I/O設(shè)備,并發(fā)送應(yīng)答信號給發(fā)中斷請求信號的進(jìn)程,使之消除該中斷請求信號,然后將中斷處理程序的入口地址裝入到程序計數(shù)器中,使處理機(jī)轉(zhuǎn)向中斷處理程序。( 5)執(zhí)行中斷處理程序。該程序從設(shè)備控制器中讀出設(shè)備狀態(tài)。若是正常完成中斷,則驅(qū)動程序進(jìn)程便可做結(jié)束處理;若還有命令,可再向控制器發(fā)送新的命令。若是異常中斷,則根據(jù)發(fā)生異常的原因做相應(yīng)處理。( 6)恢復(fù)被中斷進(jìn)程的現(xiàn)場或調(diào)度新進(jìn)程占據(jù)處理器。( 7)開中斷, CPU繼續(xù)執(zhí)行。 設(shè)備驅(qū)動程序( 1)設(shè)備驅(qū)動程序是在請求 I/O的進(jìn)程和設(shè)備控制器之間的一個通信程序。它把進(jìn)程的 I/O請求傳送給設(shè)備控制器,然后把設(shè)備控制器中所記錄的設(shè)備狀態(tài)、 I/O操作完成情況傳回請求 I/O的進(jìn)程 。 ( 2)它與 I/O設(shè)備的特性緊密相關(guān),對于不同類型的設(shè)備,應(yīng)配置不同的驅(qū)動程序。 ( 3)它與 I/O控制方式緊密相關(guān),常用的設(shè)備控制方式為中斷驅(qū)動和 DMA方式。( 4)設(shè)備驅(qū)動程序與 I/O設(shè)備的硬件結(jié)構(gòu)密切聯(lián)系。其中全部是依賴于設(shè)備的代碼。設(shè)備驅(qū)動程序是操作系統(tǒng)中唯一知道設(shè)備控制器細(xì)節(jié)及其用途的部分。 設(shè)備驅(qū)動程序 ( 1)將接收到的抽象請求轉(zhuǎn)換為具體要求。 ( 2)檢查用戶 I/O請求的合法性。一個 I/O設(shè)備只能完成一組特定的功能,若超出這些特定的功能,則認(rèn)為這次 I/O請求非法。 ( 3)讀出和檢查設(shè)備的狀態(tài)。在啟動設(shè)備之前,要從設(shè)備控制器的狀態(tài)寄存器中讀出設(shè)備的狀態(tài)。若設(shè)備正處于空閑狀態(tài),則可以啟動該設(shè)備進(jìn)行 I/O操作。 設(shè)備驅(qū)動程序( 4)向設(shè)備控制器發(fā)出控制命令。驅(qū)動程序向控制器中的命令寄存器傳送控制命令,啟動 I/O設(shè)備。隨后的 I/O是在設(shè)備控制器的控制下進(jìn)行的。若I/O操作所要完成的工作較多,需要一定的時間,驅(qū)動程序進(jìn)程會把自己阻塞起來,直到中斷到來時才被喚醒。若 I/O操作毫無拖延地完成,驅(qū)動程序無需阻塞。( 5)對各種可能的有關(guān)設(shè)備排隊、掛起、喚醒等操作進(jìn)行處理。( 6)及時響應(yīng)由控制器發(fā)來的中斷請求,并根據(jù)中斷類型調(diào)用相應(yīng)的中斷處理程序進(jìn)行處理。 獨立于設(shè)備的系統(tǒng)軟件 獨立于設(shè)備的系統(tǒng)軟件應(yīng)該實現(xiàn)的功能有 ,與設(shè)備驅(qū)動程序的統(tǒng)一接口、設(shè)備命名、設(shè)備保護(hù)、提供與設(shè)備無關(guān)的邏輯塊、緩沖、塊設(shè)備的存儲分配、獨占設(shè)備的分配與釋放、處理錯誤。 在操作系統(tǒng)的 I/O軟件中,對 I/O設(shè)備進(jìn)行了統(tǒng)一命名,由獨立于設(shè)備的系統(tǒng)軟件負(fù)責(zé)把設(shè)備的符號名映射到相應(yīng)的設(shè)備驅(qū)動上。 在 Linux系統(tǒng)中,像 /dev/hda5這樣的設(shè)備名,唯一地確定了一個特殊文件的 i節(jié)點,這個 i節(jié)點包含了主設(shè)備號和次設(shè)備號。主設(shè)備號用于尋找正確的設(shè)備驅(qū)動程序,次設(shè)備號提供了設(shè)備驅(qū)動程序的有關(guān)參數(shù),用來確定要讀寫的具體設(shè)備。 操作系統(tǒng)應(yīng)該對設(shè)備進(jìn)行必要的保護(hù),以防止無權(quán)用戶非法使用設(shè)備。 在計算機(jī)系統(tǒng)中,不同的磁盤可以有著不同的扇區(qū)尺寸。 獨立于設(shè)備的系統(tǒng)軟件就要向高層軟件屏蔽這一事實,并提供一個大小統(tǒng)一的邏輯塊尺寸。 它可以將若干扇區(qū)合并成一個邏輯塊。這樣, 高層軟件只與抽象設(shè)備打交道 ,獨立于物理扇區(qū)的尺寸而使用等長的邏輯塊。 緩沖是獨立于設(shè)備的系統(tǒng)軟件應(yīng)提供的另一個目標(biāo)。 I/O設(shè)備和 CPU的處理速度不匹配是客觀存在的,為此,引入了緩沖技術(shù)。對于常見的塊設(shè)備和字符設(shè)備,都存在著緩沖的問題。 獨立于設(shè)備的系統(tǒng)軟件 在創(chuàng)建一個文件并向其中填入數(shù)據(jù)時,就從磁盤空閑塊表中為文件分配新的存儲塊;刪除一個文件時,就把釋放的存儲塊加入磁盤空閑塊表中并進(jìn)行統(tǒng)一的管理。 要求操作系統(tǒng)對獨占設(shè)備的使用請求進(jìn)行檢查,并根據(jù)該獨占設(shè)備的可用狀況來決定是否接收該請求。一個簡單的處理獨占設(shè)備請求的方法是, 進(jìn)程直接通過 “ OPEN” 打開設(shè)備特殊文件提出請求。 如果設(shè)備不能用,則 OPEN失敗,關(guān)閉該設(shè)備的同時釋放該設(shè)備。 獨立于設(shè)備的系統(tǒng)軟件 一般, 出錯處理是由設(shè)備驅(qū)動程序完成的,因為大多數(shù)錯誤是與設(shè)備密切相關(guān)的。 對于這類錯誤,設(shè)備驅(qū)動程序知道如何處理,例如重試、忽略、放棄。像由于磁盤塊受損而不能再讀這樣一類錯誤,驅(qū)動程序?qū)⒃O(shè)法重讀一定次數(shù),若仍有問題,則放棄并 通知設(shè)備獨立軟件,之后如何處理這個錯誤就與設(shè)備無關(guān)了。若在讀用戶文件時出現(xiàn)錯誤,操作系統(tǒng)會將該錯誤信息 報告給用戶。若在讀系統(tǒng)數(shù)據(jù)結(jié)構(gòu)時出現(xiàn)錯誤,比如磁盤的空閑塊表,操作系統(tǒng)只能打印一些錯誤信息并終止運行。 大部分 I/O軟件都包含在操作系統(tǒng)中,但仍有一小部分是由與用戶程序連接在一起的庫函數(shù)實現(xiàn)的,甚至完全由運行于核外的程序構(gòu)成。 Spooling(假脫機(jī))系統(tǒng)是多道程序系統(tǒng)中處理獨占 I/O設(shè)備的一種方法。 圖 55總結(jié)了 I/O系統(tǒng)軟件的全部層次及每一層的主要功能。圖中的箭頭給出了 I/O部分的控制流。 用戶空間的 I/O軟件 用戶空間軟件獨立于設(shè)備的系統(tǒng)軟件設(shè)備驅(qū)動程序中斷處理程序硬件 圖 55 I/O系統(tǒng)的分層及各層的主要功能 I/O請求 I/O回答下面以讀磁盤文件為例說明 I/O過程。 ( 1)當(dāng)用戶程序?qū)σ粋€已經(jīng)打開的文件發(fā)出 read()系統(tǒng)調(diào)用時。( 2)在內(nèi)核的系統(tǒng)調(diào)用代碼首先檢查調(diào)用參數(shù)的正確性。如果要輸入的數(shù)據(jù)已經(jīng)在內(nèi)存緩沖區(qū)中,則把數(shù)據(jù)返回給該進(jìn)程,完成 I/O請求。( 3)否則,需要執(zhí)行實際的 I/O操作。把該進(jìn)程從運行 (run)隊列中移出并放入等待 (wait)設(shè)備的隊列,I/O請求被調(diào)度。最后, I/O子系統(tǒng)向該設(shè)備驅(qū)動程序發(fā)送請求。依據(jù) OS,該請求或者由子程序調(diào)用發(fā)送或者由內(nèi)核消息發(fā)送。 用戶空間的 I/O軟件 ( 4)設(shè)備驅(qū)動程序首先分配內(nèi)核緩沖區(qū)用于接收數(shù)據(jù),然后向設(shè)備控制器發(fā)命令。( 5)設(shè)備控制器操縱設(shè)備執(zhí)行數(shù)據(jù)傳輸。( 6)驅(qū)動程序可以查詢 (poll)控制器的狀態(tài),也可以設(shè)置 DMA。這里假設(shè)用 DMA方式,當(dāng)數(shù)據(jù)傳輸完成時,產(chǎn)生中斷。( 7)相應(yīng)的中斷處理程序通過中斷向量表接收到中斷,存儲一些必要的數(shù)據(jù),發(fā)信號給設(shè)備驅(qū)動程序。 用戶空間的 I/O軟件 用戶空間的 I/O軟件 ( 8)設(shè)備驅(qū)動程序收到信號后,確定是哪一個 I/O請求完成了,確定請求的狀態(tài),向內(nèi)核 I/O子系統(tǒng)發(fā)請求完成的信號。( 9)內(nèi)核傳輸數(shù)據(jù)或返回代碼到用戶進(jìn)程的地址空間,把該用戶進(jìn)程從等待隊列移動到就緒 (ready)隊列。( 10)當(dāng)調(diào)度進(jìn)程把 CPU分派給該用戶進(jìn)程時, 該用戶進(jìn)程繼續(xù)執(zhí)行。 Linux輸入 /輸出 Linux操作系統(tǒng)把所有的設(shè)備都看成文件,能通過文件操作的界面來操作設(shè)備。 應(yīng)用程序通過設(shè)備文件名來尋訪具體的設(shè)備,而設(shè)備則像普通文件一樣受到文件系統(tǒng)訪問控制權(quán)限的保護(hù)。 應(yīng)用程序 可以通過系統(tǒng)調(diào)用 open()打開設(shè)備文件,建立起與目標(biāo)設(shè)備的連接。打開了代表著目標(biāo)設(shè)備的文件,即建立起與設(shè)備的連接以后,應(yīng)用程序就可以通過 read()、 write()等常規(guī)的文件操作對目標(biāo)設(shè)備進(jìn)行操作。 從應(yīng)用程序的角度看,設(shè)備文件邏輯上的空間是個線性空間。從這個邏輯空間到具體設(shè)備的物理空間的映射是由內(nèi)核提供的,并劃分成文件操作與設(shè)備驅(qū)動兩個層次。 這樣,對于一個具體的設(shè)備來說,文件操作和設(shè)備驅(qū)動就成為同一事物的兩個不同層次,而不是互相獨立或平行的兩個概念。 Linux輸入 /輸出 在 圖 56中 ,處于應(yīng)用層中的應(yīng)用程序進(jìn)程通過 “ 打開文件號 ” fd與已打開文件的 file結(jié)構(gòu)相聯(lián)系,每個 file結(jié)構(gòu)代表著對一個已打開文件操作的上下文。 對于普通文件,即磁盤文件,文件的邏輯空間在文件系統(tǒng)層內(nèi)按具體文件系統(tǒng)的結(jié)構(gòu)和規(guī)則映射到設(shè)備的線性邏輯空間,然后在設(shè)備驅(qū)動層進(jìn)一步從設(shè)備的邏輯空間映射到設(shè)備的物理空間。 這樣,一共經(jīng)歷了 兩層映射 。而對于設(shè)備文件,則文件的邏輯空間通常直接就等價于設(shè)備的邏輯空間,所以在文件系統(tǒng)層就不需要有映射。 但是,也有些設(shè)備需要在文件系統(tǒng)層中有一些簡單的映射。從 圖中還可以看出 ,對同一個設(shè)備也可以通過不同的文件以不同的方式來操作。 Linux輸入 /輸出進(jìn)程File結(jié)構(gòu) File結(jié)構(gòu) File結(jié)構(gòu)普通文件從普通文件的
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1