操作系統——進程相關及系統引導

操作系統運行時劃分不同的模式,操作系統運行在內核模式,應用程序運行在用戶模式,權限不同,有些指令也不能運行。內核與用戶態之間不禁包含對內存的保護,還要指令的限制。

直接操作硬件端口的指令
in
從硬件端口讀入

out
從硬件端口讀出

用戶態不允許運行這兩個指令

由於應用程序也需要與硬件進行交互,因此就產生了系統調用。應用程序想做什麼事情會就利用系統調用,然後操作系統做中轉處理。

系統的引導

加載程序有一部分放在ROM裏,就是BIOS。ROM裏面有引導程序,引導程序接着引導有很多種方式

1.找到內核代碼直接加載,適合小型操作系統,缺少靈活性,無法選擇不同的操作系統
2.引導塊反正一個地方,然後ROM加載這個引導塊

加電——》進入BIOS——》BIOS選擇引導設備(引導優先級)

硬盤引導

首先加載MBR(包含重要的引導程序和分區表(硬盤分區)),共512byte
硬盤第0扇區(512字節)的前446字節是啓動代碼。其餘部分是主引導記錄(MBR),其中有分區信息等內容
BIOS爲什麼能找到MBR? 因爲MBR由於工業界標準,會被放在第0道第一個扇區上。把MBR讀進來,讀到0x7c00這個位置(也是工業標準),然後跳到(jmp)0x7c00,開始往後執行。

MBR裏面會有分區表,活動的分區會有活動標記(active)這個標記的意思就是這個分區作爲引導分區,找到活動分區,就會把這個分區的第一個扇區也是512byte讀入到0x7c00位置,然後跳到0x7c00,開始往後執行。

隨着·操作系統的發展,現在可以選擇進入分區尋找(GRUB)

GRUB工作時操作系統還不存在

進程的概念

爲什麼會引入進程?
更加直觀的表示程序的運行狀態

1>進程是程序的一個執行的實例;

2>進程是正在執行的程序

3>進程是能分配處理器並由處理器執行的實體

按內核的觀點來談進程:它所擔當分配系統資源(CPU時間,內存)的實體。
進程就是程序出現在計算機內存裏面,並且正在運行(動態的,存在生命週期),進程是程序的一次執行過程。

一個進程包含:程序計數器,數據段,代碼段,堆,棧等。
所有局部分配的變量都在棧裏面
new,malloc申請的內存在堆裏面

引入進程的利弊:
優點:多道程序需要,提高系統吞吐
缺點:空間(內存)與時間(切換)開銷增大

進程的狀態

一個進程的生命週期在不斷的變化

read(就緒態)
running(運行態)
waiting(等待態或阻塞態)

read:

進程現在完全可以運行,給了CPU就能運行,當它被分配CPU就能立即運行
單CPU一次只運行一個進程。CPU不能一心二用

running

處於運行態的進程很可能把自己的CPU交出去。

原因1:

進程有很多指令還要運行,但是操作系統(優先級問題)中斷這個程序的運行,把這個程序打到就緒態(read)

原因2:

這個進程主動讓出CPU,它要去做一個IO操作,或者等某一事件,進程不知道現在應該幹什麼,等待外界的指令。操作系統會把該進程切換爲等待態(waiting),操作系統吧CPU奪走,然後交給其他處於就緒狀態的進程。

所有的等待都是爲了醒來,當IO數據到來,進程知道該幹什麼了,操作系統會把它放到就緒態,並不會直接放到運行態。

在這裏插入圖片描述

進程狀態切換的細節

涉及進程調度,另闢文章記錄

進程控制塊(PCB Process)–進程的代言人

TCB(線程Thread)
JCB(作業Jobs)
描述和控制進程的運行,是操作系統中最重要的記錄型數據結構
記錄了操作系統所需要的,用於描述進程當前情況以及進程控制運行的全部信息。
記錄了進程的唯一標識符,說明信息,現場信息,管理信息。

原語

原語運行在覈心態,由一條或幾條機器指令組成
原語進行時中斷會被屏蔽,一旦執行不可中斷。

進程之間的關係

PCB中設置了家族關係表項,表明自己的父進程以及所有的子進程。

進程的創建

程存在的標誌是進程控制塊,所以,創建進程就是要創建PCB

引起創建進程事件有:

提交一個批處理作業
交互式作業登錄
操作系統創建一個服務進程
存在的進程創建(孵化)新的進程

進程的創建原語
在這裏插入圖片描述

進程的撤銷

程序正常結束
執行了非法指令
程序越權
高權限事件干預
發生錯誤

撤銷步驟:

撤銷進程號
將該進程擁有的資源歸還給父進程或操作系統
若該進程擁有子進程,則先撤銷它的子進程相關的

臨界資源

併發進程可以共享系統中的各種資源,但是系統中某些資源具有一次僅允許一個進程使用的屬性。這樣的資源稱爲臨界資源。

臨界區

進程中訪問臨界資源的那段代碼稱爲關於該臨界資源的臨界區。

進程的互斥

一組併發進程中的兩個或多個程序段,因共享某一共有資源而使得這組併發進程不能同時進入臨界區的關係稱爲進程的互斥。

進入臨界區等待的狀態時需要讓出CPU。

同步機構

大多數同步機構採用一個物理實體,如鎖,信號量,並提供相應的原語。

信號量
操作系統中用信號量來表徵一種資源或狀態,通過對信號量的改變來表徵進程對資源的使用情況,判斷信號量的值控制進程的狀態。

初始值是一個整形變量不能初值爲負

進程將要使用資源時,先把信號量減1,判斷信號量是否大於或等於0,若是則進程繼續執行。
若信號量減1後小於0,則該進程被阻塞後並進入該信號相對應的等待隊列中,然後轉進程調度。

信號量+0資源沒有了
信號量大於0,資源充足
信號量小於0,資源不夠用

進程釋放一次資源後,信號量加1

p原語將要佔用資源時改變信號量 判斷結果

V原語將要釋放資源時改變信號量 判斷結果

誰先來誰先佔着誰先操作,必須包含完整的互斥。

進程間的通信(協調互斥)

共享存儲器

管道通信

管道機制必須提供以下3方面協調能力
互斥

消息緩衝隊列通信機制
格式化消息,計算機網絡中稱爲報文

1,消息緩衝區

2,PCB中有關通信的數據項(約定信息的格式)

3,信箱通信(發送進程->通過信箱->接受進程)

感覺筆記做得有點淺,只知道要這麼做,但很多不知道爲什麼,後續慢慢補充原理知識吧,那一定會耗費很多時間,不過我好像也沒別的事要幹,hhh。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章