標籤:

我一個朋友竟然告訴我計算機處理多進程是排隊處理,計算機無法同時處理多個進程。我應該怎麼說服他?

他是學java的,各種舉例試圖說服我


單核(非SMT)確實是靠劃分時間片的方式讓多個進程「同時」運行起來,需要排隊。多處理器和多核以及SMT技術出來後,有幾個核就可以同時處理幾個進程,多出來的進程/線程也是要排隊。

搞清這個問題可以去閱讀CPU的工作原理(讀取指令,指令解碼,執行指令,寫回,以及寄存器特別是程序計數器)以及分時系統的搶佔式多任務和協作式多任務的想關資料。比如時鐘中斷,上下文切換。


舉辦個黑java大賽,這起碼能拿個季軍吧


瀉藥,是時候放圖了,出來吧。

一核有難,九核點贊。

嘿嘿嘿,上圖只是諷刺某手機cpu瘋狂堆核心數,不考慮利用率。

但是在遠古時代的電腦上,單核cpu真的是串列的,飛快的調度,時間分片,來達到同時運行的一種偽效果。

當然,現在的神馬i7啊啥的多核心的就不一樣了。


《Intel? Architectures Software Developer Manuals》印出來送他一套,大概也就比ipad的長度厚一點,不是很重。


傳說中的一核有難,七核點贊?


這是java在知乎被黑得最慘的一次了吧


Java躺槍


他要是學Python的還情有可原,畢竟有GIL(逃


你確定他是學java的不是學js的?

這同學很有前端天賦啊。。。

其實吧,學過操作系統這門課以後就好了


他們老師講多線程的時候肯定是說:「吶,我們先以單核為例。」


單核心處理器好像還真是


這是java在知乎上被黑的最慘的一次


It is important to realize that only one process can be running on any processor at any time.

-----Ch3.1.2 Process State. "Operating System Concepts" 7th edition

所以你們討論的基礎是單核還是多核?

對於進程數大於核心數的情況來說, 本來在CPU Scheduling的過程中就涉及了大量的Content Switch, 所以在高性能編程里,都盡量避免使用多進程而造成CPU爭用的情況。 而目前線程級並行(TLP)的一個著眼點也就是Content Switch的輕量化。


這問題都問的我懷疑人生了


普通單核的確如此;多核的話看實際情況,可以多線程並行但是超過核數/線程數,一樣排隊;單核超線程也得看實際情況,有的任務可以「超線程」並行。


玩多了p社遊戲????


Java被黑的好慘。


從宏觀上看我找了很多女朋友,但是從微觀上看,我每一個毫秒只愛其中一個,我的愛只是在她們之間不斷切換。

單核多任務不就是這樣切換任務的嗎?


宏觀上並行 微觀上串列,你們應該先弄明白你們是站在計算機的哪一層來討論。


好像...並沒有什麼不對。


推薦閱讀:

線程和進程的區別是什麼?
操作系統的系統開銷比率怎麼計算?
為什麼要了解進程與線程的區別,了解二者的區別有什麼意義呢?
安卓系統的通病後台啟動進程過多,待機狀態下就占內存一半,怎麼解決這種問題呢?
如何看待針對 Windows 系統的 "AtomBombing" 內存注入攻擊 ?

TAG:Java | 進程 |