Robert Watson rwatson at FreeBSD.org
Wed Aug 10 12:14:09 GMT 2005

On Wed, 10 Aug 2005, Momtchil Momtchev wrote:

> No, kqueue/kevent is not realtime, as the whole FreeBSD kernel doesn't 
> support hard real-time scheduling. In order to have hard real-time 
> scheduling you should have a fully preemtible kernel, which schedules 
> and preempts everything (even interrupt handlers). The RTCoreBSD uses a 
> two-kernel approach with a real-time microkernel which runs the FreeBSD 
> kernel as a process, providing a virtual interrupt controller. The 
> real-time processes run directly on the microkernel and can't directly 
> use the FreeBSD kernel services.

While FreeBSD is not a hard realtime system, it does have increasing 
propertis of one: FreeBSD 6.0 ships with kernel preemption enabled by 
default, and the priority propagation and priority management in the SMPng 
locking primitives moves in that direction also.  FreeBSD will preempt one 
running ithread with one associated with a new interrupt if the scheduler 
decides that's appropriate based on their priorities.  With Giant off most 
of the kernel, a lot of problems with deferred processing due to large 
lock size have gone away.

Robert N M Watson

More information about the freebsd-current mailing list