操作系統之進程的基礎知識

操作系統中最核心的概念是進程:這是一個對正在運行程序的抽象。操作系統的其他所有內容都是圍繞着進程的概念展開的。

進程是操作系統提供的最古老的也是最重要的抽象概念之一。即使只有一個CPU,它也是支持(僞)併發操作的能力。它們將一個CPU變成多個虛擬CPU。這裏我同大家一起學習關於進程的基礎知識。

進程

進程模型

在進程模型中,計算機上所有可運行的軟件,通常也包括操作系統,都被組織成若干順序進程(sequential process),簡稱進程(process)。一個進程就是一個正在執行的程序實例,包括程序計數器,寄存器和變量的當前值。從概念上講,每個進程都擁有它自己的虛擬CPU。在單CPU模式下,任何給定瞬間都只有一個進程真正在運行。當然,實際上只有一個物理程序計數器,所以在每個程序運行時,它的邏輯程序計數器會被裝入實際的物理計數器中。當該程序執行結束或暫定時,物理程序計數器被保存在內存中該進程的邏輯程序計數器中。

創建進程

新進程都是由於一個已經存在的進程執行了一個用於創建進程的系統調用而創建的,這個進程的作用是,執行一個用來創建進程的系統調用,這個系統調用通知操作系統創建一個新進程,並且直接或間接地指定在該進程中運行的程序。

進程終止

進程終止通常有四種條件引起:
1)正常退出(自願)
2)錯誤退出(自願)
3)嚴重錯誤(非自願)
4)被其他進程殺死(非自願)

進程的狀態

進程有三種狀態:
1)運行態(該時刻進程實際佔用CPU)
2)就緒態(可運行,但因爲其他進程正在運行而暫時停止)
3)阻塞態(除非某種外部事件發生,否則進程不能運行,比如等待外部輸入)
進程的三種狀態直接有四種切換關係,運行態和就緒態可以相互切換;運行態可以進入阻塞態;阻塞態可以進入就緒態。

進程的實現

爲了實現進程模型,操作系統維護着一張表格(一個結構數組),即進程表(process table)。每個進程佔用一個進程表項。該表項包含了進程狀態的重要信息,包括程序計數器,堆棧指針、內存分配狀況、所打開的文件狀態、賬號和調度信息,以及其他在進程由運行態轉換到就緒態或阻塞態時必須保留的信息,從而保證該進程隨後能再次啓動,就像從未被中斷過一樣。
當一個磁盤中斷髮生時,用戶進程正在運行,則中斷硬件將程序計數器、程序狀態字、寄存器等壓入堆棧,計算機隨即跳到中斷向量所指示的地址。這些是硬件完成的所有操作,然後軟件,特別是中斷服務例程就接管一切剩餘操作。
發佈了222 篇原創文章 · 獲贊 4 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章