Wed . 19 May 2019

DragonFly BSD

dragonfly bsd, dragonfly bsd operating system
DragonFly BSD is a free and open source Unix-like operating system created as a fork of FreeBSD 48 Matthew Dillon, an Amiga developer in the late 1980s and early 1990s and a FreeBSD developer between 1994 and 2003, began work on DragonFly BSD in June 2003 and announced it on the FreeBSD mailing lists on 16 July 20033

Dillon started DragonFly in the belief that the methods and techniques being adopted for threading and symmetric multiprocessing in FreeBSD 54 would lead to poor system performance and cause maintenance difficulties He sought to correct these suspected problems within the FreeBSD project5 Due to ongoing conflicts with other FreeBSD developers over the implementation of his ideas,6 his ability to directly change the FreeBSD codebase was eventually revoked Despite this, the DragonFly BSD and FreeBSD projects still work together contributing bug fixes, driver updates, and other system improvements to each other

Intended to be the logical continuation of the FreeBSD 4x series, DragonFly's development has diverged significantly from FreeBSD's, including a new Light Weight Kernel Threads LWKT implementation, a lightweight ports/messaging system, and feature-rich HAMMER file system7 Many concepts planned for DragonFly were inspired by the AmigaOS operating system8

Contents

  • 1 System design
    • 11 Kernel
      • 111 Threading
      • 112 Shared resources protection
      • 113 Virtual kernel
    • 12 Package management
    • 13 CARP support
    • 14 HAMMER file system
    • 15 devfs
    • 16 Application snapshots
  • 2 Development and distribution
    • 21 Distribution media
    • 22 Release history
  • 3 See also
  • 4 References
  • 5 External links

System designedit

Kerneledit

DragonFly's kernel is a hybrid, containing features of both monolithic and microkernels, such as the message passing capability of microkernels enabling larger portions of the OS to benefit from protected memory, as well as retaining the speed of monolithic kernels for certain critical tasks The messaging subsystem being developed is similar to those found in microkernels such as Mach, though it is less complex by design DragonFly's messaging subsystem has the ability to act in either a synchronous or asynchronous fashion, and attempts to use this capability to achieve the best performance possible in any given situation9

According to developer Matthew Dillon, progress is being made to provide both device input/output I/O and virtual file system VFS messaging capabilities that will enable the remainder of the project goals to be met The new infrastructure will allow many parts of the kernel to be migrated out into userspace; here they will be more easily debugged as they will be smaller, isolated programs, instead of being small parts entwined in a larger chunk of code Additionally, the migration of select kernel code into userspace has the benefit of making the system more robust; if a userspace driver crashes, it will not crash the kernel10

System calls are being split into userland and kernel versions and being encapsulated into messages This will help reduce the size and complexity of the kernel by moving variants of standard system calls into a userland compatibility layer, and help maintain forwards and backwards compatibility between DragonFly versions Linux and other Unix-like OS compatibility code is being migrated out similarly8

Threadingedit

As support for multiple processor architectures complicates symmetric multiprocessing SMP support,6 DragonFly BSD now limits its support to the x86-64 platform11 DragonFly originally ran on the x86 architecture, however as of version 40 it is no longer supported Since version 110, DragonFly supports 1:1 userland threading one kernel thread per userland thread,12 which is regarded as a relatively simple solution that is also easy to maintain8 Inherited from FreeBSD, DragonFly also supports multi-threading13

In DragonFly, each CPU has its own thread scheduler Upon creation, threads are assigned to processors and are never preemptively switched from one processor to another; they are only migrated by the passing of an inter-processor interrupt IPI message between the CPUs involved Inter-processor thread scheduling is also accomplished by sending asynchronous IPI messages One advantage to this clean compartmentalization of the threading subsystem is that the processors' on-board caches in Symmetric Multiprocessor Systems do not contain duplicated data, allowing for higher performance by giving each processor in the system the ability to use its own cache to store different things to work on8

The LWKT subsystem is being employed to partition work among multiple kernel threads for example in the networking code there is one thread per protocol per processor, reducing competition by removing the need to share certain resources among various kernel tasks6

Shared resources protectionedit

In order to run safely on multiprocessor machines, access to shared resources like files, data structures must be serialized so that threads or processes do not attempt to modify the same resource at the same time In order to prevent multiple threads from accessing or modifying a shared resource simultaneously, DragonFly employs critical sections, and serializing tokens to prevent concurrent access While both Linux and FreeBSD 5 employ fine-grained mutex models to achieve higher performance on multiprocessor systems, DragonFly does not6 Until recently, DragonFly also employed spls, but these were replaced with critical sections

Much of the system's core, including the LWKT subsystem, the IPI messaging subsystem and the new kernel memory allocator, are lockless, meaning that they work without using mutexes, with each process operating on a single CPU Critical sections are used to protect against local interrupts, individually for each CPU, guaranteeing that a thread currently being executed will not be preempted12

Serializing tokens are used to prevent concurrent accesses from other CPUs and may be held simultaneously by multiple threads, ensuring that only one of those threads is running at any given time Blocked or sleeping threads therefore do not prevent other threads from accessing the shared resource unlike a thread that is holding a mutex Among other things, the use of serializing tokens prevents many of the situations that could result in deadlocks and priority inversions when using mutexes, as well as greatly simplifying the design and implementation of a many-step procedure that would require a resource to be shared among multiple threads The serializing token code is evolving into something quite similar to the "Read-copy-update" feature now available in Linux Unlike Linux's current RCU implementation, DragonFly's is being implemented such that only processors competing for the same token are affected rather than all processors in the computer14

DragonFly switched to multiprocessor safe slab allocator, which requires neither mutexes nor blocking operations for memory assignment tasks15 It was eventually ported into standard C library in the userland, where it replaced FreeBSD's malloc implementation16

Virtual kerneledit

Since release 18 DragonFly has a virtualization mechanism similar to User-mode Linux,17 allowing a user to run another kernel in the userland The virtual kernel vkernel is run in completely isolated environment with emulated network and storage interfaces, thus simplifying testing kernel subsystems and clustering features810

The vkernel has two important differences from the real kernel: it lacks many routines for dealing with the low-level hardware management and it uses C standard library libc functions in place of in-kernel implementations wherever possible As both real and virtual kernel are compiled from the same code base, this effectively means that platform-dependent routines and re-implementations of libc functions are clearly separated in a source tree18

The virtualized platform vkernel runs on is built on top of high-level abstractions provided by the real kernel These abstractions include the kqueue-based timer, the console mapped to the virtual terminal where vkernel is executed, the disk image and virtual kernel Ethernet device VKE, tunneling all packets to the host's tap interface19

Package managementedit

Third-party software is available on DragonFly as binary packages via pkgng or from a native ports collection – DPorts20

DragonFly originally used the FreeBSD Ports collection as its official package management system, but starting with the 14 release switched to NetBSD's pkgsrc system, which was perceived as a way of lessening the amount of work needed for third-party software availability521 Eventually, maintaining compatibility with pkgsrc proved to require more effort than was initially anticipated, so the project created DPorts, an overlay on top of the FreeBSD Ports collection2223

CARP supportedit

The initial implementation of Common Address Redundancy Protocol commonly referred to as CARP was finished in March 200724 As of 2011, CARP support is integrated into DragonFly BSD25

HAMMER file systemedit

Main article: HAMMER

Alongside the Unix File System, which is typically the default file system on BSDs, DragonFly BSD supports HAMMER file system It was developed specifically for DragonFly BSD to provide a feature-rich yet better designed analogue of the increasingly popular ZFS81026 HAMMER supports configurable file system history, snapshots, checksumming, data deduplication and other features typical for file systems of its kind1727

The next generation of HAMMER file system HAMMER2 is being developed by Dillon28 DragonFly BSD 380 was the first released to include support for HAMMER2, though it is declared as not ready for general use in release notes29

devfsedit

In 2007 DragonFly BSD received a new device file system devfs, which dynamically adds and removes device nodes, allows accessing devices by connection paths, recognises drives by serial numbers and removes the need for pre-populated /dev file system hierarchy It was implemented as a Google Summer of Code 2009 project30

Application snapshotsedit

DragonFly BSD supports Amiga-style resident applications feature: it takes a snapshot of a large, dynamically linked program's virtual memory space after loading, allowing future instances of the program to start much more quickly than it otherwise would have This replaces the prelinking capability that was being worked on earlier in the project's history, as the resident support is much more efficient Large programs like those found in KDE Software Compilation with many shared libraries will benefit the most from this support31

Development and distributionedit

As with FreeBSD and OpenBSD, the developers of DragonFly BSD are slowly replacing K&R style C code with more modern, ANSI equivalents Similar to other operating systems, DragonFly's version of the GNU Compiler Collection has an enhancement called the Stack-Smashing Protector ProPolice enabled by default, providing some additional protection against buffer overflow based attacks It should be noted that as of 23 July 2005update, the kernel is no longer built with this protection by default31

Being a derivative of FreeBSD, DragonFly has inherited an easy-to-use integrated build system that can rebuild the entire base system from source with only a few commands The DragonFly developers use the Git version control system to manage changes to the DragonFly source code Unlike its parent FreeBSD, DragonFly has both stable and unstable releases in a single source tree, due to a smaller developer base6

Like the other BSD kernels and those of most modern operating systems, DragonFly employs a built-in kernel debugger to help the developers find kernel bugs Furthermore, as of October 2004update, a debug kernel, which makes bug reports more useful for tracking down kernel-related problems, is installed by default, at the expense of a relatively small quantity of disk space When a new kernel is installed, the backup copy of the previous kernel and its modules are stripped of their debugging symbols to further minimize disk space usage

Distribution mediaedit

The operating system is distributed as a Live CD and Live USB full X11 flavour available that boots into a complete DragonFly system1730 It includes the base system and a complete set of manual pages, and may include source code and useful packages in future versions The advantage of this is that with a single CD you can install the software onto a computer, use a full set of tools to repair a damaged installation, or demonstrate the capabilities of the system without installing it Daily snapshots are available from the master site for those who want to install the most recent versions of DragonFly without building from source

Like the other free open source BSDs, DragonFly is distributed under the terms of the modern version of the BSD license

Release historyedit

Version Date32 Changes
46 000000002016-08-02-00002 August 2016
  • Improved i915 and Radeon support
  • NVM Express support
  • Improved SMP performance
  • Improved network performance
  • Preliminary support for UEFI booting
  • autofs imported from FreeBSD, amd removed
44 000000002015-12-07-00007 December 2015
  • GCC 52
  • gold now the default linker
  • Improved i915 and Radeon support
  • Complete overhaul of the locale system
  • Collation support for named locales
  • Regex library replaced with TRE
  • Symbol versioning support in libc
  • Numerous HAMMER cleanups and fixes
42 000000002015-06-29-000029 June 2015
  • GCC 511
  • Improved i915 and Radeon support
  • Improved sound support
  • Improved support for memory controller and temperature sensors
  • Path MTU Discovery enabled by default
  • SCTP support removed
  • Sendmail replaced by DMA
  • GNU Info pages removed
40 000000002014-11-25-000025 November 2014
  • Non-locking, multi-threading PF
  • Related networking better-threaded for improved throughput
  • Procctl security feature in kernel
  • Support for up to 256 CPUs
  • Improved wireless networking support
  • Rust and Free Pascal now supported
  • i915 support greatly improved
  • GCC 474
38 000000002014-06-04-00004 June 2014
  • Dynamic root and PAM support
  • USB4BSD now default
  • Native C-State support for Intel CPUs
  • TCP port token split for better TCP connect2 performance
  • GCC 473
  • HAMMER2 in system not ready for production use
  • Final 32-bit release
36 000000002013-11-25-000025 November 2013
  • SMP contention reduction
  • Kernel modesetting for Intel and AMD GPUs
  • Hardware acceleration for Intel GPUs up to Ivy Bridge33
34 000000002013-04-29-000029 April 2013
  • New package manager, DPorts, introduced
  • GCC 47
  • Improved CPU usage and tmpfs performance under extreme load
32 000000002012-11-02-00002 November 2012
  • Multiprocessor-capable kernel became mandatory
  • Performance improvements in the scheduler
  • USB4BSD imported from FreeBSD
  • PUFFS imported from NetBSD
30 000000002012-02-22-000022 February 2012
  • Multiprocessor-capable kernel became the default
  • HAMMER performance improvements
  • TrueCrypt-compatible encryption support
  • dm-crypt replaced with a compatible BSD-licensed library
  • Enhanced POSIX compatibility
  • Device driver for ECC memory
  • Major network protocol stack and SMP improvements
  • ACPI-related improvements
210 000000002011-04-26-000026 April 2011
  • Giant lock removed from every area except the virtual memory subsystem
  • HAMMER deduplication
  • GCC 44
  • Bridging system rewritten
  • Major performance improvements
28 000000002010-10-30-000030 October 2010
  • Wi-Fi stack imported from FreeBSD
  • Logical volume management
  • dm-crypt
  • New disk scheduler
  • Reduced giant lock usage
26 000000002010-04-06-00006 April 2010
  • Swapcache
  • tmpfs imported from NetBSD
  • HAMMER and general I/O improvements
24 000000002009-09-16-000016 September 2009
  • devfs
  • New AHCI driver
  • NFS improvements
  • Full x86-64 support
22 000000002009-02-17-000017 February 2009
  • HAMMER officially production-ready17
  • Major stability improvements
  • New release media: LiveCD and LiveUSB
20 000000002008-07-20-000020 July 2008
  • Major HAMMER improvements
112 000000002008-02-26-000026 February 2008
  • Sensor framework imported from FreeBSD
  • Bluetooth stack
  • GCC 41
  • DragonFly Mail Agent DMA, a stub MTA
  • Support for the 386 CPU dropped
  • Preliminary x86-64 support not functional
  • Experimental HAMMER support
110 000000002007-08-06-00006 August 2007
  • Userland threading system
  • Advanced Host Controller Interface support
  • GUID Partition Table support
18 000000002007-01-30-000030 January 2007
  • Virtual kernel implementation
16 000000002006-07-24-000024 July 2006
  • New random number generator
  • IEEE 80211 framework refactored
  • Major giant lock, clustering, and userland VFS improvements
  • Major stability improvements34
14 000000002006-01-07-00007 January 2006
  • GCC 34
  • pkgsrc used by default34
  • Citrus imported from NetBSD35
12 000000002005-04-08-00008 April 2005
  • TCP SACK
  • TCP Performance tuning
  • ALTQ and PF
  • Thread-local storage
  • Console over IEEE 1394
  • Namecache infrastructure rewritten
  • X11 support
  • pkgsrc support
10 000000002004-07-12-000012 July 2004
  • Technology showcase
  • New BSD Installer
  • LWKT subsystem and lightweight ports/messaging system
  • Mostly MP-safe networking stack
  • Lockless memory allocator
  • Variant symlinks
  • Application checkpointing support6

See alsoedit

  • Open Source Software portal
  • Comparison of BSD operating systems
  • Comparison of open-source operating systems
  • Comparison of operating system kernels

Referencesedit

  1. ^ "DragonFly BSD 46" Dragonfly BSD 2016-08-02 Retrieved 2016-08-03 
  2. ^ "DragonFly BSD License", DragonFly BSD, retrieved 17 January 2015 
  3. ^ Dillon, Matthew 16 July 2003, "Announcing DragonFly BSD!", freebsd-current mailing list, retrieved 26 July 2007 
  4. ^ Lehey, Greg 2001, Improving the FreeBSD SMP implementation pdf, USENIX, retrieved 22 February 2012 
  5. ^ a b Kerner, Sean Michael 10 January 2006, "New DragonFly Released For BSD Users", InternetNews, retrieved 20 November 2011 
  6. ^ a b c d e f Biancuzzi, Federico 8 July 2004, "Behind DragonFly BSD", O'Reilly Media, retrieved 20 November 2011 
  7. ^ Loli-Queru, Eugenia 13 March 2004, "Interview with Matthew Dillon of DragonFly BSD", OSNews, retrieved 22 February 2012 
  8. ^ a b c d e f Chisnall, David 15 June 2007, "DragonFly BSD: UNIX for Clusters", InformIT, retrieved 22 November 2011 
  9. ^ Hsu, Jeffery M, The DragonFly BSD Operating System pdf, retrieved 20 November 2011 
  10. ^ a b c Andrews, Jeremy 6 August 2007, "Interview: Matthew Dillon", KernelTrap, archived from the original on 15 May 2011 
  11. ^ "DragonFly BSD MP Performance Significantly Improved", OSNews, 16 November 2011, retrieved 19 November 2011 
  12. ^ a b Luciani, Robert 24 May 2009, M:N threading in DragonflyBSD PDF, BSDCon, archived from the original pdf on 23 December 2010 
  13. ^ Sherrill, Justin 11 January 2004, Paying off already, retrieved 20 November 2011 
  14. ^ Pistritto, Joe; Dillon, Matthew; Sherrill, Justin C; et al 24 April 2004, "Serializing token", kernel mailing list, retrieved 20 March 2012 
  15. ^ Bonwick, Jeff; Adams, Jonathan 3 January 2002, Magazines and Vmem: Extending the Slab Allocator to Many CPUs and Arbitrary Resources, USENIX, retrieved 20 November 2011 
  16. ^ Dillon, Matthew 23 April 2009, "New libc malloc committed", kernel mailing list, retrieved 8 August 2011 
  17. ^ a b c d Vervloesem, Koen 21 April 2010, "DragonFly BSD 26: towards a free clustering operating system", LWNnet, retrieved 19 November 2011 
  18. ^ Economopoulos, Aggelos 16 April 2007, "A peek at the DragonFly Virtual Kernel", LWNnet part 1, retrieved 8 December 2011 
  19. ^ Economopoulos, Aggelos 16 April 2007, "A peek at the DragonFly Virtual Kernel", LWNnet part 2, retrieved 8 December 2011 
  20. ^ "HowTo DPorts", DragonFly BSD, retrieved 2 December 2013 
  21. ^ Weinem, Mark 2007 "10 years of pkgsrc" NetBSD Joerg Sonnenberger about pkgsrc on DragonFly BSD and his pkgsrc development projects Retrieved 22 November 2011 
  22. ^ Sherrill, Justin 30 September 2013, "Why dports", DragonFly BSD Digest, retrieved 2 December 2013 
  23. ^ Sherrill, Justin 29 September 2013, "Any new packages", users mailing list, retrieved 2 December 2013 
  24. ^ Buschmann, Jonathan 14 March 2007, "First Patch to get CARP on Dfly", kernel mailing list, retrieved 20 November 2011 
  25. ^ "CARP4 manual page", DragonFly On-Line Manual Pages, retrieved 20 November 2011 
  26. ^ Dillon, Matthew 10 October 2007, "Re: HAMMER filesystem update - design document", kernel mailing list, retrieved 20 November 2011 
  27. ^ Larabel, Michael 7 January 2011, "Can DragonFlyBSD's HAMMER Compete With Btrfs, ZFS", Phoronix, retrieved 20 November 2011, HAMMER does appear to be a very interesting BSD file-system It is though not quite as fast as the ZFS file-system on BSD, but this is also an original file-system to the DragonFlyBSD project rather than being a port from OpenSolaris Not only is HAMMER generally faster than the common UFS file-system, but it also has a much greater feature-set 
  28. ^ Dillon, Matthew 8 February 2012, "DESIGN document for HAMMER2 08-Feb-2012 update", users, retrieved 22 February 2012 
  29. ^ "DragonFly Release 38", DragonFly BSD, retrieved 19 June 2014 
  30. ^ a b Mr 7 January 2010, "DragonFlyBSD with Matthew Dillon" ogg, bsdtalk, retrieved 20 November 2011 
  31. ^ a b "DragonFly BSD diary", DragonFly BSD, 7 January 2006, retrieved 19 November 2011 
  32. ^ "DragonFly: Releases", DragonFly BSD, retrieved 19 June 2014 
  33. ^ Tigeot, Francois 31 July 2007, "KMS + i915 support now in -master", users mailing list, retrieved 2 December 2013 
  34. ^ a b Kerner, Sean Michael 25 July 2006, "DragonFly BSD 16 Cuts the Cord", InternetNews, retrieved 20 November 2011 
  35. ^ Townsend, Trent 18 January 2006, "A Quick Review of DragonFly BSD 14", OSNews, retrieved 16 November 2011 

External linksedit

  • Official website

dragonfly bsd, dragonfly bsd desktop, dragonfly bsd handbook, dragonfly bsd installation, dragonfly bsd operating system, dragonfly bsd review, dragonfly bsd screenshots, dragonfly bsd security, dragonfly bsd virtualbox, dragonfly bsd vs freebsd


DragonFly BSD Information about

DragonFly BSD


  • user icon

    DragonFly BSD beatiful post thanks!

    29.10.2014


DragonFly BSD
DragonFly BSD
DragonFly BSD viewing the topic.
DragonFly BSD what, DragonFly BSD who, DragonFly BSD explanation

There are excerpts from wikipedia on this article and video

Random Posts

The San Francisco Examiner

The San Francisco Examiner

The San Francisco Examiner is a longtime daily newspaper distributed in and around San Francisco, Ca...
Frederator Films

Frederator Films

Frederator Films is an animation studio founded by Fred Seibert as part of Frederator Studios, with ...
John Hasbrouck Van Vleck

John Hasbrouck Van Vleck

John Hasbrouck Van Vleck March 13, 1899 – October 27, 1980 was an American physicist and mathematici...
Christian Lacroix

Christian Lacroix

Christian Marie Marc Lacroix French pronunciation: ​kʁistjɑ̃ lakʁwa; born 16 May 1951 is a Fren...