進程與線程
進程:是一個動態的概念。 狹義定義:進程就是一段程序的執行過程。 廣義定義:進程是一個具有一定獨立功能的程序關於某個數據集合的一次運行活動。它是操作系統動態執行的基本單元,在傳統的操作系統中,進程既是基本的分配單元。
線程:獨立運行和獨立調度的基本單位。線程是進程中執行運算的最小單位。
- 一個進程可以至少包含一個線程。
- 進程是最基本的資源分配單元。線程是CPU 調度的最基本的執行單元
- 每一個進程都有它自己的地址空間,一般情況下,包括文本區域(text region)、數據區域(data region)和堆棧(stack region)。
- 文本區域存儲處理器執行的代碼;
- 數據區域存儲變量和進程執行期間使用的動態分配的內存;
- 堆棧區域存儲着活動過程調用的指令和本地變量。
- 線程沒有地址空間,線程包含在進程的地址空間中。線程上下文只包含一個堆棧、一個寄存器、一個優先權,線程文本包含在他的進程 的文本片段中,進程擁有的所有資源都屬於線程。所有的線程共享進程的內存和資源。 同一進程中的多個線程共享代碼段(代碼和常量),數據段(全局變量和靜態變量),擴展段(堆存儲)。但是每個線程擁有自己的棧段, 寄存器的內容,棧段又叫運行時段,用來存放所有局部變量和臨時變量。
-
進程5態
- 提交: 進程已經申請到了PCB(Process Control Block),並寫入了進程信息和控制信息,獲取到了執行所需要的資源。
- 選中: cpu 通過調度算法,運行該進程獲取CPU資源開始進行運算
- 落選:CPU資源不在對該進程提供。如,時間片到或有更高優先級的進程需要執行。
- 出現等待事件:正在執行的進程所有資源不足或被其他進程佔用。(例:等待I/O)
- 等待事件結束:獲得所需要的資源。(其他進程I/O 完成,自己可以使用)
- 執行完成:進行結束
- 掛起: 由於系統不斷創建進程,系統資源特別是主存已不能滿足進程運行要求,此時必須將某些進程掛起(suspend),置於磁盤對換區,釋放其所佔資源,暫時不啓用低級調度,起到平滑負載的目的。
- 解除掛起:資源重新獲取
程序
定義:程序是指令和數據的有序集合,其本身沒有任何運行的含義,是一個靜態的概念。說得直白一點,程序就是隻寫的代碼。