詳解Linux內(nèi)核定義的常量
出處:互聯(lián)網(wǎng) 發(fā)布于:2011-09-04 13:44:48
引言
操作系統(tǒng)是一個(gè)用來(lái)和硬件打交道并為用戶(hù)程序提供一個(gè)有限服務(wù)集的低級(jí)支撐軟件。一個(gè)計(jì)算機(jī)系統(tǒng)是一個(gè)硬件和軟件的共生體,它們互相依賴(lài),不可分割。計(jì)算機(jī)的硬件,含有外圍設(shè)備、處理器、內(nèi)存、硬盤(pán)和其他的電子設(shè)備組成計(jì)算機(jī)的發(fā)動(dòng)機(jī)。但是沒(méi)有軟件來(lái)操作和控制它,自身是不能工作的。完成這個(gè)控制工作的軟件就稱(chēng)為操作系統(tǒng),在Linux的術(shù)語(yǔ)中被稱(chēng)為“內(nèi)核”,也可以稱(chēng)為“”。Linux內(nèi)核的主要模塊(或組件)分以下幾個(gè)部分:存儲(chǔ)管理、CPU和進(jìn)程管理、文件系統(tǒng)、設(shè)備管理和驅(qū)動(dòng)、網(wǎng)絡(luò)通信,以及系統(tǒng)的初始化(引導(dǎo))、系統(tǒng)調(diào)用等。今天我們要了解的是Linux內(nèi)核定義的常量。希望能給大家?guī)?lái)幫助。
1 初始定義
定義了你的機(jī)器上的地址轉(zhuǎn)換__virt_to_phys()。這個(gè)宏用于把虛擬地址轉(zhuǎn)換為一個(gè)物理地址。通常情況下:phys = virt - PAGE_OFFSET PHYS_OFFSET
2 解壓縮符號(hào)
l ZTEXTADDR
解壓縮器的地址地址。由于當(dāng)你調(diào)用解壓縮器代碼時(shí),通常關(guān)閉MMU,因此這里并不討論虛擬地址和物理地址的問(wèn)題。通常你在這個(gè)地址處調(diào)用內(nèi)核,開(kāi)始引導(dǎo)內(nèi)核。它不需要在RAM中,只需要位于FLASH或其他只讀或讀/寫(xiě)的可尋址的存儲(chǔ)設(shè)備中。
l ZBSSADDR
解壓縮器的初始化為0的工作區(qū)的起始地址。必須位于RAM中,解壓縮器會(huì)替你把它初始化為0,此外,需要關(guān)閉MMU。
l ZRELADDR
解壓縮內(nèi)核將被寫(xiě)入的地址和終的執(zhí)行地址。必須滿(mǎn)足:
__virt_to_phys(TEXTADDR) == ZRELADDR
內(nèi)核的開(kāi)始部分被編碼為與位置無(wú)關(guān)的代碼。
l INITRD_PHYS
放置初始RAM盤(pán)的物理地址。僅當(dāng)你使用bootpImage時(shí)相關(guān)(這是一種非常老的param_struct結(jié)構(gòu))
l INITRD_VIRT
初始RAM盤(pán)的虛擬地址。必須滿(mǎn)足:
__virt_to_phys(INITRD_VIRT) == INITRD_PHYS
l PARAMS_PHYS
param_struct 結(jié)構(gòu)體或tag lis的物理地址,用于給定內(nèi)核執(zhí)行環(huán)境下的不同參數(shù)。
3 內(nèi)核符號(hào)
l PHYS_OFFSET
RAM個(gè)BANK的物理地址地址。
l PAGE_OFFSET
RAM個(gè)BANK的虛擬地址地址。在內(nèi)核引導(dǎo)階段,虛擬地址PAGE_OFFSE將被映射為物理地址PHYS_OFFSET,它應(yīng)該與TASK_SIZE具有相同的值。
l TASK_SIZE
一個(gè)用戶(hù)進(jìn)程的值,單位為byte。用戶(hù)空間的堆棧從這個(gè)地址處向下增長(zhǎng)。
任何一個(gè)低于TASK_SIZE的虛擬地址對(duì)用戶(hù)進(jìn)程來(lái)說(shuō)都是不可見(jiàn)的,因此,內(nèi)核通過(guò)進(jìn)程偏移對(duì)每個(gè)進(jìn)行進(jìn)行動(dòng)態(tài)的管理。我把這叫做用戶(hù)段。任何高于TASK_SIZE的對(duì)所有進(jìn)程都是相同的,稱(chēng)之為內(nèi)核段。(換句話(huà)說(shuō),你不能把IO映射放在低于TASK_SIZE和PAGE_OFFSET的位置處。)
l TEXTADDR
內(nèi)核的虛擬起始地址,通常為PAGE_OFFSET 0x8000。內(nèi)核映射必須在此結(jié)束。
l DATAADDR
內(nèi)核數(shù)據(jù)段的虛擬地址,不能在使用解壓縮器的情況下定義。
l VMALLOC_START
l VMALLOC_END
用于限制vmalloc( )區(qū)域的虛擬地址。此地址必須位于內(nèi)核段。 通常,vmalloc( )區(qū)域在的虛擬RAM地址以上開(kāi)始VMALLOC_OFFSET字節(jié)。
l VMALLOC_OFFSET
Offset normally incorporated into VMALLOC_START to provide a hole between virtual RAM and the vmalloc area. We do this to allow out of bounds memory accesses (eg, something writing off the end of the mapped memory map) to be caught. Normally set to 8MB.
4 構(gòu)架相關(guān)的宏
l BOOT_MEM(pram,pio,vio)
pram——指定了RAM起始的物理地址,必須始終存在,并應(yīng)等于PHYS_OFFSET。
pio——是供arch/arm/kernel/debug-armv.S中的調(diào)試宏使用的,包含IO的8 MB區(qū)域的物理地址。
vio——是8MB調(diào)試區(qū)域的虛擬地址。
這個(gè)調(diào)試區(qū)域?qū)⒈晃挥诖a中(通過(guò)MAPIO函數(shù))的隨后的構(gòu)架相關(guān)代碼再次進(jìn)行初始化。
l BOOT_PARAMS
參見(jiàn) PARAMS_PHYS.
l FIXUP(func)
機(jī)器相關(guān)的修正,在存儲(chǔ)子系統(tǒng)被初始化前運(yùn)行。
l MAPIO(func)
機(jī)器相關(guān)的函數(shù),用于IO區(qū)域的映射(包括上面的調(diào)試區(qū))。
l INITIRQ(func)
用于初始化中斷的機(jī)器相關(guān)的函數(shù)。
5 關(guān)于Linux內(nèi)核
Linux是的自由電腦操作系統(tǒng)內(nèi)核。它是一個(gè)用C語(yǔ)言寫(xiě)成,符合POSIX標(biāo)準(zhǔn)的類(lèi)Unix操作系統(tǒng)。Linux早是由芬蘭黑客 Linus Torvalds為嘗試在英特爾x86架構(gòu)上提供自由的類(lèi)Unix操作系統(tǒng)而開(kāi)發(fā)的。該計(jì)劃開(kāi)始于1991年,在計(jì)劃的早期有一些Minix 黑客提供了協(xié)助,而今天無(wú)數(shù)程序員正在為該計(jì)劃無(wú)償提供幫助。 技術(shù)上說(shuō)Linux是一個(gè)內(nèi)核。“內(nèi)核”指的是一個(gè)提供硬件抽象層、磁盤(pán)及文件系統(tǒng)控制、多任務(wù)等功能的系統(tǒng)軟件。一個(gè)內(nèi)核不是一套完整的操作系統(tǒng)。一套基于Linux內(nèi)核的完整操作系統(tǒng)叫作Linux操作系統(tǒng),或是GNU/Linux。
5.1 架構(gòu)
Linux是一個(gè)一體化內(nèi)核(monolithic kernel)系統(tǒng)。設(shè)備驅(qū)動(dòng)程序可以完全訪問(wèn)硬件。Linux內(nèi)的設(shè)備驅(qū)動(dòng)程序可以方便地以模塊化(modularize)的形式設(shè)置,并在系統(tǒng)運(yùn)行期間可直接裝載或卸載。
5.2 可移植性
盡管Linus Torvalds的初衷不是使Linux成為一個(gè)可移植的操作系統(tǒng),今天的Linux卻是被廣泛移植的操作系統(tǒng)內(nèi)核。從掌上電腦iPaq到巨型電腦IBM S/390,甚至于微軟出品的游戲機(jī)XBOX都可以看到Linux內(nèi)核的蹤跡。Linux也是IBM超級(jí)計(jì)算機(jī)Blue Gene的操作系統(tǒng)。
5.3 發(fā)表形式
原先Linus Torvalds將Linux置于一個(gè)禁止任何商業(yè)行為的條例之下,但之后改用GNU通用公共許可證第二版。該協(xié)議允許任何人對(duì)軟件進(jìn)行修改或發(fā)行,包括商業(yè)行為,只要其遵守該協(xié)議,所有基于Linux的軟件也必須以該協(xié)議的形式發(fā)表,并提供源代碼。
Linus Torvalds曾經(jīng)公開(kāi)聲稱(chēng)將Linux置于GNU通用公共許可證之下是他一生中所做的“的決定”。
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類(lèi)作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- ARM技術(shù)架構(gòu)與應(yīng)用開(kāi)發(fā)實(shí)踐指南2026/1/6 10:40:19
- 嵌入式實(shí)時(shí)操作系統(tǒng)(RTOS)選型與移植技術(shù)指南2025/12/31 10:42:31
- 工業(yè)嵌入式系統(tǒng):通信接口技術(shù)選型與抗干擾設(shè)計(jì)實(shí)踐2025/12/15 14:36:53
- 深入解析嵌入式 OPENAMP 框架:開(kāi)啟異核通信新時(shí)代2025/7/22 16:27:29
- 一文快速了解OPENWRT基礎(chǔ)知識(shí)2025/7/14 16:59:04
- 編碼器的工作原理及作用1
- 超強(qiáng)整理!PCB設(shè)計(jì)之電流與線寬的關(guān)系2
- 三星(SAMSUNG)貼片電容規(guī)格對(duì)照表3
- 電腦藍(lán)屏代碼大全4
- 國(guó)標(biāo)委發(fā)布《電動(dòng)汽車(chē)安全要求第3部分:人員觸電防護(hù)》第1號(hào)修改單5
- 通俗易懂談上拉電阻與下拉電阻6
- 繼電器的工作原理以及驅(qū)動(dòng)電路7
- 電容單位8
- 跟我學(xué)51單片機(jī)(三):?jiǎn)纹瑱C(jī)串口通信實(shí)例9
- 一種三極管開(kāi)關(guān)電路設(shè)計(jì)10









