基於任務模型的軟體開發

2021-06-06 19:44:41 字數 2047 閱讀 4614

基於任務模型的軟體開發

多核心共享記憶體下的軟體開發

在2023年,herb sutter在dr.dobb』s journal上發表了題為「免費午餐結束:軟體開發將轉向併發程式設計」的文章。其中他談到現在又必要在軟體開發中考慮併發了,從而充分的挖掘呈指數量級增加的微處理器的潛能獲取生產力的提高。現在微處理器廠商一直都在增加處理器的核心,而不是增加時鐘頻率。軟體開發者將不能夠依賴增加處理器時鐘頻率免費獲取效能的提公升。

現在幾乎所有的機器的處理都至少有兩個核心。然而,四核和八核的微處理器在伺服器、高階工作站上很流行,甚至是高階的便攜電腦。擁有更多核心的單個處理器就將要到來。現代化的微處理器提供了新的多核結構。所以,為軟體設計和**開發做一些準備來充分的利用這種架構還是很重要的。使用visual c#2010 和 .net 4生成的各種不同型別的程式執行在微處理器的乙個或者多個核心上。每乙個這樣的微處理器都可能有不同數目的核心,具有同時執行多條指令的能力。

你可以將多核微處理器想象為內部有多個相互連通的微處理器的包。所有的核心都可以想圖1-1中那樣訪問主儲存器。這就是著名的多核共享記憶體架構。此架構中的記憶體共享極易導致效能瓶頸。

圖 1-1. 共享記憶體架構圖

多核微處理器有很多不同的複雜的微架構,這些設計都是為了提供更強的並行執行能力,提高生產力、減少潛在的效能瓶頸。同時,多核處理器也盡力來減少電能消耗和產生更少的熱量。因此,很多現代的微處理器能夠根據自己的負載動態的增加和減少每個核心的時鐘頻率,設定當某些核心不再使用的時候使他們休眠。windows7和windows server 2008 r2支援一種叫做核心場的新特性。當很多的核心不再使用的時候,就會啟用這種特性,此時作業系統就會休眠這些核心。當需要這些核心的時候,作業系統就會喚醒正在休眠的核心。

現在的微處理器工作的時候可以動態的更改每個核心的時鐘頻率。由於這些核心並不是以固定的時鐘頻率進行工作,所以很難**某個指令序列的效能。例如,英特爾的turbo boost技術增加活動核心的頻率。這個增加核心時鐘頻率的處理過程也就是著名的overclocking(超頻?)。

如果乙個核心超負載工作而其他的核心都處於閒置狀態,這種技術就允許它以更高的時鐘頻率執行。如果有很多的核心都超負荷工作,這些核心也會以更高的頻率執行,但是不會高於只有乙個核心(超負荷執行)的情況。但是微處理器並不能一直保持所有的核心一直超頻執行,因為這樣會消耗很多的電能,並且溫度也上公升的很快。由於所有核心超負載執行的平均時鐘頻率要低於只有乙個核心超負載執行的頻率。因此,在特定情況下,某些**執行時的時鐘頻率高於其他**,這使測量程式真正的效能成為一種極大地挑戰。

多核共享記憶體與分布式記憶體系統的區別

分布式記憶體計算機系統是由很多帶有自己私有記憶體的微處理器組成的,其結構如圖1-2所示。每個微處理器都位於乙個不同的計算機裡,它們彼此之間都有不同型別的通訊通道。比如有線和無線網路的通訊通道。如果正在乙個微處理器上處理的工作需要遠端的資料,那麼它必須通過通訊通道與相應的遠端處理器進行通訊。執行在分布式記憶體計算機系統上的並行應用程式廣泛使用的通訊協議是mpi(message passing inte***ce)。在c#和.net中使用mpi也能充分利用多核共享記憶體架構的優勢。但是mpi的主要專注改善執行在集群上的應用程式的開發。由於多核共享記憶體架構中多核之間訪問並不需要傳送訊息,這樣就給多核共享記憶體增加了乙個大的開銷。

圖1-2. 分布式記憶體系統結構圖

圖1-3展示了擁有三颱機器的分布式記憶體計算機系統。每個機器都有乙個四核的處理器和這些核心使用的記憶體共享架構。這樣,每個處理器的私有記憶體同時也扮演著其四個核心的共享記憶體的角色。

乙個分布式記憶體系統強制你考慮資料的分布式,因為每個訊息檢索的遠端資料都可能引入潛在的不確定性。由於你可以新增新的機器節點來增加微處理器的數量,所以分布式記憶體系統能夠提供很大的擴充套件能力。

圖 1-3 .混合架構圖

《基於模型的軟體開發》 3 2 繼承

如果你覺得泛化非常簡單,那麼你一定會很喜歡繼承。繼承是oo概念中最簡單的乙個,同時也是分析得最多的乙個。簡單是因為繼承僅僅是用於解決泛化中物件屬性問題的一組規則。實際上,在mbd中,它是單個非常簡單的規則,我們之前已經提到過 葉子子類中物件成員的屬性是該葉子子類屬性和與該葉子子類在直線上相關的每乙個...

軟體開發模型

軟體開發模型 software development model 是指軟體開發全部過程 活動和任務的結構框架。軟體開發包括需求 設計 編碼和測試等階段,有時也包括維護階段。軟體開發模型能清晰 直觀地表達軟體開發全過程,明確規定了要完成的主要活動和任務,用來作為軟體專案工作的基礎。對於不同的軟體系統...

軟體開發模型

前提 在介紹軟體開發模型之前,要說一下軟體的生命週期,如同人的一生一樣,要經過嬰兒期,兒童期,少年期,青年期,老年期直到衰老死亡的過程。同樣,乙個軟體產品也要經過計畫,分析,設計,程式設計,測試和維護直到被淘汰的過程,軟體的這一過程稱為軟體生命週期。定義 軟體開發模型 software develo...