linux0.01內(nèi)核源代碼及注釋

linux0.01內(nèi)核源代碼及注釋

ID:14083877

大?。?.80 MB

頁數(shù):472頁

時(shí)間:2018-07-25

linux0.01內(nèi)核源代碼及注釋_第1頁
linux0.01內(nèi)核源代碼及注釋_第2頁
linux0.01內(nèi)核源代碼及注釋_第3頁
linux0.01內(nèi)核源代碼及注釋_第4頁
linux0.01內(nèi)核源代碼及注釋_第5頁
資源描述:

《linux0.01內(nèi)核源代碼及注釋》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、Bootsect.s(1-9)!!SYS_SIZEisthenumberofclicks(16bytes)tobeloaded.!0x3000is0x30000bytes=196kB,morethanenoughforcurrent!versionsoflinux!SYS_SIZE是要加載的節(jié)數(shù)(16字節(jié)為1節(jié))。0x3000共為1234560x7c000x00000x900000x100000xA0000system模塊代碼執(zhí)行位置線路0x90200!0x30000字節(jié)=192kB(上面Linus估算錯(cuò)了),對于當(dāng)前的版本空間已足夠了。!SYSSIZE=0x3000!指編譯連接

2、后system模塊的大小。參見列表1.2中第92的說明。!這里給出了一個(gè)最大默認(rèn)值。!!bootsect.s(C)1991LinusTorvalds!!bootsect.sisloadedat0x7c00bythebios-startuproutines,andmoves!iselfoutofthewaytoaddress0x90000,andjumpsthere.!!Itthenloads'setup'directlyafteritself(0x90200),andthesystem!at0x10000,usingBIOSinterrupts.!!NOTE!currentlys

3、ystemisatmost8*65536byteslong.Thisshouldbeno!problem,eveninthefuture.Iwanttokeepitsimple.This512kB!kernelsizeshouldbeenough,especiallyasthisdoesn'tcontainthe!buffercacheasinminix!!Theloaderhasbeenmadeassimpleaspossible,andcontinuos!readerrorswillresultinaunbreakableloop.Rebootbyhand.It!loadsp

4、rettyfastbygettingwholesectorsatatimewheneverpossible.!!以下是前面這些文字的翻譯:!bootsect.s(C)1991LinusTorvalds版權(quán)所有!!bootsect.s被bios-啟動(dòng)子程序加載至0x7c00(31k)處,并將自己!移到了地址0x90000(576k)處,并跳轉(zhuǎn)至那里。!472!它然后使用BIOS中斷將'setup'直接加載到自己的后面(0x90200)(576.5k),!并將system加載到地址0x10000處。!!注意!目前的內(nèi)核系統(tǒng)最大長度限制為(8*65536)(512k)字節(jié),即使是在!將

5、來這也應(yīng)該沒有問題的。我想讓它保持簡單明了。這樣512k的最大內(nèi)核長度應(yīng)該!足夠了,尤其是這里沒有象minix中一樣包含緩沖區(qū)高速緩沖。!!加載程序已經(jīng)做的夠簡單了,所以持續(xù)的讀出錯(cuò)將導(dǎo)致死循環(huán)。只能手工重啟。!只要可能,通過一次取取所有的扇區(qū),加載過程可以做的很快的。.globlbegtext,begdata,begbss,endtext,enddata,endbss!定義了6個(gè)全局標(biāo)識符;.text!文本段;begtext:.data!數(shù)據(jù)段;begdata:.bss!堆棧段;begbss:.text!文本段;SETUPLEN=4!nrofsetup-sectors!setu

6、p程序的扇區(qū)數(shù)(setup-sectors)值;BOOTSEG=0x07c0!originaladdressofboot-sector!bootsect的原始地址(是段地址,以下同);INITSEG=0x9000!wemoveboothere-outoftheway!將bootsect移到這里--避開;SETUPSEG=0x9020!setupstartshere!setup程序從這里開始;SYSSEG=0x1000!systemloadedat0x10000(65536).!system模塊加載到0x10000(64kB)處;ENDSEG=SYSSEG+SYSSIZE!wher

7、etostoploading!停止加載的段地址;!ROOT_DEV:0x000-sametypeoffloppyasboot.!根文件系統(tǒng)設(shè)備使用與引導(dǎo)時(shí)同樣的軟驅(qū)設(shè)備;!0x301-firstpartitiononfirstdriveetc!根文件系統(tǒng)設(shè)備在第一個(gè)硬盤的第一個(gè)分區(qū)上,等等;ROOT_DEV=0x306!指定根文件系統(tǒng)設(shè)備是第2個(gè)硬盤的第1個(gè)分區(qū)。這是Linux老式的硬盤命名!方式,具體值的含義如下:!設(shè)備號=主設(shè)備號*256+次設(shè)備號(也即dev_no=(maj

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。