【一】Linux 内核
Linux 内核是 Linux 操作系统的核心组件,它在计算机硬件与运行进程之间起着关键的接口作用。内核负责管理硬件与软件之间的通信,并尽量高效地管理资源。从技术角度来看,内核是介于硬件与软件之间的中间层,它将应用层的请求传递给硬件,同时充当底层驱动程序,处理系统中各种设备和组件的寻址。对于应用程序来说,它们不直接与硬件打交道,而是通过内核与硬件交互,因此内核是应用程序能够感知的最底层。在实际操作中,内核对底层细节进行了抽象处理。作为资源管理程序,内核负责将可用的共享资源(如 CPU 时间、磁盘空间、网络连接等)分配给各个系统进程,提供了一组面向系统的命令,就像一个库一样。对于应用程序来说,系统调用就像是调用普通函数一样简单。
以下是 Linux 内核的主要功能:
1. 进程调度
计算机配备一个或多个 CPU(中央处理单元)来执行程序指令。与其他 UNIX 系统类似,Linux 是一种抢占式多任务操作系统。“多任务”意味着多个进程(即正在运行的程序)可以同时驻留在内存中,并且每个进程都有机会使用 CPU。而“抢占”指的是由内核进程调度程序(而非进程本身)决定哪些进程可以使用 CPU 以及使用多长时间的一组规则。
2. 内存管理
尽管现代计算机拥有相当大的内存容量,但由于软件规模的增长,物理内存(RAM)仍然是有限的资源。内核必须在进程之间公平且高效地共享这一资源。Linux 使用虚拟内存管理机制,这项技术的主要优势在于进程之间以及进程与内核之间相互隔离,因此一个进程不能读取或修改内核或其他进程的内存内容。只需将进程的一部分保持在内存中,这不仅降低了每个进程对内存的需求量,还能在内存中同时加载更多进程,从而大幅提升 CPU 资源的利用率,因为在任何时刻,CPU 都有至少一个进程可以执行。
3. 文件系统
内核在磁盘上提供文件系统,允许对文件进行创建、获取、更新和删除等操作。Linux 支持多种文件系统格式,除了 Ext2、Ext3 和 Ext4,还支持 FAT16、FAT32、NTFS 等。也就是说,Linux 可以通过挂载磁盘的方式使用 Windows 文件系统中的数据。
4. 进程管理
内核可以将新程序载入内存,并为其提供运行所需的资源(如 CPU、内存和文件访问等)。这样的运行程序被称为“进程”。当进程执行完毕后,内核还负责释放其占用的资源,以供后续程序使用。
5. 设备访问
计算机外接设备(如鼠标、键盘、磁盘和磁带驱动器等)用于实现计算机与外部世界的通信,包括输入、输出或两者兼而有之。内核为程序访问设备提供了简化的标准接口,并在多个进程对每个设备的访问之间进行仲裁。
【二】GNU 工具
GNU 是由多个应用程序、系统库、开发工具以及游戏组成的程序集合。GNU 开发始于 1984 年 1 月,称为 GNU 工程,许多程序是在 GNU 工程下发布的,被称为 GNU 软件包。
下面详细介绍一些主要工具:
1.GCC
很多人认为 GCC 是一个 C 编译器,但实际上它是 GNU Compiler Collection 的简称,支持多种高级语言,包括 C、C++、ADA、Objective-C、Java、Fortran 和 PASCAL 等。GCC 主要包括符合 ISO 标准的 C 编译器(gcc)、C++ 编译器(g++)和 Java 编译器(gcj),其中 gcj 可以生成执行速度更快的二进制本地执行码而不是 Java 字节码。gcj 提供了将 Java 程序编译成机器代码的实验性支持,但需要安装相关的 Java 运行时库。gnat 是 GCC 的 ADA 95 编译器前端,包括开发工具、文档及 ADA95 编译器。
2. Binutils
Binutils 是一组二进制工具程序集,包括 addr2line、ar、as、gprof、ld、nm、objcopy、objdump、ranlib、size、strings、strip 等工具,辅助 GCC 的使用。其中 as 是 GNU 汇编器,用于将汇编代码转换成二进制代码并存放到 object 文件中;ld 是 GNU 链接器,用于链接多个 object 文件、起始代码段、库等,并最终形成一个可执行文件;addr2line 将执行程序中的地址映射到源文件中的对应行;ar 用于创建归档文件、修改/替换库中的 object 文件,向库中添加/提取 object 文件;nm 用于列出 object 文件中的符号名;objcopy 用于复制和转换 object 文件;size 显示执行文件中的段大小信息;strip 去除执行文件中不必要的信息以减小文件大小;gprof 用于显示执行文件的性能分析信息。
3. GDB
GDB 是 GNU 调试器,允许调试用 C、C++ 或其他语言编写的程序。它可以在 shell 环境下通过命令行方式调试程序和显示数据。如果加上图形前端(如 DDD 软件),可以在更方便的图形环境下调试程序。
4. Make
Make 用于控制可执行程序的生成过程,从源码文件生成可执行程序。它允许用户生成和安装软件包,而无需了解生成和安装软件包的具体过程。
5. Diff/Diff3/Sdiff
Diff、Diff3 和 Sdiff 是比较文本差异的工具,也可以用来生成补丁文件。
6. Patch
Patch 是补丁安装程序,可以根据 diff 生成的补丁更新程序。
7. CVS
CVS(Concurrent Version System)是一个版本控制系统,可以记录文件的修改历史(通常包括源码)。CVS 只存储版本之间的差异,而不是每个版本的完整文件。它还保留一个日志,记录变更者、变更时间及变更原因。CVS 对于管理发行版本和控制多个作者同时编辑源码文件非常有用。它为目录提供版本控制,目录由多个修改控制的文件组成,而不是为单个文件提供版本控制。这些目录和文件可以被合并起来构成一个软件发行版本。
【三】Linux 桌面环境
Linux 中的桌面环境是由多个组件组成的系统,它为用户提供了常见的图形用户界面元素,如图标、工具栏、壁纸和桌面小部件。通过桌面环境,用户可以像在 Windows 系统中一样使用鼠标和键盘操作 Linux。有多种不同的桌面环境可供选择,这些环境决定了你的 Linux 系统的外观以及你与系统的交互方式。大多数桌面环境都附带一套集成的应用程序和实用程序,使用户在使用操作系统时能够获得一致的体验。这些工具通常包括文件资源管理器、桌面搜索、应用程序菜单、壁纸和屏保实用程序、文本编辑器等。如果没有桌面环境,Linux 系统仅提供一个类似于终端的界面,用户只能通过命令行与系统交互。个人计算机通常会安装桌面环境以提高操作的便捷性,而 Linux 服务器为了节省资源,通常不安装桌面环境。
以下是几款流行的 Linux 桌面环境介绍:
1.KDE
KDE 是 K Desktop Environment 的缩写,中文译为“K 桌面环境”。KDE 基于著名的 Qt 框架,最初于 1996 年作为开源项目发布,并在 1998 年推出了第一个版本,现在几乎成为最受欢迎的桌面环境之一。许多流行的 Linux 发行版如 Ubuntu、Linux Mint、OpenSUSE、Fedora、Kubuntu 等都提供了 KDE 桌面环境。KDE 与 Windows 类似,对于从 Windows 转换过来的用户来说,适应 KDE 相对容易。KDE 允许将应用程序图标和文件图标放置在桌面上特定位置。单击应用程序图标,Linux 系统就会运行该应用程序。单击文件图标,KDE 桌面会决定使用哪个应用程序来处理该文件。KDE 是所有桌面环境中最易于定制的。在其他桌面环境中,你需要多个插件、窗口组件和调整工具来定制环境,而 KDE 将所有工具和窗口组件都集成在系统设置中。通过高级设置管理器,用户可以控制一切,不需要任何第三方工具即可根据自己的喜好和要求美化和调整桌面。KDE 项目组还发布了大量可在 KDE 环境中运行的应用程序,包括 Dolphin(文件管理器)、Konsole(终端)、Kate(文本编辑器)、Gwenview(图片查看工具)、Okular(文档及 PDF 查看工具)、Digikam(照片编辑和整理工具)、KMail(电子邮件客户端)、Quassel(IRC 客户端)、K3b(DVD 刻录程序)等,这些都是默认安装的。
2. GNOME
GNOME 是 GNU Network Object Model Environment 的缩写,中文译为“GNU 网络对象模型环境”。GNOME 于 1999 年首次发布,现在已成为许多 Linux 发行版的默认桌面环境(最常见的是 Red Hat Linux)。GNOME 的特点是简洁、运行速度快,但定制选项较少,用户需要安装第三方工具来实现个性化设置。GNOME 甚至不包括一些基本的调整选项,如更改主题和字体等,用户需要安装第三方工具来完成这些基本调整。因此,GNOME 适合不需要高度定制界面的用户。GNOME 是 Fedora 的默认桌面环境,并在多款流行的 Linux 发行版如 Ubuntu、Debian、OpenSUSE 中提供。2011 年,GNOME3 进行了重大更新,不再采用传统的 Windows 风格界面,而是采用了全新的设计,受到了很多用户的欢迎。然而,这种变化也引起了一些用户和开发人员的不满,他们开发了 MATE 和 Cinnamon 等其他桌面环境。
3. Unity
Unity 是由 Ubuntu 的母公司 Canonical 开发的一款桌面环境。之所以称它为外壳,是因为 Unity 运行在 GNOME 桌面环境之上,使用了所有 GNOME 的核心应用程序。2010 年,Unity 发布了第一个版本,经过多次改进,现在和其他桌面环境一样,可以安装在其他 Linux 发行版上。Unity 使用了一种不同的界面风格,如果你使用的是 Ubuntu Linux 发行版,你会注意到 Unity 与 KDE 和 GNOME 桌面环境有些不同。Unity 在左侧有一个启动器,顶部有一个搜索图标,称为 Dash。在 Dash 上搜索文件时,不仅会显示来自硬盘的搜索结果,还会显示来自在线来源的结果,如 Google Drive、Facebook、Picasa、Flickr 等。Unity 还提供了隐藏启动器的选项,触摸侧边栏即可显示启动器,用户可以调整启动器菜单显示的灵敏度。虽然 Unity 简单、运行速度快,但在系统设置中没有太多定制桌面的选项。要安装主题或定制其他选项,如系统菜单是否总是可见,或者从启动器图标一次点击最小化,用户需要安装第三方工具。
4. MATE
GNOME3 的全新界面设计引发了一些用户的不满,他们推出了其他桌面环境,MATE 就是其中之一。MATE 是从已不再维护的 GNOME2 代码库派生出来的桌面环境,MATE 让人感觉在使用旧的桌面环境,但结合了近年来的诸多改进。MATE 也非常适合低配计算机,因此如果你有一台旧的或运行速度较慢的计算机,可以使用 MATE。MATE 是许多流行的 Linux 发行版的默认环境,如 Ubuntu、Linux Mint、Mageia、Debian 等。Ubuntu MATE 的发布使得用户更容易更新软件,因为所有组件现在都在 Ubuntu 软件库中。MATE 自带的应用程序包括 Caja(文件管理器)、Pluma(文本编辑器)、Atril(文档查看工具)、Eye Of MATE(图像查看工具)等。如果用户不需要功能完备的桌面环境中的所有附加功能,那么 MATE 是一款非常合适的简单轻量级桌面环境,能够兼容较旧的硬件设备。
【四】应用软件
Linux 系统不仅有运行所需的必要软件,还有用于办公、娱乐、开发等方面的应用软件。
以下是一些较为优秀的常用软件介绍:
1. Google Chrome
Google Chrome 是一个强大且功能完善的浏览器解决方案,具有完美的同步功能和丰富的扩展。如果你喜欢 Google 的生态系统,那么 Google Chrome 无疑是一个合适的选择。如果你想要更加开源的解决方案,可以尝试使用 Chromium,它是 Google Chrome 的上游项目。
2. Dropbox
Dropbox 是目前最流行的云存储服务之一,它为新用户提供了 2GB 的免费存储空间,并且拥有一个健壮且易于使用的 Linux 客户端。
3. Lollypop
Lollypop 是一款相对较新的开源音乐播放器,拥有漂亮且简洁的用户界面。它提供了优秀的音乐管理、歌曲推荐、在线广播和派对模式支持。虽然 Lollypop 是一款简洁的音乐播放器,但它的功能依然值得一试。
4. GIMP
GIMP 是 Linux 平台上 Photoshop 的替代品,是一款开源、全功能且专业的照片编辑软件。它提供了各种各样的工具来编辑图片,并且支持丰富的自定义设置和第三方插件,以增强用户体验。
5. Albert
Albert 是一款快速、可扩展、可定制的生产力工具,受到 Mac 平台上优秀的生产力工具 Alfred 的启发,并且仍在开发中。Albert 的目标是“使所有触手可及”,它能够与你的 Linux 发行版很好地集成,帮助你提高生产力。