使用者空間和核心空間

2021-08-28 21:51:43 字數 969 閱讀 9180

應用程式是從頭到尾執行單個任務。 模組只是預先註冊自己以便服務於將來的某個請求,,模組初始化函式的任務就是為以後呼叫模組函式預先做準備,就像模組說:「我在這,並且我能做這些工作。」模組的退出函式將在模組被解除安裝前呼叫,他告訴核心:「我要離開了,不要再讓我做任何事了。」

應用程式在退出時,可以不管資源的釋放或其他清除工作,但模組的退出函式必須仔細撤銷初始化函式所做的一切。

應用程式可以呼叫它並未定義的函式,這是因為連線過程能夠解析外部引用從而使用適當的函式庫。而模組僅僅被鏈結到核心,因此它能呼叫的函式僅僅是由核心匯出的那些函式,不存在任何可鏈結的函式庫。

應用程式開發過程的段錯誤是無害的,並且總是可以使用偵錯程式跟蹤到原始碼中的問題所在,而乙個核心錯誤即使不影響整個系統,也至少會殺死當前程序。

核心執行在最高端別,應用程式執行在最低級別(即使用者態),在使用者態,處理器控制著對硬體的直接訪問以及對記憶體的非授權訪問。

每個模式都有自己的記憶體對映,也即自己的位址空間。

每當應用程式執行系統呼叫或被硬體中斷掛起,unix將執行模式從使用者空間切換到核心空間。執行系統呼叫的核心**執行在程序上下文中,它代表呼叫程序執行操作,因此能夠訪問程序位址空間的所有資料。

使用者空間驅動程式的優點:

可以和整個c庫鏈結。

可以使用通常的偵錯程式除錯驅動程式**,不用費力的除錯正在執行的核心。

使用者空間驅動程式被掛起,簡單的殺掉就行了。

和核心記憶體不同,使用者記憶體可以換出,驅動程式很大但不經常使用,不會占用太多記憶體。

良好的驅動程式仍支援對裝置的併發訪問。

使用者空間驅動程式的缺點:

中斷在使用者空間不可用。

只有用過mmap對映/dev/mem才能直接訪問記憶體。

只有在呼叫ioperm過iopl後才能訪問i/o埠

響應時間慢。在客戶端和硬體直接傳遞資料需要上下文的切換。

如果驅動程式被換出到磁碟,響應時間會難以忍受。

使用者空間不能處理非常重要的裝置,包括網路介面和塊裝置。

Linux核心空間和使用者空間

在linux系統中存在程序的概念 程序的分類 使用者程序 執行在使用者空間的程序被稱為使用者程序 核心程序 執行在核心空間的程序被稱為核心程序 程序的空間 系統會為每乙個程序分0 4g的虛擬定址空間,在4g的空間中 0 3g 屬於使用者空間,用來執行使用者的相關程序 3 4g 屬於核心空間,用來執行...

核心空間與使用者空間

1.核心態與使用者態的區別 1 核心態 的 不受任何限制,可以訪問 所有處理器指令集 記憶體位址以及i o空間 2 使用者態的 只能訪問其位址空間的頁表項中規定的虛擬位址。2.使用者態到核心態的切換方式 1 系統呼叫 軟中斷的一種 由使用者程序主動發起 2 異常 當cpu在執行執行在使用者態下的程式...

核心空間與使用者空間

首先,這個概念的由來,我認為跟cpu的發展有很大關係,在目前cpu的保護模式下,系統需要對其賴以執行的資料進行保護,為了保證作業系統核心資料,我們把記憶體空間進行劃分,一部分為作業系統核心執行的空間,另一部分是應用程式執行的空間,所謂空間就是記憶體的位址。因此核心空間和使用者空間的概念就出現了。在3...