提供自NetBSD1.6版本以来每一个改进的列表是不大可能的,尽管如此,我们在下面提供了一个NetBSD2.0主要新特性的概要介绍。
基于调度程序激活,对本地线程的支持已经添加到了NetBSD当中。支持本地线程的应用程序现在可以充分利用高性能的NetBSD
POSIX线程实现的优势。
多线程提供了应用程序级别的并行;具有同样进程的多线程可以并发的运行在不同的CPU之上;并发需要内核支持线程,而调度程序激活便提供了这个支持。
调度程序激活是将N公共程序线程映射到M内核线程的有效方法,它同时避免了N:1实现的并发问题和1:1实现的可测量问题。
Kqueue提供了一个可声明的高效的时间告知框架。目前支持的事件有socket,文件,路经,先进先出,管道,tty以及设备改动,和监视进程以及信号。
Kqueue被NetBSD树下所有的可写文件系统(除了Coda外)以及所有支持poll(2)的设备驱动所支持。
Systrace通过强制系统调用的访问策略监视并且控制应用程序访问系统。Systrace的效用是可以用来跟踪不可信任应用程序对系统的访问。另外,它可以用来通过抑制常驻程序对系统的访问来保护文件系统免遭软件漏洞(如缓冲区溢出)。
Systrace的优先权功能可以被用于消除当仅有一至两个系统调用请求优先权的时候,在root下运行庞大的,不可信任的程序。
FreeBSD的UFS2已经被移植到NetBSD上。UFS2是对FFS的扩展,添加了64位块指针以及对扩展文件存储的支持。在其他的扩展之中,UFS2允许文件系统大于1T(1000GB)。
正如名字所暗示的,Verified
Exec在允许执行二进制文件和脚本之前验证加密哈希表。
这将被用来阻止文件系统运行被非法修改或安装的二进制文件和脚本。另外,Verified
Exec还可以被用于限制脚本解释器仅仅对授权脚本进行操作并且允许交互式使用。
NetBSD2.0开始在很多硬件平台上支持non-executable映射。如果是enable状态,当他们被标记为可写的,栈和堆的一部分就将会被置为不可执行(non-executable)。这使得发掘潜在的缓冲区溢出更为困难。
NetBSD2.0支持一种新的基于gcc
NetBSD 2.0在开发过程中作了相当多的优化。以下是部分可测量性改进:
·
高速缓冲存储器的缓冲区内存分配模式被重写,它用于缓冲文件系统的元数据。在默认设置下,高速缓冲存储器的缓冲区至多可以用到15%的物理内存(通过 sysctl(8)可调)。
·
Socket缓冲区插入目前是O(C)。这可以为使用大socket缓冲区的应用程序提供坚固的性能推进。
·
i386 pmap(9) 现在使用伸展树来代替以前的链表,这使得 fork(2) 的比例(scale)在处理数目越多时表现越好。
·
现在使用红黑树来查找vm_map的入口。 如果有很多vm_map的入口,这将提升内存分配和内存引用(memory
referencing)的速度。
SuperH SH-5是一个bi-endian,32位以及64位允许的CPU,这是对SH-5
Cayman evaluation board的新的移植。对于众多普通的,与机器无关的设备驱动(包括音频),SISI以及以太网卡的支持已经完成了。