音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

詳解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)利。

廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機(jī)號(hào)碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買(mǎi)家服務(wù):
賣(mài)家服務(wù):
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線時(shí)間周一至周五
9:00-17:30

關(guān)注官方微信號(hào),
第一時(shí)間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫(kù)提出的寶貴意見(jiàn),您的參與是維庫(kù)提升服務(wù)的動(dòng)力!意見(jiàn)一經(jīng)采納,將有感恩紅包奉上哦!