2010-12-13 102 views
1

操作系統本地線程有多昂貴?主機操作系統爲線程堆棧分配一些虛擬內存,爲線程控制結構分配一點內核內存。我錯過了什麼嗎?線程有多昂貴?

+4

沒有人回答 - 它在操作系統之間差別很大。 – 2010-12-13 13:31:27

回答

4

它可以增加調度程序的工作量,取決於線程的繁忙程度以及調度程序的類型。它也會爲堆棧的第一頁分配物理內存。

在許多情況下,主要成本是緩存污染。擁有太多活動併發任務會導致性能下降,因爲太多的線程共享的緩存太少,而且他們只是互相推回到主內存中,這對於線程而言只是簡單地進入睡眠狀態而言是一種嚴重的侮辱,因爲睡眠會導致數百個週期的單一懲罰,而在單個時間片內檢索主存儲器會多次發生類似的開銷,並且也意味着按比例更多的上下文切換,因爲在該時間片期間完成的工作量少得多。