什麼是機器指令?
能夠讓cpu直接識別,執行的指令就是機器指令。因為cpu只認識0和1,所以機器指令是由)01組成的指令集。
程式**怎樣轉化成機器指令的?
程式**是通過編譯器,進過一下四個步驟形成最終二進位制可執行檔案:
預處理:程式經過cpp預處理器,刪除注釋,刪除define,展開巨集定義,新增行號,檔名標識等一些列操作,形成乙個.i檔案。
編譯:把預處理完成的.i檔案,進行詞法分析、語法分析、語義分析以及優化後產生彙編**檔案.asm。
彙編: 編譯器把彙編**轉化為cpu可以執行的二進位制機器指令模組.o檔案。
所謂巨集,就是一些命令組織在一起,作為乙個單獨命令完成乙個特定任務。機器指令的分類作業系統將機器指令分為,特權指令(不允許使用者程式使用指令),和非特權指令。
cpu作為計算機的大腦,用執行機器指令的方式支配計算機內/外部裝置。一些非常危險的指令是不允許使用者直接使用的,如記憶體清零指令。
為了在不同的情況下執行分別執行兩種指令,作業系統又把cpu分為兩種狀態:使用者態(此時cpu只能執行非特權指令)和核心態(特權和非特權指令都可以執行)。
cpu使用者態下執行應用程式。
cpu核心態下執行核心程式。
應用程式完成一次完整的裝置呼叫的步奏:核心是計算機上配置的底層軟體,是作業系統最基本,最核心的部分。實現作業系統核心功能的那些程式就是核心程式。應用程式首先,利用作業系統提供的庫函式,進行系統呼叫(執行陷入指令),請求作業系統的核心服務,cpu從使用者態切換到核心態。
核心程式,呼叫用硬體驅動程式操作硬體裝置,完成以後利用中斷處理程式,將cpu核心態再切回使用者態。
核心程式功能主要包括兩個方面
原語:是一種特殊的程式,其執行具有原子性(裝置驅動,cpu切換),要麼不執行,要麼一次性執行完畢中間不能中斷。類似巨集的概念。cpu使用者態和核心態是怎樣切換實現的呢?答案是中斷。
由於作業系統管理工作,比如程序切換,分配i/o裝置等,都需要特權指令,因此cpu需要從使用者態轉為核心態,中斷可以使cpu從使用者態切換為核心態,使作業系統獲得計算機的控制權。
中斷分類
中斷可以分為內中斷和外中斷兩種型別。
按照中斷訊號**於區分乙個完整外中斷處理步驟:cpu在使用者態下,依次執行機器指令,每次執行完乙個指令以後,cpu都要檢查是否有外部中斷訊號。
如果檢測到外部中斷訊號,在從使用者態切換到核心態之前,需要保護被中斷程序執行的上下文環境。
根據中斷訊號,轉入相應作業系統中斷處理程式,處理中斷,cpu從使用者態切換到核心態執行系統呼叫。
完成處理以後,需要恢復中斷程序的cpu環境,執行現場。然後從核心態轉到使用者態,切回原來程序繼續往下執行。
作業系統作為使用者和計算機硬體之間的中間層,需要向上層的使用者和應用程式提供一些簡單易用的服務介面;主要包括命令介面和程式介面。
使用者可以直接通過終端(terminal)輸入命令(cd,cat,netstat,ps,df等 ),直接完成系統呼叫;還可以通過編寫應用程式呼叫作業系統提供的程式介面(open(…),write(…)),完成系統呼叫。
「系統呼叫」 是作業系統提供給應用程式使用的一組介面,是一種可**用程式呼叫的特殊函式;應用程式可以發出系統呼叫請求來獲得作業系統的服務。計算機中的各種共享資源都由作業系統統一管理,使用者程式想要作業系統資源,例如檔案管理,必須通過系統呼叫的方式向作業系統發出服務請求,由作業系統代為完成。保證系統的穩定和安全性,防止使用者非法操作。需要注意的是作業系統提供的系統呼叫,並不是我們通常編寫程式時所使用的庫函式。為了降低程式設計的複雜度,現代高階語言一般會把相應的系統呼叫封裝成庫函式,方便程式設計師使用。
應用程式執行乙個系統呼叫的完整步驟:
傳遞系統呼叫引數,例如write(引數)
執行陷入指令,中斷操作(cpu從使用者態向核心態切換)
cpu進入核心態, 執行系統呼叫相應的服務程式
執行完畢,中斷,從核心態向使用者態切換,返回使用者程式
作業系統執行機制
cpu 運算器,控制器,暫存器,快取記憶體 兩類暫存器 控制和狀態暫存器 重要 程式暫存器pc 記錄將要取出指令的位址 指令暫存器ir 記錄最近取出的指令 程式狀態字psw 記錄處理器的執行狀態 需求保護 併發,共享 兩種cpu狀態 核心態 執行作業系統程式 使用者態 執行使用者程式 特權指令 只能...
作業系統執行機制
cpu上會執行兩種程式 作業系統核心程式和應用程式 開機的時候跑的是作業系統核心程式,適當的時候,作業系統會讓出cpu使用權。cpu的狀態有兩種 核心態和使用者態,管態和目態。psw 程式狀態暫存器 0表示核心態,1表示使用者態。核心態 使用者態 執行一條特權指令,修改psw為1,意味著作業系統主動...
作業系統(四)作業系統的執行機制
目錄 1.4 作業系統的執行機制 1.4.1 核心程式 應用程式 1.4.2 特權指令 非特權指令 1.4.3 核心態 使用者態 1.4.4 作業系統的核心 1.4.5 小結 作業系統其實也是一種程式,程式的執行過程也就是cpu執行一行行機器指令的過程。區別於一般程式設計師開發的應用程式,實現作業系...