- Linux系统的四部分:
- Linux系统的核心是内核。
- 内核主要负责四种功能:
- 系统内存管理
- 操作系统内核的主要功能之一:内存管理。(物理内存 + 虚拟内存)
- 内核通过硬盘上称为交换空间(swap space)的存储区域来实现虚拟内存。
- 内存被划分为若干块 —— 页面 - page。
- 内核会维护一张内存页面表,指明哪些页面在物理内存(或虚拟内存)上。
- 内核会记录哪些内存页面正在使用中,自动把一段时间未访问的内存页面复制到交换空间区域 - 即 换出 - swapping out。(当前内存存在可用空间时,该操作也将继续)
- 当程序要访问一个已被换出的内存页面时,内核必须将物理内存中的另一个页面换出来为其腾出空间。(没有为什么,这是规则)
- 软件程序管理
- 运行中的程序 --- 即进程。
- 内核控制着Linux系统如何管理运行在系统中的所有进程。(注意这句话,不是内核直接控制,而是内核通过Linux系统间接控制,这是一种关系的表达)
- init进程 - 内核创建的第一个进程,它来启动系统中所有其他进程。
- 当内核启动时,它会将init进程载入虚拟内存。
- 内核在启动其他进程时,会在虚拟内存中给新进程分配一块专有区域来存储该进程用到的数据和代码。
- init进程的实现:
- SysVinit:使用了runlevel的概念
- systemd:诞生于2010,已成为主流
- systemd方法通过将事件与单元文件(unit file)链接来决定运行哪些进程。
- 每个单元文件定义了特定事件发生时要启动的程序。
- systemd程序允许启动、停止和列出系统中当前运行的单元文件。
- systemd将单元文件划归为目标(target)。
- 目标定义了Linux系统的特定运行状态
- 在系统启动时,default.target单元定义了要启动的所有单元文件。
- 可以使用systemctl命令查看:
-
systemctl get-default
-
- 可以使用systemctl命令查看:
- /etc/inittab 文件定义了系统的默认运行级,特定运行级下启动的进程是在/etc/rc.d目录下的各个子目录中定义的
- 查看当前运行级
- 系统内存管理
runlevel
-
- 硬件设备管理
- 驱动程序:介于 应用程序和硬件设备之间,允许内核同设备之间交换数据。
- 任何Linux系统需要与之通信的设备都必须在内核代码中加入其驱动程序。
- 向Linux内核中插入驱动的方式有两种:
- 将驱动程序编译入内核
- 将设备驱动模块加入内核(现在的主流,更加便捷)
- 向Linux内核中插入驱动的方式有两种:
- 任何Linux系统需要与之通信的设备都必须在内核代码中加入其驱动程序。
- Linux将硬件设备视作一种特殊的文件 —— 设备文件
- 字符设备文件:每次只能处理一个字符的设备
- 块设备文件:比如:硬盘驱动器
- 网络设备文件
- Linux系统会为每个设备都创建一种称为“节点”的特殊文件,与设备的所有通信都是通过设备节点完成的。(每个节点都有唯一的标识)
- 驱动程序:介于 应用程序和硬件设备之间,允许内核同设备之间交换数据。
- 文件系统管理
- Linux内核采用虚拟文件系统(VFS)作为和各种文件系统交互的接口:
- 当文件系统被挂载和使用时,VFS会在内存缓存相关信息。
- Linux内核采用虚拟文件系统(VFS)作为和各种文件系统交互的接口:
- 硬件设备管理
持续更新