前幾天研究java的線程,感覺理論的掌握不夠,故向同學借了點資料研究,不了同學給我考博的操作系統的材料,我總結了一下,把其中部分分享一下,大家一同進步.
1 線程的引入
??????進程:資源分配單位(存儲器、文件)和CPU調度(分派)單位。又稱為"任務(task)"
??????線程:作為CPU調度單位,而進程只作為其他資源分配單位。
只擁有必不可少的資源,如:線程狀態、寄存器上下文和棧
同樣具有就緒、阻塞和執行三種基本狀態
??????線程的優點:減小并發執行的時間和空間開銷(線程的創建、退出和調度),因此容許在系統中建立更多的線程來提高并發程度。
??????線程的創建時間比進程短;
??????線程的終止時間比進程短;
??????同進程內的線程切換時間比進程短;
??????由于同進程內線程間共享內存和文件資源,可直接進行不通過內核的通信;
2 進程和線程的比較
?????????地址空間和其他資源(如打開文件):進程間相互獨立,同一進程的各線程間共享--某進程內的線程在其他進程不可見
?????????通信:進程間通信IPC,線程間可以直接讀寫進程數據段(如全局變量)來進行通信--需要進程同步和互斥手段的輔助,以保證數據的一致性
?????????調度:線程上下文切換比進程上下文切換要快得多