Linux 使用者態和核心態

2021-10-25 04:44:08 字數 975 閱讀 5263

系統呼叫是通向作業系統本身的介面,是面向底層硬體的。通過系統呼叫,可以使得使用者態執行的程序與硬體裝置(如cpu、磁碟、印表機等)進行互動,是作業系統留給應用程式的乙個介面。

由作業系統實現

執行時,需要從使用者態切換到核心態

使用者態:當乙個程序在執行使用者自己的**時處於使用者執行態(使用者態),此時特權級最低,為3級,是普通的使用者程序執行的特權級,大部分使用者直接面對的程式都是執行在使用者態。

核心態:當乙個程序因為系統呼叫陷入核心**中執行時處於核心執行態(核心態),此時特權級最高,為0級。執行的核心**會使用當前程序的核心棧,每個程序都有自己的核心棧。

主要區別:許可權高低

使用者態切換到核心態的3種方式

(1)系統呼叫

這是使用者態程序主動要求切換到核心態的一種方式。使用者態程序通過系統呼叫申請使用作業系統提供的服務程式完成工作。例如fork()就是執行了乙個建立新程序的系統呼叫。系統呼叫的機制和新是使用了作業系統為使用者特別開放的乙個中斷來實現,如linux的int 80h中斷。

中斷的知識下面這篇部落格介紹的很詳細:

中斷實現的基本原理

以 乙個簡單的io操作為例:

2)異常

當cpu在執行執行在使用者態下的程式時,發生了一些沒有預知的異常,這時會觸發由當前執行程序切換到處理此異常的核心相關程序中,也就是切換到了核心態,如缺頁異常。

(3)外圍裝置的中斷

當外圍裝置完成使用者請求的操作後,會向cpu發出相應的中斷訊號,這時cpu會暫停執行下一條即將要執行的指令而轉到與中斷訊號對應的處理程式去執行,如果前面執行的指令時使用者態下的程式,那麼轉換的過程自然就會是 由使用者態到核心態的切換。如硬碟讀寫操作完成,系統會切換到硬碟讀寫的中斷處理程式中執行後邊的操作等。

Linux使用者態和核心態

一 unix linux的體系架構 如上圖所示,從巨集觀上來看,linux作業系統的體系架構分為使用者態和核心態 或者使用者空間和核心 核心從本質上看是一種軟體 控制計算機的硬體資源,並提供上層應用程式執行的環境。使用者態即上層應用程式的活動空間,應用程式的執行必須依託於核心提供的資源,包括cpu資...

Linux 核心態和使用者態

1.核心態 當乙個任務 程序 執行系統呼叫而陷入核心 中執行時,我們就稱程序處於核心執行態 或簡稱為核心態 此時處理器處於特權級最高的 0級 核心 中執行。當程序處於核心態時,執行的核心 會使用當前程序的核心棧。每個程序都有自己的核心棧。2.使用者態 當程序在執行使用者自己的 時,則稱其處於使用者執...

linux核心態使用者態

概述 linux系統使用者態和核心態相關知識,linux核心版本為3.10.79。使用者態和核心態定義 核心態 cpu可以訪問記憶體所有資源,包括外圍裝置.可以進行處理器工作模式切換,程式的切換。使用者態 只能受限的訪問記憶體,且不允許訪問外圍裝置,不可以進行處理器模式切換。為什麼分使用者態和核心態...