Linux 版 (精华区)
发信人: tcpip (俺的昵称改了), 信区: Linux
标 题: FreeBSD核心探讨(翻译)2(转寄)
发信站: 哈工大紫丁香 (Tue Aug 24 16:38:24 1999), 转信
发信人: reden (Offer 快快来啊 ~!), 信区: FreeBSD
标 题: FreeBSD核心探讨(翻译)2
发信站: BBS 水木清华站 (Mon Mar 29 19:45:04 1999)
标 题: FreeBSD核心探讨(翻译)2
作 者: liangvy (桃花岛主) 1999.03.15
1。3FreeBSD boot之前的工作
1。3。1pc/at机器的boot顺序
hard disk的最前面的一个block(512byte),叫做master boot recorder(MBR).这
里有启动限定的program和分区的信息。分区信息是指对于一个区是16byte长,最多
只能有4个区。16byte的内容是,分区哪里开始,哪里结束。哪种os,能否启动等。
对
于freebsd,安装的时候向MBR写入了boot easy.
磁盘的结构如下图表示:
block Number
#0 #1 #2 ... #14 #15 #16 #17
-------------------------------------------------------------
disk no used
label
-------------------------------------------------------------
<-boot->|<---------boot2-------------->| |<--unix file system--
FreeBSD用的block#0--#14的15个block里面,含有读入freebsd的程序,bootease
只在block#0里面,在15个block中并没有。它的作用
。读入mbr,找freebsd的分区
。读入最初的15个block,到物理内存中0x0001000
。跳转到相当于block#2的内存位置
然后,屏幕表示为:
。。。
。。。
boot:
(参数说明略)
它的source是/usr/src/sys/i386/boot/biosboot,make之后,生成两个文件:
boot1,boot2分别写入block#1,block#2--#14中。
一般,一个物理的unix分区理论上可以有8个,比如swap,unix system等。
boot2部分是boot program,它读入kernel的文件名和option。然后
。找boot label指定的分区。
。构造unix filesystem,找指定的kernel
。从开始执行文件,text,data的顺序向物理内存读入。对bss清零。
。以option的选择,向开始位置跳转。
1。3。2kernel的初始化动作
boot program执行之后,转向kernel的text段开始进行初始化,即先执行
locore.s的text段。因此是虚拟内存还没有发生作用,locore.s的开始部分必
须对offset进行补正。locore.s的作用是
。保存从boot program过来的option
。设定虚拟的stacker
。检测cpu的module
。对自己的bss空间进行0初始化
。为使虚拟内存工作,要保证最少的管理信息。然后是虚拟空间动作。
也就是,调用cpu有强的依赖关系的过程init386()(@i386/i386/machdep.c),
然后进行kernel内的管理信息初始化,i/o设备的登记,生成4个kernel process
,再调用main()(@kern/init_main.c)。当main()返回locore.s时,应该有如下
5个进程:
PID TT STAT TIME COMMAND
0 ?? DLs 0:00.17 (swapper)
1 ?? Is 0:00.19 /sbin/init --
2 ?? DL 0:56.60 (pagedaemon)
3 ?? DL 0:00.06 (vmdaemon)
4 ?? DL 6:07.65 (updata)
从locore.s返回到process #1,/sbin/init开始动作,然后转向freebsd的普通
动作。
init386()和main()的处理大致如下:
。init386()
GDT和LDT,IDT,task stages处理的初始化,例外处理等locore.s没做的
事情,虚拟内存初始化。然后,根据boot program的参数,增加物理内
存page数。然后,作成process #0的雏形。
。main()
逐步调用构成kernel模块的的初始化部分。
--
--
在江湖中,只要拿起了刀,就是一场无涯的梦。
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 159.226.21
.168]
--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: bin@mtlab.hit.edu.cn]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.887毫秒