欢迎来到天天文库
浏览记录
ID:14083877
大小:1.80 MB
页数:472页
时间:2018-07-25
《linux0.01内核源代码及注释》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Bootsect.s(1-9)!!SYS_SIZEisthenumberofclicks(16bytes)tobeloaded.!0x3000is0x30000bytes=196kB,morethanenoughforcurrent!versionsoflinux!SYS_SIZE是要加载的节数(16字节为1节)。0x3000共为1234560x7c000x00000x900000x100000xA0000system模块代码执行位置线路0x90200!0x30000字节=192kB(上面Linus估算错了),对于当前的版本空间已足够了。!SYSSIZE=0x3000!指编译连接
2、后system模块的大小。参见列表1.2中第92的说明。!这里给出了一个最大默认值。!!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版权所有!!bootsect.s被bios-启动子程序加载至0x7c00(31k)处,并将自己!移到了地址0x90000(576k)处,并跳转至那里。!472!它然后使用BIOS中断将'setup'直接加载到自己的后面(0x90200)(576.5k),!并将system加载到地址0x10000处。!!注意!目前的内核系统最大长度限制为(8*65536)(512k)字节,即使是在!将
5、来这也应该没有问题的。我想让它保持简单明了。这样512k的最大内核长度应该!足够了,尤其是这里没有象minix中一样包含缓冲区高速缓冲。!!加载程序已经做的够简单了,所以持续的读出错将导致死循环。只能手工重启。!只要可能,通过一次取取所有的扇区,加载过程可以做的很快的。.globlbegtext,begdata,begbss,endtext,enddata,endbss!定义了6个全局标识符;.text!文本段;begtext:.data!数据段;begdata:.bss!堆栈段;begbss:.text!文本段;SETUPLEN=4!nrofsetup-sectors!setu
6、p程序的扇区数(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.!根文件系统设备使用与引导时同样的软驱设备;!0x301-firstpartitiononfirstdriveetc!根文件系统设备在第一个硬盘的第一个分区上,等等;ROOT_DEV=0x306!指定根文件系统设备是第2个硬盘的第1个分区。这是Linux老式的硬盘命名!方式,具体值的含义如下:!设备号=主设备号*256+次设备号(也即dev_no=(maj
此文档下载收益归作者所有