[GO] I summarized 11 types of operating systems

TL;DR I knew about the operating system? I know it. It's about Windows or Mac, but I'll share the crappy information that I've been inputting on Wikipedia for about two weeks.

First motive: "What is the architecture that Go language supports?"

For Go language, you can change the corresponding OS and architecture of the output binary by passing environment variables to the compiler.

GOOS is the operating system (OS) and GOARCH is the architecture.

$ GOOS=linux GOARCH=ppc64 go build

If you build like this, the operating system linux will output binaries corresponding to the architecture ppc64.

I see. So what are the OSs and architectures that the Go language supports? ** and the question arises.

The command to answer that question is go tool dist list. I will actually hit it.

python



$ go version
go version go1.14.2 darwin/amd64

$ go tool dist list
aix/ppc64
android/386
android/amd64
android/arm
android/arm64
darwin/386
darwin/amd64
darwin/arm
darwin/arm64
dragonfly/amd64
freebsd/386
freebsd/amd64
freebsd/arm
freebsd/arm64
illumos/amd64
js/wasm
linux/386
linux/amd64
linux/arm
linux/arm64
linux/mips
linux/mips64
linux/mips64le
linux/mipsle
linux/ppc64
linux/ppc64le
linux/riscv64
linux/s390x
netbsd/386
netbsd/amd64
netbsd/arm
netbsd/arm64
openbsd/386
openbsd/amd64
openbsd/arm
openbsd/arm64
plan9/386
plan9/amd64
plan9/arm
solaris/amd64
windows/386
windows/amd64
windows/arm

It came out so much that I was surprised.

I was a little hopeless when I saw this list. Because I thought ** "Is there such a lot of OS ..." **.

I've heard about windows and linux ʻandroid`, and I usually touch them. But other operating systems don't know at all enough to explain.

(By the way, js is not an OS, of course, but if you set js / wasm, you can output the Web Assembly binary.)

List of OS supported by Go language

In this article, js is excluded. Then, 11 types of OS will remain as follows.

- aix
- android
- darwin
- dragonfly
- freebsd
- illumos
- linux
- netbsd
- plan9
- solaris
- windows

It's hard to check every time. I will definitely forget

With this in mind, I decided to steadily investigate 11 types of operating systems one by one **.

As you know, I used Wikipedia to find out, but I did it while referring to other pages for supplementary information. I mainly use the English version of Wikipedia because I have always thought that the English version of Wikipedia is more complete (in terms of content) than the Japanese version.

Once you've decided how to do it, it's a simple task. It is a task to open the English version of Wikipedia, translate it with DeepL, and put it together in a notebook that I made.

As I continued this work for a while, I realized that the OSs that seemed to be chaotic actually had interesting historical backgrounds and characteristics.

By reviewing my notebook before going to bed, I try to study so that my memory can be easily established (Is it an examinee?)

In this article, I will not categorize the OS, but will summarize it in a dictionary in the order in which it was examined.

About the content of this article

There are some notes. This article is a translation of the text of English Wikipedia (en.wikipedia.org/) with DeepL. I am writing based on the notes I made while doing it. I always specify the link to the article from which the citation is made, and use Blockquotes to distinguish the citation from the part I wrote.

I also copied the table in the article in my notebook, but my morality did not allow me to put it in the article, so please jump to the link and check it.

Also, the translation accuracy of DeepL is high enough to impress even if you use it, but please understand that the tone such as "masu" and "is" has not been unified. (If you install the app, it will be translated just by pressing Command + c twice → Super convenient)

(It's easy to read if you know it) What is the OS in the first place?

https://en.wikipedia.org/wiki/Operating_system

An operating system (OS) is system software that manages computer hardware and software resources and provides common services for computer programs.

img

In short, there are roughly the following relationships.

-** User ** uses ** Application ** -** Application ** works while using ** OS ** features -** OS ** communicates nicely with ** hardware **

In other words, the role of the OS is ** software that has an interface that allows users to execute applications, and hides specific hardware from users and applications by linking with hardware behind the scenes. Is it something like ** (free translation)?

In fact, just because an OS is software does not mean that you can run the entire OS from an application. Roughly speaking, it can be divided into ** user space ** where the application used by the user can run directly, and ** kernel space ** where it is not.

(It's easy to read if you know it) What is a kernel?

https://en.wikipedia.org/wiki/Kernel_(operating_system)

A kernel is a computer program that is at the core of a computer's operating system and gives you complete control over everything in the system. The kernel is an integral part of any operating system. The kernel is "a piece of operating system code that is always resident in memory." This facilitates interaction between hardware and software components. On most systems, it is one of the first programs loaded at boot time (after the bootloader). It not only translates I / O requests from software into data processing instructions and data processing instructions for the central processing unit, but also handles the rest of the startup. Handles peripherals such as memory, keyboards, monitors, printers and speakers.

img

It's complicated because the kernel is in the place where the OS was, but the part of the OS that is closest to the hardware (the place that can be said to be) is the kernel. To the end, ** the kernel is a part of the OS **.

The kernel implementation relies heavily on CPU-like architecture. (I may do this in another article.)

This communication between the kernel and the application takes place in the form of issuing system calls, and the kernel does a good job of communicating with the hardware. This eliminates the need to implement hardware interactions directly in your application. This area is a field such as system programming. I / O scheduling is interesting.

For example, the standard C library printf and Python print eventually issue system calls to the kernel to instruct them to write to standard output. You can see a slightly different view.

Also, the fact that the kernel is a part of the OS means that the kernel used is generally different depending on the OS **. Furthermore, the kernel may be a single program, or it may be an OS that is a hybrid kernel that combines multiple kernels.

The kernel represents the characteristics of the OS.

I will introduce what kind of kernel the OS uses from now on. I think it's interesting to study while thinking ** Why this OS uses this kernel **. (There is no answer in this article)

OS list

As shown in this figure, there are many OSs that are still being developed. From here, we will introduce 11 types of operating systems arranged in alphabetical order.

Most of the operating systems introduced in this article are included in this figure, so it may be helpful to refer to them after reading or while reading.

img

Quoted from Linux (en.wikipedia.org)

  1. AIX IBM_AIX(en.wikipedia)

AIX (Advanced Interactive eXecutive, pronounced / ˌeɪaɪˈɛks /) is a series of proprietary Unix operating systems developed by IBM and sold for some of its computer platforms. Originally released for IBM RT PC RISC workstations, AIX is now available on IBM RS / 6000 series and later POWER and PowerPC based systems, IBM System i, System / 370 mainframes, PS / 2 personal computers. Supports or supports a wide variety of hardware platforms, including, and Apple Network Server.

AIX is based on UNIX System V with extensions compatible with 4.3BSD. It is one of five commercial operating systems with a UNIX 03 standard certified version of The Open Group (the others are macOS, Solaris, HP-UX, and eulerOS).

The AIX family of operating systems debuted in 1986 and became the standard operating system for the RS / 6000 series upon launch in 1990 and are still being actively developed by IBM. It is currently supported by IBM Power Systems alongside IBM i and Linux.

AIX was the first operating system to have a journaling file system, and IBM ported from processor, disk, network virtualization, dynamic hardware resource allocation (including fractional processor units), and mainframe design. We have continuously enhanced software with features such as sexual engineering.

AIX is an operating system developed by IBM that was released in November 2019 and is still under active development. Written in C, it falls into the so-called ʻUnix` lineage.

It may be one of the commercial operating systems and is not usually very familiar. Looking at where it is used, it seems that it is used by companies to realize servers and cloud environments that require security, high availability, and reliability.

For more information about this area, see IBM AIX Operating System.

The source code is not open to the public.

  1. Android

Android_(operating_system)(en.wikipedia)

Android is a mobile operating system based on a modified version of the Linux kernel and other open source software designed primarily for touchscreen mobile devices such as smartphones and tablets. Android is developed by a consortium of developers known as the Open Handset Alliance, with Google being the main contributor and commercial seller.

Initially developed by Android Inc., which was acquired by Google in 2005, Android was announced in 2007, and the first commercial Android device was released in September 2008. The current stable version is Android 10, released on September 3, 2019. The core source code for Android is known as the Android Open Source Project (AOSP) and is primarily licensed under the Apache license. As a result, Android variants have been developed on a variety of other electronic devices such as game consoles, digital cameras, and PCs, each with its own specialized user interface. Well-known derivatives include "Android TV" for TVs and "Wear OS" for wearables, all developed by Google.

Android has been the best-selling operating system in the world for smartphones since 2011 and tablets since 2013. As of May 2017, the number of monthly active users has exceeded 2 billion, making it the largest installation base of all operating systems, and as of January 2020, the Google Play store has more than 2.9 million apps. Has been done.

Android, as it is described as a mobile operating system, is an OS designed mainly for smartphones and tablets, mainly developed by Google and the Open Handset Alliance (OHA). The UI is written in Java, and the core part is written in C or C ++.

What is OHA? Since it became, I also checked this.

Open Handset Alliance(OHA)

Open_Handset_Alliance(en.wikipedia)

The Open Handset Alliance (OHA) is a consortium of 84 companies that develops open standards for mobile devices. Member companies include HTC, Sony, Dell, Intel, Motorola, Qualcomm, Texas Instruments, Google, Samsung Electronics, LG Electronics, T-Mobile, Sprint Corporation, Nvidia and Wind River Systems.

OHA was founded by Google on November 5, 2007, and 34 companies including mobile terminal makers, application developers, some mobile carriers, and chip makers are members. The alliance's flagship software, Android (first developed by Google in 2007), is based on an open source license, including Apple (iOS), Microsoft (Windows Phone), Nokia (Symbian), HP (formerly Palm), and Samsung. It has been competing with the mobile platforms of Electronics / Intel (Tizen, bada) and BlackBerry (BlackBerry OS).

As part of efforts to promote a unified Android platform, OHA members are contractually prohibited from manufacturing devices based on competing Android forks.

Looking at the list of members, it was a consortium with a lot of crazy men. Looking at OHA's HP, I get the impression that it is relatively simple, but the SDK for Android developers and the guide to the source code of Android itself, etc. Is listed.

Android uses the Linux kernel.

  1. Darwin

Darwin_(operating_system)(en.wikipedia)

Darwin is an open source Unix-like operating system first released by Apple Inc. in 2000. It consists of code developed by Apple and code derived from NeXTSTEP, BSD, Mach, and other free software projects.

Darwin forms the core set of components that are the basis of macOS (formerly OS X and Mac OS X), iOS, watchOS, tvOS, and iPadOS. Although Darwin is mostly compatible with POSIX, it has never been certified to be compatible with any version of POSIX by itself. Since Leopard, macOS has been certified for compatibility with Single UNIX Specification version 3 (SUSv3).

Darwin is the base OS such as macOS and iOS.

**that? Isn't macOS an OS? Those who thought ** are sharp.

Let's take a look at the macOS page as well.

macOS MacOS(en.wikipedia)

macOS (/ ˌmækoʊˈɛs /; earlier Mac OS X and later OS X) is a series of proprietary graphical operating systems developed and sold by Apple Inc. since 2001. This is the leading operating system for Apple Mac computers. Within the desktop, laptop and home computer market, and by using the web, it is the second most widely used desktop operating system after Microsoft's Windows.

Certainly macOS seems to be a kind of OS. So what is the relationship between ** macOS and Darwin **?

What is the relationship between macOS and Darwin?

At the core of macOS is a POSIX-compliant operating system built on top of the XNU kernel, with standard Unix features available from the command line interface. Apple has released this set of software as a free, open source operating system named Darwin. On top of Darwin, Apple layered many components, including the Aqua interface and Finder, to complete macOS, a GUI-based operating system.

In other words, Darwin is an open source OS released by Apple for free. You can use Unix functions with CUI and use a kernel called XNU kernel. On the other hand, macOS is a closed source OS that adds GUI components such as Finder to ** open source Darwin **.

We can see Apple's wise strategy to open source the core CUI part and seek the cooperation of many developers to improve the quality, and then close the GUI part to firmly increase the brand value.

Darwin kernel = hybrid!

Now, let's get back to Darwin. Darwin's kernel ** XNU kernel ** is a ** hybrid kernel **. According to the Hybrid kernel

A hybrid kernel is an operating system kernel architecture that seeks to combine the aspects and benefits of the microkernel and monolithic kernel architecture used in computer operating systems.

Monolithic kernel? Microkernel? Let's check this out as well.

Monolithic Kernel

A monolithic kernel is an operating system architecture in which the entire operating system operates in kernel space. The monolithic model differs from other operating system architectures (such as the microkernel architecture) in that it by itself defines a high-level virtual interface on computer hardware. A set of primitives and system calls implements all operating system services such as process management, concurrency, and memory management. Device drivers can be added to the kernel as modules.

Microkernel

In computer science, a microkernel (often abbreviated as μkernel) is near-minimal software that can provide the mechanisms needed to implement an operating system (OS). .. These mechanisms include low-level address space management, thread management, and interprocess communication (IPC).

If the hardware provides multiple ring or CPU modes, the microkernel may be the only software that runs at the most privileged level, commonly referred to as supervisor or kernel mode. Traditional operating system features such as device drivers, protocol stacks, and filesystems are typically removed from the microkernel itself and replaced by user space.

In terms of source code size, microkernels are often smaller than monolithic kernels. For example, the MINIX 3 microkernel has only about 12,000 lines of code.

After all, a monolithic kernel is a kernel that implements all services ** so that the entire OS can be used. On the other hand, a microkernel is a kernel ** that can provide only the minimum mechanism necessary for implementing an OS **.

And a hybrid kernel is a ** kernel architecture that combines the advantages of a monolithic kernel and a microkernel **.

Let's dig deeper into XNU, Darwin's kernel.

XNU

XNU(en.wikipedia)

XNU is a computer operating system (OS) kernel developed by Apple Inc. for macOS since December 1996, and is the basis of Apple TV software, iOS, iPadOS, watchOS, and tvOS. Released as free and open source software as part of the OS. XNU is an abbreviation for X is Not Unix.

I'm not sure about the naming sense of X is Not Unix (XNU), but it's free and open source software like Darwin (it's natural because it's part of Darwin).

Originally developed by NeXT for the NeXTSTEP operating system, XNU is a hybrid kernel that combines the components of the Mach kernel version 2.5 and 4.3BSD developed at Carnegie Mellon University to write a driver named Driver Kit. It was a combination of Objective-C's application programming interface (API).

XNU is a hybrid kernel that includes the features of both a monolithic kernel and a microkernel, and the message-passing capabilities of the microkernel make it more modular, allowing most operating systems to benefit from memory protection, and some. We are trying to get the most out of both technologies, such as being able to maintain the speed of the monolithic kernel in our key tasks. The foundation of the XNU kernel is a major modification (hybrid) of the Open Software Foundation Mach kernel (OSFMK) 7.3. This allows you to run the operating system cores as separate processes, giving you great flexibility (you can run multiple operating systems in parallel on top of the Mach core).

Apparently, XNU is a hybrid kernel that combines the ** Mach kernel (a derivative of) ** with ** BSD **.

Mach kernel

If you look at Mach Overview --Apple Developer, the Mach kernel is ** abstract. It has excellent properties, expandability, and flexibility **. The main roles of the Mach kernel are:

-Object-based API with communication channels (ports, etc.) as object references · Advanced parallel execution including support for preemptive scheduled threads and SMP -Flexible scheduling framework that supports real-time use · A complete set of IPC primitives including messaging, RPC, synchronization and notifications · Supports large virtual address spaces, shared memory areas, and memory objects backed up in persistent stores -It has been proven to be scalable and portable in instruction set architectures and distributed environments. · Virtualize all resources with security and resource management as basic design principles

Apple seems to have modified and extended the Mach kernel to improve the quality and performance of macOS.

BSD

The Berkeley Software Distribution (BSD) part of the kernel is the Portable Operating System Interface (POSIX) Application Programming Interface (API, BSD System Calls), the Unix process model above the Mach task, the basics. Provides typical security policies, user and group IDs, permissions, network protocol stacks (protocols), and virtual file system code (including file system independent journaling layer).

On the other hand, ** BSD ** provides basic kernel functions such as POSIX-compliant system call API and process management.

Of course, these are open source so we can see the source code as well.

If you look at XNU --6153.61.1, there is a folder called bsd /, and you actually use BSD. You can see that there is. (By the way, this XNU was released on macOS 1.15.2)

BSD kernel

Berkeley_Software_Distribution(en.wikipedia.org)

The Berkeley Software Distribution (BSD) was a Research Unix-based operating system developed and distributed by the Computer Systems Research Group (CSRG) at the University of California, Berkeley. Today, "BSD" often refers to its progeny, such as FreeBSD, OpenBSD, NetBSD, or DragonFly BSD, or systems based on those progeny.

It seems that the descendants of ** FreeBSD **, ** OpenBSD **, ** NetBSD **, ** DragonFly BSD **, etc. that use the BSD kernel are often called ** BSD **.

According to Official HP, the BSD kernel has the following roles:

The BSD kernel handles process scheduling, memory management, symmetric multiprocessing (SMP), device drivers, and more.

--C library, which is the basic API of the system --The BSD C library is based on Berkeley code, not the GNU Project. --Utilities such as shell, file utility, compiler, linker, etc. --Some of the utilities are derived from the GNU Project, while others are not. --X Window System for graphical display.

(** Addendum: Based on @ taraijpn's Comment, I added the item of "BSD kernel" to eliminate misunderstanding. Thank you for pointing out. **)

  1. DragonFly BSD

DragonFly_BSD(en.wikipedia)

DragonFly BSD is a free, open source Unix-like operating system forked from FreeBSD 4.8. Matthew Dillon, the developer of the Amiga in the late 1980s and early 1990s and the developer of FreeBSD from 1994 to 2003, began developing DragonFly BSD in June 2003 and July 16, 2003. Announced on the FreeBSD mailing list on the same day.

Dillon started DragonFly because he believed that the threading and symmetric multiprocessing techniques used in FreeBSD 5 would lead to poor performance and maintenance issues. He tried to fix these expected issues in his FreeBSD project. His ability to directly modify the codebase was eventually revoked due to conflicts with other FreeBSD developers over the implementation of his ideas. Nevertheless, the DragonFly BSD and FreeBSD projects are still working together, sharing bug fixes, driver updates, and other improvements.

Intended to be a logical continuation of the FreeBSD 4.x series, DragonFly deviates significantly from FreeBSD by implementing Light Weight Kernel Threads (LWKT), an in-kernel message passing system, and the HAMMER file system.

The kernel messaging subsystem under development is similar to that found in microkernels like Mach, but is less complex by design. However, DragonFly uses a monolithic kernel system. DragonFly's messaging subsystem has the ability to operate either synchronously or asynchronously and is trying to use this ability to achieve the best possible performance in a given situation.

DragonFly BSD is an OS ** forked from ** FreeBSD. It seems that Dillon, who was originally a FreeBSD developer, broke up with the technology adopted by FreeBSD due to "differences in musicality" and started DragonFly BSD as a different project.

DragonFly BSD, unlike Darwin, seems to use a monolithic kernel.

Next, let's take a look at the main FreeBSD.

  1. FreeBSD

FreeBSD(en.wikipedia)

FreeBSD is a free, open source Unix-like operating system based on Berkeley Software Distribution (BSD), which is based on Research Unix. The first version of FreeBSD was released in 1993. In 2005, FreeBSD was the most popular open source BSD operating system, accounting for more than three-quarters of all simple licensed BSD systems installed.

FreeBSD is similar to Linux, but with significant differences in scope and license. That is, Linux provides only the kernel and drivers and relies on third parties for system software, while the FreeBSD project maintains a complete system.

The FreeBSD project includes a security team that oversees all the software included in the basic distribution. A wide range of third-party applications can be installed using the pkg package management system, FreeBSD Ports, or by compiling the source code.

With that license, much of FreeBSD's code base is Apple's Darwin (the foundation of macOS, iOS, watchOS, tvOS), FreeNAS (the open source NAS / SAN operating system), and Sony's PlayStation 3 and PlayStation 4 system software. It has become an integral part of other operating systems.

FreeBSD is a popular operating system that accounts for three-quarters of the BSD family. Linux, also a free and open source operating system, has some similarities and some major differences. In particular, one of the major differences between FreeBSD and Linux is the ** license **.

Difference between BSD and Linux licenses

Quoted from BSD vs Linux: The Basic Differences.

Most people don't care, but the license difference is really important. Linux uses the GNU General Public License (GPL). This means that developers can change or add new features to the Linux kernel as they please. The only problem is that all newly developed source code must be published, whether or not the developer wants it.

BSD uses its own BSD license, which allows developers to modify or add new features to either the BSD kernel or distribution without exposing the source code. In other words, open source BSD can be declared closed source if the developer is willing to. Developers are not obliged to publish the source code to anyone.

In other words, Linux uses the GNU license, so if you make changes to the Linux kernel, there is a rule that you must ** publish **. BSD, on the other hand, uses its own BSD license, so it is ** not necessarily open source **.

BSD, unlike Linux, is a complete operating system. BSD is also the kernel and is used as the core of the operating system. BSD developers use this kernel to add different types of programs and provide them to users as a complete distribution. In other words, the BSD operating system, like FreeBSD and NetBSD, distributes the kernel and the programs added on it as a single downloadable package.

Also, the BSD OS is provided as a complete distribution by itself, so it does not require a distribution such as Ubuntu or Debian like Linux.

  1. illumos

Illumos(en.wikipedia)

illumos is a free and open source Unix operating system. It is based on OpenSolaris, which is based on System V Release 4 (SVR4) and Berkeley Software Distribution (BSD). illumos consists of a kernel, device drivers, system libraries, and utility software for system administration. Just as the Linux kernel is used by various Linux distributions, this core is now the basis for various open source illumos distributions.

illumos is said to be based on ** System V Release 4 (SVR4) ** and OpenSolaris, which is based on BSD.

What is ** System V ** in the first place?

UNIX System V

UNIX_System_V(en.wikipedia.org)

Unix System V (pronounced "System Five") is one of the first commercial versions of the Unix operating system. Originally developed by AT & T, it was first released in 1983. Four major versions of System V have been released, numbered 1, 2, 3, 4. System V Release 4 (SVR4) is the most commercially successful version, sold as Unix System Unification, and is the result of efforts with the help of major Unix vendors. This version was the source of some popular commercial Unix features. System V is sometimes abbreviated as SysV.

As of 2020, the AT & T-derived Unix market is divided into three variants of System V. IBM's AIX, Hewlett-Packard's HP-UX, and Oracle's Solaris.

UNIX System V is ** one of the commercial versions of Unix OS **. AIX, the first in this article, also exists as a variant of System V.

By the way, AT & T started out as a company founded by Graham Bell, who invented the telephone, and is now the largest telecommunications company in the world.

System V Release 4 (SVR4)

System V Release 4 (SVR4) is release version 4 of System V. It is a combination of the following four.

SunOS

SunOS is a Unix-branded operating system developed by Sun Microsystems for workstation and server computer systems. The SunOS name is typically used only to refer to BSD-based versions 1.0 through 4.1.4, and since version 5.0 it is based on UNIX System V Release 4 and is sold under the brand Solaris. ..

** SunOS ** has already been developed, but it has been taken over by a commercial OS called ** Solaris ** that will come out later.

  1. Linux Linux(en.wikipedia)

Linux (/ ˈlɪnəks / (about this sound listen) LIN-əks) is a family of open source Unix-like operating systems based on the Linux kernel, first released by Linus Torvalds on September 17, 1991. Linux operating system kernel. Linux is usually packaged in a Linux distribution.

The distribution includes the Linux kernel and the system software and libraries that support it, many of which are provided by the GNU Project. While many Linux distributions use the word "Linux" in their names, the Free Software Foundation uses the name GNU / Linux to emphasize the importance of GNU software, causing some controversy. I will.

Well, I came to the famous Linux. Linux seems to be one type of OS, but in fact, it's a bit confusing to say so. Linux should be considered as a ** family of open source operating systems that use the Linux kernel **. With that in mind, I would like to call it ** Linux **.

img

As you can see in this image, the Linux kernel communicates with the hardware on the left while also interacting with the various applications on the right. GUIs like the desktop UI are outside the kernel and are not included in the Linux kernel.

Linux kernel

Linux_kernel(en.wikipedia)

The Linux kernel is especially important, so let's take a closer look.

The Linux kernel is a free, open source, monolithic Unix-like operating system kernel. From personal computers, mobile devices, mainframes and supercomputers to embedded devices such as routers, wireless access points, personal branch exchanges, set-top boxes, FTA receivers, smart TVs, personal video recorders and NAS appliances. It is deployed on various computing systems. Its availability, continuous development and support have spawned many operating system distributions (commonly known as Linux).

Despite the low adoption of the Linux kernel in desktop computer operating systems, Linux-based operating systems are almost everything else on a computer, including the use of the Linux kernel in the Android operating system for tablet computers, smartphones, and smart watches. Dominates the segment of.

The Linux kernel is deployed in all kinds of devices such as personal computers, supercomputers, and routers. Compared to Windows and macOS, it is used less on PCs, but it boasts an overwhelming share of other devices.

The Linux kernel was devised and created by Linus Torvalds for his personal computer in 1991, but with no cross-platform intent. Linux quickly attracted developers and users and adopted Linux as the kernel for other free software projects. The GNU operating system, in particular, was created as a free, non-exclusive operating system and is based on UNIX as a by-product of the Unix war.

The Linux kernel has been developed by contributors around the world and is a prime example of free and open source software. Day-to-day development discussions are held on the Linux kernel mailing list (LKML). The entire Linux kernel is released under the GNU General Public License version 2 (GPLv2), as specified in the COPYING file, but it also contains some other compatible license files, User- There is also an ad hoc exemption for the space API header file (UAPI).

Originally developed in 1991 by the renowned Linus Torvalds, it's a fascinating project and free and open source, so it's being developed daily by many contributors.

There are a whopping 910,000 commits on Linus' github repository (torvalds / linux). I tried to clone this locally but it took a long time and gave up (I downloaded only the master snapshot with the zip download). If you are interested, please download it.

Since it's a big deal, let's take a look at some Linux OS ** that use the Linux kernel.

Debian Debian(en.wikipedia)

Debian (/ ˈdɛbiən /), also known as Debian GNU / Linux, is a Linux distribution consisting of free and open source software developed by the Debian project founded by Ian Murdock on August 16, 1993. Is. The first version of Debian (0.01) was released on September 15, 1993, and the first stable version (1.1) was released on June 17, 1996. Debian is also the basis for many other distributions, especially Ubuntu.

** Debian ** (** Debian GNU / Linux ** to be exact) is one of the oldest Linux operating systems. It's fine, but ** De ** is accented like ** De ** bian.

The difference between ** distribution ** and ** operating system ** is [What is the distinction between an operating system and a distribution with regards to Linux?](Https://www.quora.com/What- I read is-the-distinction-between-an-operating-system-and-a-distribution-with-regards-to-Linux) and it doesn't seem to make a big difference.

In the history of Linux, there was a time when you built parts other than the kernel as you like and distributed them to friends, and that is the origin of "distribution", and it is an opinion that it is obsolete. There may be pros and cons around here, but what about? Here, distributions such as Debian are used as they are without distinguishing them from the OS.

What is GNU in the first place? Let's see that.

GNU

GNU(en.wikipedia.org)

GNU / ɡnuː / is an operating system and a large collection of computer software. GNU is entirely composed of free software, most of which is licensed under the GNU Project's own General Public License Agreement (GPL).

GNU is a recursive acronym for "GNU's Not Unix!" And was chosen because its design is similar to Unix, but it is free software and differs from Unix in that it does not contain Unix code. I did.

The GNU Project contains the operating system kernel, the GNU Hurd. However, given that the Hurd kernel is not yet ready for production, non-GNU kernels, the most popular Linux kernels, can also be used with GNU software. The combination of GNU and Linux has become ubiquitous, and this combination is often simply abbreviated as "Linux" or sometimes referred to as GNU / Linux.

The founder of the GNU Project, Richard Stallman, sees GNU as a "technical tool for social purposes." Relatedly, Lawrence Lessig wrote in an introduction to the second edition of Stallman's book Free Software, Free Society, stallman said, "Social aspects of software and free software gives community and social justice. "How can I create it?"

GNU itself is an operating system, a collection of computer software. It does not include the Unix code itself (GNU = GNU's Not Unix!), But has a Unix-like design.

Originally, it seems that the development of a kernel called GNU Hurd is also included in the GNU project, but since it is still ** not yet production-ready **, many use ** GNU computer software group ** as userland, Linux. It seems that ** GNU / Linux **, which uses the kernel as the kernel, has become commonplace and is simply called ** Linux **.

For example, the software created for the GNU Project is the familiar ** bash **.

Bash_(Unix_shell)

GNU Bash or simply Bash is a Unix shell and command language written by Brian Fox for the GNU Project as free software to replace the Bourne shell. First released in 1989, it is widely used as the default login shell on most Linux distributions and Apple's macOS Mojave and earlier versions. Windows 10 also has a version. It is also the default user shell in Solaris 11.

In addition to Debian GNU / Linux, it seems that ** Debian GNU / kFreeBSD ** and ** Debian GNU / Hurd ** etc. have been created by replacing only the kernel with another one while keeping the userland (application etc.). is.

Debian is one of the most popular Linux distributions, and many other distributions have been created from the Debian codebase. As of 2018, DistroWatch lists 141 active Debian derivatives. The Debian project provides guidelines for best practices in its derivatives and encourages them to merge their work into Debian.

Debian GNU/kFreeBSD

Debian GNU/kFreeBSD(en.wikipedia.org)

Debian GNU / kFreeBSD is an obsolete Debian flavor. I was using the FreeBSD kernel and the GNU userland. Most of the Debian GNU / kFreeBSD software is made from the same source as Debian, and some kernel packages are from FreeBSD. k FreeBSD's k stands for kernel and refers to the FreeBSD kernel. Before the project was abandoned, Debian maintained a port of i386 and amd64. The last version of Debian kFreeBSD is Debian 8 (Jessie) RC3.

Debian GNU / kFreeBSD was created in 2002. It is included in Debian 6.0 (Squeeze) as a technical preview and in Debian 7.0 (Wheezy) as an official port. Debian GNU / kFreeBSD has been deprecated as an officially supported platform as of Debian 8.0, as it has not been able to attract enough users to justify the burden of other projects. .. Debian developers cite OSS, pf, jails, NDIS, and ZFS as reasons for their interest in the FreeBSD kernel.

Although not updated since Debian 8, the operating system continues to be unofficially maintained as of July 2019.

Debian GNU / kFreeBSD is an OS that uses the FreeBSD kernel and the GNU userland. It doesn't seem to be officially updated anymore, but I'm using the ** FreeBSD kernel ** instead of the Linux kernel.

Debian GNU/Hurd

Debian GNU/Hurd(en.wikipedia.org)

Debian GNU / Hurd is a flavor based on the Hurd microkernel instead of Linux. Debian GNU / Hurd has been in development since 1998 and was officially released in May 2013.

Debian GNU / Hurd is distributed as an installer CD (running the official Debian installer) or a ready-to-run virtual disk image (Live CD, Live USB). This CD uses the IA-32 architecture and is compatible with IA-32 and x86-64 PCs. The current version of Debian GNU / Hurd is 2019, released in July 2019.

Debian GNU / Hurd is an OS that uses the Hurd kernel and the GNU Userland. The Hurd kernel does not seem to have been released since 2016 as of May 2020, but it seems to be designed to be compatible with the Unix kernel. In GNU (en.wikipedia.org), the presence as a kernel loses to the Linux kernel as ** not yet production-ready **. It seems that it has been done.

GNU Hurd consists of a set of protocols and server processes (daemons in Unix terms) that run on the GNU Mach microkernel. The Hurd aims to outperform the Unix kernel in terms of functionality, security, and stability, but it remains largely compatible with the Unix kernel. The GNU Project chose a multi-server microkernel as its operating system because it was perceived to be superior to the traditional Unix monolithic kernel architecture.

** (Addition: The Debian item was pointed out by @ c-yan, and I added it to introduce Debian that does not use the Linux kernel. Along with that, I also added a description of GNU.) **

Ubuntu

Ubuntu(en.wikipedia)

Ubuntu (/ ˈʊbʊntuː / uu-BUUN-too) is a free and open source Linux distribution based on Debian. Ubuntu is officially released in three editions. Three editions of Core for desktops, servers, and Internet of Things devices and robots have been officially released. All editions can run independently on a computer or in a virtual machine. Ubuntu supports OpenStack and is a popular operating system for cloud computing.

Ubuntu is by far the most popular Linux OS. The Ubuntu development organization is a British company called ** Canonical Ltd. **. ** Canonical Ltd. ** was founded by South African entrepreneur ** Mark Shuttleworth **.

It's completely trivia, but the name Ubuntu seems to have the meaning of "humanity to others" in South Africa's Nguni philosophy, " I am what I am because of who we all are ".

  1. NetBSD

NetBSD(en.wikipedia)

NetBSD is a free, open source Unix-like operating system based on the Berkeley Software Distribution (BSD). It is a descendant of the first open source BSD officially released after 386BSD was forked.

The NetBSD project focuses on code clarity, careful design, and portability to many computer architectures. Its source code is publicly available and licensed with permission.

NetBSD is a free and open source operating system in the BSD family. Historically, it is derived from ** 386BSD **, the operating system that runs on the Intel 80386 processor, which is the basis of modern architecture.

Also, one of the well-known operating systems forked from NetBSD is ** OpenBSD **.

OpenBSD

OpenBSD(en.wikipedia.org)

OpenBSD is a security-focused, free, open source Unix-like operating system based on the Berkeley Software Distribution (BSD). Theo de Raadt forked NetBSD in 1995 to create OpenBSD. According to de Raadt, OpenBSD is a research operating system for developing security mitigations.

OpenBSD is a free and open source operating system forked from NetBSD. According to the creator of OpenBSD, de Raadt, OpenBSD is a research operating system for developing security mitigations. What do you mean? I thought, and when I followed References (About OpenBSD),

Mitigation measures stop programs that start doing bad things.

Mitigation technology that can be invalidated → disappears in history

As you can see from the above, we found that we are trying to reduce security problems by always stopping bugs and making it impossible to stop such functions.

There was also one side story.

In December 1994, Theo de Raadt was forced to resign from the NetBSD core team, revoking access to the source repository. Teammates argued that it was due to a personality conflict on the mailing list.

Apparently, a mailing clash in the NetBSD project forced the core team to resign.

The OpenBSD Project maintains portable versions of many subsystems as packages for other operating systems. Due to the emphasis on code quality in this project, many components are reused in other software projects. Android uses its C standard library, LLVM uses its regular expression library, and Windows 10 uses OpenSSH with LibreSSL.

And back to OpenBSD itself, it seems that OpenBSD not only provides high quality code, but also packages for other operating systems, making many components available to other software projects. ..

For example, Android uses the OpenBSD C standard library, and Windows 10 also uses OpenSSH developed by OpenBSD.

(** Addendum: There are some opinions that there is no famous OpenBSD in the BSD family, and I thought it was necessary, so I added the item "OpenBSD". **)

  1. Plan 9

Plan_9_from_Bell_Labs(en.wikipedia)

Bell Labs Plan 9 is a decentralized operating system derived from Bell Labs' Computer Science Research Center (CSRC) in the mid-1980s and built on the UNIX concept first developed there in the late 1960s. .. The final official release is in early 2015.

Under Plan 9, the UNIX everything is a file metaphor is extended through a widespread network-centric file system, with cursor-addressed terminal-based I / O at the heart of UNIX-like operating systems. Plan 9's shell, rc, is text-based, but has been replaced by a window system without cursor addressing and a graphical user interface.

Bell Labs' name Plan 9 is a reference to Ed Wood's 1959 cult science fiction movie "Plan 9 from Outer Space." The name of the project mascot is "Glenda, the Plan 9 Bunny". It is still being used and developed by operating system researchers and hobbyists.

Plan 9 doesn't seem to have been released since it was released in early 2015.

  1. Solaris

Solaris_(operating_system)(en.wikipedia)

Solaris is a non-free Unix operating system developed by Sun Microsystems. It replaced the company's previous SunOS in 1993. In 2010, it was renamed to Oracle Solaris after Sun was acquired by Oracle.

That Oracle develops ** Solaris **. As introduced in [UNIX System V](# unix-system-v), it is a ** variant of System V, which is a commercial UNIX **.

It seems that there were various things such as the source code leaked to BitTorrent in 2011, but even recently it was released in August 2018.

  1. Microsoft Windows Microsoft_Windows(en.wikipedia)

Microsoft Windows is a group of several proprietary graphical operating system families, commonly referred to as Windows, all developed and marketed by Microsoft.

Each family corresponds to a specific sector of the computing industry. The active Microsoft Windows family includes Windows NT and Windows IoT.

By the way, as you all know Windows, names such as Windows XP and Windows 10 are just ** Marketing name **. The reality is that ** Windows NT ** versions have aliases such as ** 5.1 for Windows XP ** and ** 10.0 for Windows 10 **.

Windows NT

Windows_NT(en.wikipedia)

Windows NT is a family of operating systems manufactured by Microsoft, the first version of which was released on July 27, 1993. It is a processor-independent, multiprocessing and multiuser operating system.

Windows NT is (a family of) commercial operating systems and is a closed source.

What is the difference between a Windows kernel and a Linux kernel?

As summarized in What is the Difference Between Windows Kernel and Linux Kernel You can see the difference by comparing the Windows kernel and the Linux kernel.

For example, ** Windows kernel is hybrid, Linux kernel is monolithic **, and ** Windows kernel includes GUI **.

In particular, the treatment of devices is different, and Linux, which inherits the UNIX philosophy that ** everything is a file **, is designed to treat a device as a file. On the other hand, Windows ** uses different methods for interacting with devices **. There seems to be a difference in this kind of abstraction.

What is MS-DOS?

Let's go back to the Windows NT description again.

The first version of Windows NT was Windows NT 3.1, developed for workstation and server computers. It was intended to complement the consumer version of Windows, which was based on MS-DOS (including Windows 1.0 to Windows 3.1x). Gradually, the Windows NT family abolished the Windows 9x family and expanded to Microsoft's general-purpose operating system product line for all personal computers.

The first version of Windows NT is based on ** MS-DOS **. What is ** MS-DOS **?

Before that, what is ** DOS **? Let's take a look.

DOS DOS(en.wikipedia)

DOS (/ dɒs /, / dɔːs /) is an acronym for platform-independent disk operating system, which later became a common abbreviation for disk-based operating systems on IBM PC compatibles. became. DOS mainly consists of Microsoft's MS-DOS and the IBM version rebranded under the name PC DOS, both introduced in 1981. Later compatible systems from other manufacturers include DR DOS (1988), ROM-DOS (1989), PTS-DOS (1993), and FreeDOS (1998). From 1981 to 1995, MS-DOS dominated the IBM PC compatibles market.

Starting with the 1966 mainframe DOS / 360, dozens of other operating systems also use the acronym "DOS". Others include Apple DOS, Apple ProDOS, Atari DOS, Commodore DOS, TRSDOS, and AmigaDOS.

** DOS ** was originally an acronym for platform-independent disk operating system.

What is a disk operating system in the first place?

Disk_operating_system(en.wikipedia)

A disk operating system (abbreviation: DOS) is a computer operating system that resides on and can be used on disk storage devices such as floppy disks, hard disk drives, and optical disks. The disk operating system must provide a file system for organizing, reading, and writing files on storage disks. Strictly speaking, this definition does not apply to current generation operating systems, such as the version of Microsoft Windows currently in use, and more appropriately, it is only used for older generation operating systems.

A disk operating system seems to refer to an operating system that resides on disk storage. However, it says that the OS that is the target of this definition is limited to older generation OS. If you look at the history, you can see the background of the naming.

I will quote the history of DOS because there was an easy-to-understand explanation in DOS (Disk Operating System).

An operating system (OS) is software that controls computer hardware and peripherals to allow other programs to function. Early computers didn't have disk drives, but they were hard-wired to perform certain calculations. The computer was then able to use punched cards and later magnetic tape to store the instructions loaded into the computer's memory. Computers have limited memory space and were considered state-of-the-art when instructions to control the computer were transferred to disk drives such as floppy disks and internal hard drives. Today, all modern operating systems are considered disk operating systems.

According to this, on the earliest computers, there was no such thing as a current disk drive, and you had to change the hardware to change the instructions. After that, it became possible to load ** instructions from the outside ** using punch cards and magnetic tape. And it seems that it became possible to read instructions for computer control such as programs and OSs from the most advanced disk drives (floppy disks, etc.) at that time.

At that time, it was not natural that the OS was stored on a disk as it is today, so the OS stored on a disk drive was named Disk Operating System (DOS).

DOS includes Apple DOS and ** MS-DOS **.

MS-DOS MS-DOS(en.wikipedia.org)

MS-DOS (/ ˌɛmˌɛsˈdɒs / em-es-DOSS, an acronym for Microsoft Disk Operating System) is an operating system for x86-based personal computers developed primarily by Microsoft. Collectively, MS-DOS is sometimes "DOS" (also a disk operating system) as its rebranding is as DOS for IBM PCs, and as some operating systems that try to be compatible with MS-DOS. Is a common acronym for). MS-DOS was the predominant operating system for IBM PC-compatible personal computers in the 1980s, but from that point on, various generations of graphical Microsoft Windows operating systems provided graphic user interfaces (GUIs). It was gradually replaced by the system.

Among DOS, ** MS-DOS ** is an OS that supports the x86 architecture. It has played an important role until it was replaced by the generation of Windows that provided GUIs.

Initially, MS-DOS targeted Intel 8086 processors running on computer hardware that uses floppy disks to store and access application software and user data, as well as the operating system. Was there. The progressive version release provides support for other high-capacity storage media in larger sizes and formats, as well as functional support for new processors and rapidly evolving computer architectures. Ultimately, it became an important product for Microsoft as it evolved from a programming language company to a diverse software development company, providing the company with essential revenue and marketing resources.

It seems that MS-DOS is the product that Microsoft, a giant company, has become the cornerstone of today's development.

Summary

It's been a long time, but how was it? Perhaps no one will fall in love with reading it once, so be sure to follow the links to see the original article or find out for yourself.

As a convenient technique when searching for articles in English, there are many sites that contrast with a good feeling when searching with ** vs ** such as "○○ vs □□". By contrast, you can learn new things while comparing what you have learned so far, so you can study efficiently.

Even people who say "It's hard to read English!" Can read it quickly by using DeepL Translator.

What I found by summarizing this time was that it is completely different to put it in a notebook by yourself and to reconstruct it with the consciousness to show it to others. After all, ambiguous parts came out in the composition of the article, and each time I re-examined and added items.

However, since it is basically based on Wikipedia's copy and paste, the burden itself was not that much.

It was fun to know about an OS that I'm not familiar with.

If you find it helpful, ** LGTM ** Thank you!

I also do Twitter under the name ** Zawahoge ** (@zawawahoge). We are disseminating information about technology and (former) specialties, so if you are interested, please follow us!

update information

(Addition: 2020/5/9 20:13 Since the Windows item was exhausted in the second half, [What is MS-DOS?](What is # ms-dos) was added.) (Addition: 2020/5/9 20:39 [BSD kernel](#bsd kernel) item added.) (Addition: 2020/5/9 21:12 OpenBSD item added.)

Recommended Posts

I summarized 11 types of operating systems
Types of recommendation systems
I summarized the folder structure of Flask
I summarized one year of self-taught data science.
Types of interprocess communication
Summarized the types of sum of squares for analysis of variance
Revenge of the Types: Revenge of types
[Images available] I tried using neofetch on various operating systems!
Catch multiple types of exceptions
Summary of Linux distribution types
[Super basics of Python] I learned the basics of the basics, so I summarized it briefly.
I summarized how to change the boot parameters of GRUB and GRUB2