1. 程式人生 > >操作系統 進程與線程

操作系統 進程與線程

上下 數據集 初始化 用戶 機制 進程間 直接 概念 同步問題

進程的概念

順序執行的特點:1.順序性 2.封閉性 3.可重現性

並發執行的特點:1.增強計算機處理能力和提高資源利用率 2.失去了封閉性和可重再現性 3.共享系統資源產生相互制約的關系

進程的定義:1.進程是程序的一次執行 2.進程是一個程序與其使用的數據在處理機上執行的過程 3.進程是具有獨立功能的層序在一個數據集合上運行的過程,是系統進行資源分配和調度的一個獨立單位

進程的特點:動態性,並發性,獨立性,異步性

進程的實質是進程實體的執行過程,進程由創建而產生,由調度而執行,由撤銷而消亡。進程按照異步方式運行,獨立運行,以不可預知的速度向前推進,導致不可再現性

由此可見進程實體是由程序,數據,進程控制塊組成

進程控制塊的作用:記錄對進行運行的變化過程,並且描述進程;讓一個在多道程序環境下不能獨立運行的程序(含數據)成為一個能獨立運行的基本單位,一個能與其他進程並發執行的進程。具體作用 1.作為獨立運行基本單位的標誌 2.能實現間斷性運行方式 3.提供進程管理所需要的信息 4.實現與其他進程的通信 5.提供進程調度所需要的信息

進程在獲得pcb之後標誌其是一個能在多道程序環境下獨立運行的合法的基本單位,其有過的CPU服務的權利,比如打開系統文件,請求IO設備,以及和其他進程通信;

進程控制塊的信息:1.進程標識符 2.處理機狀態(即處理機上下文) 3.進程調度信息 4.進程控制信息

原語操作:由若幹條指令組成,用於完成一定功能的一個過程

進程控制塊的組織方式:1.線性方式 2.鏈式方式 3.索引方式

進程的狀態及轉換:1.ready--running 進程被調度程序選中 2.running--blocked 等待某個事件的發生 3.running--ready 時間片用完,或者被高優先級的進程剝奪cpu使權限 4.blocked--ready 進程等待的事件發生

進程控制:創建新的進程,終止已完成的進程,進程的阻塞與掛起, 進程的掛起與激活

引起阻塞的原因:1.向系統申請資源失敗 2.等待某種操作的完成(比如申請io) 3.新數據尚未到達 4.等待新任務到達 阻塞是一種主動的行為

進程不能拒絕子進程的繼承權,所有的進程都具有相同的地位,不存在任何的層次結構。

引起進程創建的事件:1.用戶登錄 2.作業調度 3.提供服務 4.應用請求

進程創建過程:1.申請空白PCB 2.為進程分配資源 3.初始化PCB 4.如果就緒隊列能接納新進程就納入新進程

引起進程終止的事件:1.任務完成正常結束 2.越界錯 3.保護錯 4.執行非法指令 5.運行超時 6.等待超時 7.IO故障 8.父進程終止 9.父進程請求 10.操作員或者系統幹預(分為三類,正常結束,異常結束,外界幹預)

進程終止過程:1.根據進程標識符讀取進程PCB中的該進程的狀態 2.終止進程的所有操作 3.如果有子孫進程,全部終止 4.擁有的所有資源歸還父進程或者系統 5.將PCB從隊列中移除,等待其他程序來搜集信息

程序與進程的區別:進程是程序的一次執行,是一個動態的概念。程序是完成某個特定功能的指令的有序序列,是一個靜態的概念。 程序可以作為一種軟件資源長期保存。進程是把程序做為它的運行實體,沒有程序就沒有進程。進程是臨時的,是由生命期的。可以把程序看做菜譜,進程則是按照菜譜進行烹調的過程;進程不能作為資源分配和調度的單位,以及不能並發執行。可見進程的存在是需要一些資源和數據結構的支持的。

進程通信

共享存儲器系統:相互通信進程共享某些數據結構或共享存儲區,進程通過這些空間進行通信;1.基礎共享數據結構的通信方式,具體的實現以及同步問題都有程序員來實現,是一種低效率,低級的方式;2.基於共享存儲器的通信方式,進程通過對該共享區的讀或寫交換信息。由進程控制,通信前先申請空間,並把地址添加到自己的地址空間中中

管道通信系統:用於連接一個讀進程和寫進程按照先進先出方法實現相互通信的一個共享文件,稱為管道。以字符流來進行信息傳輸的。需要有以下幾種功能,互斥,同步,確定對方存在與否

消息傳遞通信:用格式化的消息為單位,將通信的數據封裝在消息中,並利用錯做系統提供的一組通信命令,在進程間傳遞消息;1.直接通信方式 2.簡潔通信方式,通過共享中間體(郵箱)的方式進行消息發送和接收

線程概念和多線程模型

進程是是資源分配對象,線程是進程中一個可以執行的實體,是作為進程調度的一個獨立對象。一個進程中的線程共享進程的所有資源

線程的特性:並發性,共享性,動態性,結構性

多線程模型:一個進程的結構可以劃分為兩個部分,對資源的管理和實際實現功能的指令序列。采用多進程模型時,並發進程之間的切換和通信均要借助於操作系統的管理進程和進程通信機制。實現的開銷大。引入線程後,進程只作為系統中進行保護和資源分配的單位,允許進程擁有多個線程並發執行線程調度不用通過進程調度,多線程借助共享內存區實現通信,容易實現,減小系統開銷

線程和進程的區別:1.進程是資源的擁有者 2.線程切換只需要把線程僅有的一小部分資源交換即可,切換比進程快 3.線程在微觀和宏觀上都能實現並發執行,提高資源利用率和系統的吞吐量 4.進程的安全性比線程的好,因為線程的獨立性不高

操作系統 進程與線程