了解什么是 Linux ,并介绍命令行和 shell 在 Linux 整体架构中的位置
更多精彩
- 更多技术博客,请移步 IT人才终生实训与职业进阶平台 - 实训在线
1.1 什么是 Linux
-
下图中的每一部分在 Linux 中各司其职,协同构成一个完整的 Linux 系统
1.1.1 深入探究 Linux 内核
- 内核是 Linux 的核心
- 内核控制着计算机系统上所有的硬件和软件,在必要时分配硬件,并根据需要执行软件
- 第一个版本的 Linux 内核是由 Linus Torvalds 读大学时编写的
-
内核主要负责以下四种功能
1.1.1.1 系统内存管理
内核的主要功能之一就是内存管理
内核不仅管理服务器上的可用物理内存,还可以创建和管理虚拟内存
内核通过硬盘上的存储空间来实现虚拟内存,这个空间称为 交换空间( Swap Space )
内核不断地在交换空间和实际物理内存之间 反复交换虚拟内存中的内容 ,让系统以为自己拥有比物理内存更多的可用内存
-
交换示意入下图,可以看出是由内核来统筹三者之间的数据交换
- 内存存储单元按组划分为很多块,这些块称为 页面( Page )
- 内核将每个内存页面放在物理内存或交换空间
- 内核同时会维护一个 内存页面表 ,在这个表中指定哪些页面在物理内存中,哪些被换到虚拟内存中
- 内核会记录哪些内存页面正在被使用,并自动把一段时间没有被使用的内存页面复制到交换空间中,这个过程被称为 换出( Swapping Out )
-
只要 Linux 在运行,为运行中的程序换出内存页面的过程就不会停止,如下图
- 当程序要访问一个已经被换出的内存页面时
- 内核必须从物理内存中换出另外一个内存页面用于让出空间
-
然后再从交换空间换入被访问的内存页面
1.1.1.2 软件程序管理
- Linux 将运行中的软件程序称为 进程
- 进程可以在前台运行,将输入显示在屏幕上,也可以在后台运行,隐藏到幕后
- Linux 中所有的进程都是由内核控制和管理
- 内核创建第一个进程 init 进程,用于启动系统上所有其他进程
- 内核在启动任何其他进程时,都会在虚拟内存中给新进程分配一块专有空间来存储进程用到的数据和代码
- 开机时需要启动或停止的应用脚本一般放置在
/etc/init.d
中
- 开机时需要启动或停止的应用脚本一般放置在
- init 进程 存在 运行级( Run Level ) 的概念
- Linux 一共有 5 个启动运行级:
- 只启动基本的系统进程以及一个控制台终端进程,这被称为 单用户模式
- 通常用于在系统出现问题时进行紧急的文件系统维护,相当于 Windows 的安全模式
- 还没提到
- 标准的运行级,可以运行大多数应用程序,例如网络支持程序
- 还没提到
- 常见的运行级,可以运行图形化界面,允许通过图形化界面登录系统
- 只启动基本的系统进程以及一个控制台终端进程,这被称为 单用户模式
- Linux 可以通过调整启动运行级来控制整个系统的功能
1.1.1.3 硬件设备管理
- 内核可以管理硬件设备
- Linux 想要和任何设备通信之前,都需要在内核代码中加入该设备的 驱动程序代码
- 驱动程序代码相当于应用程序和硬件设备的中间人,允许内核与设备之间交换数据
- 内核中有以下两种方法用于插入设备驱动程序代码
- 编译进内核的设备驱动代码
- 每次都需要重新编译内核,非常低效
- 可插入内核的设备驱动模块
- 可以方便的实现热插拔,无需重新编译内核
- 编译进内核的设备驱动代码
- 硬件设备被 Linux 识别为特殊的文件,称为 设备文件 ,有以下三种类型
- 字符型设备文件
- 处理数据时每次只能处理一个字符,例如调制解调器
- 块设备文件
- 处理数据时每次能处理大块数据,例如硬盘
- 网络设备文件
- 进行数据包发送和接收数据,例如网卡
- 字符型设备文件
- Linux 会为每个设备文件创建一个 节点 ,用于对这些设备文件进行唯一标识
- 每个节点都是一个键值对,键是主设备号,相当于类别,值是副设备号,指具体设备
1.1.1.4 文件系统管理
- 内核支持通过不同类型的文件系统从硬盘读写数据
- 内核采用 虚拟文件系统( Virtual File System ,VFS ) 作为与每个文件系统交互的接口
- 当每个文件系统被挂载和使用时,VFS 都会将信息缓存到内存中
-
下图列出了 Linux 支持用于读写数据的标准文件系统
1.1.2 GNU 工具
- GNU( GNU’s Not Unix )组织在开源软件( Open Source Software ,OSS )的软件理念下开发了一套完整的 Unix 工具
- 将 Linux 内核和 GNU 操作系统工具整合后,就产生了一款完整的、功能丰富的免费操作系统
1.1.2.1 核心 GNU 工具
- 该工具的主要作用是为 Linux 系统管理员设计出一套类似于 Unix 的环境
- 供 Linux 使用的核心工具被称为 GNU Core Utilities 软件包,包含以下三个部分
- 处理文件
- 操作文本
- 管理进程
1.1.2.2 shell
- GNU / Linux shell 是一种特殊的交互式工具,为用户提供以下功能
- 启动程序
- 管理文件系统中的文件
- 运行在 Linux 上的进程
- shell 的核心是命令行提示符
- 将多个 shell 命令放入文件中作为程序执行,这被称为 shell 脚本
- 所有 Linux 发行版默认的 shell 都是由 GNU 组织开发的 Bash shell
- Bash 名称由来是根据 Unix 原生的 Bournce shell 修改而来,名为 Bournce again shell
-
下图列出了 Linux 支持的 shell 类型
1.1.3 Linux 桌面环境
- Linux 之所以提供桌面环境,很大因素是因为受到了 Windows 流行的影响
1.1.3.1 X Windows 系统
- X Windows 是图形显示的核心部分
- X Windows 是直接和 PC 上的显卡及显示器打交道的底层程序
- X Windows 控制着 Linux 程序如何在电脑上显示出窗口和图形
- X Windows 是底层软件包,其实现形式有以下几种:
- X.org 提供了 X Windows 的开源实现,支持当前市面上很多新显卡
- Wayland 被 Fedora Linux 发行版采用
- Mir 显示服务器由 Ubuntu Linux 发行版研发
1.1.3.2 KDE 桌面
- KDE( K Desktop Environment )在 1996 年作为开源项目被发布
- KDE 会生成一个类似于 Windows 的图形化桌面环境
1.1.3.3 GNOME 桌面
- GNOME( the GNU Network Object Model Environment )GNU 网络对象模型环境,在 1999 年发布
- 现在已经是大部分 Linux 发行版默认的桌面环境
- Red Hat Linux 大量采用该桌面环境
1.1.3.4 Unity 桌面
- 由 Ubuntu 自行研发的桌面环境
- 目标是 为工作站、平板电脑以及移动设备提供一致的桌面体验
- 就目前来说,平台电脑和移动设备这块已经基本失败了,主要还是缺乏生态
1.1.3.5 其他桌面
- 图形化桌面环境的弊端在于,其 需要占用想当一部分的系统资源 来保证运行正常,这和 Linux 诞生的初衷是相违背的
-
下图是 Linux 上存在的一些其他图形化桌面
1.2 Linux 发行版
- 发行版 —— 完成的 Linux 系统包
1.2.1 核心 Linux 发行版
- 包含内核、一个或多个图形化桌面环境以及预编译好的几乎所有能见到的 Linux 应用
- 目标是提供一站式的完整 Linux 安装
-
下图是 Linux 比较流行的核心发行版
1.2.2 特定用途的 Linux 发行版
- 由于核心版体积庞大、配置繁琐,导致安装过程异常复杂,所以出现了针对特性场景使用的 Linux 发行版
-
下图是 Linux 比较流行的特定用途发行版
1.2.3 Linux LiveCD 样本系统
- 可以在光驱中通过引导直接运行的 Linux 版本,不需要安装就可以看到 Linux 的具体内容
- 大部分特定用户的 Linux 发行版都会推出 Linux LiveCD 版本
- 但由于是从光驱读取的原因,该版本存在以下两大缺陷:
- 受制于光驱的读取速度,应用程序运行起来比较慢
- 无法从光驱向 CD 写入数据,所以对系统做的任何修改再下一次加载时都会失效
-
下图是 Linux 比较流行的 LiveCD 样本系统
1.3 小结
- Linux 内核是系统的核心,控制着内存、程序和硬件之间的交互
- GNU 工具也是 Linux 系统中的一个重要部分
- 现在的 Linux 可以支持多种图形化桌面环境
- Linux 发行版就是把 Linux 的不同部分汇集起来组成一个易于安装的包