发信人: sungang(笨刚)
整理人: sungang(2003-09-16 10:49:23), 站内信件
|
1.5.3 网络I/O和文件系统
除了在对多处理器和多线程的支持之外,FreeBSD 5.0中还做了很多I/O方面的工作。在网络驱动方面,FreeBSD 5.0中实现了很多有意义的工作,例如校验和计算的负载分离技术,就是说对于网络数据包的校验和计算不再由系统内核来完成,而是由网卡上的处理芯片来完成。由于一个数据包通常需要计算两次校验和:IP校验和和TCP/UDP校验和,因此这显然减少了系统负担,对于高网络流量的系统意义重大。
另一个非常有意义的工作被称为零复制,它主要用来解决网络数据在网卡、系统内存之间的多次重复复制的问题。我们知道一个普通的PCI总线的背板带宽约1Gbit/s,这对于目前的网络处理来讲,实在是比较小的,而一个数据包只要在PCI总线上多传递几次,就把PCI总线带宽给完全占满了。零复制就是通过地址映射与对齐操作,使得系统不去复制数据包,内核直接访问I/O地址空间中的数据执行处理过程。
在网络负载比较大的情况下,网络界面会频繁的中断系统,这也造成了非常大的系统负载。虽然一些硬件,例如在多处理器主板中常用到的高级可编程中断控制器APIC,或者一些高性能网卡,可以将多个中断合并起来统一中断系统,但高性能网络条件下的一秒钟仍会发生数万次中断,仍然会导致严重的系统性能瓶颈。这种情况下,使用中断其实是不合适的,反而使用一种笨方法:轮询,会更好的降低系统负载。FreeBSD 5.0就可以根据情况,将I/O处理方式设置为半轮询方式。
上面提到的这几种种特性,对于千兆网络处理具备非常大的意义,通过这些技术,FreeBSD上达到了在大数据包尺寸下的千兆流量。
如果说在网络I/O方面的新特性主要是改善性能,那么在文件系统方面,一些性能改善的新特性,如改善目录搜索文件性能的dirhash等特性已经合并到4.x版本中了,FreeBSD 5.0的工作就是提供更多的新功能。
对于海量存储系统,一个非常有用的功能是可以创建文件系统的快照,文件系统的快照是非常高级的文件系统能力,它在海量文件系统的快速备份、访问和恢复等方面很有意义。FreeBSD 5.0对于UFS添加了这个新特性,使得可以生成多个不同时间的快照。这种特性使得FreeBSD系统能够用于作为具备数TB存储空间的存储服务器。
FreeBSD 5.0中对于安全的改善也是非常巨大的,文件系统可以具备更为复杂的属性,例如可以具备访问控制列表属性。传统Unix使用所有用户、同组用户和用户本身三个级别来控制文件的访问权限,这是一种非常粗粒度的访问控制方法,更详细的方法是使用访问控制列表,这样才能实现多级别的安全控制。例如Windows NT/2000中所使用的ACL。事实上,访问控制列表不但要系统支持,关键是文件系统也必须具备额外的属性,才能保存访问控制列表信息,很多传统的Unix文件系统并不具备这个特性,但在FreeBSD 5.0中,UFS已经具备了这个功能。
事实上,访问控制列表只是FreeBSD 5.0的安全特性中的很小一部分,一个致力于发展安全BSD:TrustedBSD的计划,已经合并到FreeBSD 5.0开发中,这将导致FreeBSD 5.0本身的安全特性将非常丰富,足以满足安全操作系统的需要。
|
|