Linux 操作系统简介¶
在本章中,您将了解 GNU/Linux 发行版。
目标:在本章中,您将学会如何
描述操作系统的功能和可能的架构。
回顾 UNIX 和 GNU/Linux 的历史。
为您的需求选择合适的 Linux 发行版。
解释自由和开源软件的理念。
了解 Shell 的用途。
概述、Linux、发行版
知识:
难度:
阅读时间:10 分钟
什么是操作系统?¶
Linux、UNIX、BSD、Windows 和 MacOS 都是操作系统。
摘要
操作系统是一组管理计算机可用资源的程序。
作为资源管理的一部分,操作系统需要
-
管理物理或虚拟内存。
-
物理内存由 RAM 条和处理器缓存内存组成,用于程序执行。
-
虚拟内存是硬盘上的一个位置(交换分区),它允许卸载物理内存并在计算机断电时保存系统的当前状态。
-
-
拦截外设访问。软件很少能直接访问硬件(除非是出于特定需求的显卡)。
-
为应用程序提供适当的任务管理。操作系统负责调度进程以占用处理器。
-
保护文件免受未经授权的访问。
-
收集有关正在使用或正在进行的程序的信息。
UNIX - GNU/Linux 概论¶
历史¶
UNIX¶
-
1964 - 1968:为麻省理工学院、贝尔实验室 (AT&T) 和通用电气开发了 MULTICS (MULTiplexed Information and Computing Service)。
-
1969 - 1971:在贝尔(1969 年)和通用电气退出该项目后,两位开发人员 Ken Thompson 和 Dennis Ritchie(后来 Brian Kernighan 加入)认为 MULTICS 过于复杂,开始开发 UNIX (UNiplexed Information and Computing Service)。虽然它最初是用汇编语言创建的,但 UNIX 的创建者最终开发了 B 语言,然后是 C 语言(1971 年),并完全重写了 UNIX。由于它是在 1970 年开发的,UNIX/Linux 系统的开始时间(纪元)被设定在 1970 年 1 月 1 日。
C 语言至今仍是最流行的编程语言之一。作为一种接近硬件的低级语言,它允许将操作系统适配到任何拥有 C 编译器的机器架构。
UNIX 是一个开放且不断发展的操作系统,在计算历史中发挥了重要作用。它是许多其他系统(如 Linux、BSD、MacOS 等)的基础。
UNIX 至今仍具相关性(HP-UX、AIX、Solaris 等)。
GNU 项目¶
-
1984:Richard Matthew Stallman 发起了 GNU (GNU's Not Unix) 项目,旨在建立一个自由且开放的 Unix 系统,其中最重要的工具包括:gcc 编译器、bash Shell、Emacs 编辑器等。GNU 是一个类 Unix 操作系统。GNU 的开发始于 1984 年 1 月,被称为 GNU 项目。GNU 的许多程序都是在 GNU 项目的名义下发布的;我们称之为 GNU 包。
-
1990:GNU 的内核 GNU Hurd 于 1990 年启动(在 Linux 启动之前)。
MINIX¶
- 1987:Andrew S. Tanenbaum 开发了 MINIX,一个简化的 UNIX,用于以简单的方式教授操作系统。Tanenbaum 先生提供了他操作系统的源代码。
Linux¶
-
1991:芬兰学生Linus Torvalds 创建了一个在他个人电脑上运行的操作系统,并将其命名为 Linux。他在 Usenet 讨论论坛上发布了他的第一个版本,称为 0.02,其他开发人员帮助他改进了他的系统。Linux 这个词是创始人名字 Linus 和 UNIX 的文字游戏。
-
1993:Debian 发行版创建。Debian 是一个非商业性的、社区驱动的发行版。最初是为了在服务器上使用而开发的,它非常适合此角色;然而,它是一个通用的系统,也可用于个人电脑。Debian 是许多其他发行版(如 Mint 或 Ubuntu)的基础。
-
1994:由 Red Hat 公司创建了商业发行版 Red Hat,该公司是 GNU/Linux 操作系统的领先发行商。Red Hat 支持社区版本 Fedora,直到最近还支持免费发行版 CentOS。
-
1997:KDE 桌面环境创建。它基于 Qt 组件库和 C++ 开发语言。
-
1999:GNOME 桌面环境创建。它基于 GTK+ 组件库。
-
2002:Arch 发行版创建。其特点是提供滚动发布(持续更新)。
-
2004:Canonical 公司(Mark Shuttleworth)创建了 Ubuntu。它基于 Debian,但包含自由软件和专有软件。
-
2021:基于 Red Hat 发行版创建了 Rocky Linux。
信息
名称争议:尽管人们习惯于口头上称 Linux 为操作系统,但严格来说,Linux 只是一个内核。我们不能忘记 GNU 项目在开源事业上的开发和贡献,所以!我更喜欢称之为 GNU/Linux 操作系统。
市场份额¶
尽管 Linux 非常普遍,但对于普通大众来说,它仍然相对不为人知。Linux 隐藏在智能手机、电视、互联网盒子等设备中。世界上近70% 的网站都托管在 Linux 或 UNIX 服务器上!
Linux 装备了大约3% 的个人电脑,但超过82% 的智能手机。例如,Android 操作系统使用 Linux 内核。
自 2018 年以来,Linux 装备了 100% 的全球 500 强超级计算机。超级计算机是一种旨在在设计时利用已知技术(尤其是在计算速度方面)实现最高可能性能的计算机。
架构设计¶
-
内核是第一个软件组件。
- 它是 Linux 系统的核心。
- 它管理系统的硬件资源。
- 其他软件组件必须通过它来访问硬件。
-
Shell 是一个解释用户命令并确保其执行的实用程序。
- 主要 Shell:Bourne shell, C shell, Korn shell, and Bourne-Again shell (bash)。
-
应用程序是用户程序,包括但不限于
- 互联网浏览器
- 文字处理器
- 电子表格
多任务¶
Linux 属于分时操作系统家族。它在多个程序之间分配处理时间,并对用户透明地在程序之间切换。这意味着
- 同时执行多个程序。
- 调度程序分配 CPU 时间。
- 减少了因应用程序失败而引起的问题。
- 运行程序过多时性能下降。
多用户¶
MULTICS 的目的是允许用户从多个终端(屏幕和键盘)在一台计算机上工作(当时计算机非常昂贵)。受到这个操作系统的启发,Linux 保留了同时独立与多个用户工作的能力,每个用户都有自己的用户账户,拥有内存空间以及对文件和软件的访问权限。
多处理器¶
Linux 可以与多处理器计算机或多核处理器协同工作。
跨平台¶
Linux 用一种高级语言编写,可以在编译时适应不同的平台。这使得它可以在以下设备上运行
- 家用电脑(PC 和笔记本电脑)
- 服务器(数据和应用程序)
- 便携式计算机(智能手机和平板电脑)
- 嵌入式系统(车载电脑)
- 网络有源设备(路由器和交换机)
- 家用电器(电视和冰箱)
开放¶
Linux 基于公认的标准,如POSIX、TCP/IP、NFS 和Samba,这些标准允许它与其他应用系统共享数据和服务。
UNIX/Linux 理念¶
- 将一切视为文件。
- 重视可移植性。
- 做好一件事,并把它做好。
- KISS:保持简单,愚蠢。
- "UNIX 是一个简单的操作系统,但你需要成为一个天才才能理解它的简单性。" (Dennis Ritchie)
- "Unix 是用户友好的。只是它并不随意对待用户。" (Steven King)
GNU/Linux 发行版¶
Linux 发行版是围绕 Linux 内核组装的一致的软件集合,可与必要的组件一起安装和管理(安装、删除、配置)。有社团或社区发行版(Debian、Rocky)和商业发行版(Red Hat、Ubuntu)。
每个发行版都提供一个或多个桌面环境,并提供一套预装软件和额外的软件库。配置选项(例如内核或服务选项)因发行版而异。
这一原则使得发行版能够迎合初学者(Ubuntu、Linux Mint...)或为高级用户提供完全可定制的(Gentoo、Arch);发行版还可以更适合服务器(Debian、Red Hat)或工作站(Fedora)。
桌面环境¶
有很多图形环境,如GNOME、KDE、LXDE、XFCE 等。总有一款适合您,它们的人体工程学足以与微软或苹果系统相媲美。
那么,为什么对 Linux 的热情如此之低呢,尽管这个系统几乎没有病毒?这是否是因为许多编辑器(Adobe)和制造商(Nvidia)不参与自由游戏,并且不提供其软件或驱动程序的 GNU/Linux 版本?也许是对改变的恐惧,或者是在哪里购买 Linux 电脑的困难,或者 Linux 下发布的电子游戏太少。至少最后一个借口很快就会成为过去,随着 Steam 游戏引擎 for Linux 的出现。
GNOME 3 桌面环境不再使用桌面概念,而是使用 GNOME Shell(不要与命令行 Shell 混淆)。它兼作桌面、仪表板、通知区域和窗口选择器。GNOME 桌面环境基于GTK+ 组件库。
KDE 桌面环境基于Qt 组件库。它传统上推荐给熟悉 Windows 环境的用户。
自由 / 开源¶
Microsoft 或 Mac 操作系统的用户必须购买许可证才能使用该系统。该许可证有成本,尽管通常是透明的(许可证价格包含在计算机价格中)。
自由软件运动在GNU/Linux 世界中提供了大部分免费发行版。
自由不等于免费!
开源:源代码是公开的,因此可以在某些条件下进行查阅和修改。
自由软件必然是开源的,但反之则不然,因为开源软件与 GPL 许可证提供的自由是不同的。
GNU GPL (GNU 通用公共许可证)¶
GPL 保证了软件作者的知识产权,但允许第三方修改、重新分发或转售软件,前提是软件附带源代码。GPL 是源自GNU (GNU is Not UNIX) 项目的许可证,该项目在创建 Linux 的过程中发挥了重要作用。
它意味着
- 为了任何目的运行程序的自由。
- 研究程序工作原理并根据您的需求进行调整的自由。
- 重新分发副本的自由。
- 改进程序并将其改进发布以造福整个社区的自由。
另一方面,即使是 GPL 许可的产品也可以有成本。这不是产品本身,而是保证开发团队将继续对其进行开发、纠错,甚至为用户提供支持。
应用领域¶
Linux 发行版在以下方面表现出色:
- 服务器:HTTP、电子邮件、群件、文件共享等。
- 安全:网关、防火墙、路由器、代理等。
- 中央计算机:银行、保险、工业等。
- 嵌入式系统:路由器、互联网盒子、SmartTV 等。
Linux 是托管数据库或网站、或作为邮件服务器、DNS 或防火墙的合适选择。总之,Linux 几乎无所不能,这解释了特定发行版数量的原因。
Shell¶
概述¶
Shell,也称为命令行界面,允许用户向操作系统发送命令。由于图形界面的实现,它如今不太显眼,但在 Linux 系统上仍然是特权方式,因为并非所有 Linux 系统都有图形界面,并且其服务并不总是有设置界面。
它提供了一种真正的编程语言,包括经典的结构(循环、分支)和常见的构成(变量、参数传递、子程序)。它允许创建脚本来自动化某些操作(备份、用户创建、系统监控等)。
平台上或根据用户的偏好,有几种类型的 Shell 可供选择和配置。例如:
- sh,POSIX 标准 Shell
- csh,C 语言面向命令的 Shell
- bash,Bourne-Again Shell,Linux Shell
功能¶
- 命令执行(检查给定的命令并执行它)。
- 输入/输出重定向(将数据返回到文件而不是写入屏幕)。
- 连接进程(管理用户连接)。
- 解释型编程语言(允许创建脚本)。
- 环境变量(在运行期间访问特定于系统的信息)。
原理¶
检验您的知识¶
操作系统是一组用于管理计算机可用资源的程序
- 正确
- 错误
操作系统对于以下操作是必需的
- 管理物理内存和虚拟内存
- 允许直接访问外设
- 将任务管理外包给处理器
- 收集有关已使用或正在使用的程序的信息
在这些人物中,哪些人参与了 UNIX 的开发
- Linus Torvalds
- Ken Thompson
- Lionel Richie
- Brian Kernighan
- Andrew Stuart Tanenbaum
Linux 内核的创造者 Linus Torvalds 的原国籍是
- 瑞典
- 芬兰
- 挪威
- 佛兰德
- 法国
以下哪个发行版是最古老的
- Debian
- Slackware
- Red Hat
- Arch
Linux 内核是
- 多任务
- 多用户
- 多处理器
- 多核
- 跨平台
- 开放
自由软件是否一定是开源的?
- 正确
- 错误
开源软件是否一定是自由的?
- 正确
- 错误
以下哪个不是 Shell
- Jason
- Jason-Bourne shell (jbsh)
- Bourne-Again shell (bash)
- C shell (csh)
- Korn shell (ksh)