我一個朋友竟然告訴我計算機處理多進程是排隊處理,計算機無法同時處理多個進程。我應該怎麼說服他?
01-07
他是學java的,各種舉例試圖說服我
單核(非SMT)確實是靠劃分時間片的方式讓多個進程「同時」運行起來,需要排隊。多處理器和多核以及SMT技術出來後,有幾個核就可以同時處理幾個進程,多出來的進程/線程也是要排隊。
搞清這個問題可以去閱讀CPU的工作原理(讀取指令,指令解碼,執行指令,寫回,以及寄存器特別是程序計數器)以及分時系統的搶佔式多任務和協作式多任務的想關資料。比如時鐘中斷,上下文切換。舉辦個黑java大賽,這起碼能拿個季軍吧
瀉藥,是時候放圖了,出來吧。
一核有難,九核點贊。
《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" 內存注入攻擊 ?