发信人: liangvy() 
整理人: hahalee(1999-03-17 20:30:07), 站内信件
 | 
 
 
翻译    :Liangvy E-mail  : [email protected] 原著    :FreeBSD核心入门(日文版) 大木敦雄
  1。1概述         FreeBSD可以在PC/AT兼容机器上运行。CPU是i386,i486,Pentium, Pentium Pro以及其兼容芯片等。 1。1。1(略)         1,理论地址: 2个13 bit 长+32 bit 长         2,线形地址:32 bit 长的空间         3,物理地址:32 bit 长的空间 1。1。2进程的虚拟空间         1,text部分                 这部分是执行文件的的text领域,也就是机器语言部分,对于这个             部分的空间在机器上的物理内存页是共有的,还有,这部分最后的变量             地址是etext。         2,data和bss部分                 执行文件的data部分,也就是初始化的数据段和执行文件指定的内             存变量。内存变量在开始的时候以0填充。这一段空间可以读写。它的             边界也是以edata和end的地址做结尾。进程的malloc()等内存分配的             操作的时候,地址的增加方向向bss空间进行。         3,stack部分                 也就是进程执行的时候的stack空间,这部分空间(从地址的最高位             开始可以伸缩),其对于物理内存,伸缩程度由核心自动执行。 1。2kernel的configure         freebsd的kernel构成文件在/usr/src/sys的目录下面。下面的子目录做一个     介绍。         compile 编译核心的目录。         conf    configure的目录。         ddb     核心调试的sounre code的目录。         dev     一部分的drivers的source code的目录。         gnu     浮点运算的仿真以及ex2fs文件系统的source code目录。         i386    依赖于pc/at机器的目录,以下介绍它的字目录。                 apm     suspend一些节电程序。                 boot    不是kernel本身的东西,只是一些怎么从开机到读入kernel                         的boot program的source code。                 conf    config的一些依赖data。                 isa     isa bus的驱动程序类的source code。                 eisa    eisa bus的驱动程序类的source code。                 include 对pc/at的一些include files                 i386    对pc/at的一些核心code                 ibcs2,linux 使各类的os的执行文件在freebsd上执行的code         isofs/cd9660                 cd-rom在unix文件系统上操作的的有关code         kern    核心code         libkern 核心库的source code         miscfs  实现unix文件系统的code         msdosfs 在unix上操作ms-dos文件系统的有关code         net     实现network功能的基本部分code         netatalk                 实现appletalk network功能code         netinet 实现internet network功能的code         netipx  实现ipx功能的code         netns   实现ns network的code         netkey  实现网络加密部分的功能的code         nfs     实现nfs服务         pc98    对于pc98的支持         pccard  对pcmcia的支持         pci     对pci bus的驱动程序的source code         scsi    对cd-rom,hard disk,tape 等的scsi驱动程序的source code         sys     独立于机器体系结构的一部分code         ufs     unix file system 的支持code         vm      虚拟内存管理的部分 1。2。1配置的操作----config command         在root权限下,config,make实行后,可以得到简单的kernel。         *configure file         移动到/usr/src/sys/i386/config看看。                 GENERIC 从cd-rom等安装freebsd的时候对应于defaule kernel                         的配置file                 LINT    kernel组合功能的网罗的的配置file         下面4个是对配置很有必要的的依赖data file                 Makefile.386    config生成的Makefile file的template.                 devices.i386    对于unix filesystem可能的block型的device                                 名字和major号的对照表                 files.i386      记录kernel功能组合的基础上,依赖于pc/at                                 机器的功能名称和各种功能实现的source code                                  file的名字表。                 options.i386    记录配置项目的表。         还有,majors.i386是记录对应驱动器的I/O表和major号的一个文件。         于核心配置没关系。         对于新的i/o设备,如果要做device driver,对pc/at,要在files.i386(没         有的话在/usr/src/sys/conf/files)追加相应的行,不然就不能把它加入         到核心里面。         追加的格式为                 相对path名      optional        device-name device-driver
          对于配置文件,首先,要设置cpu,bus,i/o设备,多少用户等。例如对于GENERIC                 machine "i386"                 cpu     "I386_CPU"                 cpu     "I486_CPU"                 cpu     "I586_CPU"                 cpu     "I686_COU"                 ident   GENERIC                 maxusers 10         当作为server时候,应该把最大user设置大一点,以提高系统性能。         下一步,指定options,对于GENERIC                 options MATH_EMULATE    #support for x87 emulation                 options INET            #interNETworing                 options FFS             #Berkeley Fast Filesystem                 options NFS             #Network Filesystem                 ......         options指定的名字xxx等,如果在/usr/src/sys/conf/options或者在         /usr/src/sys/i386/conf/options.i386中记载的时候,应在对应的opt_XXX.h中写入         。没有的话,作为cc命令行的参数定义"-D"在Makefile里面追加。对于XXX的格式应该         是                 相对path名      optional xxx         下一步,对于config                 config  kernel  root    on wd0                 (略)         配置文件剩下的部分应该是bus,i/o等一些硬件配置,一般有controller,device,         disk,tape四类。例如                 controller      isa0                 controller      eisa0                 controller      pci0         等。         第二层的device和controller,记录了一些bus设备的连接。ISA的情况是                 device          device_name     at isa? 参数                 controller      controller_name at isa? 参数         EISA和PCI就相对简单一点:                 device          device_name                 controller      controller_name         device_name里指定的设备名是,串口,并口,网络等装置。         第三层的disk和tape为                 disk    disk_name at 控制设备名 drive 号                 tape    tape_name at 控制设备名 drive 号         SCSI接口卡作为第二层的控制装置记录的同时                 controller      scbus0         作为通用的scsi控制设备。因此,对于它的hard disk,tape,cd-rom,mo设备,有                 device  sd0                 device  st0                 device  cd0                 device  od0         等,它可以自动识别和分配号码。         对于其他的scsi设备,有                 device  pt0     at scbus?         这些东西(bus,scsi,i/o),在生成的ioconf.c以及相应的include中有反映。         configure的最后,不是一些物理设备,而是kernel内部的一些软设置                 pseudo-device   理论设备名         首先,要考虑以下两个设备:                 pseudo-device   pty     16      #ttys - can go as high as 256                 pseudo-device   log             #syslog interface (/dev/klog)         network使用的场合,应该有下面两个                 pseudo-device   loop                 pseudo-device   ether         这种情况下,最好有                 pseudo-device   bpfilter 4      #berkeley packet filter                 pseudo-device   tun      1      #Tunnel driver ( PPP)         想做floppy的时候,要                 pseudo-device   vn      #Vnode driver ( turns a file into a device)         (代续)
  -- ※ 修改:.hahalee 于 Mar 15 09:50:20 修改本文.[FROM: 202.100.219.8] ※ 来源:.网易 BBS bbs.netease.com.[FROM: www2.dt.sanyo.co.jp]
  | 
 
 
 |