add: linux guide kernel
This commit is contained in:
parent
dc1ab7ada1
commit
b7b05cf1bc
|
|
@ -0,0 +1,56 @@
|
|||
---
|
||||
layout: post
|
||||
title: "开源世界旅行手册:内核"
|
||||
date: 2020-01-08 10:28:00
|
||||
author: "Viletyy"
|
||||
header-style: text
|
||||
tags:
|
||||
- Linux
|
||||
---
|
||||
## 内核
|
||||
|
||||
### 简介
|
||||
|
||||
内核是系统的引擎,它是一个系统运行起来的先决条件。
|
||||
|
||||
- 内核管理硬件,是程序和硬件之间的接口
|
||||
- 内核对进程进行调度,将硬件资源分配给不同任务,使系统可以同时运行多个任务
|
||||
- 内核对内存进行管理,将内存空间分配给任务,将使用不频繁的页面转移到交换分区
|
||||
- 内核还管理文件系统,进程间通信和网络
|
||||
|
||||
内核包含几个重要的子系统:
|
||||
|
||||
**进程调度(SCHED)** 控制进程对CPU的访问。当需要选择下一个进程运行时,由调度程序选择最值得运行的进程。可运行进程实际上是仅等待CPU资源的进程,如果某个进程在等待其他资源,则该进程是不可运行进程。Linux使用了比较简单的基于优先级的进程调度算法选择新的进程。
|
||||
|
||||
**内存管理(MM)** 允许多个进程安全的共享主内存区域。Linux的内存管理支持虚拟内存,即在计算机中运行的程序,其代码,数据,堆栈的总量可以超过实际内存的大小,操作系统知识把当前使用的程序块保留在内存中,其余的程序块则保留在磁盘中。必要时,操作系统负责在磁盘和内存间交换程序块。内存管理从逻辑上分为硬件无关部分和硬件有关部分。硬件无关部分提供了进程的映射和逻辑内存的兑换;硬件相关的部分为内存管理硬件提供了虚拟接口。
|
||||
|
||||
**虚拟文件系统(VirtualFileSystem,VFS)** 隐藏了各种硬件的具体细节,为所有的设备提供了统一的接口,VFS提供了多达数十种不同的文件系统。虚拟文件系统可以分为逻辑文件系统和设备驱动程序。逻辑文件系统指Linux所支持的文件系统,如ext2,fat等,设备驱动程序指为每一种硬件控制器所编写的设备驱动程序模块
|
||||
|
||||
**网络接口(NET)** 提供了对各种网络标准对存取和各种网络硬件对支持。网络接口可分为网络协议和网络驱动程序。网络协议部分负责实现每一种可能的网络传输协议。网络设备驱动程序负责与硬件设备通讯,每一种可能的硬件设备都有相应的设备驱动程序。
|
||||
|
||||
**进程间通信(IPC)** 支持进程间各种通信机制
|
||||
|
||||
处于中心位置的进程调度,所有其他的子系统都依赖它,因为每个子系统都需要挂起或恢复进程。一般情况下,当一个进程等待硬件操作完成时,它被挂起;当操作真正完成时,进程被恢复执行。例如,当一个进程通过网络发送一条消息时,网络接口需要挂起发送进程,直到硬件成功地完成消息的发送,当消息被成功的发送出去以后,网络接口给进程返回一个代码,表示操作的成功或失败。其他子系统以相似的理由依赖于进程调度。
|
||||
|
||||
### 启动流程
|
||||
|
||||
系统启动时,引导管理器首先加载内核,内核被载入后执行以下操作:
|
||||
|
||||
- 内核自解压
|
||||
- 初始化阶段
|
||||
- 检测,初始化硬件
|
||||
- 设置各种入口地址
|
||||
- 初始化IRQ中断处理机制
|
||||
- 启动init进程
|
||||
- 初始化控制台、显示器
|
||||
- 初始化kernel_module
|
||||
- init阶段。init进程启动后,执行当前运行级别的脚本:
|
||||
- PCI总线初始化
|
||||
- 网络初始化
|
||||
- 文件系统初始化
|
||||
- 加载文件系统
|
||||
|
||||
|
||||
参考资料:
|
||||
|
||||
- [开源世界旅行手册](https://i.linuxtoy.org/docs/guide/)
|
||||
Loading…
Reference in New Issue