unix/linux内核在系统里扮演什么角色?
不仅仅是FreeBSD系统,每一个操作系统都有一个内核---从MS-DOS、Windows到高级终端大型机,但是各种系统对内核的态度不同,有些系统花费了很大精力对用户隐藏内核。不管是Windows或UNIX系统的发行版本都有一个默认的内核,而且每次发行一个新版本时,所做的改动大部分为新设备提供了驱动支持。内核负责遥相呼应以连接到系统的设备,这也就是为什么Windows需要为新的或以前不支持的设备安装驱动程序的原因,而且一般都需要重新启动系统--因为内核已经被修改了,为了使用新的内核,系统必须重新启动,否则就要求系统能够将新设备作为一个内核扩展或都模块载入。
从内核的构架来看,FreeBSD使用微内核(microkernel)构架,也就是说内核较小而且是模块化的。Windows NT和Mach(Mac OS X基于的内核)是微内核的另外几个例子,在这些系统中,新设备一般都被伪内核模块加入系统中---这些模块可能在系统运行过程中装载和卸载而不用重新编译内核。但是Linux和Windows 9x系统是整体内核(monolithic kernel),其中的内核代码都从性能角度考虑,尽可能地进行了优化并且使得开发人员维护起来也很容易,但每次往系统中加入新设备之后,会要求系统管理员重新编译内核。
这并不是一个十分准确的描述---Linux正在尽量将内核模块化,FreeBSD的内核因为这些不同的原因而必须重新编译,微内核和整体内核之间的不同很大各应骒一个理论问题,不仅仅是在设备支持上有着不同,二者之间最基本的不同在于,微内核提供了一个支持非系统调用的用户处理级别或环,而不用全部在系统内部完成,使得岩代大郎的核心精简蛭了只包含精华的程序,也就是说内核中包含的都是必须要求以监护模式执行状态的最高级别的部分,是为了增加内核运行的健壮性,并保证内核处理过程容易理解和管理,同时也容易实现设备的模块化。
尽管上述都挺好的,不幸的是满足每种设备类型和选项都可模块化而且都可在运行时,进行装载要求的崊就和主同一样不现实,在有了一定的FreeBSD使用经验之后,读者脍体会到这一点,会发现无论如何也不可避免地需要重新编译内核。
Windows内核在哪里?
在Windows中内核是C:WindowsSystem中的可执行文件:
UNIX内核在哪里?
在很多UNIX系统中,通常放置内核的位置位于文件系统顶部的根目录;而FreeBSD系统的内核是放在/boot中的。