一、Linux架构
(内核之内是硬件)
Linux的层次结构简图如上图。内核(Kernel)再下面一层就是硬件了,内核就是连接软件和硬件的桥梁。内核有自己的资源,不允许应用程序直接操作,对其的操作都需要通过其外一层的系统调用(System Calls)进行,包括应用程序在内的所有外部程序对内核的控制都要通过系统调用来进行。
然而,相对于外部应用需求而言,系统调用的操作都是“简单”的——即只提供不能够再被化简的、最为基础的操作。因此,通过系统调用实现功能就会变得非常复杂。
于是,系统调用外部就出现了可以简化其使用复杂度的“中间层”——公用函数库和shell
公用函数库(也被称为库函数,Library Routine),它对复杂的系统调用进行封装,对外提供可以更简单使用的接口。(ISO C、POSIX标准库即为两种库函数标准)。
Shell是一种特殊的软件,可以通过它来操作计算机(调用其他各种各样的程序)来达成不同的功能。Terminal就是一个shell。
图2
第一张图展开来看就是这样,从下到上的各个层次的名字体现了他们的具体意义。系统调用之下的就是内核了,内核最底端即是驱动。
二、Linux启动
步骤概览:
通电 → BIOS 启动 → 读取 MBR → 加载 BootLoader → 加载 Kernel → 加载驱动、检测硬件 → 启动 init 进程 → 运行 Startup scripts → 给出 login
通电后,自动启动 BIOS, BIOS 会去读取指定驱动器的前 512bytes ——这 512bytes 的空间叫做主引导记录(Master Boot Record),它会告知硬件去某一个分区装载 BootLoader 。
BootLoader 的工作是引导加载 OS ,即 Kernel。
Kernel 启动后首先留出来一块属于自己的内存,然后加载各种驱动、检测硬件,接着启动 Linux 的 init 进程。
init 进程会调用一系列的启动脚本(startup scripts),设置各种杂项(设置名称、时区、挂载硬盘等)使系统就绪,最后给出 login
点击量:313