導航:首頁 > 源碼編譯 > 掃描演算法缺點

掃描演算法缺點

發布時間:2023-02-07 06:41:21

1. 操作系統(四)文件管理

文件—就是一組有意義的信息/數據集合

文件屬於抽象數據類型。為了恰當地定義文件,需要考慮有關文件的操作。操作系統提供系統調用,它對文件進行創建、寫、讀、重定位、搠除和截斷等操作。

所謂的「邏輯結構」,就是指在用戶看來,文件內部的數據應該是如何組織起來的。而「物理結構」指的是在操作系統看來,文件的數據是如何存放在外存中的。

無結構文件:文件內部的數據就是一系列二進制流或字元流組成。又稱「流式文件」

文件內部的數據其實就是一系列字元流,沒有明顯的結構特性。因此也不用探討無結構文件的「邏輯結構」問題。

有結構文件:由一組相似的記錄組成,又稱「記錄式文件」。每條記錄又若干個數據項組成。 [1] 一般來說,每條記錄有一個數據項可作為關鍵字。根據各條記錄的長度(佔用的存儲空間)是否相等,又可分為定長記錄和可變長記錄兩種。有結構文件按記錄的組織形式可以分為:

對於含有N條記錄的順序文件,查找某關鍵字值的記錄時,平均需要查找N/2次。在索引順序文件中,假設N條記錄分為√N組,索引表中有√N個表項,每組有√N條記錄,在查找某關鍵字值的記錄時,先順序查找索引表,需要查找√N /2次,然後在主文件中對應的組中順序查找,也需要查找√N/2次,因此共需查找√N/2+√N/2=√N次。顯然,索引順序文件提高了查找效率,若記錄數很多,則可採用兩級或多級索引

FCB的有序集合稱為「文件目錄」,一個FCB就是一個文件目錄項。FCB中包含了文件的基本信息(文件名、物理地址、邏輯結構、物理結構等),存取控制信息(是否可讀/可寫、禁止訪問的用戶名單等),使用信息(如文件的建立時間、修改時間等)。最重要,最基本的還是文件名、文件存放的物理地址。

對目錄的操作如下:

操作的時候,可以有以下幾種目錄結構:

早期操作系統並不支持多級目錄,整個系統中只建立一張目錄表,每個文件佔一個目錄項。

單級目錄實現了「按名存取」,但是不允許文件重名。在創建一個文件時,需要先檢查目錄表中有沒有重名文件,確定不重名後才能允許建立文件,並將新文件對應的目錄項插入目錄表中。顯然, 單級目錄結構不適用於多用戶操作系統。

早期的多用戶操作系統,採用兩級目錄結構。分為主文件目錄(MFD,Master File Directory)和用戶文件目錄(UFD,User Flie Directory)。

允許不同用戶的文件重名。文件名雖然相同,但是對應的其實是不同的文件。兩級目錄結構允許不同用戶的文件重名,也可以在目錄上實現實現訪問限制(檢查此時登錄的用戶名是否匹配)。但是兩級目錄結構依然缺乏靈活性,用戶不能對自己的文件進行分類

用戶(或用戶進程)要訪問某個文件時要用文件路徑名標識文件,文件路徑名是個字元串。各級目錄之間用「/」隔開。從根目錄出發的路徑稱為絕對路徑。

系統根據絕對路徑一層一層地找到下一級目錄。剛開始從外存讀入根目錄的目錄表;找到目錄的存放位置後,從外存讀入對應的目錄表;再找到目錄的存放位置,再從外存讀入對應目錄表;最後才找到文件的存放位置。整個過程需要3次讀磁碟I/O操作。

很多時候,用戶會連續訪問同一目錄內的多個文件,顯然,每次都從根目錄開始查找,是很低效的。因此可以設置一個「當前目錄」。此時已經打開了的目錄文件,也就是說,這張目錄表已調入內存,那麼可以把它設置為「當前目錄」。當用戶想要訪問某個文件時,可以使用從當前目錄出發的「相對路徑」

可見,引入「當前目錄」和「相對路徑」後,磁碟I/O的次數減少了。這就提升了訪問文件的效率。

樹形目錄結構可以很方便地對文件進行分類,層次結構清晰,也能夠更有效地進行文件的管理和保護。但是,樹形結構不便於實現文件的共享。為此,提出了「無環圖目錄結構」。

可以用不同的文件名指向同一個文件,甚至可以指向同一個目錄(共享同一目錄下的所有內容)。需要為每個共享結點設置一個共享計數器,用於記錄此時有多少個地方在共享該結點。用戶提出刪除結點的請求時,只是刪除該用戶的FCB、並使共享計數器減1,並不會直接刪除共享結點。只有共享計數器減為0時,才刪除結點。

其實在查找各級目錄的過程中只需要用到「文件名」這個信息,只有文件名匹配時,才需要讀出文件的其他信息。因此可以考慮讓目錄表「瘦身」來提升效率。

當找到文件名對應的目錄項時,才需要將索引結點調入內存,索引結點中記錄了文件的各種信息,包括文件在外存中的存放位置,根據「存放位置」即可找到文件。存放在外存中的索引結點稱為「磁碟索引結點」,當索引結點放入內存後稱為「內存索引結點」。相比之下內存索引結點中需要增加一些信息,比如:文件是否被修改、此時有幾個進程正在訪問該文件等。

為文件設置一個「口令」(如:abc112233),用戶請求訪問該文件時必須提供「口令」。

優點:保存口令的空間開銷不多,驗證口令的時間開銷也很小。

缺點:正確的「口令」存放在系統內部,不夠安全。

使用某個「密碼」對文件進行加密,在訪問文件時需要提供正確的「密碼」才能對文件進行正確的解密。 [3]

優點:保密性強,不需要在系統中存儲「密碼」

缺點:編碼/解碼,或者說加密/解密要花費一定時間。

在每個文件的FCB(或索引結點)中增加一個訪問控制列表(Access-Control List, ACL),該表中記錄了各個用戶可以對該文件執行哪些操作。

有的計算機可能會有很多個用戶,因此訪問控制列表可能會很大,可以用精簡的訪問列表解決這個問題

精簡的訪問列表:以「組」為單位,標記各「組」用戶可以對文件執行哪些操作。當某用戶想要訪問文件時,系統會檢查該用戶所屬的分組是否有相應的訪問許可權。

索引結點,是一種文件目錄瘦身策略。由於檢索文件時只需用到文件名,因此可以將除了文件名之外的其他信息放到索引結點中。這樣目錄項就只需要包含文件名、索引結點指針。

索引結點中設置一個鏈接計數變數count,用於表示鏈接到本索引結點上的用戶目錄項數。

當User3訪問「ccc」時,操作系統判斷文件「ccc」屬於Link類型文件,於是會根據其中記錄的路徑層層查找目錄,最終找到User1的目錄表中的「aaa」表項,於是就找到了文件1的索引結點。

類似於內存分頁,磁碟中的存儲單元也會被分為一個個「塊/磁碟塊/物理塊」。很多操作系統中,磁碟塊的大小與內存塊、頁面的大小相同

內存與磁碟之間的數據交換(即讀/寫操作、磁碟I/O)都是以「塊」為單位進行的。即每次讀入一塊,或每次寫出一塊

在內存管理中,進程的邏輯地址空間被分為一個一個頁面同樣的,在外存管理中,為了方便對文件數據的管理,文件的邏輯地址空間也被分為了一個一個的文件「塊」。於是文件的邏輯地址也可以表示為(邏輯塊號,塊內地址)的形式。用戶通過邏輯地址來操作自己的文件,操作系統要負責實現從邏輯地址到物理地址的映射

連續分配方式要求每個文件在磁碟上佔有一組連續的塊。用戶給出要訪問的邏輯塊號,操作系統找到該文件對應的目錄項(FCB)——可以直接算出邏輯塊號對應的物理塊號,物理塊號=起始塊號+邏輯塊號。還需要檢查用戶提供的邏輯塊號是否合法(邏輯塊號≥ 長度就不合法)因此 連續分配支持順序訪問和直接訪問 (即隨機訪問)

讀取某個磁碟塊時,需要移動磁頭。訪問的兩個磁碟塊相隔越遠,移動磁頭所需時間就越長。 連續分配的文件在順序讀/寫時速度最快,物理上採用連續分配的文件不方便拓展,且存儲空間利用率低,會產生難以利用的磁碟碎片可以用緊湊來處理碎片,但是需要耗費很大的時間代價。。

鏈接分配採取離散分配的方式,可以為文件分配離散的磁碟塊。分為隱式鏈接和顯式鏈接兩種。

用戶給出要訪問的邏輯塊號i,操作系統找到該文件對應的目錄項(FCB)…從目錄項中找到起始塊號(即0號塊),將0號邏輯塊讀入內存,由此知道1號邏輯塊存放的物理塊號,於是讀入1號邏輯塊,再找到2號邏輯塊的存放位置……以此類推。因此,讀入i號邏輯塊,總共需要i+1次磁碟I/O。

採用鏈式分配(隱式鏈接)方式的文件,只支持順序訪問,不支持隨機訪問,查找效率低。另外,指向下一個盤塊的指針也需要耗費少量的存儲空間。但是,採用隱式鏈接的鏈接分配方式,很方便文件拓展。另外,所有的空閑磁碟塊都可以被利用,不會有碎片問題,外存利用率高。

把用於鏈接文件各物理塊的指針顯式地存放在一張表中。即文件分配表(FAT,File Allocation Table)

一個磁碟僅設置一張FAT 。開機時,將FAT讀入內存,並常駐內存。FAT的各個表項在物理上連續存儲,且每一個表項長度相同,因此「物理塊號」欄位可以是隱含的。

從目錄項中找到起始塊號,若i>0,則查詢內存中的文件分配表FAT,往後找到i號邏輯塊對應的物理塊號。 邏輯塊號轉換成物理塊號的過程不需要讀磁碟操作。

採用鏈式分配(顯式鏈接)方式的文件,支持順序訪問,也支持隨機訪問 (想訪問i號邏輯塊時,並不需要依次訪問之前的0 ~ i-1號邏輯塊), 由於塊號轉換的過程不需要訪問磁碟,因此相比於隱式鏈接來說,訪問速度快很多。顯然,顯式鏈接也不會產生外部碎片,也可以很方便地對文件進行拓展。

索引分配允許文件離散地分配在各個磁碟塊中,系統會為每個文件建立一張索引表,索引表中記錄了文件的各個邏輯塊對應的物理塊(索引表的功能類似於內存管理中的頁表——建立邏輯頁面到物理頁之間的映射關系)。索引表存放的磁碟塊稱為索引塊。文件數據存放的磁碟塊稱為數據塊。

在顯式鏈接的鏈式分配方式中,文件分配表FAT是一個磁碟對應一張。而索引分配方式中,索引表是一個文件對應一張。可以用固定的長度表示物理塊號 [4] ,因此,索引表中的「邏輯塊號」可以是隱含的。

用戶給出要訪問的邏輯塊號i,操作系統找到該文件對應的目錄項(FCB)…從目錄項中可知索引表存放位置,將索引表從外存讀入內存,並查找索引表即可只i號邏輯塊在外存中的存放位置。

可見, 索引分配方式可以支持隨機訪問。文件拓展也很容易實現 (只需要給文件分配一個空閑塊,並增加一個索引表項即可)但是 索引表需要佔用一定的存儲空間

索引塊的大小是一個重要的問題,每個文件必須有一個索引塊,因此索引塊應盡可能小,但索引塊太小就無法支持大文件,可以採用以下機制:

空閑表法適用於「連續分配方式」。分配磁碟塊:與內存管理中的動態分區分配很類似,為一個文件分配連續的存儲空間。同樣可採用首次適應、最佳適應、最壞適應等演算法來決定要為文件分配哪個區間。回收磁碟塊:與內存管理中的動態分區分配很類似,當回收某個存儲區時需要有四種情況——①回收區的前後都沒有相鄰空閑區;②回收區的前後都是空閑區;③回收區前面是空閑區;④回收區後面是空閑區。總之,回收時需要注意表項的合並問題。

操作系統保存著鏈頭、鏈尾指針。如何分配:若某文件申請K個盤塊,則從鏈頭開始依次摘下K個盤塊分配,並修改空閑鏈的鏈頭指針。如何回收:回收的盤塊依次掛到鏈尾,並修改空閑鏈的鏈尾指針。適用於離散分配的物理結構。為文件分配多個盤塊時可能要重復多次操作

操作系統保存著鏈頭、鏈尾指針。如何分配:若某文件申請K個盤塊,則可以採用首次適應、最佳適應等演算法,從鏈頭開始檢索,按照演算法規則找到一個大小符合要求的空閑盤區,分配給文件。若沒有合適的連續空閑塊,也可以將不同盤區的盤塊同時分配給一個文件,注意分配後可能要修改相應的鏈指針、盤區大小等數據。如何回收:若回收區和某個空閑盤區相鄰,則需要將回收區合並到空閑盤區中。若回收區沒有和任何空閑區相鄰,將回收區作為單獨的一個空閑盤區掛到鏈尾。 離散分配、連續分配都適用。為一個文件分配多個盤塊時效率更高

位示圖:每個二進制位對應一個盤塊。在本例中,「0」代表盤塊空閑,「1」代表盤塊已分配。位示圖一般用連續的「字」來表示,如本例中一個字的字長是16位,字中的每一位對應一個盤塊。因此可以用(字型大小,位號)對應一個盤塊號。當然有的題目中也描述為(行號,列號)

盤塊號、字型大小、位號從0開始,若n表示字長,則

如何分配:若文件需要K個塊,①順序掃描位示圖,找到K個相鄰或不相鄰的「0」;②根據字型大小、位號算出對應的盤塊號,將相應盤塊分配給文件;③將相應位設置為「1」。如何回收:①根據回收的盤塊號計算出對應的字型大小、位號;②將相應二進制位設為「0」

空閑表法、空閑鏈表法不適用於大型文件系統,因為空閑表或空閑鏈表可能過大。UNIX系統中採用了成組鏈接法對磁碟空閑塊進行管理。文件卷的目錄區中專門用一個磁碟塊作為「超級塊」,當系統啟動時需要將超級塊讀入內存。並且要保證內存與外存中的「超級塊」數據一致。

進行Create系統調用時,需要提供的幾個主要參數:

操作系統在處理Create系統調用時,主要做了兩件事:

進行Delete系統調用時,需要提供的幾個主要參數:

操作系統在處理Delete系統調用時,主要做了幾件
事:

在很多操作系統中,在對文件進行操作之前,要求用戶先使用open系統調用「打開文件」,需要提供的幾個主要參數:

操作系統在處理open系統調用時,主要做了幾件事:

進程使用完文件後,要「關閉文件」

操作系統在處理Close系統調用時,主要做了幾件事:

進程使用read系統調用完成寫操作。需要指明是哪個文件(在支持「打開文件」操作的系統中,只需要提供文件在打開文件表中的索引號即可),還需要指明要讀入多少數據(如:讀入1KB)、指明讀入的數據要放在內存中的什麼位置。操作系統在處理read系統調用時,會從讀指針指向的外存中,將用戶指定大小的數據讀入用戶指定的內存區域中。

進程使用write系統調用完成寫操作,需要指明是哪個文件(在支持「打開文件」操作的系統中,只需要提供文件在打開文件表中的索引號即可),還需要指明要寫出多少數據(如:寫出1KB)、寫回外存的數據放在內存中的什麼位置操作系統在處理write系統調用時,會從用戶指定的內存區域中,將指定大小的數據寫回寫指針指向的外存。

尋找時間(尋道時間)T S :在讀/寫數據前,將磁頭移動到指定磁軌所花的時間。

延遲時間T R :通過旋轉磁碟,使磁頭定位到目標扇區所需要的時間。設磁碟轉速為r(單位:轉/秒,或轉/分),則平均所需的延遲時間

傳輸時間T t :從磁碟讀出或向磁碟寫入數據所經歷的時間,假設磁碟轉速為r,此次讀/寫的位元組數為b,每個磁軌上的位元組數為N。則

總的平均存取時間Ta

延遲時間和傳輸時間都與磁碟轉速相關,且為線性相關。而轉速是硬體的固有屬性,因此操作系統也無法優化延遲時間和傳輸時間,但是操作系統的磁碟調度演算法會直接影響尋道時間

根據進程請求訪問磁碟的先後順序進行調度。

優點:公平;如果請求訪問的磁軌比較集中的話,演算法性能還算過的去
缺點:如果有大量進程競爭使用磁碟,請求訪問的磁軌很分散,則FCFS在性能上很差,尋道時間長。

SSTF演算法會優先處理的磁軌是與當前磁頭最近的磁軌。可以保證每次的尋道時間最短,但是並不能保證總的尋道時間最短。(其實就是貪心演算法的思想,只是選擇眼前最優,但是總體未必最優)

優點:性能較好,平均尋道時間短
缺點:可能產生「飢餓」現象

SSTF演算法會產生飢餓的原因在於:磁頭有可能在一個小區域內來回來去地移動。為了防止這個問題,可以規定,只有磁頭移動到最外側磁軌的時候才能往內移動,移動到最內側磁軌的時候才能往外移動。這就是掃描演算法(SCAN)的思想。由於磁頭移動的方式很像電梯,因此也叫電梯演算法。

優點:性能較好,平均尋道時間較短,不會產生飢餓現象
缺點:①只有到達最邊上的磁軌時才能改變磁頭移動方向②SCAN演算法對於各個位置磁軌的響應頻率不平均

掃描演算法(SCAN)中,只有到達最邊上的磁軌時才能改變磁頭移動方向,事實上,處理了184號磁軌的訪問請求之後就不需要再往右移動磁頭了。LOOK調度演算法就是為了解決這個問題,如果在磁頭移動方向上已經沒有別的請求,就可以立即改變磁頭移動方向。(邊移動邊觀察,因此叫LOOK)

優點:比起SCAN演算法來,不需要每次都移動到最外側或最內側才改變磁頭方向,使尋道時間進一步縮短

SCAN演算法對於各個位置磁軌的響應頻率不平均,而C-SCAN演算法就是為了解決這個問題。規定只有磁頭朝某個特定方向移動時才處理磁軌訪問請求,而返回時直接快速移動至起始端而不處理任何請求。

優點:比起SCAN來,對於各個位置磁軌的響應頻率很平均。
缺點:只有到達最邊上的磁軌時才能改變磁頭移動方向,另外,比起SCAN演算法來,平均尋道時間更長。

C-SCAN演算法的主要缺點是只有到達最邊上的磁軌時才能改變磁頭移動方向,並且磁頭返回時不一定需要返回到最邊緣的磁軌上。C-LOOK演算法就是為了解決這個問題。如果磁頭移動的方向上已經沒有磁軌訪問請求了,就可以立即讓磁頭返回,並且磁頭只需要返回到有磁軌訪問請求的位置即可。

優點:比起C-SCAN演算法來,不需要每次都移動到最外側或最內側才改變磁頭方向,使尋道時間進一步縮短

磁碟地址結構的設計:

Q:磁碟的物理地址是(柱面號,盤面號,扇區號)而不是(盤面號,柱面號,扇區號)

A:讀取地址連續的磁碟塊時,採用(柱面號,盤面號,扇區號)的地址結構可以減少磁頭移動消耗的時間

減少延遲時間的方法:

Step 1:進行低級格式化(物理格式化),將磁碟的各個磁軌劃分為扇區。一個扇區通常可分為頭、數據區域(如512B大小)、尾三個部分組成。管理扇區所需要的各種數據結構一般存放在頭、尾兩個部分,包括扇區校驗碼(如奇偶校驗、CRC循環冗餘校驗碼等,校驗碼用於校驗扇區中的數據是否發生錯誤)

Step 2:將磁碟分區,每個分區由若干柱面組成(即分為我們熟悉的C盤、D盤、E盤)

Step 3:進行邏輯格式化,創建文件系統。包括創建文件系統的根目錄、初始化存儲空間管理所用的數據結構(如位示圖、空閑分區表)

計算機開機時需要進行一系列初始化的工作,這些初始化工作是通過執行初始化程序(自舉程序)完成的

初始化程序可以放在ROM(只讀存儲器)中。ROM中的數據在出廠時就寫入了,並且以後不能再修改。ROM中只存放很小的「自舉裝入程序」,完整的自舉程序放在磁碟的啟動塊(即引導塊/啟動分區)上,啟動塊位於磁碟的固定位置,開機時計算機先運行「自舉裝入程序」,通過執行該程序就可找到引導塊,並將完整的「自舉程序」讀入內存,完成初始化。擁有啟動分區的磁碟稱為啟動磁碟或系統磁碟(C:盤)

對於簡單的磁碟,可以在邏輯格式化時(建立文件系統時)對整個磁碟進行壞塊檢查,標明哪些扇區是壞扇區,比如:在FAT表上標明。(在這種方式中,壞塊對操作系統不透明)。

對於復雜的磁碟,磁碟控制器(磁碟設備內部的一個硬體部件)會維護一個壞塊鏈表。在磁碟出廠前進行低級格式化(物理格式化)時就將壞塊鏈進行初始化。會保留一些「備用扇區」,用於替換壞塊。這種方案稱為扇區備用。且這種處理方式中,壞塊對操作系統透明

2. 啟發式掃描的原理是什麼缺點是什麼

就是病毒庫里的病毒代碼,和未知代碼中的一段或者幾段類似,就行為斷定為病毒或者惡意程序。說到底就是依據病毒庫殺毒,只不過,依據的演算法類似於搜索引擎了。缺點就是,誤殺比較高,畢竟很多程序也有木馬行為,但是根本就不是病毒。很多病毒套個證書就不是病毒就,啟發也白扯。還是依據行為來判定是不是惡意程序的行為判定比較高級,再加上病毒庫判定的防患於未然,這樣就安全多了。

3. 磁碟調度演算法用來改善磁頭的性能對不對

對的,磁碟是計算機系統中最重要的存儲設備,其中含有絕大部分文件。對文件的操作直接涉及到磁碟的訪問,磁碟IO的速度效率和可靠性將直接影響系統的性能。因此,好的磁碟調度演算法、優越的冗餘技術,都是提高磁碟系統性能的切入點。
磁碟調度演算法

1.先來先服務:按照進程訪問磁碟的先後順序進行調度。

優點:公平、簡單

缺點:效率低,平均尋道時間較長

2.最短尋道時間優先:要求訪問磁軌與當前磁頭的磁軌距離最近。

優點:相比於先來先服務,明顯減少平均尋道長度

缺點:磁頭可能在一個小的范圍內一直尋到,造成遠處請求不滿足而飢餓

3.掃描演算法:又稱電梯調度演算法,像電梯一樣上下連續來回尋道

優點:避免了「飢餓」現象

缺點:對於剛剛經過的磁軌又來了新的請求,再次訪問要最多等2個磁軌長度

4.循環掃描演算法:磁頭單向移動,其餘和掃描演算法一樣

優點:解決了可能的錯過型請求的雙倍延遲

缺點:浪費一個磁頭的移動次數,什麼都沒做

5.NStepSCAN演算法:磁碟請求分成N個隊列,隊列間用先來先服務處理,隊列內用掃描演算法處理

優點:避免新請求帶來的粘著問題

缺點:N值很大時,接近於掃描演算法;N=1時,就是先來先服務

6.FSCAN演算法:磁碟請求只分成兩個隊列,一個是當前請求隊列,一個是未來請求隊列,當前隊列按照掃描演算法處理,當前隊列處理完就處理另一個,此時另一個為當前隊列,已經處理完的是未來請求隊列

優點:簡化NStepSCAN演算法

缺點:所有新來的請求都在下次掃描時再處理,對於緊急的高優先順序的請求也要放到下次

4. 電梯調度演算法...

不管你是在北上廣還是在港澳台,甚至三四線城市,凡是有規模的地區,高樓比比皆是。不管是寫字樓,還是大型商城,讓你最頭痛的就是乘電梯,尤其是在趕時間的時候。

每天早上,那些差5分鍾就遲到的程序員,在等電梯時,一般會做兩件事:

前者可能是寫字樓里上班族慣有的精神類疾病,但後者肯定是程序員的職業病。本文對「罵電梯」不給予任何指導性建議。

但說起電梯調度演算法,我覺得還是可以給大家科普一下,好為大家在等電梯之餘,打發時間而做出一點貢獻。

(電梯調度演算法可以參考各種硬碟換道演算法,下面內容整理自網路)

先來先服務(FCFS-First Come First Serve)演算法,是一種隨即服務演算法,它不僅僅沒有對尋找樓層進行優化,也沒有實時性的特徵,它是一種最簡單的電梯調度演算法。

它根據乘客請求乘坐電梯的先後次序進行調度。此演算法的 優點是公平、簡單,且每個乘客的請求都能依次地得到處理,不會出現某一乘客的請求長期得不到滿足的情況

這種方法在載荷較輕松的環境下,性能尚可接受,但是在載荷較大的情況下,這種演算法的性能就會嚴重下降,甚至惡化。

人們之所以研究這種在載荷較大的情況下幾乎不可用的演算法,有兩個原因:

最短尋找樓層時間優先(SSTF-Shortest Seek Time First)演算法,它注重電梯尋找樓層的優化。最短尋找樓層時間優先演算法選擇下一個服務對象的原則是 最短尋找樓層的時間。

這樣請求隊列中距當前能夠最先到達的樓層的請求信號就是下一個服務對象。

在重載荷的情況下,最短尋找樓層時間優先演算法的平均響應時間較短,但響應時間的方差較大 ,原因是隊列中的某些請求可能長時間得不到響應,出現所謂的「 餓死」現象

掃描演算法(SCAN) 是一種按照樓層順序依次服務請求,它讓電梯在最底層和最頂層之間連續往返運行,在運行過程中響應處在於電梯運行方向相同的各樓層上的請求。

它進行尋找樓層的優化,效率比較高,但它是一個 非實時演算法 。掃描演算法較好地解決了電梯移動的問題,在這個演算法中,每個電梯響應乘客請求使乘客獲得服務的次序是由其發出請求的乘客的位置與當前電梯位置之間的距離來決定的。

所有的與電梯運行方向相同的乘客的請求在一次電向上運行或向下運行的過程中完成, 免去了電梯頻繁的來回移動

掃描演算法的平均響應時間比最短尋找樓層時間優先演算法長,但是響應時間方差比最短尋找樓層時間優先演算法小, 從統計學角度來講,掃描演算法要比最短尋找樓層時間優先演算法穩定

LOOK 演算法是掃描演算法(SCAN)的一種改進。對LOOK演算法而言,電梯同樣在最底層和最頂層之間運行。

當 LOOK 演算法發現電梯所移動的方向上不再有請求時立即改變運行方向 ,而掃描演算法則需要移動到最底層或者最頂層時才改變運行方向。

SATF(Shortest Access Time First)演算法與 SSTF 演算法的思想類似,唯一的區別就是 SATF 演算法將 SSTF 演算法中的尋找樓層時間改成了訪問時間。

這是因為電梯技術發展到今天,尋找樓層的時間已經有了很大地改進, 但是電梯的運行當中等待乘客上梯時間卻不是人為可以控制

SATF 演算法考慮到了電梯運行過程中乘客上梯時間的影響

最早截止期優先(EDF-Earliest Deadline First)調度演算法是最簡單的實時電梯調度演算法,它的 缺點就是造成電梯任意地尋找樓層,導致極低的電梯吞吐率。

它與 FCFS 調度演算法類似,EDF 演算法是電梯實時調度演算法中最簡單的調度演算法。 它響應請求隊列中時限最早的請求,是其它實時電梯調度演算法性能衡量的基準和特例。

SCAN-EDF 演算法是 SCAN 演算法和 EDF 演算法相結合的產物。SCAN-EDF 演算法先按照 EDF 演算法選擇請求列隊中哪一個是下一個服務對象,而對於具有相同時限的請求,則按照 SCAN 演算法服務每一個請求。它的效率取決於有相同 deadline 的數目,因而效率是有限的。

PI(Priority Inversion)演算法將請求隊列中的請求分成兩個優先順序,它首先保證高優先順序隊列中的請求得到及時響應,再搞優先順序隊列為空的情況下在相應地優先順序隊列中的請求。

FD-SCAN(Feasible Deadline SCAN)演算法首先從請求隊列中找出時限最早、從當前位置開始移動又可以買足其時限要求的請求,作為下一次 SCAN 的方向。

並在電梯所在樓層向該請求信號運行的過程中響應處在與電梯運行方向相同且電梯可以經過的請求信號。

這種演算法忽略了用 SCAN 演算法相應其它請求的開銷,因此並不能確保服務對象時限最終得到滿足。

以上兩結介紹了幾種簡單的電梯調度演算法。

但是並不是說目前電梯調度只發展到這個層次。目前電梯的控制技術已經進入了電梯群控的時代。

隨著微機在電梯系統中的應用和人工智慧技術的發展,智能群控技術得以迅速發展起來。

由此,電梯的群控方面陸續發展出了一批新方法,包括:基於專家系統的電梯群控方法、基於模糊邏輯的電梯群控方法、基於遺產演算法的電梯群控方法、基於勝景網路的電梯群控方法和基於模糊神經網路的電梯群控方法。

本人設置的電梯的初始狀態,是對住宅樓的電梯的設置。

(1)建築共有21層,其中含有地下一層(地下一層為停車場)。
(2)建築內部設有兩部電梯,編號分別為A梯、B梯。
(3)電梯內部有23個按鈕,其中包括開門按鈕、關門按鈕和樓層按鈕,編號為-1,1,2,3,4……20。
(4)電梯外部含有兩個按鈕,即向上運行按鈕和向下運行按鈕。建築頂層與地下一層例外,建築頂層只設置有向下運行按鈕,地下一層只設置有向上運行按鈕。
(5)電梯開關門完成時間設定為1秒。電梯到達每層後上下人的時間設定為8秒。電梯從靜止開始運行到下一層的時間設置為2秒,而運行中通過一層的時間為1秒。
(6)在凌晨2:00——4:30之間,如若沒有請求信號,A梯自動停在14層,B梯自動停在6層。
(7)當電梯下到-1層後,如果沒有請求信號,電梯自動回到1層。

每一架電梯都有一個編號,以方便監控與維修。每一架電梯都有一實時監控器,負責監控電梯上下,向電梯升降盒發送啟動、制動、加速、減速、開關電梯門的信號。若電梯發生故障,還應向相應的電梯負責人發送求救信號。

電梯內部的樓層按鈕:

這樣就表示乘客將要去往此層,電梯將開往相應層。當電梯到達該層後,按鈕恢復可以使用狀態。

電梯內部開門按鈕:

如若電梯到了乘客曾經按下的樓層,但是無乘客按開門按鈕,電梯將自動在停穩後1秒後自動開門。

電梯內部關門按鈕:

電梯外部向上按鈕:

電梯外部向下按鈕:

你肯能意識到 哪個演算法都不是一個最佳方案,只是它確實解決了一定情況的問題 。但是對一個優秀的程序員而言,研究各種演算法是無比快樂的。也許你下一次面試,就有關於調度演算法的問題。

5. 若磁頭的當前位置100柱面,磁頭正向磁軌號減小方向移動。現有一磁碟讀寫請求隊列,柱面號依次為:

磁碟調度在多道程序設計的計算機系統中,各個進程可能會不斷提出不同的對磁碟進行讀/寫操作的請求。為了盡快的響應進程的磁碟請求,人們設計了磁碟調度演算法。主要有四種磁碟調度演算法。先來先服務演算法(FCFS),最短尋道時間優先演算法(SSTF),掃描演算法(SCAN),循環掃描演算法(CSCAN)。

運用最短尋道優先演算法依次選擇的磁軌是:90、80、125、140、160、190、30、29、25、20、10。

運用電梯調度演算法依次經過的磁軌是:90、80、30、29、25、20、10、125、140、160、190。

我們根據演算法的尋道序列可以得出:最短尋道優先演算法的經過的煮麵數為310個柱面,電梯調度演算法經過的柱面數為270次。

(5)掃描演算法缺點擴展閱讀:

每種磁碟調度演算法的優缺點

先來先服務演算法的優點會根據進程請求訪問磁碟的先後次序進行調度。此演算法的優點是公平、簡單,且每個進程的請求都能依次得到處理,不會出現某一進程的請求長期得不到滿足的情況,此演算法將降低設備服務的吞吐量,致使平均尋道時間可能較長,但各進程得到服務的響應時間的變化幅度較小。

最短尋道優先演算法的缺點每次的尋道時間最短,該演算法可以得到比較好的吞吐量,但卻不能保證平均尋道時間最短。其缺點是對用戶的服務請求的響應機會不是均等的,因而導致響應時間的變化幅度很大。在服務請求很多的情況下,對內外邊緣磁軌的請求將會無限期地被延遲,有些請求的響應時間將不可預期。

掃描演算法的優缺點此演算法基本上克服了最短尋道時間優先演算法的服務集中於中間磁軌和響應時間變化比較大的缺點,而具有最短尋道時間優先演算法的優點即吞吐量較大,平均響應時間較小,但由於是擺動式的掃描方法,兩側磁軌被訪問的頻率仍低於中間磁軌。

循環掃描演算法的優點是這些磁軌剛被處理,而磁碟另一端的請求密度相當高,且這些訪問請求等待的時間較長,為了解決這種情況,循環掃描演算法規定磁頭單向移動。

參考資料來源:網路-磁碟調度演算法

6. 下面哪個選項是圓弧掃描演算法的缺點

答案應該是最後一個..
這兒有兩種做法:
1: 根據排序的特點可以快速分析結果;
冒泡一趟之後,最後一個肯定是最大的,那麼也就是說,第一趟後,最後一個應該是(Y)而結果最後一個是(X) . 所以排除這種可能.
步長為4的希爾排序,直接看第一個隔四步的序列( Q P R ),它們在原序列的位置是 (0 , 4 , 8 ) , 它們排好序後, 他們四個只是調換它們的位置. 也即在結果的序列中 第 0 , 4, 8 位置肯定是 Q , R , P 的組合,而不可能含其他元素 . 而結果中是第0 ,4 , 8 位是 (F , P , R ) , 沒有了Q. 顯然不對.
歸並排序,更簡單, 一看前兩個就不對(而應該是H,Q).
所以就只剩下快排了, 這時也可稍檢查一下, 快排後,Q劃分後,它左邊的應該都比它小,有邊的都比它大.(一看結果成立).

7. 2018-06-09

一、常見的批處理作業調度演算法

1.先來先服務調度演算法(FCFS):就是按照各個作業進入系統的自然次序來調度作業。這種調度演算法的優點是實現簡單,公平。其缺點是沒有考慮到系統中各種資源的綜合使用情況,往往使短作業的用戶不滿意,因為短作業等待處理的時間可能比實際運行時間長得多。

2.短作業優先調度演算法(SPF): 就是優先調度並處理短作業,所謂短是指作業的運行時間短。而在作業未投入運行時,並不能知道它實際的運行時間的長短,因此需要用戶在提交作業時同時提交作業運行時間的估計值。

3.最高響應比優先演算法(HRN):FCFS可能造成短作業用戶不滿,SPF可能使得長作業用戶不滿,於是提出HRN,選擇響應比最高的作業運行。響應比=1+作業等待時間/作業處理時間。

4. 基於優先數調度演算法(HPF):每一個作業規定一個表示該作業優先順序別的整數,當需要將新的作業由輸入井調入內存處理時,優先選擇優先數最高的作業。

5.均衡調度演算法,即多級隊列調度演算法

基本概念:

  作業周轉時間(Ti)=完成時間(Tei)-提交時間(Tsi)

  作業平均周轉時間(T)=周轉時間/作業個數

  作業帶權周轉時間(Wi)=周轉時間/運行時間

  響應比=(等待時間+運行時間)/運行時間

二、進程調度演算法

1.先進先出演算法(FIFO):按照進程進入就緒隊列的先後次序來選擇。即每當進入進程調度,總是把就緒隊列的隊首進程投入運行。

2. 時間片輪轉演算法(RR):分時系統的一種調度演算法。輪轉的基本思想是,將CPU的處理時間劃分成一個個的時間片,就緒隊列中的進程輪流運行一個時間片。當時間片結束時,就強迫進程讓出CPU,該進程進入就緒隊列,等待下一次調度,同時,進程調度又去選擇就緒隊列中的一個進程,分配給它一個時間片,以投入運行。

3. 最高優先順序演算法(HPF):進程調度每次將處理機分配給具有最高優先順序的就緒進程。最高優先順序演算法可與不同的CPU方式結合形成可搶占式最高優先順序演算法和不可搶占式最高優先順序演算法。

4. 多級隊列反饋法:幾種調度演算法的結合形式多級隊列方式。

三、空閑分區分配演算法

\1. 首先適應演算法:當接到內存申請時,查找分區說明表,找到第一個滿足申請長度的空閑區,將其分割並分配。此演算法簡單,可以快速做出分配決定。

2. 最佳適應演算法:當接到內存申請時,查找分區說明表,找到第一個能滿足申請長度的最小空閑區,將其進行分割並分配。此演算法最節約空間,因為它盡量不分割到大的空閑區,其缺點是可能會形成很多很小的空閑分區,稱為「碎片」。

3. 最壞適應演算法:當接到內存申請時,查找分區說明表,找到能滿足申請要求的最大的空閑區。該演算法的優點是避免形成碎片,而缺點是分割了大的空閑區後,在遇到較大的程序申請內存時,無法滿足的可能性較大。

四、虛擬頁式存儲管理中的頁面置換演算法

1.理想頁面置換演算法(OPT):這是一種理想的演算法,在實際中不可能實現。該演算法的思想是:發生缺頁時,選擇以後永不使用或在最長時間內不再被訪問的內存頁面予以淘汰。

2.先進先出頁面置換演算法(FIFO):選擇最先進入內存的頁面予以淘汰。

3. 最近最久未使用演算法(LRU):選擇在最近一段時間內最久沒有使用過的頁,把它淘汰。

4.最少使用演算法(LFU):選擇到當前時間為止被訪問次數最少的頁轉換。

三、磁碟調度

1.先來先服務(FCFS):是按請求訪問者的先後次序啟動磁碟驅動器,而不考慮它們要訪問的物理位置

2.最短尋道時間優先(SSTF):讓離當前磁軌最近的請求訪問者啟動磁碟驅動器,即是讓查找時間最短的那個作業先執行,而不考慮請求訪問者到來的先後次序,這樣就克服了先來先服務調度演算法中磁臂移動過大的問題

3.掃描演算法(SCAN)或電梯調度演算法:總是從磁臂當前位置開始,沿磁臂的移動方向去選擇離當前磁臂最近的那個柱面的訪問者。如果沿磁臂的方向無請求訪問時,就改變磁臂的移動方向。在這種調度方法下磁臂的移動類似於電梯的調度,所以它也稱為電梯調度演算法。

4.循環掃描演算法(CSCAN):循環掃描調度演算法是在掃描演算法的基礎上改進的。磁臂改為單項移動,由外向里。當前位置開始沿磁臂的移動方向去選擇離當前磁臂最近的哪個柱面的訪問者。如果沿磁臂的方向無請求訪問時,再回到最外,訪問柱面號最小的作業請求。

對一個進程來說,一個重要的指標是它執行所需要的時間. 從進程提交到進程完成的時間間隔為周轉時間.也就是等待進入內存的時間,在就緒隊列中等待的時間,在 CPU中執行的時間和I/O操作的時間的總和.

例1.設一個系統中有5個進程,它們的到達時間和服務時間如下,A的到達時間為0,服務時間為3;B的到達時間為2,服務時間為6;C的到達時間為4,服務時間為4;D的到達時間為6,服務時間為5;E的 到達時間為8,服務時間為2,忽略1/0以及其他開銷時間,若分別按先來先服務(fFCFS)進行CPU調度,其平均周轉時間為?

10.2

6.4

8.6

4.5

先來先服務調度演算法

進程名  到達時間 服務時間  開始執行時間  完成時間  周轉時間

A              0              3                0                3                3

B              2              6                3                9                7

C              4              4                9                13              9

D              6              5                13              18              12

E              8              2                18              20              12

周轉時間 = 完成時間 - 到達時間

平均周轉時間 = 所有進程周轉時間 / 進程數 = (3+7+9+12+12)/ 5 = 8.6

單道批處理系統中有4個作業,J1的提交時間8.0,運行時間為2.0;J2的提交時間8.6,運行時間為0.6;J3提交時間8.8,運行時間為0.2;J4的提交時間9.0,運行時間為0.5。在採用響應比高者優先調度演算法時,其平均周轉時間為T為()小時?

2.5

1.8

1.975

2.675

周轉時間=作業完成時間-作業提交時間

響應比=(作業等待時間+作業執行時間)/作業執行時間

當提交J1時,只有J1作業,執行J1,J1的周轉時間為2,此時時間為10.

J2、J3、J4提交時,由於正在執行J1,因此等待。

當J1執行完畢(此時時間為10),J2、J3、J4的等待時間分別為:1.4,1.2,1,

其響應比分別為:1.4/0.6+1=3.33    1.2/0.2+1=7      1/0.5+1=3,因此執行J3,J3的周轉時間為1.2+0.2=1.4

當J3執行完畢(此時時間為10.2),J2和J4的等待時間分別為1.6,1.2,

其響應比分別為:1.6/0.6+1=3.66      1.2/0.5+1=3.4,因此執行J2,J2的周轉時間為1.6+0.6=2.2

執行J2完畢後時間為10.8,接下來執行J4,執行完後時時間為11.3,J4的周轉時間為2.3

於是平均周轉時間為(2+1.4+2.2+2.3)/4=1.975

如果系統作業幾乎同時到達,則使系統平均作業周轉時間最短的演算法是短作業優先。

例3、

現有4個同時到達的作業J1,J2,J3和J4,它們的執行時間分別是3小時,5小時,7小時,9小時系統按單道方式運行且採用短作業優先演算法,則平均周轉時間是()小時

12.5

24

19

6

作業到達時間執行時間開始時間完成時間周轉時間

J103033

J20 5388

J30781515

J409152424

平均周轉時間(3+8+15+24)/4=12.5 

有4個進程A,B,C,D,設它們依次進入就緒隊列,因相差時間很短可視為同時到達。4個進程按輪轉法分別運行11,7,2,和4個時間單位,設時間片為1。四個進程的平均周轉時間為 ()?

15.25

16.25

16.75

17.25

17.75

18.25

A:1  4  4  3  3  2  2  2  1  1  1  共24

B:2  4  4  3  3  2  2                  共20

C:3  4                                      共7

D:4  4  3  3                              共14

字母後面的數字為等待的時間加運行時間

平均周轉時間為(24+20+7+14)/4=16.25

例5、假設系統按單值方式運行且採用最短作業優先演算法,有J1,J2,J3,J4共4個作業同時到達,則以下哪幾種情況下的平均周轉時間為10分鍾?

執行時間J1:1分鍾 J2:5分鍾 J3:9分鍾 J4:13分鍾

執行時間J1:1分鍾 J2:4分鍾 J3:7分鍾 J4:10分鍾

執行時間J1:2分鍾 J2:4分鍾 J3:6分鍾 J4:8分鍾

執行時間J1:3分鍾 J2:6分鍾 J3:9分鍾 J4:12分鍾

首先,短作業優先則短時間的作業利用資源,其餘的作業等待

根據平均周轉時間概念,將所有作業"等待時間"加上"運行時間"除以"作業數量"即可得到平均周轉時間

A: (J1執行1分鍾 + J2等待1分鍾 + J2執行5分鍾 + J3等待6分鍾 + J3執行9分鍾 + J4等待15分鍾 + J4執行13分鍾) / 4  = 50/4 = 12.5

B:  (J1執行1分鍾 + J2等待1分鍾 + J2執行4分鍾 + J3等待5分鍾 + J3執行7分鍾 + J4等待12分鍾 + J4執行10分鍾) / 4  = 40/4 = 10

C: (J1執行2分鍾 + J2等待2分鍾 + J2執行4分鍾 + J3等待6分鍾 + J3執行6分鍾 + J4等待12分鍾 + J4執行8分鍾) / 4    = 40/4 = 10

D:  (J1執行3分鍾 + J2等待3分鍾 + J2執行6分鍾 + J3等待9分鍾 + J3執行9分鍾 + J4等待18分鍾 + J4執行12分鍾) / 4  = 50/4 = 12.5

例6、假設系統中有5個進程,它們的到達時間和服務時間見下表1,忽略I/O以及其他開銷時間,若按先來先服務(FCFS)、非搶占的短作業優先和搶占的短作業優先三種調度演算法進行CPU調度,請給出各個進程的完成時間、周轉時間、帶權周轉時間、平均周轉時間和平均帶權周轉時間,完成表2。  表1 進程到達和需要服務時間  進程    到達時間    服務時間  A          0            3  B          2            6  C          4            4  D          6            5  E          8            2

表2 進程的完成時間和周轉時間

                  進程                  A      B        C      D      E        平均

  FCFS          完成時間      3      9      13      18      20 

                周轉時間            3      7        9      12      12      8.6

            帶權周轉時間      1.00 1.17  2.25  2.40    6.00      2.56

  SPF(非搶占)  完成時間    3      9      15      20      11 

                周轉時間            3      7      11      14      3        7.6

            帶權周轉時間      1.00  1.17  1.75    2.80    1.50    1.84

  SPF(搶占)    完成時間    3      15      8      20      10 

                周轉時間            3      13      4      14      2        7.2

            帶權周轉時間      1.00  2.16  1.00  2.80  1.00    1.59

例7、假定在單道批處理環境下有5個作業,各作業進入系統的時間和估計運行時間如下表所示:    作業  進入系統時間    估計運行時間/分鍾      1            8:00                40      2            8:20                30      3            8:30                12      4            9:00                18

      5            9:10                5

如果應用先來先服務和應用最短作業優先的作業調度演算法,試將下面表格填寫完整。

(1) 如果應用先來先服務的作業調度演算法,試將下面表格填寫完整。

    作業  進入系統時間  估計運行時間/分鍾  開始時間  結束時間  周轉時間/分鍾

    1        8:00            40            8:00    8:40        40

    2        8:20            30            8:40    9:10        50

    3        8:30            12            9:10    9:22        52

    4        9:00            18            9:22    9:40        40

    5        9:10            5              9:40    9:45        35

作業平均周轉時間T= 43.4  217

2)如果應用最短作業優先的作業調度演算法,試將下面表格填寫完整。    作業  進入系統時間  估計運行時間/分鍾  開始時間  結束時間  周轉時間/分鍾    1        8:00            40              8:00    8:40          40    2        8:20            30              8:52    9:22          62    3        8:30            12              8:40    8:52          22    4        9:00            18              9:27    9:45          45    5        9:10            5              9:22    9:27          17作業平均周轉時間T= 37.2  186

CPU和兩台輸入/輸出設備(I1,I2)多道程序設計環境下,同時有三個作業J1,J2,J3進行,這三個作業

使用CPU和輸入/輸出設備的順序和時間如下所示:

J1:I2(35ms);CPU(15ms);I1(35ms);CPU(15ms);I2(25ms)

J2:I1(25ms);CPU(30ms);I2(35ms)

J3:CPU(30ms);I1(25ms);CPU(15ms);I1(15ms);

假定CPU,I1,I2都能並行工作,J1的優先順序最高,J2次之,J3優先順序最低,優先順序高的作業可以搶占優先順序低的作業的CPU,但不能搶佔I1,I2,作業從J3開始到完成需要多少時間?

8. 磁碟調度演算法

  上文介紹了磁碟的結構,本文介紹磁碟的調度演算法相關的內容。
   本文內容

   尋找時間(尋道時間) T s :在讀/寫數據前,需要將磁頭移動到指定磁軌所花費的時間。
  尋道時間分兩步:

  則尋道時間 T s = s + m * n。

  磁頭移動到指定的磁軌,但是不一定正好在所需要讀/寫的扇區,所以需要通過磁碟旋轉使磁頭定位到目標扇區。

   延遲時間T R :通過旋轉磁碟,使磁頭定位到目標扇區所需要的時間。設磁碟轉速為r(單位:轉/秒,或轉/分),則 平均所需延遲時間T R = (1/2)*(1/r) = 1/2r。

   傳輸時間T R :從磁碟讀出或向磁碟中寫入數據所經歷的時間,假設磁碟轉速為r,此次讀/寫的位元組數為b,每個磁軌上的位元組數為N,則傳輸時間 T R = (b/N) * (1/r) = b/(rN)。

  總的平均時間 T a = T s + 1/2r + b/(rN) ,由於延遲時間和傳輸時間都是與磁碟轉速有關的,且是線性相關。而轉速又是磁碟的固有屬性,因此無法通過操作系統優化延遲時間和傳輸時間。所以只能優化尋找時間。

  演算法思想: 根據進程請求訪問磁碟的先後順序進行調度。
  假設磁頭的初始位置是100號磁軌,有多個進程先後陸續地請求訪問55、58、39、18、90、160、150、38、184號磁軌。
  按照先來先服務演算法規則,按照請求到達的順序,磁頭需要一次移動到55、58、39、18、90、160、150、38、184號磁軌。

  磁頭共移動了 45 + 3 + 19 + 21 + 72 + 70 + 10 + 112 + 146 = 498個磁軌。響應一個請求平均需要移動498 / 9 = 55.3個磁軌(平均尋找長度)。
  優點: 公平;如果請求訪問的磁軌比較集中的話,演算法性能還算可以
  缺點: 如果大量進程競爭使用磁碟,請求訪問的磁軌很分散,FCFS在性能上很差,尋道時間長

  演算法思想: 優先處理的磁軌是與當前磁頭最近的磁軌。可以保證每次尋道時間最短,但是不能保證總的尋道時間最短 。(其實是貪心演算法的思想,只是選擇眼前最優,但是總體未必最優)。

  假設磁頭的初始位置是100號磁軌,有多個進程先後陸續地請求訪問55、58、39、18、90、160、150、38、184號磁軌。

  磁頭總共移動了(100 -18)+ (184 -18) = 248個磁軌。響應一個請求平均需要移動248 / 9 = 27.5個磁軌(平均尋找長度)。
  缺點: 可能產生飢餓現象
  本例中,如果在處理18號磁軌的訪問請求時又來了一個38號磁軌的訪問請求,處理38號磁軌的訪問請求又來了一個18號磁軌訪問請求。如果有源源不斷的18號、38號磁軌訪問請求,那麼150、160、184號磁軌請求的訪問就永遠得不到滿足,從而產生飢餓現象。這里產生飢餓的原因是 磁頭在一小塊區域來回移動。

  SSTF演算法會產生飢餓的原因在於:磁頭有可能再一個小區域內來回得移動。為了防止這個問題,可以規定: 磁頭只有移動到請求最外側磁軌或最內側磁軌才可以反向移動,如果在磁頭移動的方向上已經沒有請求,就可以立即改變磁頭移動,不必移動到最內/外側的磁軌。 這就是掃描演算法的思想。由於磁頭移動的方式很像電梯,因此也叫 電梯演算法

  假設某磁碟的磁軌為0~200號,磁頭的初始位置是100號磁軌,且此時磁頭正在往磁軌號增大的方向移動,有多個進程先後陸續的訪問55、58、39、18、90、160、150、38、184號磁軌。

  磁頭共移動了(184 - 100)+ (184 -18) = 250個磁軌。響應一個請求平均需要移動 250 / 9 = 27.5個磁軌(平均尋找長度)。

  優點: 性能較好,尋道時間較短,不會產生飢餓現象。
  缺點: SCAN演算法對於各個位置磁軌的響應頻率不平均 。(假設此時磁頭正在往右移動,且剛處理過90號磁軌,那麼下次處理90號磁軌的請求就需要等待低頭移動很長一段距離;而響應了184號磁軌的請求之後,很快又可以再次響應184號磁軌請求了。)

  SCAN演算法對各個位置磁軌的響應頻率不平均,而C-SCAN演算法就是為了解決這個問題。規定只有磁頭朝某個特定方向移動時才處理磁軌訪問請求,而 返回時直接快速移動至最靠邊緣的並且需要訪問的磁軌上而不處理任何請求。
  通俗理解就是SCAN算在改變磁頭方向時不處理磁碟訪問請求而是直接移動到另一端最靠邊的磁碟訪問請求的磁軌上。

  假設某磁碟的磁軌為0~200號,磁頭的初始位置是100號磁軌,且此時磁頭正在往磁軌號增大的方向移動,有多個進程先後陸續的訪問55、58、39、18、90、160、150、38、184號磁軌。

  磁頭共移動了(184 -100)+ (184 - 18)+(90 - 18)=322個磁軌。響應一個請求平均需要移動322 / 9 = 35.8個磁軌(平均尋找長度)。

  優點: 相比於SCAN演算法,對於各個位置磁軌響應頻率很平均。
  缺點: 相比於SCAN演算法,平均尋道時間更長。

9. 計算機組成原理-03-計算機的組成(一)

匯流排(Bus)是計算機各種功能部件之間傳送信息的公共通信干線,它是cpu、內存、輸入、輸出設備傳遞信息的公用通道,主機的各個部件通過匯流排相連接,外部設備通過相應的介面電路再與匯流排相連接,從而形成了計算機硬體系統。

假設沒有匯流排這種設計,計算機設備都是分散連接的,如下圖:

此時如果新增了一個輸入設備2,此時需要分別連接存儲器、控制器、運算器,設備一多線路就會十分復雜。

有了匯流排之後,設備直接連接匯流排,使得計算機內部結構變得十分清晰,設備的添加和卸載也變得容易。

系統中多個設備或模塊可能同時申請對匯流排的使用權,為避免產生匯流排沖突,需由匯流排仲裁機構合理地控制和管理系統中需要佔用匯流排的申請者,在多個申請者同時提出匯流排請求時,以一定的優先演算法仲裁哪個應獲得對匯流排的使用權。

匯流排授權信號BG串列地從一個I/O介面傳送到下一個I/O介面。假如BG到達的介面無匯流排請求,則繼續往下查詢;假如BG到達的介面有匯流排請求,BG信號便不再往下查詢,該I/O介面獲得了匯流排控制權。離中央仲裁器最近的設備具有最高優先順序,通過介面的優先順序排隊電路來實現。

好處:只用很少幾根線就能按一定優先次序實現匯流排仲裁,很容易擴充設備。

壞處:對詢問鏈的電路故障很敏感,如果第i個設備的介面中有關鏈的電路有故障,那麼第i個以後的設備都不能進行工作。查詢鏈的優先順序是固定的,如果優先順序高的設備出現頻繁的請求時,優先順序較低的設備可能長期不能使用匯流排。

匯流排上的任一設備要求使用匯流排時,通過BR線發出匯流排請求。中央仲裁器接到請求信號以後,在BS線為「0」的情況下讓計數器開始計數,計數值通過一組地址線發向各設備。每個設備介面都有一個設備地址判別電路,當地址線上的計數值與請求匯流排的設備地址相一致時,該設備 置「1」BS線,獲得了匯流排使用權,此時中止計數查詢。

每次計數可以從「0」開始,也可以從中止點開始。如果從「0」開始,各設備的優先次序與鏈式查詢法相同,優先順序的順序是固定的。如果從中止點開始,則每個設備使用匯流排的優先順序相等。

計數器的初值也可用程序來設置,這可以方便地改變優先次序,但這種靈活性是以增加線數為代價的。

每一個共享匯流排的設備均有一對匯流排請求線BRi和匯流排授權線BGi。當設備要求使用匯流排時,便發出該設備的請求信號。中央仲裁器中的排隊電路決定首先響應哪個設備的請求,給設備以授權信號BGi。

獨立請求方式的優點:響應時間快,確定優先響應的設備所花費的時間少,用不著一個設備接一個設備地查詢。其次,對優先次序的控制相當靈活,可以預先固定也可以通過程序來改變優先次序;還可以用屏蔽(禁止)某個請求的辦法,不響應來自無效設備的請求。

缺點:設備連線多,匯流排控制復雜。

滑鼠、鍵盤、掃描儀、顯示器等。

CPU和IO設備的速度是不一致的

提供低速設備通知CPU的一種非同步的方式,CPU可以高速運轉同時兼顧低速設備的響應。

當外圍IO設備准備就緒時,向CPU發送中斷信號,CPU內部有專門的電路響應中斷信號,CPU收到中斷信號後就會中斷當前工作轉為處理外圍設備的工作。待工作完成後,CPU載入之前的工作,繼續處理。

當主存與IO設備交換信息時,不需要中斷CPU,可以提高CPU的效率。一般計算機的硬碟與顯卡都有DMA設備。

利用了局部性原理,在CPU和主存之間增加了一層速度快(容量小)的Cache,目的是為了解決主存速度不足的問題。

將程序經常訪問的內存置換到高速緩存即可。

利用了局部性原理,在主存之外增加輔助存儲器,目的是解決主存容量不足的問題。

將程序當前使用的數據載入到主存,不使用的數據載入到輔存。

RAM(隨機存取存儲器:Random Access Memory)

RAM通過電容存儲數據,必須隔一段時間刷新一次

如果掉電,那麼一段時間後將丟失所有數據

32位系統主存大小為:2^32 =4×2^30 =4𝐺𝐵

64位系統主存大小為:2^64 = 234 × 2^30 = 2^34𝐺𝐵

表面是可磁化的硬磁特性材料

移動磁頭徑向運動讀取磁軌信息

先來先服務演算法 :按順序訪問進程的磁軌讀寫需求

最短尋道時間優先:與磁頭當前位置有關,優先訪問離磁頭最近的磁軌

掃描演算法(電梯演算法) :每次只往一個方向移動,到達一個方向需要服務的盡頭再反方向移動

循環掃描演算法:每次只往一個方向移動,到盡頭後回到初始位繼續掃描

在存儲器的層次結構中,高速緩存在CPU和主存之間,主要是為了解決CPU和主存速度不匹配的問題。

在往下看之前,先了解下下面的概念:

高速緩存的結構和主存類似,但是主存的容量是遠大於緩存的容量。

緩存中存儲的數據是主存中的一份復制,當CPU需要的數據在緩存中,直接從緩存里拿,當CPU需要的數據不在緩存中,則需要從主存里拿。

所以就有了兩個量化指標:

命中率 :命中緩存的次數佔CPU訪問次數的比例

訪問效率 :訪問緩存時間和訪問緩存-主存平均時間之比

當CPU所需要的數據不在高速緩存中時,就需要從主存載入數據到高速緩存。一般有四種替換策略。

隨機選取高速緩存中的一個位置再替換

把高速緩存看做是一個先進先出的隊列,優先替換最先進入隊列的字塊

優先淘汰最不經常使用的字塊,需要額外的空間記錄字塊的使用頻率

優先淘汰一段時間內沒有使用的字塊

有多種實現方法,一般使用雙向鏈表,把當前訪問節點置於鏈表前面(保證鏈表頭部節點是最近使用的)

閱讀全文

與掃描演算法缺點相關的資料

熱點內容
六七十年代科研強國文 瀏覽:407
霸道王子絕對命令全集 瀏覽:309
能在線看的網站 瀏覽:206
自動編譯設置java前端 瀏覽:903
找一本主角叫蘇晨的小說 瀏覽:847
壓縮包多長時間能解壓 瀏覽:370
小說男主叫江宴女主叫溫暖 瀏覽:455
有一部小說主角叫唐糖 瀏覽:302
找一部小說主角叫陸宇 瀏覽:402
受重生悔過的小說 瀏覽:959
單片機顯示模塊電路 瀏覽:305
交換老婆系列小說 瀏覽:280
支持投屏的在線影院 瀏覽:844
男主是鴨子公關 瀏覽:61
yy680 瀏覽:787
二戰德國納粹電影 瀏覽:504
雲存儲搭建伺服器 瀏覽:851
被禁的40部小說有哪些 瀏覽:247
通吃小子好小子小傑 瀏覽:46
肉多的霸總文 瀏覽:943