程序的概念、狀態轉換和程序控制塊
程序狀態轉換圖(無掛起狀態) 4. 引起程序進入各種狀態的事件 4.1 進入阻塞狀態
4.2 進入掛起狀態 (1)終端使用者請求。如:終端使用者在程式執行期間希望程式 暫停執行,程序進入掛起狀態。 (2)父程序的請求。如:父程序希望掛起自己的某個子程序,以便修改子程序或協調各子程序的活動。
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 int、unsigned long、usigned long long、size_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),就是利用計算機技術將來自多感測器或多源的資訊和資料,在一定的準則下加以自動分析和綜合,以完成所需要的