1. 程式人生 > >計算機操作系統的進程和線程

計算機操作系統的進程和線程

周期 響應 特定 好的 gpo 正常 分享 完成 實現

操作系統

分時系統
由於CPU速度不斷提高和采用分時技術,一臺計算機可同時連接多個用戶終端,而每個用戶可在自己的終端上聯機使用計算機,好象自己獨占機器一樣。
分時技術:把處理機的運行時間分成很短的時間片,按時間片輪流把處理機分配給各聯機作業使用。
特點:
  (1)多路性。若幹個用戶同時使用一臺計算機。微觀上看是各用戶輪流使用計算機;宏觀上看是各用戶並行工作。
  (2)交互性。用戶可根據系統對請求的響應結果,進一步向系統提出新的請求。這種能使用戶與系統進行人機對話的工作方式,明顯地有別於批處理系統,因而,分時系統又被稱為交互式系統。
  (3)獨立性。用戶之間可以相互獨立操作,互不幹擾。系統保證各用戶程序運行的完整性,不會發生相互混淆或破壞現象。
  (4)及時性。系統可對用戶的輸入及時作出響應。分時系統性能的主要指標之一是響應時間,它是指:從終端發出命令到系統予以應答所需的時間。
實時系統
 實時操作系統的主要特點:
  (1)及時響應。每一個信息接收、分析處理和發送的過程必須在嚴格的時間限制內完成。
  (2)高可靠性。需采取冗余措施,雙機系統前後臺工作,也包括必要的保密措施等。


分時——現在流行的PC,服務器都是采用這種運行模式,即把CPU的運行分成若幹時間片分別處理不同的運算請求 linux系統
實時——一般用於單片機上、PLC等,比如電梯的上下控制中,對於按鍵等動作要求進行實時處理

UNIX操作系統是一個通用的多用戶分時交互型的操作系統
操作系統就是一個協調、管理和控制計算機硬件資源和軟件資源的控制程序。
操作系統的作用:
1:隱藏醜陋復雜的硬件接口,提供良好的抽象接口
2:管理、調度進程,並且將多個進程對硬件的競爭變得有序

進程的概念和特征

進程的定義

在講進程前首先要弄明白什麽是程序:程序(Program)是為實現特定目標或解決特定問題而用計算機語言編寫的命令序列的集合,必須python就是個程序

  • 進程是程序的一次執行過程。
  • 進程是一個程序及其數據在處理機上順序執行時所發生的活動。
  • 進程是具有獨立功能的程序在一個數據集合上運行的過程,它是系統進行資源分配和調度的一個獨立單位。

進程的並行和並發
並行 : 並行是指兩者同時執行,比如賽跑,兩個人都在不停的往前跑;(資源夠用,比如三個線程,四核的CPU )
並發 : 並發是指資源有限的情況下,兩者交替輪流使用資源,比如一段路(單核CPU資源)同時只能過一個人,A走一段後,讓給B,B用完繼續給A ,交替使用,目的是提高效率。

進程同步和異步
所謂同步就是一個任務的完成需要依賴另外一個任務時,只有等待被依賴的任務完成後,依賴的任務才能算完成,這是一種可靠的任務序列。要麽成功都成功,失敗都失敗, 兩個任務的狀態可以保持一致。
所謂異步是不需要等待被依賴的任務完成,只是通知被依賴的任務要完成什麽工作,依賴的任務也立即執行,只要自己完成了整個任務就算完成了。至於被依賴的任務最終是否真正完成,依賴它的任務無法確定,所以它是不可靠的任務序列。

進程的特征

進程是由多程序的並發執行而引出的,它和程序是兩個截然不同的概念。進程的基本特征是對比單個程序的順序執行提出的,也是對進程管理提出的基本要求。

  1. 動態性:進程的實質是程序在多道程序系統中的一次執行過程,進程是動態產生,動態消亡的。
  2. 並發性:任何進程都可以同其他進程一起並發執行
  3. 獨立性:進程是一個能獨立運行的基本單位,同時也是系統分配資源和調度的獨立單位;
  4. 異步性:由於進程間的相互制約,使進程具有執行的間斷性,即進程按各自獨立的、不可預知的速度向前推進
  5. 結構特征:進程由程序、數據和進程控制塊三部分組成。

多個不同的進程可以包含相同的程序:一個程序在不同的數據集裏就構成不同的進程,能得到不同的結果;但是執行過程中,程序不能發生改變

進程狀態的轉換

進程在其生命周期內,由於系統中各進程之間的相互制約關系及系統的運行環境的變化,使得進程的狀態也在不斷地發生變化(一個進程會經歷若幹種不同狀態)。通常進程有以下五種狀態,前三種是進程的基本狀態。

1) 運行狀態:進程正在處理機上運行。在單處理機環境下,每一時刻最多只有一個進程處於運行狀態。

2) 就緒狀態:進程已處於準備運行的狀態,即進程獲得了除處理機之外的一切所需資源,一旦得到處理機即可運行。

3) 阻塞狀態,又稱等待狀態:進程正在等待某一事件而暫停運行,如等待某資源為可用(不包括處理機)或等待輸入/輸出完成。即使處理機空閑,該進程也不能運行。

4) 創建狀態:進程正在被創建,尚未轉到就緒狀態。創建進程通常需要多個步驟:首先申請一個空白的PCB,並向PCB中填寫一些控制和管理進程的信息;然後由系統為該進程分配運行時所必需的資源;最後把該進程轉入到就緒狀態。

5) 結束狀態:進程正從系統中消失,這可能是進程正常結束或其他原因中斷退出運行。當進程需要結束運行時,系統首先必須置該進程為結束狀態,然後再進一步處理資源釋放和回收等工作。

註意區別就緒狀態和等待狀態:就緒狀態是指進程僅缺少處理機,只要獲得處理機資源就立即執行;而等待狀態是指進程需要其他資源(除了處理機)或等待某一事件。之所以把處理機和其他資源劃分開,是因為在分時系統的時間片輪轉機制中,每個進程分到的時間片是若幹毫秒。也就是說,進程得到處理機的時間很短且非常頻繁,進程在運行過程中實際上是頻繁地轉換到就緒狀態的;而其他資源(如外設)的使用和分配或者某一事件的發生(如I/O操作的完成)對應的時間相對來說很長,進程轉換到等待狀態的次數也相對較少。這樣來看,就緒狀態和等待狀態是進程生命周期中兩個完全不同的狀態,很顯然需要加以區分。

技術分享圖片

五種狀態的轉換


就緒狀態----->>>運行狀態:處於就緒狀態的進程被調度後,獲得處理機資源(分派處理機時間片),於是進程由就緒狀態轉換為運行狀態。

運行狀態----->>>就緒狀態:處於運行狀態的進程在時間片用完後,不得不讓出處理機,從而進程由運行狀態轉換為就緒狀態。此外,在可剝奪的操作系統中,當有更高優先級的進程就緒時,調度程度將正執行的進程轉換為就緒狀態,讓更高優先級的進程執行。

運行狀態----->>>阻塞狀態:當進程請求某一資源(如外設)的使用和分配或等待某一事件的發生(如I/O操作的完成)時,它就從運行狀態轉換為阻塞狀態。進程以系統調用的形式請求操作系統提供服務,這是一種特殊的、由運行用戶態程序調用操作系統內核過程的形式。

阻塞狀態----->>>就緒狀態:當進程等待的事件到來時,如I/O操作結束或中斷結束時,中斷處理程序必須把相應進程的狀態由阻塞狀態轉換為就緒狀態。

python中的進程

進程的創建與結束
from
multiprocess import Process process(target= 子進行的函數名 ,args=參數) def __init__(self, group=None, target=None, name=None, args=(), kwargs={}): 強調: 1. 需要使用關鍵字的方式來指定參數 2. args指定的為傳給target函數的位置參數,是一個元組形式,必須有逗號 參數介紹: 1 group參數未使用,值始終為None 2 target表示調用對象,即子進程要執行的任務 3 args表示調用對象的位置參數元組,args=(1,2,egon,) 4 kwargs表示調用對象的字典,kwargs={name:egon,age:18} 5 name為子進程的名稱



計算機操作系統的進程和線程