[BACK]Return to system CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / doc / roadmaps

File: [cvs.NetBSD.org] / src / doc / roadmaps / system (download)

Revision 1.11, Sun Jan 15 06:53:23 2012 UTC (9 years, 1 month ago) by dholland
Branch: MAIN
CVS Tags: yamt-pagecache-base9, yamt-pagecache-base8, yamt-pagecache-base7, yamt-pagecache-base6, yamt-pagecache-base5, yamt-pagecache-base4, tls-maxphys-base, tls-maxphys, tls-earlyentropy-base, tls-earlyentropy, riastradh-xf86-video-intel-2-7-1-pre-2-21-15, riastradh-drm2-base3, riastradh-drm2-base2, riastradh-drm2-base1, riastradh-drm2-base, riastradh-drm2, pgoyette-localcount-base, pgoyette-localcount-20170107, pgoyette-localcount-20161104, pgoyette-localcount-20160806, pgoyette-localcount-20160726, netbsd-7-nhusb-base-20170116, netbsd-7-nhusb-base, netbsd-7-nhusb, netbsd-7-base, netbsd-7-2-RELEASE, netbsd-7-1-RELEASE, netbsd-7-1-RC2, netbsd-7-1-RC1, netbsd-7-1-2-RELEASE, netbsd-7-1-1-RELEASE, netbsd-7-1, netbsd-7-0-RELEASE, netbsd-7-0-RC3, netbsd-7-0-RC2, netbsd-7-0-RC1, netbsd-7-0-2-RELEASE, netbsd-7-0-1-RELEASE, netbsd-7-0, netbsd-7, netbsd-6-base, netbsd-6-1-RELEASE, netbsd-6-1-RC4, netbsd-6-1-RC3, netbsd-6-1-RC2, netbsd-6-1-RC1, netbsd-6-1-5-RELEASE, netbsd-6-1-4-RELEASE, netbsd-6-1-3-RELEASE, netbsd-6-1-2-RELEASE, netbsd-6-1-1-RELEASE, netbsd-6-1, netbsd-6-0-RELEASE, netbsd-6-0-RC2, netbsd-6-0-RC1, netbsd-6-0-6-RELEASE, netbsd-6-0-5-RELEASE, netbsd-6-0-4-RELEASE, netbsd-6-0-3-RELEASE, netbsd-6-0-2-RELEASE, netbsd-6-0-1-RELEASE, netbsd-6-0, netbsd-6, matt-nb6-plus-nbase, matt-nb6-plus-base, matt-nb6-plus, localcount-20160914, khorben-n900, agc-symver-base, agc-symver
Branch point for: pgoyette-localcount
Changes since 1.10: +2 -2 lines

typo

$NetBSD: system,v 1.11 2012/01/15 06:53:23 dholland Exp $

NetBSD System Roadmap
=====================

This is a small roadmap document, and deals with the main system
aspects of the operating system.

The following projects will appear in NetBSD 6.0:
1. 64-bit time values supported
2. Better Kernel Modules support
5. namei() tactical changes
9. namei() strategic changes
10. emap (ephemeral mapping) support for i386 and amd64
11. support for mDNSResponder

The following projects may make it into future releases:
3. Full kernel preemption for real-time threads
4. POSIX shared memory
6. Better resource controls
7. Improved observability: online crashdumps, remote debugging
8. Processor and cache topology aware scheduler

We'll continue to update this roadmap as features and dates get firmed up.


Some explanations
=================

1. 64-bit time_t support
-------------------------

The Unix 32-bit time_t value will overflow in 2037 - any mortgage calculations
which use a time_t value are in danger of overflowing at the present time -
and to address this, 64-bit time_t values will be used to contain the number
of seconds since 1970. This was completed in 5.99.7 by Christos (with no libc
major bump - kudos and respect), and will be in 6.0.

Responsible: christos


2. Better Kernel Module Support
-------------------------------

Starting with 5.99.2, the kernel support for modules was enhanced by
ad, and GENERIC was switched over to be a MODULAR kernel.  Support
from booting from modules, like ffs, was introduced at the same time. 
Some work has been done by Luke Mewburn in this area to define module
locations and paths so that effective kernel development can be done
using modules. Kernel modules have been moved out of base.tgz and a new
modules.tgz has been created.

Responsible: ad, lukem


3. Full kernel preemption for real-time threads on non-x86
----------------------------------------------------------

With the revamp of the kernel concurrency model, much of the kernel is
fully multi-threaded and can therefore be preempted at any time.  In
support of lower context switch and dispatch times for real-time
threads, full kernel preemption is being implemented.  This has been
implemented already for i386 and x86_64 (and is in 5.0), but needs to
be extended to support ARM and other ports.  MIPS has this, as does
PowerPC, but it is not yet enabled.

Responsible: rmind


4. POSIX shared memory
----------------------

Implement POSIX shared memory facilities, which can be used to create
the shared memory objects and add the memory locations to the address
space of a process.  Changes were proposed on tech-kern, although
there were some concerns with the kernel implementation, and so a
different approach using wrapper functions on tmpfs is being aimed at
for 6.0.

Responsible: rmind


5. Incremental namei improvements, Phase 1
------------------------------------------

In NetBSD 5.99.15, some changes were made to split the namei() routine
up into logical parts, so that changes can be made to the constituent
parts in a less intrusive way. This is in the repository now, and will
be in 6.0.

Responsible: dholland


6. Better resource controls
---------------------------

A resource provisioning and control framework that extends beyond the
traditional Unix process limits.

Responsible: TBD


7. Improved observability: online crashdumps, remote debugging
--------------------------------------------------------------

XXX crashdumps while the system is running
XXX firewire support in libkvm

Responsible: TBD


8. Processor and cache topology aware scheduler
-----------------------------------------------

Implement the detection of the topology of the processors and caches. 
Improve the scheduler to make decisions about thread migration
according to the topology, to get better thread affinity and less
cache thrashing, and thus improve overall performance in modern SMP
systems. Code has been written, but did not show any performance
improvement. We will continue to monitor this area.

Responsible: rmind


9. Incremental namei improvements, Phase 2
------------------------------------------

Building on the namei() split which was introduced in 5.99.15 (see (5)
above), further changes will be introduced:  see the changes to namei
outlined in Message-ID:  <20080319053709.GB3951@netbsd.org> for more
information.  This will simplify the locking and behavior of namei()
calls within the kernel to resolve path names within file systems.

Responsible: dholland


10. Ephemeral Mapping
---------------------

Responsible: rmind


11. Multicast DNS and DNS Service Discovery
-------------------------------------------

mDNSResponder (also known as mdnsd on some systems) is a daemon invoked
at boot time to implement Multicast DNS and DNS Service Discovery. On Mac
OS X 10.6 (Snow Leopard), mDNSResponder is also the system-wide Unicast
DNS Resolver. Ty Sarna added support for mdnsd to NetBSD-current, and it
will appear in NetBSD 6.0.


Alistair Crooks
Sat Jan 14 11:40:49 PST 2012