操做系統理論學習筆記

操做系統理論的學習跟實際應用仍是很大的。我學了進程線程同步互斥以後對於編程中的多線程等加鎖的仍是雲裏霧裏,老是把操做系統和編程串不起來,也把計算機幾門專業課串不起來,感受計算機這個專業書讀十遍如下是不可能把四門專業課書連貫的本身串起來。人的智商和邏輯性仍是差別很大的。。
程序員

壹:進程管理算法

(一)   進程與線程數據庫

    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。分區分配時把內存劃分爲若干個連續分區。分區分配又分爲固定分區分配和動態分區分配,固定分區分配就是分區的大小是固定的,能夠相等也能夠不等。採用分區表記錄分區的大小和使用狀況。分區表的數據項有分區號,大小,起止,和狀態。動態分區分配說白了就是用多少分多少。通常分區都是從地址低端開始的,動態分區按尋找空閒分區的方法的不一樣又分爲一、首次適應法二、下次適應法三、最佳適應法。

    首次適應算法是按分區的前後次序(即從低地址開始),從頭查找,找到符合要求的第一個分區,特色:較大的空閒分區被保留在內存高端,每次分配時查找時間的開銷會增大。

    下次適應算法是從上次分配的分區開始查找,按分區的前後次序找,特色空閒分區分佈的更均勻,但較大的空閒分區不易保留。

    最佳適應算法是每次找與其容量最接近的空閒分區,爲了方便將按空閒區大小連接起來遞增排列利用了好多外碎片。

    動態分區還有動態重定位分區分配就是在動態分區的狀況下,當剩餘零頭分區的和超過新任務要求的分區可是連續的空閒區容量卻達不到新任務要求時進行緊湊的行爲。就是將各個佔用分區向內存一端移動,在另外一端將空閒分區合併成一個空閒分區。

 

    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請求表。

相關文章
相關標籤/搜索