After almost three years of development, the first 5.0-RELEASE in January 2003 was widely anticipated, featuring support for advanced multiprocessor and application
threading, and for the
UltraSPARC and
IA-64 platforms. The first 5-STABLE release was 5.3 (5.0 through 5.2.1 were cut from
-CURRENT). The last release from the 5-STABLE branch was 5.5 in May 2006. The largest architectural development in FreeBSD 5 was a major change in the low-level kernel locking mechanisms to enable better
symmetric multi-processor (SMP) support. This released much of the kernel from the MP lock, which is sometimes called the
Giant lock. More than one process could now execute in kernel mode at the same time. Other major changes included an
M:
N native threading implementation called Kernel Scheduled Entities (KSE). In principle this is similar to
Scheduler Activations. Starting with FreeBSD 5.3, KSE was the default threading implementation until it was replaced with a 1:1 implementation in FreeBSD 7.0. FreeBSD 5 also significantly changed the block I/O layer by implementing the
GEOM modular disk I/O request transformation framework contributed by
Poul-Henning Kamp. GEOM enables the simple creation of many kinds of functionality, such as
mirroring (gmirror), encryption (
GBDE and
GELI). This work was supported through sponsorship by
DARPA. While the early versions from the 5.x were not much more than developer previews, with pronounced instability, the 5.4 and 5.5 releases of FreeBSD confirmed the technologies introduced in the FreeBSD 5.x branch had a future in highly stable and high-performing releases. ==FreeBSD 6==