機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
讀核日記(五)
讀核日記(五)
 更新時(shí)間:2009-8-12 16:54:38  點(diǎn)擊數(shù):0
【字體: 字體顏色

進(jìn)來忙得不得了,這時(shí)才體會(huì)出工作和在學(xué)校真的不同.有時(shí)候自己想做的事,很難如愿.不過我這一段時(shí)間沒有太偷懶.對于linux 386 保護(hù)模式,內(nèi)存管理,作了一個(gè)初步的學(xué)習(xí).當(dāng)初學(xué)習(xí)操作系統(tǒng)課時(shí)老覺得理論沒用. 如今,真的時(shí)間了,才知道理論知識(shí)是多么的缺乏.也許是書到用時(shí)方恨少

閑話少說

目前,linux 被移植到了各種機(jī)器上.如apple .但我個(gè)人認(rèn)為linux的真正魅力.還是在i386機(jī)器上.因?yàn)?/font>llinus前輩在寫linux 時(shí)的初衷,就是在386 平臺(tái)上實(shí)現(xiàn)類unixos

linux使用了intel 80386系列處理器的”保護(hù)模式”.操作系統(tǒng)的資源的管理和分配.80386硬件存儲(chǔ)管理和保護(hù)機(jī)制實(shí)現(xiàn)

虛擬存儲(chǔ)器,是一種擴(kuò)種內(nèi)存的設(shè)計(jì)方案.他來源于當(dāng)初主存非常昂貴的年代.用到了程序的局部性原則,即程序在運(yùn)行時(shí)沒有必要全部裝入內(nèi)存.支部當(dāng)前要運(yùn)行的那一部分調(diào)入內(nèi)存即可

實(shí)際上,整個(gè)存儲(chǔ)系統(tǒng)是 高速緩存--- 內(nèi)存--- 硬盤 等多級(jí)存儲(chǔ)介質(zhì)構(gòu)成的,但這對程序原始透明的,比如我們在程序中執(zhí)行這樣一天指令

mov bx ,1997
mov ax ,[bx]

 

這樣地址是1997 的內(nèi)容背拷貝到了ax ,這樣由程序產(chǎn)生的地址時(shí)虛地址.這個(gè)地址與實(shí)際的物理地址是不同的.要有這個(gè)地址轉(zhuǎn)換到實(shí)際的物理地址,就需要有一個(gè)轉(zhuǎn)換機(jī)制.通常叫做MMU的硬件單元完成這個(gè)任務(wù)

所謂的保護(hù)機(jī)制就是在這個(gè)基礎(chǔ)上進(jìn)行的.它的目的是要使不同的程序段互不干涉.系統(tǒng)進(jìn)程與用戶進(jìn)程嚴(yán)格分開已達(dá)到系統(tǒng)安全與多用戶多進(jìn)程的要求.在linux 中通過給不同的任務(wù)分配不同的虛擬地址到物理地址的映射.來實(shí)現(xiàn)不同任務(wù)的切換與保護(hù).同時(shí).linux “可能是把系統(tǒng)進(jìn)程與用戶進(jìn)程分開(我不太確定,可能是把系統(tǒng)進(jìn)程的地址控制在100000以內(nèi)?,當(dāng)然在iipv通行中的共享內(nèi)存,由于操作不當(dāng)可能產(chǎn)生不可預(yù)料的后果).

另外,linux對統(tǒng)一任務(wù)也進(jìn)行了不同程度的保護(hù).它使用優(yōu)先級(jí)來決定的.比如內(nèi)核的優(yōu)先級(jí)是0,系統(tǒng)調(diào)用 :1 :2 用戶進(jìn)程3.在程序?qū)δ骋粋(gè)數(shù)據(jù)段進(jìn)行讀寫的時(shí)候,.應(yīng)縣檢查優(yōu)先級(jí),.在決定它運(yùn)行的優(yōu)先級(jí)或存取權(quán)限.

我想,這個(gè)優(yōu)先級(jí)一定會(huì)和struct_task 的某些表示調(diào)度優(yōu)先級(jí)的參數(shù)關(guān)聯(lián).

對于內(nèi)存管理,通常是有段式,頁式和段頁式三種方式.在這里討論的使者兩種方式的虛擬-物理轉(zhuǎn)換機(jī)制的不同.因?yàn)?/font>linux實(shí)行的是段頁式內(nèi)存管理.因此這兩種映射機(jī)制,也就必須都存在

段式管理,使用了一系列的可改變大小的地址集合進(jìn)行管理.它的好處是,可以充分利用物理內(nèi)存.缺點(diǎn)是難以管理,

通常在c 我們可以這樣定義一個(gè)段(此定義只是解釋段的概念,linux中絕不是如此)

typedef stucrt duan

{

struct duan * next ,*pre ;/*所所需指針*/

int tag;

iint begin ,end /*始末點(diǎn)*/

int size;

data data ; /*內(nèi)容*/

……..

}

以上實(shí)在是實(shí)際內(nèi)存中可能用到的段的數(shù)據(jù)結(jié)構(gòu).而我們在保護(hù)模式中,所謂的段是保護(hù)管理.大體上和匯編語言中基址尋址有些相似:他是實(shí)現(xiàn)虛擬-物理地址轉(zhuǎn)換的基礎(chǔ)(說白了,我個(gè)人認(rèn)為,把所有的段定義成一樣大就是頁,不過實(shí)際上我還沒看linux 是怎樣做的,所以千萬不要被我誤導(dǎo))

有一個(gè)基址 (base address)規(guī)定了在線性物理內(nèi)存中的開始地址

有一個(gè)限制位,(limit) 表示段內(nèi)最大偏移量,(也就是大小)

段的屬性 (attribute) 表示該段是否會(huì)被讀寫

這3 個(gè)屬性,包含在段的描述符中

所謂的描述符.是一個(gè)8個(gè)子節(jié)的存儲(chǔ)單元,其結(jié)構(gòu)大概如下:

字節(jié)0 -----0—7 位描述苻

字節(jié)1 ------8—15位描述符

字節(jié)2 -----0—7 位基址

字節(jié)3 -----8—15 位基址

字節(jié)4 -----16—24 段基址

字節(jié)5 -----存儲(chǔ)權(quán)限的字節(jié)

字節(jié)6 -----G| D|0|0| 16-19位段界限

字節(jié)7 -----31-—24 段基址

其中第五個(gè)字節(jié),是存取權(quán)字節(jié),它包含有好幾個(gè)標(biāo)志位,用來標(biāo)志該段是在內(nèi)存中,還是沒有.后者該段是用戶段或者是系統(tǒng)段之類的.被人水平有限.在此不一一說明.希望有興趣的朋友可以查一下資料,將給我們大家聽

在系統(tǒng)段中.有一個(gè)字節(jié).可以來定義系統(tǒng)段的類型,好像是有16 像標(biāo)志為有效的386.TSS,386中斷門,386陷阱門等等,在此不一一介紹.在此要弄清楚兩個(gè)名次 TSS(系統(tǒng)狀態(tài)標(biāo)) LDT(局部描述標(biāo)),在相關(guān)的資料中,經(jīng)常會(huì)碰到

LINUX的內(nèi)核中有一系列的描述苻表.像全局描述苻表(GDT),中斷描述苻表(IDT)還有上面介紹的LDT等等,在他們中間.定義了系統(tǒng)可用的描述苻,中斷門,等等.它的作用是使得機(jī)器的兼容性得到保證

LDT .則定義了一些和具體的任務(wù)相聯(lián)系的代碼段,數(shù)據(jù)段等等.描述苻表的內(nèi)數(shù)據(jù)結(jié)構(gòu)大致如下:

typedef struct desc_struct

{

unsigned long a,b;

}

后面用以下兩行完成了描述苻表的定義以及外部描述苻的定義:

desc_table[256]; //定義了可以在局部描述苻表中的最大描述苻量

extern dessc_table idt,gdt //外部的描述變量

至此,關(guān)于linux的分段機(jī)制大體上節(jié)講解完畢了,剩下的就是在寄存器與選擇器之間的映射,還有一些尋址方法

這部分內(nèi)容,大概和<<匯編語言>>中講的大同小異,在此不多費(fèi)唇舌

 
  • 上一篇: 讀核日記(六)
  • 下一篇: RedHat6.2服務(wù)器配置方案大全--第六章 Sendmail
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1