當前位置:
首頁 > 最新 > 雲計算髮展前景,linux系統課程

雲計算髮展前景,linux系統課程

在我們的Linux學習中,由於一些翻譯問題,會導致我們在學習中遇到一些生僻的、相似的詞與概念。有的很難理解,有的很容易混淆。在Linux系統中,對於用戶創建的進程(線程)來說,CPU分配時間片的單位是線程還是進程?

是線程。線程是實際工作的單元,進程只是一個容器,用來管理一個或多個線程。

1.這是不是就意味著盡量使用多線程並發,這樣可以搶到更多的時間片。

理論上是的,多線程的一種用途就是能同時做好幾件事情,以提高效率。但實際問題是,CPU的數量(核心數,下同)是有限的,而且並不多。如果你的CPU有8個CPU,並且整個系統中有8個線程的話,不考慮中斷等因素,每個線程理論上能一直執行下去。然而多於8個線程以後,操作系統就必須進行調度,也就是分配時間片。具體的分配方案,或者說調度演算法有很多種。如果一個進程創建了很多線程的話,最多也只有8個能夠處於執行的狀態[2],其餘的線程必須等待調度。線程被調度的時候需要進行上下文切換,這個操作是一種額外的開銷。線程數量過多的時候,上下文切換產生的額外開銷會對系統的效率造成負面影響。

2.操作系統對於擁有多線程的進程,是否會減少其每個線程的時間片,或做其他處理來保證公平性?

這就是調度演算法需要考慮和優化的問題。比如線程和進程有優先順序,在搶佔式的調度中,優先順序高的線程可以從優先順序低的線程那裡搶佔CPU。另外,在多CPU平台上,調度演算法還要考慮緩存的關聯性等。

在一個進程中的多個線程要注意在可能的情況下將本線程阻塞,將剩餘的時間片讓給兄弟線程。

在主流的操作系統實現里,一般進程是不能直接控制自己的線程的執行順序的。也就是說,把一個線程掛起並不能保證另一個線程一定能夠被執行。

Linux內核其實不區分進程和線程,內核把執行單元叫做任務(task)。操作系統實際上調度的是進程,進程通過fork()來創建同樣的另一個進程。每個進程有一個PID,同一組進程中最先啟動的那個還有一個TGID。嚴格來說前者應該叫線程ID,後者應該叫進程ID。Linux里的線程實際上是共享一些資源的一系列進程而已。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 千鋒長沙 的精彩文章:

什麼叫雲計算?怎麼學習雲計算?
雲計算通俗解釋,什麼叫雲計算?

TAG:千鋒長沙 |