其實,在早期計算機并沒有包含操作系統(tǒng),這個時候,這個計算機只跑一個程序,這個程序獨享計算機的所有資源,這個時候不存在什么并發(fā)問題,但是對計算機的資源來說,確實是一種浪費。
于是,操作系統(tǒng)出現(xiàn)了,操作系統(tǒng)改變了這種現(xiàn)狀,讓計算機可以運行多個程序,并且不同的程序占用獨立的計算機資源,如內(nèi)存,CPU等。
操作系統(tǒng)的出現(xiàn),主要有以下幾點原因:
1,資源利用率:可以在其他程序執(zhí)行過程出現(xiàn)等待的時候,去執(zhí)行其他程序,從而提高程序
的利用率。什么時候會出現(xiàn)等待,比如輸入操作或輸出操作。
2,公平性:所有的程序可以共享計算機資源,一種有效的方式是通過時間片的方式來讓程序共享計算機資源。
3,在編寫多任務(wù)程序時,可以一個程序執(zhí)行一個任務(wù),必要時,程序之間進行通信即可。
當計算機從單程序變成多程序之后,這個時候又發(fā)展出了多線程,線程是進程里面的每個執(zhí)行控制流,或叫執(zhí)行路線。如果沒有明確的協(xié)同機制,那么每個線程將獨立運行,共享著進程的內(nèi)存及CPU資源等等。
多線程的運行模式,給我們帶來了什么好處?
發(fā)揮現(xiàn)代CPU的特性,提高吞吐率
早期大家應(yīng)該聽說過摩爾定律,但隨著CPU通過提高時鐘頻率來提升性能已變得越來越困難,處理器的產(chǎn)商,比如因特爾,AMD,都開始在單個芯片上放置多個處理器核,所以我們現(xiàn)在的個人計算機基本都是這種架構(gòu)。
現(xiàn)代計算機的調(diào)度單位是線程,所以假設(shè)你的電腦是一個4核處理器,當你的程序只有一個線程在運行的時候,那這個時候就會有75%的CPU資源無法使用,這簡直是一種浪費。
使用多線程就是為了讓系統(tǒng)有更高的吞吐率。比如當程序等待某個同步IO完成操作時,這個時候,CPU處理器處于空閑狀態(tài),如果程序是單線程的,那么只能等待,再進行下一步操作,反之,就可以并發(fā)進行。舉個生活的例子,老婆讓我洗碗,我又想看NBA,那怎么辦,很簡單,我可以一邊洗碗,一邊看NBA,而不用等到洗完碗,再去看NBA
總結(jié)下,發(fā)展的歷程
單進程計算機------->多進程的計算機(操作系統(tǒng))------>多線程的計算機(提高CPU的利用率,簡化開發(fā)模式)
生活中的案例,我們接觸的軟件,都有多線程的影子,大家不妨可以想想都有哪些?