Skip to content

初认识

什么是Linux

Linux可以划分为四部分

  • Linux内核
  • GUN工具
  • 图形化桌面环境
  • 应用软件

QQ图片20220801135328

深入研究内核

内核的功能, 系统内存管理, 软件程序管理, 硬件设备管理, 文件系统管理

系统内存管理

可用的物理内存, 创建管理虚拟内存, 虚拟内存是物理内存和交换空间的总和

通过硬盘上的存储空间来实现虚拟内存, 被称为交换空间

内核不断地在交换空间和实际的物理内存之间交换虚拟内存的内容, 内存存储单元被分为页面, 存储于物理内存或者交换空间, 然后建立页表, 指明不同的页面使用情况

当一些页面一段时间没有使用, 就会存入交换空间, 称为换出, 即便还有可用的内存, 使用已经换出的内存的时候, 会从内存腾出空间

软件程序管理

Linux把运行中的程序叫做进程, 内核控制着Linux系统如何管理运行的进程

内核创建第一个进程, 名为init进程, 用来启动所有其他进程, 启动的时候把init加载到虚拟内存, 启动其他的进程的时候会在虚拟内存给新的进程分配专有内存

一些Linux发行版使用一个表来管理在系统开机时要自动启动的进程。在Linux系统上,这个表通常位于专门文件/etc/inittab中, 还有一些放在/etc/init.d, 开机的时候启动或停止应用的脚本就放在这里, 这些脚本通过/etc/rcX.d目录下的入口(entry)启动,这里的X代表运行级, 其实是脚本的符号链接

init采用了运行级, 决定了目录中进程类型

有五个运行级:

  • 为1的时候只启动基本系统进程和控制中断, 单用户模式, 系统有问题时维护, 只有一个人可以登陆
  • 3是标准的启动级, 大多数应用软件,比如网络支持程序,都会启动
  • 5级启动图形化的X Window系统,允许用户通过图形化桌面窗口登录系统

硬件设备管理

任何Linux系统需要与之通信的设备,都需要在内核代码中加入其驱动程序代码, 允许内核与设备之间交换数据.

有两种方式插入:

  • 编译进内核的设备驱动代码
  • 可插入内核的设备驱动代码: 内核模块概念

Linux系统将硬件设备当成特殊的文件

  • 字符型设备文件: 处理数据时只能处理一个字节, 如: 调制解调器, 终端
  • 块设备文件: 每次处理大块的数据, 如: 硬盘
  • 网络设备文件: 以数据包的形式发送接收数据, 如: 网卡, 回环设备

Linux为系统上的每个设备都创建一种称为节点的特殊文件。与设备的所有通信都通过设备节点完成。每个节点都有唯一的数值对供Linux内核标识它。数值对包括一个主设备号和一个次设备号。类似的设备被划分到同样的主设备号下。次设备号用于标识主设备组下的某个特定设备。

文件系统管理

比必须在编译的时候加入

支持自身的特有的以及其他平台的文件系统

采用虚拟文件系统VFS作为每一个文件系统交换的接口, 提供一个标准的接口

GUN工具

操作系统还需要工具来执行一些标准功能,比如控制文件和程序

GNU组织(GNU是GNU’s Not Unix的缩写)开发了一套完整的Unix工具,但没有可以运行它们的内核系统

尽管通常将Linux内核和GNU工具的结合体称为Linux,但你也会在互联网上看到一些Linux纯粹主义者将其称为GNU/Linux系统

核心GNU工具

称为coreutils软件包

包括三部分

  • 处理文件
  • 操作文件
  • 管理进程

shell

特殊的交互工具, 它为用户提供了启动程序、管理文件系统中的文件以及运行在Linux系统上的进程的途径。shell的核心是命令行提示符

包含一组命令, 用来操作文件, 操控进程等

你也可以将多个shell命令放入文件中作为程序执行。这些文件被称作shell脚本

通常有好几种Linux shell可用。不同的shell有不同的特性, 所有Linux发行版默认的shell都是bash shell

常见的shell

shell描述
ash一种运行在内存受限环境中简单的轻量级shell,但与bash shell完全兼容
korn一种与Bourne shell兼容的编程shell,但支持如关联数组和浮点运算等一些高级的编程特性
tcsh一种将C语言中的一些元素引入到shell脚本中的shell
zsh一种结合了bash、tcsh和korn的特性,同时提供高级编程特性、共享历史文件和主题化提示符的高级shell

大多数发行版有多种shell

桌面系统

X Window

视频环境的决定

  • 显示器
  • 显卡

为了和两者互通, X Window软件是图形显示的核心部分

X Window软件是直接和PC上的显卡及显示器打交道的底层程序。它控制着Linux程序如何在电脑上显示出漂亮的窗口和图形, 有多种软件包, 最流行的是X.org, Wayland, Mir显示服务器

在首次安装Linux发行版时,它会检测显卡和显示器,然后创建一个含有必要信息的X Window配置文件。

核心的X Window软件可以产生图形化显示环境,但仅此而已, 它没有桌面环境供用户操作文件或是开启程序

KDE桌面

和Windows类似, 有相关的运行程序

GNOME桌面

不再使用Windows标准观感, 但是还是继承了一些习惯, 也开发了运行程序

Unity桌面

Ubuntu公司开发的, 为不同的设备提供一致的桌面体验

其他桌面

由于要占用一定的资源保证运行, 而上面的桌面又占用较大的空间, 所以开发出一些小型的桌面, 也已运行基本功能

Linux发行版

完整的Linux系统, 大多是是为了特殊的用户定制的, 通常归为三类

  • 完整的核心Linux发行版
  • 特定用途的发行版
  • LiveCD测试发行版

核心Linux发行版

含有内核, 一个或多个桌面, 编译好的几乎所有Linux应用

有大量的可选配置

发 行 版描 述
Slackware最早的Linux发行版中的一员,在Linux极客中比较流行
Red Hat主要用于Internet服务器的商业发行版
Fedora从Red Hat分离出的家用发行版
Gentoo为高级Linux用户设计的发行版,仅包含Linux源代码
openSUSE用于商用和家用的发行版
Debian在Linux专家和商用Linux产品中流行的发行版

特定用途的Linux发行版

基于某个主流的发行版, 但是仅包含主流发行版中的一小部分用于某些特定的应用程序

提供特定软件, 自动检测常见的硬件

许多特定用途的发行版都是基于Debian的

Linux LiveCD

含有Linux样本系统(称为Linux LiveCD)的可引导CD。由于单张CD容量的限制,这个样本并非完整的Linux系统,不过令人惊喜的是,你可以自己加入各种软件。结果就是,你可以通过CD来启动PC,并且无需在硬盘安装任何东西就能运行Linux发行版。