The origin of the Linux system

1. The Multics project

Back in the 1960s, computers were not very popular, only a few people could use them, and computer systems were batch processing, which meant submitting a batch of tasks to a computer at a time and waiting for results. And you can’t interact with the computer. Homework often takes a long time to prepare and is not available to others, resulting in a waste of computer resources. In order to change this situation, in around 1965, Bell LABS (Bell), Massachusetts institute of technology (MIT) and general electric (GE) research and development of combined to prepare a multitasking system, time-sharing is simply realize the dream of many people at the same time use the computer, and the computer named Multics (multiplex information system), But the project was so complicated and slow for other reasons that in 1969 Bell LABS decided it might not succeed and dropped out.

2. The birth of Unix

After Bell quit Multics, the scientists at Bell LABS didn’t have much to do, and one of them, a guy named Ken Thompson, while he was developing Multics, wrote a game called Space Travel, which was basically a very simple masturbation game, But this game runs on Multics. When Bell quit Multics, Thompson lost Multics, and in order to continue playing, he spent a month writing a small operating system to run Space Travel. When he was done, Thompson was so excited that he called his colleagues over and asked them to play his game. After playing, they said they were not interested in his game, but they were interested in his system.

As MULTICS stands for ‘Multiplexed Informtion and Computing Service’, they named the system Multiplexed informtion and Computing Service “UNiplexed Information and Computing Service”, abbreviated as “UNICS” (routing Information Computing system, as opposed to Multics). Later, people took its homonym and called it “UNIX”.

This was already 1970, so 1970 was designated as the first year of Unix, so the time on the computer was counted from this year.

Later, Unix, a small operating system, became popular within Bell LABS, and was gradually improved to its fifth version in July 1974. Bell LABS made Unix public, resulting in widespread academic interest and requests for its source code. As a result, the fifth version of Unix was offered to universities for teaching purposes as a protocol “for educational purposes only” and became a model textbook for operating system courses at the time. University companies began to make various improvements and extensions to Unix through the Unix source code. In 1978 The university of Berkeley, the leader of academia, introduced a version of Unix based on version 6, with some improvements and new features. Named BSD (Berkeley Software Distribution Berkeley Distribution), it started another branch of Unix: the BSD family.

As a result, Unix had two branches, one was the branch of BSD series, and the other was the branch issued by Bell itself. At that time, BECAUSE Bell belonged to AT&T, AT&T was affected by the Sherman Anti-Trust Act of the United States, and could not sell products other than telephones and telegraph machines. Later, AT&T disintegrated. Bell was able to sell Unix, Unix was becoming commercial, and if you wanted to continue to use it you had to buy a license, 40,000 dollars a license.

3. The birth of Minix and Linux

With Unix’s expensive licensing fees, many universities have had to stop studying it, and teachers have no idea what to teach. In 1987 a university professor in the Netherlands named Andrew Wrote a Minix, similar to Unix, for teaching purposes. When Minix became popular, hackers from all over the world began to use and improve it, hoping to incorporate improvements into Minix, but Andrew felt that his system was for teaching purposes and could not destroy purity, so he refused.

On September 17, 1991, Linus Torvalds(Linus. Torvalds) posted his Linux on the Internet, probably as a sign of displeasure with Andrew (why not accept the offer? Where do you put all the enthusiasm? “, Linus posted a post that said something like: I wrote an OS kernel, but it’s not perfect enough, you can use it in any posture for free, and you can help me modify it. The post sparked a strong response. Thanks to this effort, Linux 1.0 was released in 1994.

Why did it provoke such a strong reaction? It starts with Richard Stallman, the father of free software. Stallman is a very “radical” person, because of the influence of Unix commercialization, he believes that software is the crystallization of human wisdom, should not serve a single company. In the 1980s, he launched the free software movement, sounded the clarion call for communism (the GNU Movement), and published the communist Manifesto for software (the GPL), a movement that has been widely endorsed.

Free software is: free to use, free to learn and modify, free to distribute, free to create derivative versions. The definition of GNU IS a recursive abbreviation, GNU IS NOT UNIX. That means Unix is a rogue, and I’m not. Interestingly, the GNU movement began in the 1980s, before Linux was born, so baby Stallman was upset. Just when everyone was losing faith, Linus Torvalds came out with his Linux in 1991. A fitting end to the GNU movement. Why does Linux have such a strong response? Unix is copyrighted and litigious for hobbyists, while Linux is free to use under the GPL, giving hackers a free run for their money (and by “hackers” I mean tech geeks, not people who use computers to do bad things). So Linux provided the kernel, GNU provided the peripheral software, and GNU/Linux was born. So, if you look at this, you can see that Unix came out in 1970, Linux came out in 1991, but Linux is a different operating system than Unix.

Comments:

1.FSF: Why does Linux have such a strong response? It starts with another man, Richard Stallman. Stallman is not only a programmer, but also a thoughtful social critic. He felt that turning UNIX into a proprietary, commercial operating system was a limitation on his social rights as a creator. A commercial operating system that does not allow sharing or modification is not only anti-social, it is immoral and wrong. The solution to this problem is to write UNIX software from scratch and distribute it freely.

Stallman quit his job at MIT’s ARTIFICIAL Intelligence Lab in January 1984 to work on the project, and in a short time he attracted a group of programmers. In 1985, they started an organization called the Free Software Foundation (FSF). Stallman’s guiding principle was that “computer users should be free to modify software to suit their own needs, and free to share software, because helping others is a basic social responsibility”.

2.GNU: Since the core of any computer is the operating system, Stallman’s first goal for the FSF was to create an operating system that could be freely shared and modified by anyone. In order for the new operating system to be freely distributed, Stallman realized that the operating system would have to be written from scratch.

To blend smoothly into the programming culture prevailing at the time, Stallman decided that the new operating system should be UNIX-compatible, meaning it would look like Unix and run Unix programs. In the tradition of the programming community in which he had worked, Stallman came up with an odd name for the operating system that had not yet been built: GNU.

GNU IS a recursive abbreviation for GNU IS NOT UNIX. That means Unix is a rogue, and I’m not.

3.GPL: GNU’s own kernel Hurd, because the concept is too advanced, the development progress is very slow. However, FSF programmers have worked hard to create a large number of open source software compatible with Unix systems. For example, text editors (Emacs), C compilers (GCC), C++ compilers (g++), debuggers (GDB), Unix shells (Bash),… .

In the late 1980s, Stallman had gained some experience in creating free software, and he decided that if you wanted to create a lot of free software, it would need a proper license and distribute it under that license. To this end, he came up with the idea of a copyleft. In order to realize the idea of non-profit copyright, Stallman proposed and wrote the General Public License (GPL), which was released in 1989.

The core of the GPL is that after applying the GPL to software, anyone can distribute the software, view the source code, modify the software, and distribute the modified software. In addition, the GPL requires that anyone who rewrites a distribution, including a modified version, cannot take away free use of the software or add their own restrictions.

We already know that Linux has become the mainstream of free software since Linux released Linux 0.01 in 1991. Is there a freely shareable version of Unix on the road to commercialization? The answer is obvious.

BSD was one of the two major Unix mainstreams of the 1980s (the other being System V). BSD was developed by the Computer Science Department at the University of California, Berkeley, and has been managed and developed by the Computer Science Research Group (CSRG) since 1980.

In the late 1980s, BSD enthusiasts became dissatisfied with AT&T’s commercialization of Unix. For this reason, CSRG set a goal: to completely rewrite all AT&T based BSD components. This would free BSD from AT&T’s legal constraints. In 1989, CSRG offered the first fully open source DISTRIBUTION of BSD, Networking Release 1 (more formally known as 4.3BSD NET/1). Net/1 includes a number of self-contained networking tools, but the system is not completely self-contained (i.e., it includes UNIX code).

In 1991, CSRG released a newly issued BSD, NET/2. With the exception of six kernel files, everything in BSD is completely its own.

In 1992, Bill Jolitz rewrote the last six problematic files and created a new version of BSD for PCS. He called the operating system 386/BSD and began distributing it over the Internet. Berkeley’s holy Spirit goal, an operating system unrelated to AT&T’s UNIX, was achieved. Eventually, BSD can be freely distributed worldwide as open source software.

In a short time, 386/BSD became popular, and the number of people maintaining it was increasing day by day. However, Jolitz has a full-time job and doesn’t have time to deal with all the submitted patches and enhancements. For that reason, a team of volunteers took over the job. The first thing the team did was rename the operating system to FreeBSD.

At first, FreeBSD will only run on PC hardware. Some users wanted to run BSD on other types of machines, so a new group was formed whose goal was to port FreeBSD to as many other types of machines as possible. The new group offered a version called NetBSD.

In the mid-1990s, the NetBSD group split into another group, which focused on security and cryptography issues. The group’s operating system is called OpenBSD.

As you can see, there are only three major distributions in the free world of BSD: FreeBSD, NetBSD, and OpenBSD. This is very different from the Linux world. In the Liunx world, there are literally hundreds of different distributions.

BSD is completely open source and freely distributed over the Internet, so why has Linux become the rapidly popular version of Unix?

There are two reasons: First, Linux is distributed under the GPL, and anything done to Linux belongs to the world. The BSD license is less restrictive than the GPL, allowing new products to be created using the BSD without sharing the new product. So, many programmers like to use Linux. The second reason Linux has been more successful than BSD is because of the timing of Linux’s release. Because Linux Torvalds released the Linux kernel in 1991, while 386/BSD did not release until 1992, Linux had a head start in terms of release time. As a result, Linux attracted a large number of programmers who were anxiously awaiting the world’s first free version of Unix.

Two: features of the Linux system

1. Overview of Linux advantages

Stable system: For example, it is not uncommon for hosts with Linux to run continuously for more than a year without downtime and shutdown. My Windows system opened with a black screen this morning, and was only recovered after being forcibly shut down for unknown reasons

Quick fixes for security and vulnerabilities: Linux is used by many computer geeks, so there are many maintainers and updates and maintenance are quick, while Windows is used by everyone and is not open source

Multi-tasking, multi-user: You can have different levels of users on a Linux host, and each user can log on to the system in a different environment, and you can allow different users to log on to the host at the same time to use the host’s resources

Planning of users and user groups: On Linux machines, files can be divided into three categories: readable, writable, and executable (these properties can also be set on Windows). In addition, these properties can be divided into three categories: It is the file owner, the user group to which the file belongs, and other non-owners and user groups, which has good confidentiality for the project or other project developers

Relatively few system resources: This is the most eye-catching part, any PC on the market can use Linux to build a host serving more than a hundred people

Customizable for porting to embedded platforms (such as Android devices)

Optional graphical user interfaces (e.g. GNOME,KDE)

2. The advantages of Linux

1. High degree of modularity

The kernel design of Linux is very delicate, which is divided into five parts: process scheduling, memory management, interprocess communication, virtual file system and network interface. Its unique module mechanism allows certain modules to be inserted or removed from the kernel in real time according to user needs, making the Linux kernel very small and suitable for embedded system needs.

2. Open source code

Since the development of the Linux system was closely tied to the GNU project from the beginning, most of its components came directly from the GNU project. The Linux source code is freely available to anyone and any organization that complies with the GPL, providing maximum freedom for users. This is also good for embedded systems, because embedded system applications vary, designers often need to modify and optimize the source code for specific applications, so whether to obtain source code for the development of embedded systems is crucial. In addition, Linux software resources are very rich, almost every kind of general program can be found on Linux, and the number is still increasing. All this makes it very easy for designers to build on it for secondary development. In addition, because Linux source code is open, users do not have to worry about the “back brake” and other security risks.

At the same time, open source provides great convenience to educational institutions, thus also promotes the learning, promotion and application of Linux.

3. Extensive hardware support

Linux supports microprocessors with a variety of architectures, including x86, ARM, MIPS, ALPHA, and PowerPC. It has been successfully ported to dozens of hardware platforms and runs on almost all popular processors.

Is due to the developers in the worldwide expansion of contributing for Linux, Linux has unusually rich resources of drivers, support a variety of mainstream hardware set up and the latest hardware technology, even in the absence of MMU storage management unit running on the processor, which further promote the application of Linux in embedded systems.

4. Good security and reliability

The kernel is efficient and stable. The efficiency and stability of the Linux kernel have been proven by a number of facts in various fields.

A large number of network management, network services and other functions in Linux, users can easily set up efficient and stable firewall, router, workstation, server and so on. To improve security, it also provides a large number of network management software, network analysis software and network security software.

5. Excellent development tools

The key of developing embedded system is to have a set of perfect development and debugging tools. The traditional embedded development and debugging tool is In Circuit Emulator (ICE), which provides a complete simulation environment for the target program by replacing the microprocessor of the target board, so that the developers can clearly understand the working state of the program on the target board, and it is convenient to monitor and debug the program. Online emulators are very expensive and only suitable for very low-level debugging. If you use embedded Linux, once the hardware and software can support normal serial port functions, even without the use of online emulators, you can also do a good job of development and debugging, thus saving a considerable amount of development costs. Embedded Linux provides developers with a complete Tool Chain, which can easily implement debugging at all levels from operating system to application software.

6. Good network support and file system support

Linux is inseparable from the Internet since its birth. It supports various standard Internet network protocols and is easy to transplant into embedded systems. Today, Linux supports almost all major network hardware, network protocols, and file systems, making it a good platform for NFS.

On the other hand, Linux has good file system support (for example, it supports Ext2, FAT32, romFS, etc.) and is a good platform for data partitioning, synchronization, and replication, which lays a solid foundation for developing embedded system applications.

7. Fully compatible with UNIX

Today, Linux contains tools and utilities that do all the major functions of UNIX.

But since Linux was not designed for real-time, this is the biggest regret of Linux’s use in real-time systems. However, there are many free software enthusiasts are making unremitting efforts for this purpose, and have achieved a lot of results.

Three: Advantages of Linux over other operating systems

1: Stable operation of the system, high performance, high stability, suitable for 7*24 hours uninterrupted service operation mode

2: There is plenty of software available on Linux systems, most of it free and cheap to build

3: Linux system has good portability, it supports almost all CPU platforms, which makes it easy to tailor and customize

4: Support almost all network protocols and development languages

Four: The application scope and prospect of Linux system

1. Look at the different application areas of Linux in general

1. As an enterprise server system

Although Linux appeared later than Windows and Unix, it has now accounted for more than 90% of the market, such as BAT/TMD and even Microsoft official portals are using Linux system. Linux system can be used to for enterprise architecture WWW server, database server, load balancing server, mail server, DNS server, proxy server, router, etc., not only make the enterprise reduce the operation cost, but also won the Linux system with high stability and high reliability, and do not need to consider business software copyright issues. At present, Linux has been widely used in telecommunications, finance, government, education, banking, oil and other industries. At the same time, various hardware manufacturers also support Linux operating system.

2. Application field of embedded Linux system

This area is unfamiliar to most operations, as this Linux system is primarily used as a development platform, for example: Network equipment routing and switching, firewall systems, dedicated control systems, such as vending machines, mobile phones, PDAs, various household appliances, if you do not understand these, then you must know Android phones, Android is based on Linux development. We regard this field more as development, and development is a fast money and energy consuming industry. Personally, I think it is also an industry of “talent”, which can not be made up by simply writing tens of thousands of lines of code, but more about the cognition and understanding of algorithms and data structures. Can be an unfailing young man, but only for a few people.

3. The evolution of Linux on the desktop

In recent years, especially in the domestic market, the development trend of Linux desktop operating system is very rapid. Linux desktop operating system has been widely used in government, enterprise, OEM and other fields. In addition, SUSE and Ubuntu have also launched linux-based desktop systems, especially Ubuntu Linux, which has accumulated a large number of community users. However, in terms of the overall function and performance of the system, there is still a certain gap between The Linux desktop system and the Windows series, mainly in terms of system ease of use, system management, software and hardware compatibility, software richness and so on.

2. From the perspective of technology (blockchain – cloud computing – big data -AI)

1. The cloud computing

It is also the one I am most familiar with. You can regard cloud computing as the “deep cultivation” of “operation and maintenance” technology. The concept of cloud computing can be found on your own baidu, or you can look at amazon’s definition and application of cloud computing technology. And then the allocation of hardware and software resources, put it bluntly, is “how much you want, I will give how much; “If you want to be a great cloud engineer, Linux must and must be the technology you learn.” Here you must learn the technology: KVM, Docker, K8S, Openstack, etc., of course, Openstack is generally the best cloud platform technology for teaching entry, some companies will do secondary development (such as Huawei cloud computing certification).

2. Big data

If cloud computing is closely related to enterprise business, then big data cannot be separated from the life of “users”. I believe all of you have searched for some products in a Certain Treasure, and the next time you log in, “Guess you like” will be recommended by a large number of related links, which is the charm of big data. Hadoop and Spark are deployed on Linux. On the Internet amount of “data” collation, analysis, mining and so on.

AI and blockchain

These two levels are actually mainly “development”, but are closely related to “cloud computing” and “big data”, but the bottom layer is Linux as the operating system.