Inhoudsopgave
Het is onmogelijk alle verbeteringen aan NetBSD sinds de vorige versie, 1.6, op te sommen. Daarom staat hieronder een samenvatting van de belangrijkste nieuwe mogelijkheden in NetBSD 2.0.
Ondersteuning voor native threads is toegevoegd, gebaseerd op Scheduler Activations. Applicaties die native threads ondersteunen kunnen nu volledig gebruik maken van de hoog presterende NetBSD POSIX threads implementatie.
Multi-threading biedt parallellisme op applicatieniveau; meerdere threads binnen een proces kunnen gelijktijdig op meerdere processoren draaien; deze gelijktijdige verwerking vereist kernel ondersteuning voor threads, en dit is wat Scheduler Activations biedt.
Scheduler Activations is een efficiënte methode om N userland threads te koppelen aan M kernel threads, wat de "gelijktijdigheidsproblemen" van N:1 implementaties en de schaalbaarheidsproblemen van 1:1 implementaties vermijdt.
kqueue biedt een goed en efficiënt raamwerk voor het melden van gebeurtenissen. Gebeurtenissen die momenteel ondersteund worden zijn onder andere socket-, bestand-, directory-, fifo-, pipe-, tty- en apparaatveranderingen en het in de gaten houden van processen en signalen.
kqueue wordt door alle schrijfbare bestandssystemen in NetBSD ondersteund (met uitzondering van Coda) en alle device drivers met ondersteuning voor poll(2).
systrace houdt processen in de gaten en in bedwang met behulp van toegangsprotocollen voor systeemaanroepen. Het systrace gereedschap kan gebruikt worden om te onderzoeken wat een onvertrouwde applicatie doet. Daarnaast kan het gebruikt worden om het systeem te beschermen tegen software bugs (zoals buffer overflows), door de toegang van een daemon tot het systeem te beperken.
Ook kan systrace vermijden dat een programma als root gedraaid moet worden als het bijvoorbeeld maar twee systeemaanroepen als root hoeft te doen. Verhoogde privileges kunnen met systrace slechts aan die twee systeemaanroepen verleend worden.
FreeBSD's UFS2 is geport naar NetBSD. UFS2 is een extensie voor FFS die 64 block pointers en uitgebreide bestandsopslag. Naast alle andere verbeteringen is UFS2 beter geschikt voor bestandssystemen die groter dan 1 Terabyte zijn.
Er zijn verbeteringen toegebracht aan de Linux emulatie van NetBSD die het mogelijk maken de nieuwste Sun JDK/JRE voor Linux te draaien. Tests hebben aangetoond dat het nu net zo goed werkt als op Linux.
Zoals de naam suggereert controleert Verified Exec een cryptografische hash voordat het toegestaan is binaries en scripts uit te voeren.
Dit kan gebruikt worden om te vermijden dat een systeem binaries of scripts draait die illegaal gewijzigd of geïnstalleerd zijn. Daarnaast kan Verified Exec gebruikt worden om het gebruik van script verwerkers te beperken door alleen geautoriseerde scripts te starten en interactief gebruik te verbieden.
De cryptographic disk driver (cgd) kan gebruikt worden om schijven of partities te coderen met enkele sterke encryptie-algoritmen als AES (Rijndael) en Blowfish. Cgd kan ook gebruikt worden om swap te coderen.
NetBSD 2.0 heeft ondersteuning voor onuitvoerbare stack en heap op veel platformen. Deze funtionaliteit is altijd ingeschakeld op ondersteunde plaformen, en zorgt ervoor dat delen van de stack en heap onuitvoerbaar gemaakt worden als ze als schrijfbaar gemarkeerd zijn. Dit maakt het moeilijker potentieële buffer overflows uit te buiten.
NetBSD 2.0 heeft een nieuwe toolchain die gebaseerd is op gcc 3.3.3 en 2.14. gcc 3.3.3 bevat ondersteuning voor een aantal extra CPU's en verbeterde ondersteuning voor i386 en andere architecturen. Door de ondersteuning van nieuwe platformen in gcc 3.3.3 werd het mogelijk NetBSD naar nog meer platformen te porten.
Tijdens de ontwikkeling van NetBSD 2.0 is NetBSD hevig geoptimaliseerd. Dit zijn een aantal van de verbeteringen van aan de schaalbaarheid van NetBSD:
De code voor geheugenallocatie voor de buffer cache, wat gebruikt wordt voor het cachen van metadata van het bestandssysteem, is herschreven. In de standaardconfiguratie van NetBSD 2.0 gebruikt de buffer cache tot 15% van het fysieke geheugen (instelbaar met sysctl(8)).
Socket buffer invoeging is nu O(C). Dit versnelt aanzienlijk applicaties die grote socket buffers gebruiken.
i386 pmap(9) gebruikt nu een splay tree in plaats van een gelinkte lijst, waardoor fork(2) veel beter schaalt als het aantal processen groter wordt.
Er wordt nu een red-black tree gebruikt om vm_map te doorzoeken. Dit versnelt de allocatie van geheugen, en het refereren van geheugen als er veel vm_map items zijn.
De SuperH SH-5 is een bi-endian, 32 en 64-bit CPU, en dit is een nieuwe port naar de SH-5 Cayman evaluation board. Ondersteuning voor een aantal generieke, machineonafhankelijke device drivers is aanwezig.
De i386 port heeft nu ondersteuning voor SMP en heeft een nieuw raamwerk voor ACPI en energiebeheer dat gebruik maakt van Intel's ACPI implementatie.
SMP wordt nu ondersteund op macppc. Hardware ondersteuning voor nieuwere G4 modellen is toegevoegd.
pkgsrc is significant uitgebreid en bevat nu meer dan 5000 pakketten. Er worden een aantal nieuwe platformen ondersteund, inclusief Darwin, FreeBSD, IRIX, Linux, OpenBSD en Solaris. Aan ondersteuning voor andere platformen (inclusief AIX, BSD/OS en HP-UX) wordt nu gewerkt. Dankzij onze nieuwe, goed overdraagbare, bootstrap kit is het veel eenvoudiger geworden pkgsrc te porten naar nieuwe besturingssystemen.