1. 程式人生 > >線程的實現方式

線程的實現方式

中斷 優點 OS style 運行時 bsp 操作 根據 撤銷

  線程的實現也就是用戶線程和內核線程的區別

1、在用戶空間中實現線程

  • 特點:內核對線程包一無所知。從內核角度考慮,就是按正常的方式管理,即單線程進程(存在運行時系統)
  • 優點: 用戶級線程包可以在不支持線程的操作系統上實現。

       保存線程狀態的過程和調用程序都只是本地過程,故啟動它們比進程內核調用效率更高。

    不需要陷阱,不需要上下文切換,也不需要對內存高速緩存進行刷新,使得線程調用非常快捷。

  • 缺點:線程發生I/O或頁面故障引起的阻塞時,如果調用阻塞系統調用則內核由於不知道有多線程的存在,而會阻塞整個進程從而阻塞所有線程。

      一個單獨的進程內部,沒有時鐘中斷,所以不可能用輪轉調度的方式調度線程。

2、在內核中實現線程

  • 特點:當某個線程希望創建一個新線程或撤銷一個已有線程時,它進行一個系統調用
  • 優點:所有能夠阻塞線程的調用都以系統調用的形式實現,代價可觀。

     當一個線程阻塞時,內核根據選擇可以運行另一個進程的線程,而用戶空間實現的線程中,運行時系統始終運行自己進程中的線程。

說明:由於內核創建線程代價大,故有線程回收

線程的實現方式