1. 程式人生 > >轉發:PCB程序控制塊

轉發:PCB程序控制塊

想要有順序地學習Linux,入口在這裡哦:Linux:目錄索引

PCB:程序控制塊

0.PCB是幹什麼的?

學了作業系統後,我們都知道作業系統要想管理一個物件,它不是直接進行管理的,而是通過得到被管理者的一些有效資訊加以管理的,因此在這裡我們也可以這樣理解,作業系統管理程序,實則是將程序的有效資訊提取出來然後通過管理這些資訊來管理程序,而所有的程序資訊被存放在一個叫做程序控制塊的資料結構中(可以理解為程序屬性的集合),這也就是即將要介紹的程序控制塊(PCB).

1.PCB簡介

PCB(process control block),程序控制塊,它用於管理系統的程序
一般情況下,PCB中包含4個部分
1.程序標識資訊
2.處理機狀態
3.程序排程資訊
4.程序控制資訊
詳細如下圖:
這裡寫圖片描述

2.PCB4個部分包含的內容的解釋:

(1). 程序標識資訊

程序標識資訊用於唯一地標識一個程序,一個程序通常有兩種識別符號:內部標誌符&外部識別符號。
內部標誌符: 由作業系統賦予每個程序的一個唯一的數字識別符號,它通常為一個程序的序號,方便了系統使用。
外部識別符號: 由建立者產生,是由字母和數字組成的字串,為使用者程序訪問該程序提供方便。
為了描述程序間的家族關係,通常還設有父程序標識和子程序標識,以表示程序間的家族關係。
此外,還設有使用者名稱或使用者標識號表示該程序屬於哪個使用者。

(2). 處理機狀態

處理機狀態資訊主要由處理機的各個暫存器內的資訊組成。 程序執行時的許多資訊均存放在處理機的各種暫存器中。其中程式狀態字(PSW)是相當重要的,處理機根據程式狀態暫存器中的PSW來控制程式的執行。

(3). 程序排程資訊

PCB中還存放著一些與程序排程有關的資訊。
程序狀態:標識程序的當前狀態(就緒、執行、阻塞),作為程序排程的依據。
程序優先順序:表示程序獲得處理機的優先程度。
為程序排程演算法提供依據的其他資訊:例如,程序等待時間、程序已經獲得處理器的總時間和程序佔用記憶體的時間等。
事件:是指程序由某一狀態轉變為另一狀態所等待發生的事件。(比如等待I/O釋放)

(4). 程序控制資訊

程式和資料地址:是指組成程序的程式和資料所在記憶體或外存中的首地址,以便在排程該程序時能從其PCB中找到相應的程式和資料。
程序同步和通訊機制

:指實現程序同步和通訊時所採取的機制,如訊息佇列指標和訊號量等,他們可以全部或部分存在PCB中。
資源清單:列出了程序所需的全部資源 及 已經分配給該程序的資源,但不包括CPU.
連結指標:它給出了處於同一佇列中的下一個PCB的首地址。

3.Linux中的PCB:task_struct

(1)PCB中儲存的資訊

識別符號:與程序相關的唯一識別符號,用來區別正在執行的程序和其他程序。
狀態:描述程序的狀態,因為程序有掛起,阻塞,執行等好幾個狀態,所以都有個識別符號來記錄程序的執行狀態。
優先順序:如果有好幾個程序正在執行,就涉及到程序被執行的先後順序的問題,這和程序優先順序這個識別符號有關。
程式計數器:程式中即將被執行的下一條指令的地址。
記憶體指標:程式程式碼和程序相關資料的指標。
上下文資料:程序執行時處理器的暫存器中的資料。
I/O狀態資訊:包括顯示的I/O請求,分配給程序的I/O裝置和被程序使用的檔案列表等。
記賬資訊:包括處理器的時間總和,記賬號等等。

(2)task_struct的結構

這裡寫圖片描述

相關推薦

轉發PCB程序控制

想要有順序地學習Linux,入口在這裡哦:Linux:目錄索引 PCB:程序控制塊 0.PCB是幹什麼的? 學了作業系統後,我們都知道作業系統要想管理一個物件,它不是直接進行管理的,而是通過得到被管理者的一些有效資訊加以管理的,因此在這裡我們也可以這樣理解

PCB(程序控制)以及Linux下的程序控制task_struct

程序控制塊中的資訊: 1.程序識別符號:程序識別符號是惟一地標識一個程序。一個程序通常有兩種識別符號   (1).內部表示符:在所有的作業系統中,都為每一個程序賦予了一個惟一的數字識別符號,它通常是一個程序的序號。設定內部識別符號主要是為了方便系統使用。   (2).外部識

程序控制PCB之task_struct

程序就是程式動態執行的例項,是承擔分配系統資源的實體。 程序資訊被存放在一個叫程序控制塊的資料結構中,將其稱之為PCB。而Linux作業系統下的task_struct是PCB的一種,task_struct是Linux核心的一種資料結構,他會被裝載到記憶體裡並儲

linux系統程式設計之程序(二)程序生命週期與PCB程序控制

本節目標: 程序狀態變遷程序控制塊程序建立程序撤消終止程序的五種方法 一,程序狀態變遷 程序的三種基本狀態 就緒(Ready)狀態 當程序已分配到除CPU以外的所有必要的資源,只要獲得處理機便可立即執行,這時的程序狀態稱為就緒狀態。 執行(Running)狀態 當程序已獲得

程序控制PCB結構 task_struct 描述

1. 程序狀態(State) 程序執行時,它會根據具體情況改變狀態 。程序狀態是排程和對換的依據。Linux中的程序主要有如下狀態,如表。 ·可執行狀態 處於這種狀態的程序,要麼正在執行、要麼正準備執行。正在執行的程序就是當前程序(由current所指向的程序),而準備執行的程序只要得到CPU就可以立即投入執

試說明PCB程序控制) 的作用,為什麼說PCB程序存在的惟一標誌?

PCB 是程序實體的一部分,是作業系統中最重要的記錄型資料結構。作用是使一個在 多道程式環境下不能獨立執行的程式,成為一個能獨立執行的基本單位,成為能與其它程序 併發執行的程序。OS是根據PCB對併發執

程序控制PCB)的結構

程序控制塊 PCB (Process Control Block):存放程序的管理和控制資訊的資料結構稱為程序控制塊。它是程序管理和控制的最重要的資料結構,每一個程序均有一個PCB,在建立程序時,建立P

程序控制和狀態——隨堂筆記

1.PCB——描述程序的資料結構 (當一個程序建立以後交給作業系統管理,管理的時候要對程序的屬性進行描述) (1)程序的描述資訊:程序的基本資訊pid給每個程序的編號,名字 (2)處理器狀態資訊:在程序執行過程中使用的處理器的各種暫存器的資訊。 原因:程序在執行

作業系統知識整理 - 程序控制

前提 系統中需要有描述程序存在和能夠反映其變化的物理實體,即程序的靜態描述。 程序的靜態描述由3部分組成:程序控制塊(Process Control Block,PCB),有關程式段和該程式段操作的資料結構集。 PCB是系統感知程序的唯一實體,用於描述程序的當前情況以及管理程序執行的

作業系統-程序概念與程序控制

程序 在學習作業系統時,對於程序我們經常能看到如下幾個定義: 一個正在執行的程式。 一個正在計算機上執行的程式例項。 能分配給處理器並由處理器執行的實體 由一組執行的指令,一個當前狀態和一組相關的系統資源表徵的活動單元。 以上定義都是很抽象的,將程序的

Linux程序控制(Processing Control Block)

程序 在廣義上,所有的程序資訊被放在一個叫做程序控制塊的資料結構中,可以理解為程序屬性 的集合。 程序控制塊 每個程序在核心中都有一個程序控制塊(PCB)來維護程序相關的資訊,Linux核心的 程序控制塊是task_struct結構體。現在我們全面瞭解

程序的概念、狀態轉換和程序控制

1. 為什麼要引入程序 通常的程式是不能併發執行的,因為併發執行會使它們具有間斷性、失去封閉性,並且其結果不可再現。      為了使程式能夠併發執行,並且對程式加以描述及控制,引入了程序的概念。

在windows裡通過程序控制獲取所有當前所有程序-其實非常簡單

#include "stdafx.h"#include <windows.h>#include <tlhelp32.h>int main(int argc, char* argv[]){ HANDLE hSnapshot = CreateToolhel

程序控制程序上下文

一. 程序控制塊     為了描述和控制程序的執行,系統為每個程序定義了一個資料結構——程序控制塊(PCB)。  它是程序重要的組成部分,它記錄了作業系統所需的、用於描述程序的當前狀態和控制程序的全部資訊。  作業系統就是根據程序的PCB來感知程序的存在,並依此對程序進行

【Linux】程序控制PCD結構(tack_struct)

程式建立的程序具有父/子關係。因為一個程序能建立幾個子程序,而子程序之間有兄弟關係,在task_struct 結構中有幾個域來表示這種關系。在Linux 系統中,除了初始化程序init,其他程序都有一個父程序(Parent Process)。可以通過fork()或clone()系統呼叫來建立子程序,除了程序

程序控制及其作用、組織方式

程序控制塊中的資訊1) 程序識別符號(1) 內部識別符號 作業系統為每一個程序賦予的唯一數字識別符號,系統使用 (2) 外部識別符號 有建立者提供,通常有字母與數字組成,往往是由使用者(程序)在訪問該程序時使用。描述程序的家族關係,設定父程序標識及子程序標識,

程序程序控制

程序是程式的一個執行例項,是一個正在執行的程式。能分配處理器並由處理器執行的實體。          在一個系統上可以同時執行多個程式。併發執行,一個程序的指令和另一個程序的指令是交錯執行的。          程序的兩個基本元素是程式程式碼(可能被執行相同程式的其他程序共

進程控制(PCB)結構

adding pid cpu ren ppa 多參數 tro swap vcs 一、進程控制塊(PCB)結構 進程控制塊(PCB)是系統為了管理進程設置的一個專門的數據結構。系統用它來記錄進程的外部特征,描述進程的運動變化過程。同時,系統可以利用PCB來控制和管理進程,所以

挑戰408——作業系統(5)——PCB程序控制

程序的活動是通過在CPU上執行一系列程式和對資料進行相應操作的完成來體現的,因此程式和資料是組成程序的實體,為了反映程序的動態特徵,需要一個數據結構來描述程序本身的特性狀態,排程資訊以及對資源的佔有等等。這個資料結構我們稱之為程序控制塊(PCB) PCB的內容 PCB主要包含下面

Linux程序控制(fork/vfork)(程序終止:exit/_exit)(程序等待wait/waitpid/status)(程序替換:exec函式/shell實現)

目錄   程序建立 fork原理 fork函式返回值 fork用法和呼叫失敗的原因 vfork函式 總結 程序終止 程序退出場景: 程序常見退出方法 return退出 _exit函式 exit函式 總結: 程序等待 程序等待的