This page attempts to document some common myths and misconceptions centered around the FreeBSD operating system. Most of the material presented here is gathered from various mailing lists and public forums. This information is current for FreeBSD 6.0-RELEASE.
False. FreeBSD has supported SMP systems since sometime before version 4.0. This was an early version of the support done in a way that is called coarse SMP. It had the entire kernel under one big synchronization lock, meaning that only one process could access the kernel functionalities (such as disk and network I/O) at one time, regardless of the number of processors present in the system. In this model, different processes that have no need for kernel functions can execute simultaneously on different processors. The threading library did not support executing threads of a single process on different processors (called N:1 because all N threads of a single process are viewed by the kernel as a single thing and only one of the threads can execute on a processor).
Since version 5.3 (actually a lot
earlier but this was the first -STABLE release with the support) a different
model is used: fine-grained SMP. The big lock is still present but is
slowly being abandoned in favour of many smaller locks, meaning that many
processes can access the kernel, sometimes even if they are accessing the
same subsystem. There are three
interchangeable
threading libraries: libc_r (N:1),
libpthread (N:M) and libthr (1:1). Executing multiple threads on multiple processors
is well supported by the latter two.
For comparison, the coarse SMP approach is used in Linux 2.2 and NetBSD 2.0. SMP support in OpenBSD is still experimental (but also coarse). DragonflyBSD project is attempting to do fine-grained SMP, but the support is still not finished (remains at the level of FreeBSD 4.x as far as user applications are concerned). Newer Linux kernels and all Windows NT kernels have fine-grained SMP.
True. Non uniform memory access preferences (for example on some AMD Opteron systems) will not be heeded by FreeBSD.
False, but close. FreeBSD supports the following general-purpose filesystems: UFS/UFS2, ZFS, msdosfs, ext2, ntfs, iso9660, udf and reiserfs3. Of these, UFS/UFS2, msdosfs and ext2 are writeable, but the ext2 implementation doesn't support large files (>2GB) and journaling.
On the other hand, UFS/UFS2 is supported very well and comes close to the "one size fits all" ideal. It's also the only filesystem that supports SoftUpdates.
False. SoftUpdates and journaling are two different approaches to solving the same problem: to ensure consistency of filesystem data. SoftUpdates might be a bit faster and doesn't require additional storage space, but has a downside that fsck must be run after every system crash (by default this will happen as a background process) which is bad if the file system is too large. ZFS is the only journaling file system available for FreeBSD.
False. For examples, see here, here, here and here. The support was flaky and/or missing in FreeBSD 4.x, but since version 5.3 support is much better.
False. Both the base system and third-party applications can be installed
and upgraded with binary (pre-compiled) files. In case of the base system,
the sysinstall utility can do that from the installation CD-ROM or a
network server. For third-party applications, the pkg_add utility can
install software directly from binary packages (as well as any dependencies
it might have) that are located either locally or remotely on a FTP
server.
Installed packages can be repackaged with pkg_create -b. Binary packages
of applications are created directly from the ports tree by issuing
make package command in the appropriate directory.
Inconclusive. In the early 5.x releases there really were many problems
with the new threading library, which have mostly been fixed for the
5.3 release (first non-experimental release of the 5.x branch). In the
old 4.x branch MySQL could only be run with the linuxthreads port which
mimicked Linux 1:1 threading model. By this time, all those problems should be
part of history and for most workloads MySQL works fine, though there
are still occasional problem reports.
Those that require absolutely top performance should try running MySQL compiled with
the libthr (native 1:1 threading library) on FreeBSD 6.x.
Somewhat correct. This is an imprecise statement that can actually mean either of these two things:
False. Java software can be executed on FreeBSD either by Linux virtual machines (such as those officially provided by Sun and other Java vendors) or by native virtual machines. There are many ready-made ports/packages of Java software available. Running Java applets in Mozilla Firefox also works.
Unfortunately, running Java VMs on FreeBSD is not officially supported by Sun, so the native Java VMs are the result of independent and unofficial porting.