Linux怎么来的?这篇文章讲清楚其前世今生
但我希望我的话能让这些代码和Linux森林的你脸上露出微笑,当你走出这个森林后,你就能了解森林里的路,你会想带一个女孩下次你去约会并找到自己的角落时与你一起。
虽然Linux内核非常庞大,但是如果横向比较计算机发展的历史,Linux的历史却非常短。当电脑问世时,没有华丽的包装,它们都可以简单地工作。用技术语言来说,就是这样。只能执行一项任务,执行一个进程,也可以称为“裸操作”。计算机科学专业的学生应该很快就能理解什么是准系统程序。一个裸程序只能允许一个进程使用硬件资源,这是一种无形的硬件资源浪费。 。
可以用我们的手机来比喻。如果是裸机的话,我们玩王者荣耀的时候,如果有人打电话,王者荣耀就会被打断。后来,出现了可以提供多任务处理的操作系统。使用相同的CPU芯片和操作系统,我可以打开微信、QQ,同时做很多其他事情。
发布了很多操作系统。我认为操作系统可以分为实时操作系统和通用操作系统。实时操作系统(RTOS,全称:Real Time Operating System)可以理解为对时间要求非常严格,可以用一个“必须”二字,表示在一定的时间段内必须做某件事。 。
至于通用操作系统,我们很常见,比如电脑、Windows、Android手机等。 Linux 也可以被认为是通用操作系统,因为它们对时间不是很严格。
配置一定的宏定义,Linux就可以成为一个实时操作系统,但我们使用Linux主要是为了通用操作系统,多用户、多任务等能力极其突出。
世界上有无数的嵌入式操作系统。我有一个非常优秀的弟弟,几年前也参与过原生嵌入式操作系统的开发。当然他们是为了盈利,我了解他们。周立功先生,他的公司也开发了嵌入式操作系统,但是对于我们开发者来说,我们做项目的时候,只是选择适合我们项目的系统。对于学习,我认为你最应该学习。先进的操作系统可以让你的技术更加先进。
VxWorks
VxWorks是美国WindRiver公司的产品,是市场占有率较高的嵌入式操作系统。 VxWorks实时操作系统由400多个相对独立、短小紧凑的目标模块组成。用户可以根据需要选择合适的模块来定制和配置系统,具有任务优先级、任务之间的同步和通信、中断处理、定时器以及内存管理、符合POSIX规范(便携式操作系统接口)的内存管理等功能。系统)。 、多处理器控制程序和简单易懂的用户界面甚至可以将核心减少到8 KB。
这个操作系统我不敢过多吹嘘。你可以自己去了解一下。由于稳定性如此之好,因此被应用于航天、卫星、军事等各个领域。它非常实用,这也是很多教育机构也重点关注这个操作系统的原因。举办了培训课程。
μC/OS-II
μC/OS-II是在μC-OS的基础上开发的。它是美国嵌入式系统专家Jean J. Labrosse用C语言编写的一个紧凑、可移植、实时多任务内核,μC/OS-II可以管理64个任务,并提供任务调度和管理、内存管理、任务之间的同步和通信、时间管理和中断服务。它具有执行效率高、占用空间小、实时性能和可扩展性优良等特点。性欲强等特征。
μClinux
μClinux是Linux的一个优秀的嵌入式版本,它的全称是micro-control Linux,字面意思就是微控Linux。与标准Linux相比,μClinux内核非常小,但它仍然继承了Linux操作系统的主要特点,包括良好的稳定性和可移植性、强大的网络功能、优秀的文件系统支持以及丰富的标准API。以及网络协议TCP/IP等。由于没有MMU内存管理单元,实现多任务需要一定的技巧。
eCos
eCos(嵌入式可配置操作系统)这是一个嵌入式可配置操作系统。它是一个开源、可配置、可移植、实时操作系统,适用于深度嵌入式应用程序。其最大的优点是配置灵活、模块化设计。核心由Xiaotong组件组成,包括内核、C库和核心运行时包。每个组件都可以提供大量的配置选项(实时核心也可以作为可选配置),可以使用eCos提供的配置工具轻松进行配置,不同的配置可以让eCos满足嵌入式应用的不同需求。 ![]()
![]()
内核的工作
大家都知道我们使用的电脑是操作系统,但是内核是什么?首先,我们简单谈谈操作系统。操作系统是面向用户的。计算机用户可以使用计算机操作系统来工作、聊天和玩游戏。我们使用的这些东西就是应用软件。对于应用来说,这是核心。运行并管理应用程序的操作系统。
内核还有更重要的任务就是管理应用程序、为应用程序准备液态内存、管理应用程序执行、让应用程序平滑过渡。当然,这是理想的情况。这是一个不理想的情况。这可能会导致内存或资源不足,从而导致应用程序崩溃和其他异常。
除了管理应用程序之外,内核还必须管理硬件设备。 Linux内核中有大量的设备驱动代码。如果一个内核开发工程师说他不懂设备驱动程序,那只是一个笑话。核心连接到处理器和硬件设备。联系非常紧密,它在整个操作系统中的地位起着承上启下的作用。
1.2 UNIX 的诞生
生日:UNIX 于 1969 年诞生。
他的父亲和母亲:Dennis Ritchie 和 Ken Thompson 创造了灵感的火花。
出生地址:贝尔实验室![]()
贝尔实验室图片![]()
贝尔实验室徽标
出生信息:
1965年,贝尔实验室计划实施一个项目,这个项目被称为PDP -7计算机该项目由通用电气和麻省理工学院发起。他们给这个操作系统起了一个好听的名字:“MULTICS Operating System”(“多路复用信息和计算服务”的缩写)。总有一个计划来完成事情。他们对于这个操作系统给出的计划是让更多的人能够使用这个操作系统。按照我们现在的人的说法,这是一个多用户系统,多任务,多层次等等。
到了 1969 年,赞助商们觉得进展太慢了。他们本来想早点来,这样就可以玩电脑游戏。但结果,你们科学家搞了这么久,还是没有成功,所以我们只好停止了。 ,如果投资者停止了,他将不再提供备用资源,其他的事情他自己处理,投资者不会关心。
计划停止了。当时,肯·汤普森正在调试一个名为“星际旅行”的程序。这个程序运行在一台叫做GE-635的机器上,但是因为那台机器的硬件比较落后。 ,跑步速度非常慢,这让肯·汤普森感到很不爽。然后他在从事“PDP-7计算机项目”时发现了PDP-7计算机的存在。这台电脑就是图片下面的那台电脑。那个时候应该没有人。考虑到计算机可以如此之小,他们将 GE-635 程序移植到 PDP-7 计算机上。
直到1970年,PDP-7都可以运行GE-635程序,但只能支持两个用户。当时,Brian Kernighan 开玩笑地将他们的系统称为“UNiplexed 信息和计算服务”。缩写是UNICS,但后来大家都采用了同音的名字,称之为UNIX。因此,1970年可以称为UNIX元年。 ![]()
Thomson 和 Dennis Ritchie ![]()
PDP-7 计算机
1.3 BSD 操作系统
Berkeley Software Distribution (BSD),也称为 Berkeley UNIX),是操作系统的名称。它源自 UNIX(类 UNIX),由加州大学伯克利分校的学生 Bill Joy 在 20 世纪 70 年代提出,也用于表示源自它的各种集合。
BSD 通常被认为是工作站级 UNIX 系统。这是由于 BSD 的用户许可非常宽松。许多 20 世纪 80 年代成立的计算机公司都受益于 BSD。著名的例子包括 DEC。 Ultrix 和 SunOS SunOS。在 20 世纪 90 年代,BSD 基本上被 System V 版本 4.x 和 OSF/1 所取代,但其开源版本被采用以促进互联网的发展。
BSD比Linux出现得更早,稳定性和安全性都比Linux好。 Windows 和操作系统资格也早于 BSD。
UNIX创始人之一Ken Thompson曾这样评价Linux,“Linux只是反微软潮流的产物”。这家伙认为Linux不能取得多大成就,并且非常有信心BSD可以随时击败Linux,甚至认为Linux是一个廉价而肮脏的内核操作系统。
事实证明,Linux 凭借纯粹的力量和一些运气赢得了这场战争。 Linux刚开发出来的时候,BSD就陷入了官司之中,再也没有想过要挑战Linux。 BSD之所以受到两面夹击,显然是因为它的商业化,而Linux正是因为其开源代码而更受全球开发者的欢迎。
某件事的成功90%是由它的领导者决定的。就像一支球队能走多远一样,队长和教练可以决定球队的深度。 Linux 也是如此。莱纳斯·托瓦兹 (Linus Torvalds) 是一位杰出的领导者。他设法让一群性格各异、绝不是普通人的黑客参与其开发,而没有像其他开源项目那样分崩离析。
还有一点就是Linux的硬件支持比BSD更好,这对于不同的终端设备来说简直就是一个惊喜。随着个人电脑继续被边缘化,移动产品必须找到适合它们的操作系统。 Linux 是最好的选择。
强大的GNU支持,GNU许可证与BSD不兼容,所以Linux的出现将两者完美结合,所以现在Linux的全称是GNU/Linux。
BSD走的是教会式的学术道路,而Linux则代表了黑客的市场精神。 BSD非常自信,认为自己出身贵族,就应该享受世间的名利,而Linux不再是。再次验证了农村包围城市的必然性。胜利已经结束,敌人被打败了。
BSD 已经具备了良好的基础。她缺少的或许是一点运气,但未来或许还有很大的潜力。?每个人都希望有一个免费且易于使用的操作系统,因为不是每个人都有钱,也不是每个人都有自己编写操作系统的技能。理查德·斯托曼当时在麻省理工学院。人工智能实验室启动了GNU项目,希望开发出全套开源操作系统来替代UNIX。计划中的操作系统称为 GNU。
1983 年 9 月 27 日,Richard Stallman 在 net.UNIX-wizards 和 net.usoft 新闻组上宣布了该计划。该项目开发了许多我们现在所知的常用工具,包括 GNU 编译器套件 (GCC)、GNU C 库 (glibc) 和 GNU 核心工具集 (coreutils)。还包括 GNU 调试器 (GDB)、GNU 二进制实用程序 (binutils)、GNU Cash shell 和 GNOME 桌面环境。
GNU 项目的目的当然是开发一个可以自由分发的操作系统。这个操作系统的名字是Hurd。不过,由于操作系统要求较高,赫德正处于测试阶段。它最初的目的是作为一个好的操作系统。东西,但能力有限,开发出来的东西总会有bug,创意再好也是徒劳。
但是当Linus通过GNU发布了自己的Linux系统时,它就开始流行并真正失控了。这就是GNU 和Linux 密切相关的原因。
1.5 UNIX派生系统发展表
用文字描述事实总是显得有些不够。就像两个人吵架一样。问题可以通过战斗来解决,也可以通过大家来解决,但我认为战斗应该是解决问题最有效的方法。直接说,说得再多,也永远不会像枪杆子那么真实。
本书主要关注Linux。你可以观察Linux的发展轨迹,非常令人印象深刻。当然,BSD 目前的市场份额无法与 Linux 相比,但它在整个 UNIX 中也有其优势一席之地。![]()
1.6 MINIX,Linux Bootloader ![]()
MINIX Bootloader
UNIX 创建后,版权归 AT&T 所有。 UNIX 版本 7 发布后,发布了新的许可条款,将 UNIX 源代码私有化。大学不再被允许使用 UNIX 源代码。荷兰阿姆斯特丹自由大学计算机科学系的 Andrew Stuart "Andy" Tanenbaum 教授编写了一个小型的类 UNIX 教学系统,称为 MINIX(代表迷你 UNIX)。 )。 ![]()
永远不要低估任何人。如果那个人能写出自己的教学操作系统,就不应该随便乱搞。你可能做不到,但是下面的可以,而且大家可能不知道。就是“宏内核”和“微内核”,但这家伙和Linus之间的争论却引起了轰动。无论如何,Linux 现在应该获胜。最直接的原因是它是开源的,以便更多的开发者可以使用Linux内核。移植到您自己的设备,包括 ARM 设备。
但是我们无法删除ast角色。就对计算机系统和教学的贡献而言,它们当然有其一席之地。作为本文的作者,他们都是我们的祖先。技术无国界。请接受。离开我的膝盖。
1.7 Linux 的诞生 ![]()
Linus Torvalds
我们的主角,Linus Torvalds 1991 年,Linus Torvalds 在赫尔辛基上大学时,我对操作系统非常感兴趣。因为386BSD还没有出来。然而,他不喜欢 386 上的 MS-DOS 操作系统,所以他安装了 Minix。然而,他对 Minix 只被允许用于教育(当时 minix 不允许用于任何商业目的)感到不满,于是他开始编写自己的操作系统。
Linux 的第一个版本于 1991 年 9 月由大学 FTP 服务器管理员 Ari Lemmke 在互联网上发布。起初,托瓦兹称这个核心为“Freax”,意思是“自由”和“怪胎”。附上单词“X”和常用字母“X”的组合,以配合所谓的类UNIX系统。 。然而FTP服务器管理员认为原来的名字“Freax”不太好听,于是将内核的名字改为“Linux”。当时只有 10,000 行代码,而且即使这样也必须在 Minix 操作系统上运行,并且必须从硬盘驱动器启动。然后,第二个版本(版本 0.02)于 10 月发布。与此同时,这位来自芬兰赫尔辛基的学生在 comp.os.minix 上发布了这个公告
大家好,使用 minix 的人 - 我正在制作一个(免费)操作系统(只是一个爱好,我不会大以及像gnu这样的专业版)用于386(486)个AT克隆。
1994年3月,Linux版本1.0正式发布。为了使 Linux 商业化,Linus Torvalds 决定更改其原始许可证(这将限制商业用途)并用 GNU GPL 许可证替代。此后,许多开发者尝试将GNU元素集成到Linux中,以创建一个功能齐全且免费的操作系统。 ![]()
80386 芯片 ![]()
80386 计算机
如果 Linus 本人无法将 Linux 开发到这个水平,我想他当时做了一个非常正确的决定,那就是“开源”让世界上更多优秀的程序员加入到他的行列中。职业。为了让更多的人同时开发,Linus 还编写了 GIT,这是一个令许多贡献开发者兴奋的工具。
1.8 Linux 徽标 ![]()
Linux 的徽标和吉祥物是一只名为 Tux 的企鹅。这个标志的由来是因为Linus在澳大利亚的时候在动物园里被企鹅咬了,所以他选择了企鹅。作为Linux的象征。比较公认的观点是,企鹅代表南极洲,南极洲是全世界共有的一块土地。这也意味着 Linux 是适合所有人的 Linux。
他们曾经开玩笑说莱纳斯被企鹅咬伤后伤口会发炎。当有炎症时,伤口会有点痛。写代码的时候,他晚上想睡个午觉,却被这种炎症的疼痛刺激了。当然,当然,这只是一个传说。不管这个传说是真是假,也许有一天大师心情好的时候就会揭晓答案。 ![]()
1.9 Linux 现状
如今,在 Linus Torvalds 的领导下,许多开发人员参与到 Linux 内核的开发和维护中。由 Richard Stallman 领导的自由软件基金会继续提供许多支持 Linux 内核的 GNU 组件。一些由个人和公司开发的第三方、非 GNU 组件也提供对 Linux 内核的支持。这些第三方组件包括大量的作品,包括核心模块以及用户应用程序和库。 Linux 社区或公司已经发布了一些著名的 Linux 发行版,包括 Linux 内核、GNU 组件、非 GNU 组件以及其他形式的包管理系统软件。
现阶段我们可以说不是每个人都可以离开Linux。好吧,有些人必须站出来争论。我问你,你知道你的手机底层是Linux内核吗?你说你用的是塞班手机。 ,云购物平台有淘宝、亚马逊等。全部使用Linux开发和维护。嗯,如果你说你是老板,别人给你买东西,那你就可以炒股了。很多股票平台都是基于Linux开发的。维持。 ![]()
![]()
1.10 为什么要学习Linux
Linux内核现在已经涵盖了手机、平板、路由器等广泛领域。至于大家都非常喜欢的苹果操作系统,底层内核也有Linux的影子。 Linux的普及是毋庸置疑的,学习Linux应该是每个技术人员的标准要求。
刚开始工作的时候,很多面试官问我,你对Linux很了解吗?每次我都回答说我刚刚开始接触 Linux,但我真的很喜欢 Linux,并且会继续在它上面工作。我研究和学习Linux,也喜欢和这些Linux爱好者讨论问题。
学习完Linux内核后,你将对整个计算机系统有更深入的了解。作为开发人员,无论是从事驱动开发、应用程序开发,还是后端开发,都需要了解计算机操作系统和内核。只有使用运算引擎才能写出更好的代码并且减少错误。
作为一名开发者,你不应该因为自己设计的模块看起来很小,而局限于自己的小领域,但你不了解进程的调用机制,也不知道进程会阻塞、在多个状态下准备和执行。如何编写低容错率的代码? ![]()
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网