操作系統理論的學習跟實際應用還是很大的。我學了進程線程同步互斥之后對于編程中的多線程等加鎖的還是云里霧里,總是把操作系統和編程串不起來,也把計算機幾門專業課串不起來,感覺計算機這個專業書讀十遍以下是不可能把四門專業課書連貫的自己串起來。人的智商和邏輯性還是差異很大的。。
壹:進程管理
(一)?? 進程與線程
? ? 1. 進程概念 : 就是一個具有獨立功能的程序的一次動態執行。
?
? ? 2. 進程的狀態與轉換 :
? ? ? ? 進程的三個基本狀態是就緒、執行、阻塞。就緒態到執行態的轉換只需要cpu調度即可,阻塞態只能轉為就緒態不能直接轉為執行態。執行態如果時間片用完就 ? ?轉成了就緒態如果等待某事件發生就轉成阻塞態。如果在這三個基本狀態下進程發生掛起行為則從就緒態轉為掛起或稱靜態就緒,從執行態轉也轉為靜止就緒,從 ? ?阻塞態轉為靜止阻塞。
?
? ? ?3. 進程控制:
? ? ? ? 進程控制就是對系統中所有進程從產生到消亡實施管理,由OS的內核實現,內核是通過調用各種原語來實現的。有進程創建原語,進程撤銷原語,阻塞原語,喚醒原語等。
?
? ? 4. 進程組織:
? ? ? ? 一個進程是由三部分組成的,程序、數據、進程控制塊(PCB)。這三個合起來也稱為進程實體。其中進程控制塊是進程動態特性的集中反映,創建進程則產生pcb撤銷進程就要收回pcb,pcb表項的個數是確定的,所以一個系統中的進程不是無限多的。。
進程控制塊很重要所以詳細寫點,它包含的內容很多,有
? ? ? (1)進程描述信息:進程標示符(每個進程有一個唯一的號)和用戶標示符(每個進程屬于某個用戶)
? ? ? (2)進程控制信息:進程當前狀態,如果是阻塞的要再pcb中說明阻塞原因,進程優先級、代碼執行入口地址、程序外存地址、各種計時信息(程序執行時間,頁面調度情況)
? ? ? (3)資源管理信息:用于說明有關虛擬地址空間的現狀,打開文件的列表,和使用的輸入輸出的信息。
? ? ? (4)CPU現場保護結構:保存各種寄存器的值。
系統中pcb數目眾多,他們是怎么組織起來的有鏈接方式和索引方式兩種:鏈接方式就是形成就緒隊列,阻塞隊列等,還要對就緒隊列按進程優先權排列。索引方式是建立幾種狀態的索引表,索引表記錄pcb的地址。
?
? ? ? 5. 進程通信
? ? ?進程的互斥與同步交換的信息量較少,所以稱為低級通信方式。進程之間以較高的效率傳送大量數據的通信方式叫高級通信方式分為三大類:
? ? ?(1) 共享存儲系統:就是共享內存。。其實編程沒編過我對這些都理解不深刻。
? ? ?(2) 消息傳遞系統:直接通信(send和receive通信命令直接發給接收進程)間接通信(信箱通信就是把消息放信息里讓另一個進程取)。
? ? ?(3) 管道通信。相當于一個隊列形式的一個進程在管道尾寫,另一個進程在管道頭取,管道分為無名管道和有名管道。無名管道是用pipe函數創建的,只能用于子進程之間的通信,有名管道用mkfifo函數創建用于任意兩個進程之間通信,對管道的操作相當于對文件的操作比如open函數打開管道close函數關閉管道等。
?
? ? ? 6. 線程概念與多線程模型
? ? ?有了線程之后,處理機調度的單位就成了線程。而資源的分配還是以進程為單位。一個進程的多個線程是公用代碼數據和文件資源的,但是不同的線程有不同的寄存器和棧。線程之間的通信比進程通信方便因為有好多資源共用,線程的切換也比進程的切換簡化的多。
(二)處理機調度
? ? ? 1. 調度的基本概念?
? ? ?調度分為作業調度,進程調度,和中級調度。作業調度就是將外存上選中的作用分配內存,創建進程等批處理中幾分鐘調度一次,其他系統基本不需要作業調度,進程調度就是決定就緒隊列中哪個進程獲得處理機。中級調度主要功能是對換,即將內存中某些就緒或阻塞的進程交換到外存對換區,主要用來進行內存管理和擴充。
? ? ? 2. 調度的基本準則:
? ? CPU使用率要高,周轉時間,等待時間等要小等等。周轉時間等于等待時間加響應時間,平均周轉時間就是各個作業的周轉時間取平均值。帶權周轉時間等于周轉時間除以響應時間,平均帶權周轉時間就是各個作業的帶權周轉時間的求平均。
? ? ?3. 調度方式:
? ? ?非剝奪式和剝奪式兩種。剝奪式是有搶占原則的,一般是按優先權原則,短作業優先原則和時間片原則這三種之一進行搶占的。
? ? ? 4. 典型調度算法
? ? ?先來先服務調度算法;短作業(短任務、短進程、短線程)優先調度算法;時間片輪轉調度算法;優先級調度算法;高響應比優先調度算法(是FCFS和SJF的折中 ? ? ?響應比=等待時間+要求執行時間的和然后除以要求執行的時間);多級反饋隊列調度算法(多個就緒隊列賦予不同的優先級優先級越高時間片越短,新進程加入后 ? ? 先放第一個隊列一個時間片完成不了就往下一個優先級的隊列末尾放以此類推)。
(三)進程同步
? ? ? 1. 進程同步的基本概念
? ? ?多個進程中發生的事件存在某種時序關系,必須協同工作,相互配合,以共同完成某一項任務。同一種進程是互斥關系,不同的進程是同步關系。
? ? ? 2. 實現臨界區互斥的基本方法
? ? ?軟件實現方法;硬件實現方法。這時候還不是信號量的那種軟件實現而是程序員自己定義的,比如設置一個turn讓他等于進程編號,從而使進程輪流進入臨界區。還有設置一個標志位flag為0表示其他進程未進入臨界區等。硬件實現方法不懂。同步機制只要實現四大準則就可以實現互斥,這四大原則就是:空閑讓進、忙則等待、有限等待,讓權等待。
? ? ? 3. 信號量 ?
? ? ?信號量是操作系統提供的管理公有資源的手段,即PV操作。對于獨享設備有驅動程序做PV操作。
? ? ?p操作的過程是:s=s-1;if(s<0){進入等待隊列,自己阻塞進程}
? ? ?v操作的過程是:s=s+1;if(s<0){從等待隊列取一個進程;取出的進程進入就緒隊列,當前進程該干嘛干嘛}
? ? ?pv原語不能次序錯誤,而且必須成對出現。信號量的定義是semaphore mutex;經典同步問題有生產者-消費者問題;讀者-寫者問題;哲學家進餐問題。
(四)?? 死鎖
? ? ??1.死鎖的概念
? ? ? 多個進程并發執行共享資源時,由于獨占資源被其他進程占用,且其他進程遇到同樣的問題,于是導致出現環形等待資源的情況,所有每個進程都在等待無法執行這就是死鎖。
? ? ?2. 死鎖處理策略 :有四種方法預防死鎖、死鎖避免、死鎖檢測、解除死鎖。
? ? ?3. 死鎖預防: 就是破壞產生死鎖的任何四個必要條件之一。死鎖的四個必要條件是互斥、請求和保持、不剝奪、和環路等待。
? ? ?4. 死鎖避免:
? ? ?就是系統在給某進程分資源時要保證一個安全順序,系統安全狀態一般用銀行家算法。銀行家算法即系統試探著把資源分配給進程pi后修改可用資源的數目,還有每個進程已分配的資源數目跟每個進程還需的資源數目,然后執行安全性算法,如果此次資源分配后,系統處于安全狀態才正式分配給進程資源。否則試探分配作廢,讓進程pi等待。注安全性算法即設置兩個向量。一個work向量一個finish向量,開始時work=available,然后找到一個need小于work的進程,給該進程分配資源后使work=work+allocation ,finish=true。然后循環直到所有進程的finish狀態都為true則系統處于安全狀態。
? ? ?5. 死鎖檢測和解除:
? ? ? 就是檢測到發生死鎖之后,再采取手段解除死鎖,有剝奪法,回退法和殺死進程這三種解除法。
貳:內存管理
(一)?? 內存管理基礎
? ? ?1.內存管理概念
? ? ? 程序裝入與鏈接;邏輯地址與物理地址空間;內存保護。內存管理的任務是記錄內存的使用和空閑狀態,在進程需要時為進程分配內存,用完后釋放內存,已被進程使用的內存區域如何保護,如何在內存不足支持進程運行的情況下進行內外存交換。
? ?
2. 程序的裝入:指從外存裝載在內存
? ? ? 在讀入內存時需要對地址部分做調整,即重定位裝入,該工作有OS專門的裝載程序負責。重定位分為靜態與動態重定位,靜態重定位指在程序裝入內存時由OS進行浮動項的定位,以后不再變化,每個可執行程序的頭上有浮動項說明表,表示地址的浮動項。動態重定位是指在裝入內存時不進行裝配,直接將程序裝入內存,定位問題由系統提供的硬件解決,需要借助硬件支持。
? ? ?3.交換與覆蓋?
? ? ? 交換是指進程或作業在內存與外存之間的動態調度,當內存緊張時系統按某種策略將某些進程暫時移到外存,把外存某些進程換進內存占據前者的內存區域,外存分為文件區和交換區中其對換區是連續的。
? ? ?覆蓋是把程序劃分為若干個功能相對獨立的程序段。這些程序段是不會同時執行的因此可以共享同一塊內存區域,若干獨立的程序段叫覆蓋段。當有關程序段的前一部分執行結束,把后面屬于同一覆蓋段的程序段調入內存,覆蓋前面的程序段,相當于內存擴大了。但是增加了程序員的負擔。因為程序員要向系統指明覆蓋結構而且要求作業各模塊之間有明確的調用結構。
?
? ? 4.連續分配管理方式
? ? ?單一連續分配;分區分配。單一連續分配是指內存分為兩個區域:系統區和用戶區,應用程序裝入到用戶區可使用用戶區的全部空間,這種只適合單用戶單任務的OS。分區分配時把內存劃分為若干個連續分區。分區分配又分為固定分區分配和動態分區分配,固定分區分配就是分區的大小是固定的,可以相等也可以不等。采用分區表記錄分區的大小和使用情況。分區表的數據項有分區號,大小,起止,和狀態。動態分區分配說白了就是用多少分多少。一般分區都是從地址低端開始的,動態分區按尋找空閑分區的方法的不同又分為1、首次適應法2、下次適應法3、最佳適應法。
? ? 首次適應算法是按分區的先后次序(即從低地址開始),從頭查找,找到符合要求的第一個分區,特點:較大的空閑分區被保留在內存高端,每次分配時查找時間的開銷會增大。
? ? 下次適應算法是從上次分配的分區開始查找,按分區的先后次序找,特點空閑分區分布的更均勻,但較大的空閑分區不易保留。
? ? 最佳適應算法是每次找與其容量最接近的空閑分區,為了方便將按空閑區大小鏈接起來遞增排列利用了好多外碎片。
? ? 動態分區還有動態重定位分區分配就是在動態分區的情況下,當剩余零頭分區的和超過新任務要求的分區但是連續的空閑區容量卻達不到新任務要求時進行緊湊的行為。就是將各個占用分區向內存一端移動,在另一端將空閑分區合并成一個空閑分區。
?
? ? 5. 非連續分配管理方式
? ? ?包括分頁管理方式;分段管理方式;段頁式管理方式。當然一個操作系統只使用其中一種管理方式。
? ? ?頁式管理中將邏輯地址空間分成頁,物理內存劃分為固定的同樣大小的(硬件設計時也框的大小已經確定)頁框(塊),程序可加載在不連續的塊中。程序中邏輯頁號和內存中物理頁號的對應表叫頁表,每個進程一張。系統中有一張頁框使用表。系統中還有一張請求表里面存的是進程id和該進程頁表地址的對應關系。邏輯地址像物理地址轉換的過程:邏輯地址由兩部分組成:頁號和頁內地址。以該頁號在頁表中查找對應的物理頁號,然后和頁內地址拼起來就是物理地址。
? ? ?分段存儲的段表是由段號,段長,段基址組成。由邏輯地址轉換為物理地址的過程:邏輯地址由段號段內位移組成,根據段號在段表中查找段基址然后加上位移量就是在內存中的位置。
? ? ?段頁式存儲管理的邏輯地址由段號,段內頁號,頁內偏移地址組成。每個進程一張段表。段表由段號,頁表大小(包含幾個頁表),頁表首址組成。邏輯地址到物理地址的轉換過程:由段號在段表中查找到對應的頁表首址再與邏輯地址的頁號相加,即是對應頁表中該頁號的對應項,將塊號和頁內地址拼接即求的物理地址。
? ? ?分頁中控制寄存器中存的是頁表地址和長度,分段中控制寄存器中存的是段表使址和段表長度,段頁式中控制寄存器中存的是段表始址和段表長度,根據寄存器里的值才能得到頁表,段表。
(二)?? 虛擬內存管理
? ? 1. 虛擬內存基本概念
? ? ?借助于硬盤,一個進程部分調入內存即可運行的情況下,用到哪個程序段將外存的調入內存,對用戶來說是透明的任務內存足夠大到可以執行自己的程序這個思想便是虛擬內存的思想,在虛擬存儲管理下,用戶的邏輯地址空間可遠遠大于物理空間。
?
? ? 2. 請求分頁管理方式
? ? ? 即在簡單頁式存儲管理的基礎上,增加了請求調頁和頁面置換功能。在請求分頁中的頁表比簡單頁式存儲的頁表要多一些字段,包括頁號、物理塊號、狀態位,訪問字段、修改位、保護位、外存地址。狀態位用來區分該頁是否在內存,修改位用來表示該頁在調入內存后有沒有被修改,保護位表示該頁是否可以修改,外存地址表示它在磁盤上現在存的位置,還有一個訪問字段表示最后一次訪問到現在的時間間隔用于頁面置換算法的。
?
? ? 3. 頁面置換算法
? ? 包括最佳置換算法(OPT);先進先出置換算法(FIFO);最近最少使用置換算法(LRU);時鐘置換算法(CLOCK)。
? ? 最佳置換算法:選擇未來最常時間里不使用的頁,不能實現,因為系統不會預估未來。
? ? 先進先出:選擇建立最早的頁面置換,但是如果這個頁經常使用,那就會被反復調入和調出,會出現隨著頁框增多而中斷次數反而增加的現場也稱為Belady異常。
? ? 最近最久未使用LRU算法:最近最久沒有使用的頁面,相當于訪問到一個把他排隊尾最后出,慢慢的隊頭就是最近沒使用的頁面淘汰隊頭即可。
? ? CLOCK置換算法:是LRU和FIFO的折中。也叫二次機會算法,
?
? ? 4. 頁面分配策略
? ? ?保證進程能運行的最小頁框,固定分配:給每個進程分配固定數目的頁框;可變分配是預分配給進程一定數目的頁框,OS控制一定數量的空閑頁框,在進程執行過程中,發生缺頁時os就分配給該進程一個空閑的頁框。
?
? ? ? 5. 抖動
? ? ? 抖動現象和工作集。工作集指進程在執行過程中所訪問頁面的集合。駐留集指虛擬頁式管理中給進程分配的物理塊數。引入工作集目的是依據進程在過去的一段時間內訪問的頁面來調整常駐集大小。抖動是指內存和外存進行頻繁的調入調出,產生這種情況一是因為系統進程數越來越多。每個的駐留集越來越少,因此缺頁中斷越來越多,這樣就會使cpu使用率越來越低,二是因為不合適的調頁算法。
?
? ? ? 6. 請求分段管理方式
? ? ?此時的段表比簡單分段式管理的段表多了幾項包括:段名,段長,段基址,存取方式,訪問字段,修改字段,存在位,增補位,外存地址。存取方式指的是:執行、只讀、讀/寫;存在位跟分頁管理中的狀態位是一樣的,增補位指示運行過程中是否進行過動態增長。
叁:文件管理
(一)?? 文件系統基礎
? ? ? ?1. 文件概念 ?
? ? ?文件是具有文件名的一組相關元素的集合.可分為有結構文件和無結構文件,有結構的文件被看成事由一組記錄組成(學過數據庫都知道記錄是有若干相關的數據項 ? ? ? ?組成),無結構的文件即流式文件,無格式.
?
? ? ?2. ?文件結構 ?
? ? 文件結構分為邏輯結構和物理結構:
文件的邏輯結構有三種 : 順序文件;索引文件;索引順序文件。
? ? (1)順序文件,其記錄是按某種順序排列所形成的,比如按存入時間的先后或關鍵字排列.對定長記錄方便直接存取,但對變長的記錄,就得從第一條的長度一直加到第 n條才能知道記錄的首址.
? ? (2)索引文件,記錄在文件中的位置由索引表來指向,其實是按某個記錄鍵來確定位置的,而索引表本身是定長的順序文件.所以給定關鍵字后就可以在索引表中折半 查找相應的記錄在哪.索引項是由記錄的首址和長度構成的.
? ? (3)索引順序文件, 將順序文件中的記錄先分為組,為順序文件建立一張索引表,在索引表里為每組中的第一個記錄建立索引項,記錄在文件中的位置由索引表和順 序來決定.
文件的物理結構也有三種 :連續分配方式,鏈接分配方式,和索引分配方式.
? ? (1)連續分配:使得訪問速度快但它要求存儲空間是連續的而且必須事先知道文件的大小才能將文件存儲到外存.
? ? (2)鏈接分配方式:將屬于一個文件的多個離散盤塊鏈接成一個鏈表這樣所形成的一個物理文件稱為鏈接文件.而鏈接分配又分為隱式鏈接和顯示鏈接.隱式鏈接就是在該文件的離散物理塊中,下一個物理塊的地址由前一個物理塊給出.而每個文件的第一個物理塊和最后一個物理塊是存儲在文件目錄項中的…顯示鏈接是把用于鏈接文件的各個物理塊指針全存放到一張鏈接表中,每個FAT表項存的是本物理號對應的下一個物理號是什么,一個磁盤只有一張這個表.叫做FAT文件分配表. 凡是屬于某一文件的第一個盤塊號,均作為文件地址被填入相應文件的FCB的物理地址字段中.
? ? (3)索引分配方式:鏈接分配方式需要把FAT都調入內存才能保證一個文件完整的被找到,而且一個個像下查找效率不高,索引方式為每個文件分配一個索引塊,把分配給該文件的所有盤塊號都記錄在該索引表中,將指向該索引塊的指針存入FCB中.索引分配還分為單級多級和混合索引分配方式.
至于邏輯結構和物理結構的區別. 邏輯結構是指每個記錄在文件中的位置,而物理結構為邏輯結構服務,指文件在外存上存儲時,分配方式要保證文件在邏輯上一致而且檢索效率還有達到最高的結構.
?
? ? ?3.目錄管理
? (1)從文件管理的角度看,文件時由文件控制塊FCB和文件體組成的,文件控制塊保存文件的屬性信息基本包括文件名,文件結構,文件物理位置,控制信息(存取權限),管理信息(建立/修改日期等等).
? (2)目錄是由文件說明即FCB的集合構成的.還有一種目錄的組成由于每次檢索文件是按名檢索的,索引把整個由文件說明構成的目錄調入內存是一種浪費,因此索引結點方式就誕生了,即將文件名和文件描述信息分開,將文件描述信息單獨形成一個稱為索引結點的數據結構,在文件目錄的目錄項中僅存放文件名和對應的指向索引結點的指針..
? (3)目錄結構的形式有單級目錄結構,兩級目錄結構和多級目錄結構(也成為樹形目錄結構)。單級目錄結構下文件不能重名查找速度也慢,兩級目錄是按用戶建立的,即 第一級目錄中存放用戶名和該用戶目錄的指針,雖然提高了檢索速度在不同用戶目錄中可以重名,但是不同用戶文件之間的共享不方便,于是多級目錄就出現了..根目錄還是按用戶分的,但下面有多重目錄.當兩個或多個用戶共享文件時,不再是樹形而是有向非循環圖.
(二)?? 文件系統實現
? ? 1. 文件系統層次結構
? ? ?文件系統由三部分組成:與文件管理有關的軟件,被管理的文件,實施文件管理所需的數據結構.文件系統由四層構成:最低層是基本輸入輸出層又叫設備驅動層,下來依次是基本文件系統層,又稱物理I/O層.基本I/O管理程序層,邏輯文件系統層.
? ? (1)基本I/O層:負責啟動設備I/O以及對設備發來的中斷信號進行處理.
? ? (2)物理I/O層:負責處理內存和外存之間的數據塊交換.
? ? (3)基本I/O管理程序層:選擇文件所在設備,進行邏輯塊號到物理塊號的轉換,對文件空閑存儲空間的管理,指定I/O緩沖區等作用.
? ? (4)邏輯文件系統層:負責處理文件及記錄的相關操作.
? ? 這個名字起得不好,一般物理都是最底層,結果這是是第二層不好記..
?
? ? 2. 文件存儲空間的管理?
? ?(1) 空閑表法和空閑鏈表法
? ?空閑表法適用于連續分配方式.系統為外存上的所有空閑區建立一張空閑表,每個空閑區對應于一個空閑表項,其中包括表項序號,該空閑區的第一個盤塊號,該區的空閑盤塊數等信息,再將所有空閑區按其起始盤塊號遞增的次序排列.(對換區常用).空閑鏈表法.將空閑空間,以盤塊為單位拉成一條鏈.
? ?(2) ?位示圖法
? ? 二進制的每一位表示磁盤中的一個盤塊,當該位為1時表示已經分配,為0表示空閑.注意給出的字號和位號是從0開始還是從1開始.書上是從1開始的.
? ? (3) 成組鏈接法
? ? 成組鏈接法將一個文件的所有空閑塊按每組100塊分成若干組,把每組的盤塊數目和該組的所有盤塊號計入到前一組的第一個盤塊中,第一組的盤塊數目和第一組的所有盤塊號計入到超級塊中.這樣每組的第一個盤塊就連接成了一個鏈表,而組內的多個盤塊形成了堆棧.
? ? 成組鏈接法的分配和回收空閑塊都是所謂的頭取頭插,即分配從第一組開始分配,如果第一組只剩那個保存有下一組地址的塊,就把該塊存入超級塊,下一組變成第一組.回收的時候,如果第一組滿100個,那么將第一組的盤塊數和盤塊號寫入該空閑塊中,然后將盤塊數等于1及棧頂塊號=該空閑塊號寫入超級塊中所以原來的第一組就變成了第二組…
(三)?? 磁盤組織與管理
? ? ?1. 磁盤的結構
? ? ? ?磁盤由若干盤片組成,每個盤片有兩面.都可以記錄信息.每個盤面由若干磁道組成,不同半徑的同心圓叫磁道.每條磁道又分為若干個扇區.每個扇區的大小相當于一個盤塊.每個盤面的每一面都有一個磁頭.柱面指的是不同盤面相同半徑的磁道組成的圓柱..
? ? ? ?磁盤的類型可分為固定磁頭磁盤和移動磁盤磁頭.磁盤的訪問時間由尋道時間,旋轉延遲時間和傳輸時間構成.(1)尋道時間:指的是把磁頭移到指定磁道上所經歷的時間.移動一條磁道的時間是常數.為0.2ms…
? ? (1)尋道時間等于啟動磁臂的時間(常數2ms)+移動n個磁道的時間..即0.2 * n? + 2
? ? (2)旋轉延遲時間為轉半轉所需的時間..一看都是平均數..
? ? (3)傳輸時間為所讀/寫的字節數b除以一條磁道上的字節數(除下來即表示b個字節需要轉幾轉)再乘以一轉需要的時間..
?
? ? ?2. ?磁盤調度算法
? ? (1) ?先來先服務
? ? 沒有對尋到進行優化,導致平均尋道時間可能較長.
? ? (2) ?最短尋道優先
? ? 只要有新的進程要訪問的磁道與當前磁頭所在磁道距離較近.就會滿足此進程而可能導致某些離得遠的一直得不到滿足.
? ? (3) ?掃描算法
? ? 又稱電梯調度算法,scan算法所考慮的下一個訪問對象是按電梯一樣的磁頭移動方向下,距離正訪問磁道最近的對象.容易使距離兩端的進程等待將近一來一回的掃描..
? ? (4) ?循環掃描算法
? ? CSCAN算法規定了磁頭必須單向移動.例如只允許磁頭由內向外移動.移動到最外磁道立即返回最里面又重新開始.
?
? ? ? 3.磁盤的存儲 ? ?
? ? ?可以按并行交叉存儲.即連續的物理塊分在不同的盤面上.一次就可以取多個,也可以在一個盤面上按順序號存儲這種效率低.容易讀完1號處理完磁盤剛好旋轉的把2號錯過去,所以還有一種是將物理號連續的間隔起來排列.
肆:輸入輸出(I/O)管理
?(一)?? I/O管理概述
? ? ? 1. I/O設備的分類
? ? ? ? (1) ? 按傳輸速率分可分為低速設備(鍵盤鼠標等),中速設備(激光打印機等),高速設備(磁盤機等)。
? ? ? ? (2) ? 按信息交換的單位分可分為塊設備(有結構例如磁盤)和字符設備(常采用中斷驅動方式)
? ? ? ? (3) ? 按設備的共享方式可分為獨占設備(一段時間內只允許一個進程訪問:例如打印機),共享設備(一段時間內允許多個進程同時訪問:例如磁盤),虛擬設備(通過虛擬技術將獨占設備變為若干臺邏輯設備。)
?
? ? ? ?2. ?I/O管理目標
? ? ? ? ? 合理分配設備、提高設備與CPU,各外部設備之間的并行性,提供使用方便且獨立與設備的界面。
?
? ? ? ?3. ?I/O管理功能
? ? ? ? (1) ? 動態的紀錄各種設備的狀態
? ? ? ? (2) ? 設備分配與回收
? ? ? ? (3) ? 實施設備驅動和中段處理的工作
?
? ? 4. ? ?I/O應用接口
? ? (1) ?設備和設備控制器的接口:設備和cpu之間不是直接通信的而是夾著一個設備控制器,設備與設備控制器是靠三根線相連的,數據信號線,控制信號線和狀態信號線,數據信號線用于在設備和設備控制器之間傳送數據信號,控制信號線傳送由設備控制器向I/O設備發送控制信號,狀態信號線用于傳送設備當前狀態的信號。
? ? (2) ?設備控制器:控制一個或多個I/O設備,其基本功能有接收和識別(cpu發的)命令,數據交換(與cpu或與設備數據交換),標示和報告設備的狀態(給cpu發)地址識別,數據緩沖,差錯控制。
? ? (3) ?設備控制器由三部分組成:設備控制器與處理器的接口(由數據線連接DMR和控制狀態寄存器,控制線,和地址線組成),設備控制器與設備的接口(多個設備接口,每個設備接口由數據控制和狀態三種信號),I/O邏輯(當cpu啟動一個設備時,將啟動命令發給I/O邏輯同時通過地址線給I/O邏輯由它進行譯碼。。譯出命令后對所選設備進行控制。所以地址線和控制線是直接跟I/O邏輯相連的。
?
? 5. ? ?I/O通道 ?
? ? ?I/O通道是特殊的處理機。它具有執行I/O指令的能力,并通過執行通道程序來控制I/O操作,它的指令單一主要與I/O操作相關的指令,通道沒有自己的內存,它和CPU共享內存。通道又分為字節多路通道,數組選擇通道,和數組多路通道。
? ? (1) ?數組選擇通道:又稱告訴通道,在物理上可以連接多個設備,但某一段時間內通道只能選擇一個設備進行工作
? ? (2) ?數組多路通道:當某設備進行數據傳送時,通道只為該設備服務,當設備在執行尋址等控制性動作時,通道掛起該設備的通道程序,去為其他設備服務。
? ? (3) ?字節多路通道:用于大量低速設備,與設備之間數據傳送的基本單位是字節,為一個設備傳送一個字節后,又可以為另個設備傳送一個字節。數組多路通道傳輸的基本單位是塊。而且一次只能有一個設備在傳輸數據。
?
? 6. ? I/O控制方式
? ? (1) ?程序I/O方式:忙等方式。
? ? (2) ?中段驅動I/O方式:當某進程要啟動某個I/O設備工作時,便由cpu向相應的設備控制器發出一條I/O命令,然后立即返回繼續執行原來的任務,此時,CPU和 I/O設備并行操作。以字節為單位進行I/O。
? ? (3) ?DMA I/O方式:直接存儲器訪問方式數據傳輸的單位是塊,數據之間在設備和內存中進行交換,僅塊傳輸的開始和結束時才需要CPU干預。(替代了設備控制 器)。DMA控制器中有四類寄存器:命令寄存器(存cpu發的控制命令或設備的狀態),內存地址寄存器,數據寄存器(緩沖數據作用),數據計數器(存本次要讀的字節數)。
? ?(4) ?I/O通道控制方式:通道是通過執行通道程序,并與設備控制器共同實現對I/O設備的控制的。通道指令格式為命令
? ? ? ? ? 1)操作碼:規定了指令所執行的操作。
? ? ? ? ? 2)內存地址:標明讀操作和寫操作時的內存首址
? ? ? ? ? 3)計數:表示本條占領所要讀或寫數據的字節數
? ? ? ? ? 4)通道程序結束位P:用于表示通道程序是否結束
? ? ? ? ? 5)記錄結束標志R。?
(二)?? I/O核心子系統
? ? 1. ?高速緩存與緩沖區
? ? ? ? ? ?引入緩沖區的目的:改善CPU與外圍設備之間的速度不匹配矛盾;減少對CPU的中斷次數(一個位做緩沖和塊做緩沖的差距),提高CPU和I/O設備的并行性。
? ? ?緩沖分為:單緩沖、雙緩沖、循環緩沖、和緩沖池
? ? ?單緩沖屬于臨界資源,而且cpu與設備無法進行并行操作。單緩沖只允許各自進程獨占。雙緩沖一般就有發送緩沖區和接收緩沖區。循環緩沖鏈成一個環形,不過 ? ? ?需要四個指針,比如分別指向用于讀進程和寫進程的已用和正在訪問的單元,循環緩沖進程屬于專用緩沖區。不是所有的進程都能用的。所以系統會有多個這種緩沖區。開銷比較大。其實單緩沖和多緩沖也是得設置多個。因為多道程序要是設一個緩沖區豈不是沒有并行性了。
? ? ?緩沖池是個好想法:里面有多個進程可以共享的緩沖區。不過既然要使多個進程共享肯定結構比較復雜。有空閑緩沖區,裝滿輸入數據的緩沖區,裝滿輸出數據的緩沖區還有用于收容輸入輸出數據的緩沖區。
?
? ? ?2. ?設備分配
? ? ? ? ?設備分配中設計到4張表的數據結構,設備控制表DCT,控制器控制表COCT,通道控制表CHCT,系統設備表SDT,DCT主要包括設備標示、設備類型(塊設備還是字符設備)、設備狀態、等待該設備的進程、指向控制器表的指針。COCT同理,包括控制器標示符,控制器狀態,與控制器連接的通道指針,等待控制器的進程隊列。CHCT同上,不過它包含與該通道相連的控制器表的首地址。SDT表里包含設備控制表,還包含驅動程序入口地址等。
? ? 設備管理軟件具有層次結構,細分為四級,設備中斷處理程序,設備驅動程序,與設備無關的操作系統軟件,用戶級軟件。
? ? 邏輯設備名與物理設備是有個映射表的叫邏輯設備表,基本上一個系統一個。或者一個用戶一個, 數據項有邏輯設備名,物理設備名和驅動程序入口地址。
?
? ? 3.假脫機技術(SPOOLing)
? ? ? ? 假脫機技術用輔存的輸入輸出井替代了以前脫機技術的外圍設備機的作用,使對I/O設備的操作變成對輸入輸出井的操作。多個進程可以同時獨享設備實現了虛擬設備的功能,其實設備并沒有分給某個進程,而是進程將要處理的數據放到輸入輸出井中,每個進程在輸入輸出井中分配的是一個存儲區和一張I/O請求表。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
