Appearance
初认识
什么是Linux
Linux可以划分为四部分
- Linux内核
- GUN工具
- 图形化桌面环境
- 应用软件
深入研究内核
内核的功能, 系统内存管理, 软件程序管理, 硬件设备管理, 文件系统管理
系统内存管理
可用的物理内存, 创建管理虚拟内存, 虚拟内存是物理内存和交换空间的总和
通过硬盘上的存储空间来实现虚拟内存, 被称为交换空间
内核不断地在交换空间和实际的物理内存之间交换虚拟内存的内容, 内存存储单元被分为页面, 存储于物理内存或者交换空间, 然后建立页表, 指明不同的页面使用情况
当一些页面一段时间没有使用, 就会存入交换空间, 称为换出, 即便还有可用的内存, 使用已经换出的内存的时候, 会从内存腾出空间
软件程序管理
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发行版。