一個進程可以包含一個或多個線程
進程間通信必須使用OS提供的進程間通信機制而同一進程的線程間可以通過直接讀寫來通信
線程的優點
創建時間在已有進程中創建一個新線程比創建一個新進程快
終止時間終止一個線程比終止一個進程快
切換時間同一進程中線程的切換比進程間切換快
通信效率同一進程中線程的通信快
用戶級線程和內核級線程
線程的類型
內核級線程是指依賴於內核由操作系統內核完成創建撤消和切換的線程
用戶級線程是指不依賴於操作系統核心由應用進程利用線程庫提供創建同步調度和管理線程的函數來控制的線程
線程的調度與切換速度內核級線程的調度與切換與進程類似但開銷小些;用戶級線程切換無需進入內核因而切換快
用戶級線程和內核級線程(續)
系統調用內核級線程調用系統調用時OS將其看成是該線程的行為因而阻塞該線程;而用戶級線程調用系統調用時OS將其看成整個進程的行為若阻塞則阻塞整個進程
線程執行時間在只有用戶級線程的系統中調度以進程為單位若進程內線程多則執行時間相對少;內核級線程系統中調度以線程為單位
適應性用戶級線程可以在任何操作系統中運行但內核級線程只能在支持它的OS中運行
UNIX的進程描述(P)
在UNIX系統中采用了段頁式存儲管理方式(在UNIX中將段稱為區)因此一個進程實體由若干個區組成包括程序區數據區棧區等每個區又可分為若干頁
進程描述的數據結構
為了實施對進程的有效管理操作系統為每個進程設置了一個PCB在UNIX System Ⅴ中將PCB分成進程表項和U區(又稱proc結構和user結構)兩部分除進程表項和U區外管理進程的數據結構還有本進程區表和系統區表
進程表項
狀態字段用於標識進程的狀態
若干用戶標識號簡稱UID或用戶ID
若干進程標識號簡稱PID或進程ID
存儲區位置和長度
調度參數包括優先數等
軟中斷信號域
各種計時域給出進程執行時間和系統資源的利用情況
指向U區的指針指向與進程表項對應的U區
事件描述域記錄使進程進入睡眠狀態的事件
U區
指向進程表項的指針指出對應於該U區的進程表項
真正用戶標識符及有效用戶標識符
用戶文件描述符表記錄進程已打開的文件
當前目錄和當前根描述進程的文件系統環境
計時器域記錄進程及其後代運行所用的時間
一些輸入/輸出參數描述要傳輸的數據量源或目的數據地址等
限制域指出進程的大小及它能寫的文件大小限制
出錯域記錄系統調用執行期間所發生的錯誤
返回值域指出系統調用的返回結果
信號處理數組指出進程接收到軟中斷信號時的處理方式
系統區表
UNIX System Ⅴ把一個進程的虛地址空間劃分為正文區數據區棧區等系統設置區表對區進行管理區表主要包含以下信息
區的類型和大小指明區的類型為正文數據或棧
[] [] [] [] [] [] [] [] []
From:http://tw.wingwit.com/Article/program/czxt/201311/24170.html