Matthew Dillon

Last updated
Matthew Dillon
Matthew Dillon (DragonFly BSD leader) on bicycle with bicycle helmet--2008-08.jpeg
Matthew Dillon on bicycle with bicycle helmet, August 2008
Born (1966-07-01) 1 July 1966 (age 57) [1]
Alma mater University of California, Berkeley
Occupation Software engineer
Known for Amiga DICE, [2] [3] DME; [4] FreeBSD, DragonFly BSD, HAMMER
Website apollo.backplane.com

Matthew Dillon (born 1966) is an American software engineer known for Amiga software, [3] contributions to FreeBSD and for starting and leading the DragonFly BSD project since 2003. [3] [5] [6] [7]

Contents

Biography

Dillon studied electronic engineering and computer science at the University of California, Berkeley, where he first became involved with BSD in 1985. He also became known for his Amiga programming, [3] his C compiler DICE [2] and his work on the Linux kernel. [8] He founded and worked at Best Internet from 1994 until 1997, contributing to FreeBSD in that time. [9] His "Diablo" internet news transit program was very popular with many ISPs.

In 1997, Dillon gained commit access to the FreeBSD code and heavily contributed to the virtual memory subsystem, [10] amongst other contributions.

Concerned with problems he saw in the direction FreeBSD 5.x was headed in regards to concurrency, [10] and coupled with the fact that Dillon's access to the FreeBSD source code repository was revoked due to a falling-out with other FreeBSD developers, he started the DragonFly BSD project in 2003, implementing the SMP model using light-weight kernel threads. [3] [11] The DragonFly project also led to the development of a new userspace kernel virtualisation technique in 2006, called Virtual Kernel, [3] [12] originally to ease the development and testing of subsequent kernel-level features; [13] a new file system, called HAMMER, which he created using B-trees; HAMMER was declared production-ready with DragonFly 2.2 in 2009; [12] and, subsequently, HAMMER2, declared stable in 2018 with DragonFly 5.2.

Most recently, Dillon has gotten a number of headlines around CPU errata. In 2007, this was after Theo de Raadt of OpenBSD raised the alarm around the seriousness of some of the errata for Intel Core 2 family of CPUs. [14] Dillon has independently evaluated Intel's errata, and did an overview of Intel Core errata as well, suggesting that several of them were so serious as to warrant avoiding any processor where the issues remain unfixed. [14] Dillon has since been a fan of AMD processors, and, subsequently in 2012, he has discovered a brand-new deficiency in some AMD processors for which no existing erratum existed at the time. [15] Dillon continued his work around CPU issues as late as 2018, presenting solutions to tackle the latest security vulnerabilities like Meltdown, some of which have been subsequently adopted by OpenBSD as well. [16]

Dillon was a frequent guest on bsdtalk during the runtime of the show, [17] and was interviewed several times for KernelTrap. [5] [6]

Related Research Articles

<span class="mw-page-title-main">Executable and Linkable Format</span> Standard file format for executables, object code, shared libraries, and core dumps.

In computing, the Executable and Linkable Format, is a common standard file format for executable files, object code, shared libraries, and core dumps. First published in the specification for the application binary interface (ABI) of the Unix operating system version named System V Release 4 (SVR4), and later in the Tool Interface Standard, it was quickly accepted among different vendors of Unix systems. In 1999, it was chosen as the standard binary file format for Unix and Unix-like systems on x86 processors by the 86open project.

<span class="mw-page-title-main">Thread (computing)</span> Smallest sequence of programmed instructions that can be managed independently by a scheduler

In computer science, a thread of execution is the smallest sequence of programmed instructions that can be managed independently by a scheduler, which is typically a part of the operating system. In many cases, a thread is a component of a process.

Processor affinity, or CPU pinning or "cache affinity", enables the binding and unbinding of a process or a thread to a central processing unit (CPU) or a range of CPUs, so that the process or thread will execute only on the designated CPU or CPUs rather than any CPU. This can be viewed as a modification of the native central queue scheduling algorithm in a symmetric multiprocessing operating system. Each item in the queue has a tag indicating its kin processor. At the time of resource allocation, each task is allocated to its kin processor in preference to others.

x86-64 64-bit version of x86 architecture

x86-64 is a 64-bit version of the x86 instruction set, first announced in 1999. It introduced two new modes of operation, 64-bit mode and compatibility mode, along with a new 4-level paging mode.

<span class="mw-page-title-main">DragonFly BSD</span> Free and open-source Unix-like operating system

DragonFly BSD is a free and open-source Unix-like operating system forked from FreeBSD 4.8. Matthew Dillon, an Amiga developer in the late 1980s and early 1990s and FreeBSD developer between 1994 and 2003, began working on DragonFly BSD in June 2003 and announced it on the FreeBSD mailing lists on 16 July 2003.

In computing, Physical Address Extension (PAE), sometimes referred to as Page Address Extension, is a memory management feature for the x86 architecture. PAE was first introduced by Intel in the Pentium Pro, and later by AMD in the Athlon processor. It defines a page table hierarchy of three levels (instead of two), with table entries of 64 bits each instead of 32, allowing these CPUs to directly access a physical address space larger than 4 gigabytes (232 bytes).

Light Weight Kernel Threads (LWKT) is a computer science term and from DragonFly BSD in particular. LWKTs differ from normal kernel threads in that they can preempt normal kernel threads. According to Matt Dillon, DragonFlyBSD creator:

The LWKT scheduler is responsible for actually running a thread. It uses a fixed priority scheme, but the fixed priorities are differentiating major subsystems, not user processes. For example, hardware interrupt threads have the highest priority, followed by software interrupts, kernel-only threads, then finally user threads. A user thread either runs at user-kernel priority, or a user thread runs at user priority.

DragonFly does preempt, it just does it very carefully and only under particular circumstances. An LWKT interrupt thread can preempt most other threads, for example. This mimics what FreeBSD-4.x already did with its spl/run-interrupt-in-context-of-current-process mechanism. What DragonFly does *NOT* do is allow a non-interrupt kernel thread to preempt another non-interrupt kernel thread.

The mainframe z/OS Operating system supports a similar mechanism, called SRB.

SRB's represent requests to execute a system service routine. SRB's are typically created when one address space detects an event that affects a different address space; they provide one of several mechanisms for asynchronous inter-address space communication for programs running on z/OS.

An SRB is similar to a Process Control Block (PCB), in that it identifies a unit of work to the system. Unlike a PCB, an SRB cannot "own" storage areas. In a multiprocessor environment, the SRB routine, after being scheduled, can be dispatched on another processor and can run concurrently with the scheduling program. The scheduling program can continue to do other processing in parallel with the SRB routine. Only programs running in kernel mode can create an SRB.

The Windows Operating System knows a similar light weight thread mechanism named "fibers". Fibers are scheduled by an application program. The port of the CICS Transaction Server to the Windows platform uses fibers, somewhat analogous to the use of "enclaves" under z/OS.

In UNIX, "kernel threads" have two threads, one is the core thread, one is the user thread.

In computing, busdma, bus_dma and bus_space is a set of application programming interfaces designed to help make device drivers less dependent on platform-specific code, thereby allowing the host operating system to be more easily ported to new computer hardware. This is accomplished by having abstractions for direct memory access (DMA) mapping across popular machine-independent computer buses like PCI, which are used on distinct architectures from IA-32 (NetBSD/i386) to DEC Alpha (NetBSD/alpha). Additionally, some devices may come in multiple flavours supporting more than one bus, e.g., ISA, EISA, VESA Local Bus and PCI, still sharing the same core logic irrespective of the bus, and such device drivers would also benefit from this same abstraction. Thus the rationale of busdma is to facilitate maximum code reuse across a wide range of platforms.

In computer science, serializing tokens are a concept in concurrency control arising from the ongoing development of DragonFly BSD. According to Matthew Dillon, they are most akin to SPLs, except a token works across multiple CPUs while SPLs only work within a single CPU's domain.

<span class="mw-page-title-main">DTrace</span> Dynamic tracing framework for kernel and applications

DTrace is a comprehensive dynamic tracing framework originally created by Sun Microsystems for troubleshooting kernel and application problems on production systems in real time. Originally developed for Solaris, it has since been released under the free Common Development and Distribution License (CDDL) in OpenSolaris and its descendant illumos, and has been ported to several other Unix-like systems.

The proc filesystem (procfs) is a special filesystem in Unix-like operating systems that presents information about processes and other system information in a hierarchical file-like structure, providing a more convenient and standardized method for dynamically accessing process data held in the kernel than traditional tracing methods or direct access to kernel memory. Typically, it is mapped to a mount point named /proc at boot time. The proc file system acts as an interface to internal data structures about running processes in the kernel. In Linux, it can also be used to obtain information about the kernel and to change certain kernel parameters at runtime (sysctl).

AMD Cool'n'Quiet is a CPU dynamic frequency scaling and power saving technology introduced by AMD with its Athlon XP processor line. It works by reducing the processor's clock rate and voltage when the processor is idle. The aim of this technology is to reduce overall power consumption and lower heat generation, allowing for slower cooling fan operation. The objectives of cooler and quieter result in the name Cool'n'Quiet. The technology is similar to Intel's SpeedStep and AMD's own PowerNow!, which were developed with the aim of increasing laptop battery life by reducing power consumption.

OS-level virtualization is an operating system (OS) virtualization paradigm in which the kernel allows the existence of multiple isolated user space instances, called containers, zones, virtual private servers (OpenVZ), partitions, virtual environments (VEs), virtual kernels, or jails. Such instances may look like real computers from the point of view of programs running in them. A computer program running on an ordinary operating system can see all resources of that computer. However, programs running inside of a container can only see the container's contents and devices assigned to the container.

<span class="mw-page-title-main">Comparison of open-source wireless drivers</span>

Wireless network cards for computers require control software to make them function. This is a list of the status of some open-source drivers for 802.11 wireless network cards.

In the context of free and open-source software, proprietary software only available as a binary executable is referred to as a blob or binary blob. The term usually refers to a device driver module loaded into the kernel of an open-source operating system, and is sometimes also applied to code running outside the kernel, such as system firmware images, microcode updates, or userland programs. The term blob was first used in database management systems to describe a collection of binary data stored as a single entity.

In operating systems, a giant lock, also known as a big-lock or kernel-lock, is a lock that may be used in the kernel to provide concurrency control required by symmetric multiprocessing (SMP) systems.

<span class="mw-page-title-main">Rump kernel</span> Software run in userspace that offers kernel functionality

The NetBSD rump kernel is the first implementation of the "anykernel" concept where drivers either can be compiled into or run in the monolithic kernel or in user space on top of a light-weight kernel. The NetBSD drivers can be used on top of the rump kernel on a wide range of POSIX operating systems, such as the Hurd, Linux, NetBSD, DragonFly BSD, Solaris kernels and even Cygwin, along with the file system utilities built with the rump libraries. The rump kernels can also run without POSIX directly on top of the Xen hypervisor, an L4 microkernel using the Genode OS Framework or even on "OS-less" bare metal.

A virtual kernel architecture (vkernel) is an operating system virtualisation paradigm where kernel code can be compiled to run in the user space, for example, to ease debugging of various kernel-level components, in addition to general-purpose virtualisation and compartmentalisation of system resources. It is used by DragonFly BSD in its vkernel implementation since DragonFly 1.7, having been first revealed in September 2006, and first released in the stable branch with DragonFly 1.8 in January 2007. The long-term goal, in addition to easing kernel development, is to make it easier to support internet-connected computer clusters without compromising local security. Similar concepts exist in other operating systems as well; in Linux, a similar virtualisation concept is known as user-mode Linux; whereas in NetBSD since the summer of 2007, it has been the initial focus of the rump kernel infrastructure.

References

  1. 1 2 "usr.bin/calendar/calendars/calendar.freebsd". Super User's BSD Cross Reference. FreeBSD. 2019-02-09. Retrieved 2019-03-02.
  2. 1 2 "Matt Dillon: Where has he gone?". Newsgroup:  comp.sys.amiga.programmer. 1992-11-05. Usenet:   1992Nov5.075732.15766@vax5.cit.cornell.edu . Retrieved 2019-03-02.
  3. 1 2 3 4 5 6 David Chisnall (2007-06-15). "DragonFly BSD: UNIX for Clusters?". InformIT . Prentice Hall Professional . Retrieved 2019-03-06.
  4. "Happy birthday, Amiga: The 'other' home computer turns 30". The Register. 2015-07-24. Retrieved 2019-03-02. I loved Matt Dillon's editor DME, did anyone else come across that ?
  5. 1 2 Jeremy Andrews (2002-01-02). "Interview: Matthew Dillon". KernelTrap . Archived from the original on 2012-02-07. Retrieved 2019-03-03.
  6. 1 2 Jeremy Andrews (2007-08-06). "Interview: Matthew Dillon". KernelTrap . Archived from the original on 2012-02-07. Retrieved 2019-03-03.
  7. "team". DragonFly BSD. 2018-05-24. Archived from the original on 2018-11-18. Retrieved 2019-03-02.
  8. Matus Telgarsky (2004), "Conference Reports, USENIX Annual Technical Conference (USENIX '04), UseBSD SIG, Panel: The State of the BSD Projects" (PDF), ;login: , USENIX (published October 2004), 29 (5): 54–55, ISSN   1044-6397, Already a veteran hacker (contributor to Linux and FreeBSD, among many other projects), …
  9. Greg Kulosa (1998-09-15). "BayLISA meeting: Unix on Intel: Implementing Reliable Production Systems". sage-members@ (Mailing list). USENIX . Retrieved 2019-04-12. The panelists are: BSD/OS, Paul Vixie [Internet Software Consortium founder]; FreeBSD, Matt Dillon [Systems Architect at Best Internet]; …
  10. 1 2 Federico Biancuzzi (2004-07-08). "Behind DragonFly BSD". O'Reilly Media. Archived from the original on 2011-05-13. Retrieved 2019-03-02.
  11. David Chisnall (2012). "Why Go?". The Go Programming Language Phrasebook (1st ed.). Addison-Wesley Professional. p.  5. ISBN   978-0-321-81714-3. In creating DragonFly BSD, Matt Dillon observed that there was no point in creating an N:M threading model—where N userspace threads are multiplexed on top of M kernel threads—because C code that uses more than a handful of threads is very rare.
  12. 1 2 Koen Vervloesem (2010-04-21). "DragonFly BSD 2.6: towards a free clustering operating system". LWN.net . Retrieved 2019-03-07.
  13. Jeremy C. Reed, ed. (2007-02-10). "Answers from Matt Dillon about DragonFly's virtual kernel". BSD Newsletter .com. Reed Media .net. Archived from the original on 2007-02-24.
  14. 1 2 Constantine A. Murenin (2007-07-03). "Matthew Dillon об ошибках Intel Core и Core 2" (in Russian). Linux.org.ru. Retrieved 2019-03-02.
  15. "DragonFly BSD developer stung by Opteron bug". The Register. 2012-03-07. Retrieved 2019-03-02.
  16. "OpenBSD releases Meltdown patch". The Register. 2018-02-23. Retrieved 2019-03-02. Part of the OpenBSD solution used the approach employed by Matthew Dillon in his DragonFly BSD – the per-CPU page layout aspect.
  17. "bsdtalk: DragonFlyBSD with Matthew Dillon". bsdtalk. 2014-11-19. Retrieved 2019-03-02.