page_offset
記憶體對映
| 使用者空間 | 核心空間 |
物理 a:0 1g b:3g c:4g
b: 定義為 page_offset
0-1g: 和核心空間又有豐富的內容,我還沒有整理,以後再說。
-------------------------------------
arch/x86/include/asm/page_types.h
#define page_offset ((unsigned long)__page_offset
-> __page_offset
arch/x86/include/asm/page_64_types.h:
#define __page_offset _ac(0xffff880000000000, ul)
arch/x86/include/asm/page_32_types.h:
#define __page_offset _ac(config_page_offset, ul)
-->config_page_offset
arch/x86/configs/i386_defconfig:
config_page_offset=0xc0000000
-->ac
include/linux/const.h
#ifdef __assembly__
#define _ac(x,y) x
#else
#define __ac(x,y) (x##y)
#define _ac(x,y) __ac(x,y)
#endif
***********************************==
我們就很清晰的看到,在x86下,32時page_offset 為0xc0000000(3g),也是核心空間和使用者空間的分界。
使用者空間和核心空間
應用程式是從頭到尾執行單個任務。模組只是預先註冊自己以便服務於將來的某個請求,模組初始化函式的任務就是為以後呼叫模組函式預先做準備,就像模組說 我在這,並且我能做這些工作。模組的退出函式將在模組被解除安裝前呼叫,他告訴核心 我要離開了,不要再讓我做任何事了。應用程式在退出時,可以不管資源的釋放或其他...
Linux核心空間和使用者空間
在linux系統中存在程序的概念 程序的分類 使用者程序 執行在使用者空間的程序被稱為使用者程序 核心程序 執行在核心空間的程序被稱為核心程序 程序的空間 系統會為每乙個程序分0 4g的虛擬定址空間,在4g的空間中 0 3g 屬於使用者空間,用來執行使用者的相關程序 3 4g 屬於核心空間,用來執行...
核心空間與使用者空間
1.核心態與使用者態的區別 1 核心態 的 不受任何限制,可以訪問 所有處理器指令集 記憶體位址以及i o空間 2 使用者態的 只能訪問其位址空間的頁表項中規定的虛擬位址。2.使用者態到核心態的切換方式 1 系統呼叫 軟中斷的一種 由使用者程序主動發起 2 異常 當cpu在執行執行在使用者態下的程式...