操作系统复习笔记 05 Thread 线程
生活随笔
收集整理的這篇文章主要介紹了
操作系统复习笔记 05 Thread 线程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
進程的兩個基本屬性
1.擁有資源的獨立單位
2.可獨立調度和分派的基本單位
進程的數目不宜過多,進程切換頻率不宜過高,限制了并發程度。
操作系統的設計目標是:提高并發度、減小系統開銷。
引入線程的目的是簡化線程間的通信,以小的開銷來提高進程內的并發度。
只有進程時:進程是資源分配的單位和CPU調度的單位。
有線程時:線程作為CPU調度的單位,而進程只作為其他資源分配的單位。
線程只擁有必不可少的資源,如線程狀態、程序計數器、寄存器上下文、棧。
同樣具有就緒、阻塞、執行三種基本狀態。
線程的優點:創建時間比進程短、終止時間比進程短、切換時間比進程短、共享進程內線程間的文件資源,可不通過系統內核。
多線程更適用于多處理及結構。
線程分為內核線程和用戶級線程。
內核線程(Kernel-level thread):由內核支持,在內核空間執行線程創建、調度和管理,依賴于OS核心。
——內核維護進程和線程的上下文信息
——線程切換由內核完成
——一個線程發起系統調用而阻塞不會影響其他線程的運行。
——時間片分配給線程,所以多線程的進程獲得更多的CPU時間。
用戶線程(User Threads):由用戶級線程庫進行管理的線程,無需內核支持。?
缺點:
——如果內核是單線程的,那么一個用戶發起系統調用而阻塞,則整個進程阻塞。
——時間片分配給進程,多線程則每個線程就慢。
輕權進程(LWP LightWeight Process):內核支持的用戶線程,是內核數據結構,駐留在內核空間。一個進程可以有多個輕權進程,每個輕權進程由一個單獨的內核線程來支持。
輕權進程允許一個進程中發出多個并發的系統調用。
多線程:
1.多對一:多個用戶及線程映像進單個內核級線程,通常用于不支持內核線程的系統中。
缺點:任意時刻只能有一個縣城可以訪問內核(并發度低)。
一個用戶線程發起系統調用而阻塞,則整個進程阻塞。
2.一對一:每個用戶級線程映像進內核線程。
——提供良好的并發行,一個用戶線程發起系統調用而阻塞時允許另一個線程運行。
——每創建一個用戶線程需創建一個相應的內核線程,帶來了額外開銷,所以許多系統限制應用中線程的數目。
3.多對多:不限制應用的線程數、多個線程可以并發。
兩種線程取消方式:
1.異步取消:一個線程理機中止目標線程
2.延遲取消:目標線程檢查它是否應該終止。
線程池Thread Pool:
——目的:1.避免創建和撤銷開銷 2.限制線程的數量。
用戶級線程在使用系統調用時,需要“捆綁”在一個LWP上。
——永久捆綁:一個LWP固定被一個用戶級線程占用,該LWP移到LWP之外。
——臨時捆綁:從LWP池中臨時分配一個未被占用的LWP。
一個進程對應的LWP組成LWP池,線程庫動態挑中池中LWP的數目,以保證應用最佳性能。
1.擁有資源的獨立單位
2.可獨立調度和分派的基本單位
進程的數目不宜過多,進程切換頻率不宜過高,限制了并發程度。
操作系統的設計目標是:提高并發度、減小系統開銷。
引入線程的目的是簡化線程間的通信,以小的開銷來提高進程內的并發度。
只有進程時:進程是資源分配的單位和CPU調度的單位。
有線程時:線程作為CPU調度的單位,而進程只作為其他資源分配的單位。
線程只擁有必不可少的資源,如線程狀態、程序計數器、寄存器上下文、棧。
同樣具有就緒、阻塞、執行三種基本狀態。
線程的優點:創建時間比進程短、終止時間比進程短、切換時間比進程短、共享進程內線程間的文件資源,可不通過系統內核。
多線程更適用于多處理及結構。
線程分為內核線程和用戶級線程。
內核線程(Kernel-level thread):由內核支持,在內核空間執行線程創建、調度和管理,依賴于OS核心。
——內核維護進程和線程的上下文信息
——線程切換由內核完成
——一個線程發起系統調用而阻塞不會影響其他線程的運行。
——時間片分配給線程,所以多線程的進程獲得更多的CPU時間。
用戶線程(User Threads):由用戶級線程庫進行管理的線程,無需內核支持。?
缺點:
——如果內核是單線程的,那么一個用戶發起系統調用而阻塞,則整個進程阻塞。
——時間片分配給進程,多線程則每個線程就慢。
輕權進程(LWP LightWeight Process):內核支持的用戶線程,是內核數據結構,駐留在內核空間。一個進程可以有多個輕權進程,每個輕權進程由一個單獨的內核線程來支持。
輕權進程允許一個進程中發出多個并發的系統調用。
多線程:
1.多對一:多個用戶及線程映像進單個內核級線程,通常用于不支持內核線程的系統中。
缺點:任意時刻只能有一個縣城可以訪問內核(并發度低)。
一個用戶線程發起系統調用而阻塞,則整個進程阻塞。
2.一對一:每個用戶級線程映像進內核線程。
——提供良好的并發行,一個用戶線程發起系統調用而阻塞時允許另一個線程運行。
——每創建一個用戶線程需創建一個相應的內核線程,帶來了額外開銷,所以許多系統限制應用中線程的數目。
3.多對多:不限制應用的線程數、多個線程可以并發。
兩種線程取消方式:
1.異步取消:一個線程理機中止目標線程
2.延遲取消:目標線程檢查它是否應該終止。
線程池Thread Pool:
——目的:1.避免創建和撤銷開銷 2.限制線程的數量。
用戶級線程在使用系統調用時,需要“捆綁”在一個LWP上。
——永久捆綁:一個LWP固定被一個用戶級線程占用,該LWP移到LWP之外。
——臨時捆綁:從LWP池中臨時分配一個未被占用的LWP。
一個進程對應的LWP組成LWP池,線程庫動態挑中池中LWP的數目,以保證應用最佳性能。
總結
以上是生活随笔為你收集整理的操作系统复习笔记 05 Thread 线程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mac办公效率神器——用Xmind整理思
- 下一篇: 操作系统复习笔记 06 CPU Sche