在之前的教程 - Linux 简介中,Linux 被介绍为流行的开源操作系统,在桌面、服务器和移动计算环境中具有广泛的应用范围。Linux 是开源的,在 OSS 开发人员和拥护者中非常受欢迎,目前有数百个 Linux 发行版可用。任何 Linux 发行版或软件包都是一个完整的操作系统软件,将 Linux 内核、GNU 实用程序、Shell、桌面环境和一些默认应用程序捆绑在一起。因此,任何 Linux(操作系统)系统,无论其运行的硬件平台如何,基本上都具有以下软件组件 -
1)Linux内核
2) GNU 实用程序
3)外壳程序(Shell)
4) 桌面环境
5) 附加应用软件
Linux 内核 –
Linux Kernel是Linux系统的核心。它负责管理计算机系统上的硬件和软件。内核基本上实现了四个主要功能——系统内存管理、程序管理、硬件管理和文件系统管理。
Linux 旨在成为 Unix 操作系统的副本。Unix 的开发是为了改善计算机上运行的不同进程对处理器时间的共享。因此,很明显,Linux 本质上是为了改进硬件资源对包括内存在内的进程的分配。Linux 的开发不仅是为了利用物理内存 (RAM),它还通过在辅助存储(硬盘)上创建虚拟内存来扩展可用内存。硬盘上的这个虚拟内存称为交换空间。RAM 和交换空间上的内存被组织成称为页面的块。内核在物理内存和交换空间上定位页面,并创建当前在物理内存中并且接下来必须从交换空间传输到物理内存的内存页面表。它将当前未使用的页面换出以交换空间,并换入应用程序进程当前需要的页面。这种内存页面的换入和换出一直持续到 Linux 继续运行。
内核管理的另一个重要功能是进程管理。这些进程可能在前台运行,在屏幕上显示一些输出,或者它们可能在后台运行,对登录用户不可见。当 Linux 启动时,内核启动第一个进程——init,它启动所有其他进程。init 进程加载虚拟内存并分配所有由它启动的其他进程,虚拟内存中的一些空间用于数据和程序。在某些 Linux 发行版中,启动后必须启动的进程表位于 /etc/inittabs 文件夹中,而在某些发行版中,启动时必须启动的进程的脚本位于 etc/init.d 文件夹中,并且它们通过 etc/rcX.d 文件夹中的条目启动。
Init 必须定义一个运行级别以确定必须启动哪些进程。通过在 etc/inittabs 文件或 /etc/rcX.d 文件夹中为每个进程定义运行级别,进程与运行级别相关联。运行级别用于指示 init 决定必须为 Linux 系统的特定模式运行哪些进程。
有 7 个运行级别,编号从 0 到 6。运行级别 0 表示停止模式,具有运行级别 0 的进程必须在系统关闭时运行。运行级别 1 表示单用户模式,它会停止 Linux 配置网络接口、启动守护进程或允许非根用户登录。运行级别 2 表示多用户模式,它会停止 Linux 配置网络接口并启动守护进程。运行级别 3 表示多用户模式,具有网络,使 Linux 可以正常运行。运行级别 4 未定义,可以由用户定义。运行级别 5 表示 X11,它使 Linux 正常运行,就像在运行级别 3 中向系统添加显示管理器 (X) 一样。运行级别 6 表示重新启动并重新启动系统。
运行级别 3 和 5 最常用。Linux 可以通过控制运行级别来控制整体功能。通过将运行级别从 3 更改为 5,系统可以从基于控制台的系统更改为图形系统。
Linux作为操作系统必须能够管理硬件资源。内核通过其设备驱动程序与硬件组件通信。设备驱动程序可以与内核一起编译或插入到正在运行的内核中。将设备驱动程序与内核一起编译的方法效率低下,因为每当将新设备插入计算机系统(如连接 USB 随身碟或连接扬声器)时,它都需要重新编译 Linux 内核。因此,在运行的内核中插入设备驱动模块而不重新编译的方法被引入并被普遍使用。
硬件设备在 Linux 中由称为设备文件的特殊文件标识,而与它们的所有通信都由另一种称为节点文件的特殊文件处理。设备文件分为三种类型——字符(用于与内核一次一个字符通信的设备,如调制解调器和终端)、块(用于通过大块数据通信的设备,如硬盘驱动器)和网络(用于通过通过通信网络或互联网发送或接收的数据包)。设备驱动程序规定了 Linux 内核和硬件设备之间必须如何进行数据通信。设备文件定义了这种通信的性质,节点文件定义了所有这些数据通信必须如何执行。
二级存储是大多数计算系统的重要组成部分。Linux 必须能够从硬盘驱动器的各种文件系统读取和写入文件。因此,Linux 内核支持多种文件系统,如 FAT32、NTFS、XFS、ext、ext2、ext3、ext4、iso9660、hpfs、jfs、msdos、minix、nfs、proc、ufs、umsdos、sysv、smb、ncp , ReiserFS 等。 Linux 使用虚拟文件系统 (VFS) 与任何文件系统交互。
这使 Linux 能够从任何类型的文件系统读取和写入数据。 |