1. 程式人生 > >程序的概念、狀態轉換和程序控制塊

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

1. 為什麼要引入程序 通常的程式是不能併發執行的,因為併發執行會使它們具有間斷性、失去封閉性,並且其結果不可再現。      為了使程式能夠併發執行,並且對程式加以描述及控制,引入了程序的概念。 2. 程序的定義 程序是程序實體的執行過程,程序實體由程式段、相關的資料段和PCB三部分構成。在沒有引入執行緒的作業系統中,程序是系統進行資源分配和排程的一個獨立單位 3. 程序的狀態 (1)建立狀態           當一個新程序被建立時,系統為其建立PCB,並填寫必要的管理資訊。但由於該程序所需的資源尚未分配,程序還沒有進入主存,程序還不能被排程執行。      (2)就緒狀態           當程序已經被分配到除CPU以外的所有資源時,只要再獲得CPU就可以執行,這種狀態稱為就緒狀態。
     (3)執行狀態           程序獲得了CPU,正在執行當中。      (4)阻塞狀態           正在執行的程序由於發生一些事件暫時無法繼續佔有CPU時,程序進入阻塞狀態。      (5)掛起狀態           當有終端使用者的請求,或父程序的請求,或系統負荷調節的需要,或作業系統的需要時,程序進入掛起狀態。      (6)終止狀態           當一個程序到達了自然結束點,或是出現了無法克服的錯誤,或是被作業系統終結,或是被其它擁有終止權的程序終結,程序就進入終止狀態。
程序狀態轉換圖(無掛起狀態) 4. 引起程序進入各種狀態的事件 4.1 進入阻塞狀態
     (1)請求的資源被其它程序佔用。如:請求使用印表機資源,但印表機正在被其它程序使用。      (2)啟動某種操作。如:啟動了某項I/O裝置,只有在I/O裝置完成了指定的I/O操作後進程才能繼續執行。      (3)新資料尚未到達。如:程序A用於輸入資料,程序B用於對資料加工,如果程序A尚未輸入完資料 ,則程序B阻塞。      (4)無新工作可做。如:傳送資料的程序已經發送完資料,且無新的傳送請求,則該傳送程序阻塞。
4.2 進入掛起狀態      (1)終端使用者請求。如:終端使用者在程式執行期間希望程式 暫停執行,程序進入掛起狀態。      (2)父程序的請求。如:父程序希望掛起自己的某個子程序,以便修改子程序或協調各子程序的活動。
     (3)進行負荷調節。如:當實時系統的負荷較重,系統可以把一些不重要的程序掛起。      (4)作業系統的需要。如:作業系統掛起某些程序,以便檢查執行資源的使用情況
5. 程序控制塊(PCB) 5.1 程序控制塊的作用      程序控制塊記錄了作業系統所需的,用於描述程序的當前情況,以及控制程序執行的全部資訊。作業系統是根據PCB來對併發執行的程序進行控制和管理的。      例子:      (1)當作業系統要排程某程序執行時,要從該程序的PCB中檢視其現行狀態和優先順序。      (2)當排程某程序後,要根據PCB中儲存的CPU狀態資訊,設定程序恢復執行的現場,並根據PCB中程式和資料的記憶體地址找到程式和資料。      (3)當程序阻塞或掛起時,要將其斷點的CPU環境儲存在PCB中。      (3)程序之間實現同步、通訊、訪問檔案時,需要訪問PCB。
5.2 程序控制塊的內容      (1)程序識別符號(PID)。程序識別符號唯一地標識一個程序。      (2)CPU狀態資訊。由CPU的各種暫存器的內容組成。      (3)程序排程資訊。包括程序狀態、程序優先順序、程序排程所需的其他資訊、引起狀態轉換的事件。      (4)程序控制資訊。包括程式和資料的地址、程序同步和通訊所需的內容、程序所需和已有的資源清單、所在佇列中指向下一個程序的連結指標。

相關推薦

程序概念狀態轉換程序控制

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

python-同步非同步阻塞非阻塞序列並行並行併發密集型執行緒程序的相關概念

1. 同步和非同步   關注的是訊息的通訊機制,描述的是一種行為方式,是多個任務之間的關係。 ① 同步: 呼叫者主動等待被呼叫方返回結果,在沒有返回結果之前,就一直專職等待。 千萬不要把計算機中“同步”理解成“同時執行”。 ② 非同步:呼叫者傳送請求請求,不會專職等待

程序狀態概念狀態轉換

一、程序狀態 1.建立狀態 程序由建立而產生。建立程序是一個非常複雜的過程,一般需要通過多個步驟才能完成:如首先由程序申請一個空白的程序控制塊(PCB),並向PCB中填寫用於控制和管理程序的資訊;然

設計一個模組,功能是列出系統中所有核心執行緒的程式名PID號程序狀態

一、Linux的核心模組 核心模組是Linux核心向外部提供的一個插口,其全稱為動態可載入核心模組(Loadable Kernel Module,LKM),簡稱模組。Linux核心之所以提供模組機制,是因為它本身是一個單核心(monolithic kernel)。單核心的最大優點是效率高,因為所有的內容都整

Java中的線程狀態轉換線程控制常用方法

img sta () throw line star height style 技術 Java 中的線程狀態轉換:    【註】:不是 start 之後就立刻開始執行, 只是就緒了(CPU 可能正在運行其他的線程). 【註】:只有被 CPU 調度之後,線程才開始執行, 當

淺析實體記憶體虛擬記憶體程序的地址空間

   ●在一個系統中,程序是和其他程序共享CPU和主存資源。但是共享資源會造成一些不可避免的問題,例如由於儲存器不夠而         程序無法執行,亦或是儲存器被外來的惡意程序破壞等。 早期的記憶體管理機制:  分派方式

程序間通訊(佇列管道)消費者模型程序池(apply,apply_async,map)

一、佇列(先進先出) 程序間通訊:IPC(Inter-Process Communication) 佇列是使用管道和鎖定實現,所以Queue是多程序安全的佇列,使用Queue可以實現多程序之間的資料傳遞。 1、Queue([maxsize]) 建立共

作業系統總結 - 程序概念程序處理機排程(二)

作業系統總結 - 程序概念、程序處理機排程(二) 程序的定義、組成、組織、特徵 程序的狀態與轉換 程序控制 程序通訊 執行緒、多執行緒概念模型 處理機排程的概念、層次 程序排程的時機、切換與過程、方式 排程演算法的評價指標 排程

Linux程序管理執行任務 軟體安裝(筆記)

一、Linux程序管理 系統:centos7 在linux系統中,分為前臺程序和後臺程序,前臺程序意思就是當一個命令執行的過程中,不允許其他的命令執行,我們之前所學習的常用命令基本上都是前臺程序。 比如

TCP協議詳解(TCP報文三次握手四次揮手TIME_WAIT狀態滑動視窗擁塞控制粘包問題狀態轉換圖)

一、TCP報文 【重要的欄位】: 序號:Seq序號,佔32位,用來標識從TCP源端向目的端傳送的位元組流,發起方傳送資料時對此進行標記; 確認序號:Ack序號,佔32位,只有ACK標誌位為1時,確

IO密集型計算密集型執行緒程序

io密集型:有阻塞的狀態,就是一直會執行CPU(中間就一個等待狀態,這個就叫做IO密集型)。例如:sleep狀態 計算密集型任務:沒有等待的狀態就是計算密集型,從上到下執行沒有等待。 在Python中沒法同時使用多個CPU,在同一時刻,多個執行緒是互相搶佔資源的,在cpython執行中加了一把鎖(GIL)

作業系統清華大學版筆記(十一)死鎖銀行家演算法程序間通訊(直接通訊間接通訊)

死鎖、死鎖模型、死鎖預防和恢復、銀行家演算法 死鎖:一組阻塞的程序(兩個或多個),持有一種資源,等待獲取另一個程序所佔有的資源,而導致誰都無法執行。 由於程序的併發執行引起了死鎖。 死鎖模型 資源型別很多,比如CPU cycles , mem

Shell基礎:介紹歷史命令命令不全別名通配符輸入輸入重定向管道發作業控制

基礎 一個 直接 1.5 寫到 否則 shel attr tle Shell的介紹 zsh、ksh(yum list |grep zsh 進行查看,然後可以相應的進行安裝) 命令歷史1. /root/.b

二十四管道符作業控制shell變量環境變量配置文件

管道符和作業控制 shell變量 環境變量配置文件 二十四、管道符和作業控制、shell變量、環境變量配置文件一、管道符和作業控制管道符:| 表示把前面文件輸出的內容傳遞給後面的命令。|grep:過濾,指定關鍵詞的命令。|grep ’aaa‘。作業控制Ctrl+z:暫停一個任務

linux中斷介紹(概念頂半部底半部linux中斷程式設計)

中斷的概念: 指CPU在執行過程中,出現某些突發事件急待處理,CPU暫停執行當前程式,轉去處理突發事件,處理完後CPU又返回原程式被中斷的位置繼續執行.   中斷的分類: 內部中斷:來自cpu內部(軟體中斷、cpu溢位、觸發錯誤等) 外部中斷:來自cpu外部,由外設觸發

談談JavaScript的算數運算二進位制浮點數舍入誤差及比較型別轉換變數宣告提前問題

  在《JavaScript權威指南》一書第三章節“型別、值和變數”中,作者詳細介紹了Javascript的數字、文字、布林值等型別,全域性物件,包裝物件,型別轉換,變數作用域等概念。其中有3個地方需要我們在使用過程中引起注意,可能稍不留神就犯錯:   1)算數運算與浮點數比較問題   2)

無符號整型 unsigned intunsigned longusigned long longsize_t 比較格式控制

位數比較 由於資料的長度和平臺相關,所以基於 64 位系統比較。 Windows Linux unsigned int 32 bits/4294967295 32 bits unsigne

PyQt5學習記錄(2)---QMainWindow選單欄狀態工具欄

QMainWindow是繼承自QWidget,提供一個應用程式的主視窗。通過QMainWindow你可以新增自己的QToolBars、QDockWidgets、QMenuBar、QStatusBar等。見下圖: 所以如果我們寫程式的話,主視窗一般都是繼承QMainWind

Java——語言基礎(二)運算子鍵盤錄入流程控制語句

運算子 什麼是運算子? 對常量和變數進行操作的符號稱為運算子。 運算子的分類 算數運算子:+、-、*、/、%、++、– ++、–單獨使用放在運算元前面和後面效果一樣; 參與運算 放在運算元的前面,先自增或自減,然後再參與運算; -放在操作書後面,先參與

多感測器融合技術(基本概念前融合後融合的區別)

多感測器資訊融合(Multi-sensor Information Fusion,MSIF),就是利用計算機技術將來自多感測器或多源的資訊和資料,在一定的準則下加以自動分析和綜合,以完成所需要的