多計算機是緊耦合cpu,不共享儲存器,每台計算機都有自己的儲存器。
在多計算機中可採用兩種減緩機制。在第一種機制中,每個訊息首先被分解(由使用者軟體或網路介面進行)稱為有最大長度限制的快,稱為報。該交換機制稱為儲存轉換包交換,由願節點的網路介面卡注入到第乙個交換機的報組成。
當整個包到達乙個乙個輸入緩衝區時,它被複製到沿著其露肩通向下乙個交換機的佇列當中,當包到達目標節點所連線的交換機時,該包被i 複製進入目標節點的網路介面卡,並能最終到達其ram。
儘管儲存**包交換靈活而有效,但是存在增加延遲的問題。
另一種交換機制是電路交換,它包括由第乙個交換機建立的,通過所有交換機而到達目標交換機的一條路徑。一旦露肩建立,位元流就從源到目的地通過整個露肩不停的傳輸。在所設計的交換機彙總,沒有中間快取,電路交換需要有乙個建立階段,它需要一點時間。但是一旦建立完成,速度就很快。在包傳送結束後,該路徑必須被刪除。
電路交換的乙個白內障是蟲孔路由,它把每個包拆成子包,並允許第乙個子包在整個路徑還沒有完全建立起來之前流動。
在多計算機中,所有節點裡都有一塊插卡板,它包含節點與互連網路的連線,這使得多計算機連城一體。這些板的構造方式以及它們如何同主cpu和ram連線對作業系統有重
要影響。事實上在所有的歐計算機中,介面板上都有一些用來儲存進出的ram。這樣設計的原因是許多互連網路是同步的,所以一旦乙個包傳送開始,位元流級必須以恆定的速率連續進行。如果包在主ram中,無法保證穩定。
網**常插在pci匯流排上,
介面板上課以有乙個或多個dma通道,甚至板上可以有乙個完整的cpu。通過請求在系統匯流排上的塊傳送,dma通道可以在介面板和主ram之間以非常高的速率複製包。不過,正式這種塊傳送(占用系統匯流排的多個週期)是介面板的ram的需要總是第一位的。
很多介面板上有乙個完整的cpu,可能另外還有乙個或多個dma通道。它們被稱為網路處理器,並且其功能日趨強大。這種設計一位這主cpu將一些工作分給網絡卡。
有兩個cpu則意味這它們必須同步,以避免競爭條件的發生,浙江增加額外的開銷,並且意味著作業系統要承擔更多的工作。
在多計算機系統中高效能通訊的敵人是對包的過度複製。
如果說進出ram的複製是效能瓶頸,那麼進出核心的額外複製會將端到端的延遲加倍 ,並把吞吐量降低一半。不少多計算機把介面板對映到使用者空間,並允許使用者程序直接把包送到卡上,而不需要內河參與。
乙個解決方法是將介面板對映到所有需要它的程序中去,但是這樣做就需要有乙個機制來避免競爭。
但是那些注入互斥訊號量一類的機制需要在程序彼此協作的前提下才能允許。
最多簡單的設計是使用涼快網路界面板,一塊對映到使用者空間**用程式使用,另一塊對映到核心空間供作業系統使用。
最快的方法是使用板上的dma晶元直接將他們從rma複製到板上,這種方法的問題上,dma使用實體地址。而使用者程序通常不知道有關的實體地址。
為避免上述問題,可採用一類將頁面釘住和釋放的系統呼叫。但是這樣代價太大。
再多計算機中,不同cpu上的程序通過互相傳送訊息來實現通訊。在簡單的情況下,這種呼叫上暴露給使用者程序的;在較複雜的情況下,遠端通訊看起來像過程呼叫的辦法,將實際的訊息傳遞對使用者隱藏起來。
通常是由系統設計者作出在阻塞原語和非阻塞原語之間的選擇。當然少數系統兩種都可以使用。
非阻塞原語的效能優點被其缺點抵消了——直到訊息被i 送出傳送者才能修改訊息緩衝區。程序在傳輸過程中重寫訊息的後果十分嚴重,更糟的是,傳送程序不知道傳輸何時結束,所以根本不知道什麼時候重用緩衝區是安全的。
有三種可能解決的方法
讓核心複製訊息到內河緩衝區,然後讓程序繼續
當訊息傳送之後中斷傳送這,告知緩衝區又可以使用來(使用者級中斷引發程式設計問題,而且可能引發競爭條件)
讓緩衝區寫時複製。在訊息傳送出去之前,若有修改,則進行複製(會引發不必要的複製)
中斷方式程式設計困難,而且速度很慢,所以也許對於接受者而言,更好的方法是使用乙個過程poll輪詢進來的訊息。
還有乙個選擇,使用彈出式執行緒。
這一方法的變種是,在中斷處理程式中直接允許接受者**,從而避免來建立彈出線程的麻煩。要使這個方法更快,訊息自身可以嗲又該處理程式的控制代碼。這種方式稱為主動訊息。主動訊息只能在雙方完全信任的情況下工作。
狗仔所有通訊的反省都是輸入暑促好。
遠端過程呼叫以及稱為來大量計算機如那句的基礎。習慣上,稱發出呼叫的過程為客戶機,而被呼叫的稱為伺服器。
rpc背後的思想是盡可能得使遠端過程呼叫像本地呼叫。客戶程式必須被繫結在客戶端樁上,而伺服器程式也繫結在伺服器樁上。這些過程隱藏了這樣乙個實時,級從客戶機到伺服器的過程呼叫並不是本地呼叫。
使用者編寫的客戶機過程,至進行對客戶端樁的正常呼叫。
由於客戶機和伺服器在不同的位址空間,所以用rpc傳遞指標是不可能的。
通過引用呼叫的標準呼叫序列被複製-恢復替代可以解決,但是並不總是奏效。(比如指向一些複雜的資料結構)
因此對於引數要作出某些限制。
此外,對於弱型別語言,無法判斷引數有多大。
而引數型別並不總是能被推導出來的。全域性變數也無法使用了
採用一種分布式共享儲存器可以很好得保留共享儲存器的感覺,儘管這個共享儲存器實際上不存在。
作業系統只是從遠端ram而不是從本地磁碟中滿足了這缺頁異常。對使用者而言,機器看起來擁有共享儲存器。
在dsm系統中,位址空間被互粉為頁面。這些頁面分布在系統中國年的所有節點。當乙個cpu引用乙個非本地位址時,就產生了乙個陷阱,dsn會呼叫包含改位址的頁面並重新指向錯誤命令。
對基本系統的乙個改進是複製唯讀頁面,可以顯著提高效能。
另一種可能是,不僅複製唯讀頁面,而且複製所有頁面。
大頁面有其優點也有其缺點,過大的頁面會引起偽共享問題。
偽共享是指兩個無關的變數處於同乙個頁面中,其中的修改會讓程序得到另乙個。
如果不對科協頁面進行複製,那麼實現一致性不難。
dms在對乙個共享頁面進行寫入之前, 先先所有持有該頁面副本的cpu發出一條訊息,通知他們解除對映並丟棄該頁面。在其所有解除對映等工作完成之後,該cpu便可以進行寫操作了,
一種方法是允許乙個程序獲得在虛擬位址空間上的鎖,用來保證寫時唯一。
另一種方法是修改變化部分。
將程序分配到工作節點的工作十分重要。
因為每個節點都擁有自己的程序,因此可以應用任何本地排程演算法,但是仍有可能使用多處理機排程。
一旦將程序被i 制定給了某個節點,就不再可控,因此,將哪個程序分配給哪個節點是非常重要的。
從事分配工作的演算法惡化啟發則是所謂的處理器演算法。
將節點分為子網,尋找子網之間流量最小的組合
當程序建立時,他就允許在建立它的節點傻姑娘,出非節點裹在,該節點則隨機選擇乙個節點並詢問其負載情況。探查工作不會永遠進行,在n次探查之後,如果沒有合適的主機,演算法就終止。且程序繼續在原有機器上執行。
在負載重的情況下,所有機器都會持續得對其他機器進行探查沒徒勞地試圖找到一台願意接收工作的機器,這樣的嘗試會導致巨大的開銷
由接受者要求更多的工作
讀書筆記 現代作業系統 8多處理機 8 3虛擬化
虛擬化 virtualization 這種技術允許一台機器中存在多台虛擬機器,每一台虛擬機器可能執行不同的作業系統。虛擬化起作用的原因是 大部分伺服器停機的原因不是因為硬體的故障,而是因為臃腫 不可靠 有漏洞的軟體,特別是作業系統。使用虛擬化技術,唯一乙個執行在核心態的軟體是管理程式 hypervi...
作業系統 處理機管理
計算機的核心是cpu,首先作業系統講的就是對處理器的管理。在處理器管理當中都講了些什麼呢?當然是需要操作需要管理的東西。處理器是用來處理程序的,程序通俗的講就是要幹的活兒。並且處理器屬於獨佔型資源,同一時刻只能處理一件事情。為了能夠讓處理器的利用率發揮到最高,就出現了處理器管理,貌似有點像個人管理,...
作業系統 處理機排程概念
乙個作業被提交後,必須經過處理機排程,才能獲得處理機執行,通常經過三個排程 高階排程 高階排程,長程排程 中級排程 中程排程 低階排程 短程排程 根據某種演算法,把外村上處於後備佇列中的那些作業調入記憶體,排程物件是作業 就是一些程式,資料,還有一些作業說明書。作業需要執行哪些步驟執行完。每乙個步驟...