Linux 操作系统简介¶
在本章中,您将了解 GNU/Linux 发行版。
目标: 在本章中,您将学习如何
描述操作系统的功能和可能的体系结构。
回顾 UNIX 和 GNU/Linux 的历史。
为您的需求选择合适的 Linux 发行版。
解释自由和开源软件的理念。
了解 shell 的用处。
概论, linux, 发行版
知识:
复杂度:
阅读时间: 10 分钟
什么是操作系统?¶
Linux、UNIX、BSD、Windows 和 MacOS 都是操作系统。
摘要
操作系统是一组管理计算机可用资源的程序。
作为资源管理的一部分,操作系统必须
管理物理或虚拟内存。
物理内存由 RAM 条和处理器缓存内存组成,用于程序执行。
虚拟内存是硬盘上的一个位置(交换分区),它允许在计算机断电时卸载物理内存并保存系统的当前状态。
拦截对外围设备的访问。软件很少能够直接访问硬件(除了特定需求的显卡)。
为应用程序提供适当的任务管理。操作系统负责调度进程以占用处理器
保护文件免受未经授权的访问。
收集正在使用或正在进行的程序的信息。
UNIX - GNU/Linux 概论¶
历史¶
UNIX¶
1964 — 1968: MULTICS(多路复用信息和计算服务)是为 MIT、贝尔实验室(AT&T)和通用电气开发的。
1969 — 1971: 贝尔(1969 年)和通用电气退出项目后,两位开发人员肯·汤普森和丹尼斯·里奇(后来加入了布莱恩·科尔尼根),认为 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: 理查德·马修·斯托曼启动了 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: 安德鲁·S·塔能鲍姆开发了 MINIX,这是一个简化的 UNIX,用于以简单的方式教授操作系统。塔能鲍姆先生公开了其操作系统的源代码。
Linux¶
1991: 一位芬兰学生,Linus Torvalds,创建了一个在他的个人计算机上运行的操作系统,并将其命名为 Linux。他在 Usenet 讨论论坛上发布了他的第一个版本,称为 0.02,其他开发人员帮助他改进了他的系统。Linux 这个词是创始人名字 Linus 和 UNIX 的组合。
1993: Debian 发行版诞生。Debian 是一个非商业性的、基于社区的 Linux 发行版。最初开发用于服务器,非常适合这种角色;但是它是一个通用系统,也可以用在个人电脑上。Debian 是许多其他发行版的基石,例如 Mint 或 Ubuntu。
1994: 商业发行版 Red Hat 由 Red Hat 公司创建,该公司如今是 GNU/Linux 操作系统的主要发行商。Red Hat 支持社区版本 Fedora,直到最近还支持免费发行版 CentOS。
1997: KDE 桌面环境诞生。它基于 Qt 组件库和 C++ 开发语言。
1999: GNOME 桌面环境诞生。它基于 GTK+ 组件库。
2002: Arch 发行版诞生。其特点是提供滚动发布(持续更新)。
2004: Ubuntu 由 Canonical 公司(马克·舒尔特沃斯)创建。它基于 Debian,但包含免费和专有软件。
2021: Rocky Linux 诞生,基于 Red Hat 发行版。
信息
关于名称的争论:虽然人们习惯于口头称之为 Linux 操作系统,但严格来说 Linux 只是一个内核。我们不能忘记 GNU 项目对开源事业的开发和贡献,所以!我更喜欢称之为 GNU/Linux 操作系统。
市场份额¶
尽管 Linux 很流行,但普通公众对它仍然知之甚少。Linux 隐藏在智能手机、电视、互联网盒子等设备中。世界上几乎70% 的网站都托管在 Linux 或 UNIX 服务器上!
Linux 约占个人电脑的 3%,但占智能手机的 82% 以上。例如,Android 操作系统使用 Linux 内核。
自 2018 年以来,Linux 占所有 500 强超级计算机的 100%。超级计算机是一种旨在以其设计期间已知的技术实现最高性能的计算机,尤其是在计算速度方面。
架构设计¶
内核是第一个软件组件。
- 它是 Linux 系统的核心。
- 它管理系统的硬件资源。
- 其他软件组件必须通过它才能访问硬件。
Shell 是一种解释用户命令并确保其执行的实用程序。
- 主要 shell:Bourne shell、C shell、Korn shell 和 Bourne-Again shell (bash)。
应用程序是用户程序,包括但不限于
- 互联网浏览器
- 文字处理器
- 电子表格
多任务¶
Linux 属于分时操作系统家族。它在多个程序之间分配处理时间,以透明的方式在程序之间切换,以便用户使用。这意味着
- 同时执行多个程序。
- 调度程序分配 CPU 时间。
- 减少应用程序故障导致的问题。
- 如果运行的程序过多,则会降低性能。
多用户¶
MULTICS 的目的是允许用户从多个终端(屏幕和键盘)访问一台计算机(当时非常昂贵)。受此操作系统的启发,Linux 保留了这种功能,可以同时独立地与多个用户一起工作,每个用户都有自己的用户帐户,并拥有内存空间以及对文件和软件的访问权限。
多处理器¶
Linux 可以与多处理器计算机或多核处理器一起工作。
多平台¶
Linux 使用高级语言编写,可以在编译时适应不同的平台。这使其能够运行在
- 家用电脑(PC 和笔记本电脑)
- 服务器(数据和应用程序)
- 便携式计算机(智能手机和平板电脑)
- 嵌入式系统(汽车计算机)
- 活动网络设备(路由器和交换机)
- 家用电器(电视和冰箱)
开放¶
Linux 基于公认的标准,例如 POSIX、TCP/IP、NFS 和 Samba,这些标准允许它与其他应用程序系统共享数据和服务。
UNIX/Linux 哲学¶
- 将所有内容视为文件。
- 重视可移植性。
- 做好一件事,并把它做好。
- KISS:保持简单愚蠢。
- “UNIX 是一个简单的操作系统,但你必须是一个天才才能理解它的简单性。”(丹尼斯·里奇)
- “Unix 对用户友好。它只是对与之友好的用户不滥交。”(史蒂文·金)
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 环境的用户使用。
免费/开源¶
微软或 Mac 操作系统用户必须购买许可证才能使用系统。此许可证有一定的成本,尽管它通常是透明的(许可证的价格包含在计算机的价格中)。
自由软件运动在GNU/Linux 世界中提供了大多数免费发行版。
免费并不意味着免费!
开源:源代码是可用的,因此在某些条件下可以查阅和修改源代码。
自由软件必然是开源的,但反之则不成立,因为开源软件与 GPL 许可证提供的自由不同。
GNU GPL(GNU 通用公共许可证)¶
GPL 保证软件作者的知识产权,但允许第三方修改、重新分发或转售软件,前提是软件包含源代码。GPL 是来自GNU(GNU 不是 UNIX)项目的许可证,该项目在创建 Linux 方面发挥了重要作用。
这意味着
- 运行程序的自由,无论出于何种目的。
- 学习程序工作原理并根据您的需要对其进行调整的自由。
- 重新分发副本的自由。
- 改进程序并发布这些改进以造福整个社区的自由。
另一方面,即使是在 GPL 许可下许可的产品也可能有一定的成本。这不是针对产品本身,而是保证开发人员团队将继续对其进行开发,使其不断发展并解决错误,甚至为用户提供支持。
使用领域¶
Linux 发行版非常适合
- 服务器:HTTP、电子邮件、协同软件、文件共享等。
- 安全:网关、防火墙、路由器、代理等。
- 中央计算机:银行、保险、工业等。
- 嵌入式系统:路由器、互联网盒子、智能电视等。
Linux 是托管数据库或网站或作为邮件服务器、DNS 或防火墙的合适选择。简而言之,Linux 几乎可以做任何事情,这解释了特定发行版数量众多。
Shell¶
概论¶
Shell,称为命令界面,允许用户向操作系统发送命令。由于图形界面的实现,它在当今不太明显,但在 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)