操作系統與多核處理器

這篇文章解答了我心中的疑問,那就是操作系統會自動調度cpu資源來處理多進程,多線程的并發。
早在上世紀90年代末,就有眾多業界人士呼吁用CMP(單芯片多處理器)技術來替代復雜性較高的單線程CPU。IBM、惠普、Sun等高端服務器廠商,更是相繼推出了多核服務器CPU。不過,由于服務器價格高、應用面窄,并未引起大眾廣泛的注意。直到AMD搶先手推出64位處理器后,英特爾才想起利用“多核”這一武器進行“帝國反擊戰”。2005年4月,英特爾倉促推出簡單封裝雙核的奔騰D和奔騰四至尊版840。AMD在之后也發布了雙核皓龍(Opteron)和速龍(Athlon) 64 X2和處理器。但真正的“雙核元年”,則被認為是2006年。這一年的7月23日,英特爾基于酷睿(Core)架構的處理器正式發布。
    雙核的優勢不是頻率,而是對付同時處理多件事情。一個核心理論上同時只能干一件事,比如你同時在后臺BT下載,前臺一邊看電影一邊拷貝文件一邊聯QQ……,這么多程序同時需要CPU來響應,怎么辦?靠操作系統! 
    window本身就是多線程操作系統(DOS就是單線程系統,dos下2核4核和單核沒區別,處理一個任務時必須停下來等待處理結束才能干下一件事),它可以把每個處理任務劃分為多“份”(一個任務可以由多個進程來實現,把每個進程又分為多個線程,然后由操作系統協調分配多核來處理排隊的線程,最后把處理結果合并),多個處理任務按順序排成隊列,這樣單核心的CPU可以一次處理一“份”,輪流處理每個程序的“份”,這樣你感覺就是CPU同時在干幾件事了。但如果CPU不夠強勁,同時排隊等待處理的東西太多了,你就會感覺系統在等待,有延時,反應慢等等癥狀。再或者某個程序出現錯誤,死機了,很可能造成后面排隊的其他任務都在那里干等,造成系統無反應的情況,按熱啟鍵都沒反應。理論上如果現在有顆6G頻率的單核CPU,單論處理性能應該與1個3G雙核近似,甚至更高一些,因為目前雙核比單核也就快不到2倍。   原本計算機一直以單核心的工作頻率作為性能的衡量,之所以放棄單核是因為目前的技術水平令單核性能繼續提升遇到了瓶頸,4G P4的夭折讓依靠頻率提升性能的路子走進死胡同,不得已改走多核心路線,以核心數量來彌補處理能力的不足。不過慢慢的這些多核心的頻率又開始奔3G去了,隨著45nm的出現,雙核上4G應該可以想象,所以一方面每個核心的性能還在發展,另一方面多核心集成的手段雙管齊下,這樣CPU的性能可以迅速提升,繼續保持摩爾定律。 
    多核CPU就是基板上集成有多個單核CPU,早期PD雙核需要北橋來控制分配任務,核心之間存在搶二級緩存的情況,后期酷睿自己集成了任務分配系統(硬件上),再搭配操作系統(軟件上)就能真正同時開工,2個核心同時處理2“份”任務,速度快了,萬一1個核心死機,起碼另一個U還可以繼續處理關機、關閉軟件等任務。較早的操作系統如XP等需要裝雙核或多核補丁,能更好發揮性能或更穩定,Vistia下就不需要。 
    目前幾乎所有的程序在編寫時是按單核心CPU寫的(多核心程序優化對程序員來說是個噩夢,目前好像還沒有合適的編程軟件能讓程序員輕松編寫針對多核心的程序),因此對多核的利用率不是很高,分配任務時,往往1個核心滿負荷,另一個還有空閑(留些空閑也對,要應付隨時發生的其它命令)。一般2核心性能也就比單核心高60~70%甚至更低。 
    4核或者將來的8核說白了還是多個核心獨自處理各自的“份”,不過人多力量大,速度快,響應時間短,不易死機。當然耗電、協調性都會是個考驗。 補充: 
    原本有個說法(有陣子我自己就持這觀點):“目前的軟件都是為單核心編寫的,多核CPU處理起來也沒什么優勢。” 
    經過分析我們可以得知,參與任務分配的主角一是程序自己,二是操作系統,即使如單任務的SuperPI,在雙核下成績也要比同頻率的單核快不少,這就是事實證明。理論分析:單線程程序很傻,不知道有2個CPU在前面等著,所以發出的請求應該也是針對單核心的,但操作系統自動將調用請求分配給了2個CPU,并在處理結束后將結果合并,所以單核心程序也能享受到多核的“照顧”。盡管操作系統分配的可能不完美,但畢竟比單CPU要快。 
    如果程序自己又對多線程處理進行了優化(重新編寫),那么就更完美了,可以達到2倍水平,對于這點5樓的朋友已經能舉出具體的例子了。非常感謝。 
    再推測一下,根據上面的分析,2G雙核應該比2G單核快近2倍,那么2G的4核應該比2G的雙核快近2倍!如果有4G的雙核,那么應該和2G的4核性能近似。

? ? ? ?對于多核CPU,優化操作系統任務調度算法是保證效率的關鍵。一般任務調度算法有全局隊列調度和局部隊列調度。前者是指操作系統維護一個全局的任務等待隊列,當系統中有一個CPU核心空閑時,操作系統就從全局任務等待隊列中選取就緒任務開始在此核心上執行。這種方法的優點是CPU核心利用率較高。后者是指操作系統為每個CPU內核維護一個局部的任務等待隊列,當系統中有一個CPU內核空閑時,便從該核心的任務等待隊列中選取恰當的任務執行,這種方法的優點是任務基本上無需在多個CPU核心間切換,有利于提高CPU核心局部Cache命中率。目前多數多核CPU操作系統采用的是基于全局隊列的任務調度算法

 

相關博客:移動CPU異步多核和大小核的那些事?http://www.leiphone.com/1208-vv-cpu.html?


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/286638.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/286638.shtml
英文地址,請注明出處:http://en.pswp.cn/news/286638.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java網絡編程二:Socket詳解

Socket又稱套接字,是連接運行在網絡上兩個程序間的雙向通訊的端點。 一、使用Socket進行網絡通信的過程 服務端:服務器程序將一個套接字綁定到一個特定的端口,并通過此套接字等待和監聽客戶端的連接請求。 客戶端:客戶端程序根據你…

Android之提示Could not find com.android.support:appcompat-v7:25.3.1.

1 問題 編譯第三方項目,錯誤提示如下 Could not find com.android.support:appcompat-v7:25.3.1. Required by:project :sampleproject :sample > com.yanzhenjie:permission:1.0.7project :sample > com.yanzhenjie.alertdialog:alertdialog:1.0.1 Search …

在 .NET 中使用 FixedTimeEquals 應對計時攻擊

計時攻擊 在計算機安全中,計時攻擊(Timing attack)是旁道攻擊 (Side-channel attack) 的一種,而旁道攻擊是根據計算機處理過程發出的信息進行分析,包括耗時,聲音,功耗等…

解讀大型網站系統架構的演化

解讀大型網站系統架構的演化 大型網站的架構是根據業務需求不斷完善的,根據不同的業務特征會做特定的設計和考慮,本文只是講述一個常規大型網站會涉及的一些技術和手段。作者:李平來源:LEE的博客前言 一個成熟的大型網站&#xff…

【ArcGIS風暴】西北地區氣象臺站年均NDVI與年均氣溫和降水的相關性分析

在研究植被動態變化與氣候的關系時,通常通過計算植被NDVI值與氣溫和降水的相關系數來描述相關性的大小。如下圖所示,計算了西北地區分布的氣象臺站與氣溫和降水的相關性并作圖可視化。 下面詳細說明整個實現過程。 一、計算相關系數 1. 原理分析 通過計算年均N…

python 全解坦克大戰 輔助類 附完整代碼【雛形】

我正在博客之星評選,歡迎投票給我 會從投票人中抽獎機械鍵盤書,中了會私聊地址 投票連接是:https://bbs.csdn.net/topics/603955346 投票連接是:https://bbs.csdn.net/topics/603955346 投票連接是:https://bbs.csdn.…

vc++ mfc中拖動效果的實現 借助于CImageList

拖動是界面編程頻繁使用的一個效果,在windows系統下可謂大行其道。縱觀時下的應用軟件幾乎各個都支持各種各樣拖動的效果,windows7更是把拖動做到了極致。其實說起來拖動的實現也很簡單,對于有句柄的對象都可以通過MoveWindow或SetWindowPos實…

從瀏覽器地址欄輸入url到顯示頁面的步驟

從瀏覽器地址欄輸入url到顯示頁面的步驟(以HTTP為例)- 在瀏覽器地址欄輸入URL- 瀏覽器查看緩存,如果請求資源在緩存中并且新鮮,跳轉到轉碼步驟 - 如果資源未緩存,發起新請求 - 如果已緩存,檢驗是否足夠新鮮,足夠…

有序的Map集合--LinkedHashMap

提出問題: 在寫一個dao的時候,我的需求是這個dao是一個萬能的,目前的方法只有一個查詢出實體類對應的表中所有的數據,通過傳入的對象,利用反射獲取實體類中的屬性名,屬性類型,利用字符串拼接獲取…

Leetcode之僅僅反轉字母

1 題目 給定一個字符串 S,返回 “反轉后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置發生反轉。 示例 1:輸入:"ab-cd" 輸出:"dc-ba" 示例 2:輸入:"a-bC-dEf-ghIj" 輸出:"j-Ih-gfE-dCba" 示例 3:輸入:&qu…

【SignalR全套系列】之在.Net Core 中實現長輪詢

微信公眾號:趣編程ACE關注可了解更多的.NET日常實戰開發技巧,如需源碼 請后臺留言 源碼;前文回顧【SignalR全套系列】之在.Net Core 中實現Server-Send Events消息推送【SignalR全套系列】之在.NetCore中實現WebSocket雙工通信【SignalR全套系列】之在.N…

完美解決ArcGIS10.2和Erdas9.2軟件沖突的方法:共存!

用過ArcGIS和Erdas軟件的都知道,二者存在著服務的沖突,為了解決共存的問題,筆者曾多次重裝系統,但未能如愿以償。其實不需要相互關閉服務如此麻煩。那如何在安裝有arcgis的電腦安裝erdas并解決沖突呢?直接上視頻教程。…

架構師之路16年精選50篇

2016精選索引,點擊標題閱讀相關文章。【方法論】《秒殺系統架構優化思路》《分布式ID生成器》《互聯網架構,如何進行容量設計》《線程數究竟設多少合理》《單點系統架構的可用性與性能優化》《關于負載均衡的一切》《異構服務器負載均衡及過載保護》《LV…

yii 前后臺分離及登陸驗證

2019獨角獸企業重金招聘Python工程師標準>>> 比較合理的做法其實是分成兩個框架來布署;然而這樣說法也太絕對。 事實上是針對不同系統,應采用不同的方法。如為CMS系統,則不需很復雜的權限管理,但如果有管理員與會員之分…

雙谷人才財務管理(序)

IT是一個迅速發展的行業,教育是一個良心的行業,兩者交集——IT培訓,在整個市場中占有一個不可或缺的地位。好多大學生,抱怨找不到工作;好多企業找不到合適的程序員,這幾年這個問題越來越嚴重。。。。于是IT…

Android之打開手機系統相冊

1、需求 打開系統相冊,獲取圖片進行掃描操作 2、代碼實現 Intent pickIntent new Intent(Intent.ACTION_PICK,MediaStore.Images.Media.EXTERNAL_CONTENT_URI);pickIntent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");Ca…

Kibana

2019獨角獸企業重金招聘Python工程師標準>>> Kibana是一個基于瀏覽器頁面的Elasticsearch前端展示工具。Kibana全部使用HTML語言和Javascript編寫的,查詢語法是基于Lucene的查詢語法。允許布爾運算符、通配符和字段篩選。注意關鍵字要大寫 全文搜索 在搜…

電腦QQ能登上,網頁打不開的解決辦法

打開360衛士,在功能大全里選擇網絡優化,斷網急救箱。 可以看到DNS服務異常、瀏覽器配置異常,點擊立即修復。

個人黑名單 抄襲恥辱墻

抄襲恥辱墻 博主抄襲文原文我愛Python數據挖掘https://blog.csdn.net/weixin_38037405/article/details/125862095https://blog.csdn.net/A757291228/article/details/117464313黃埔數據分析https://blog.csdn.net/weixin_39060517/article/details/118024847https://blog.csdn…

快速掌握 ASP.NET 身份認證框架 Identity(一)

推薦關注「碼俠江湖」加星標,時刻不忘江湖事ASP.NET Core 內置了一個強大的身份認證框架 Identity,掌握它可以讓我們快速開發高安全的身份認證功能,不僅如此,它還是一個基于數據庫的用戶管理系統,其中包含了大量的輔助…