笔记内容来源于《How Linux Works》CH01

Linux系统中的抽象级别和层数

Linux操作系统有三个主要的层级,它们分别是Hardware、Linux Kernel、User Processes三层,具体包含的内容可以看下图。 RES_B84270EA029C.png

Hardware层和User Processes层都很容易去理解它,这里重点讲解Linux Kernel层。内核是操作系统核心,内核是在内存中用来告诉CPU要做什么事情的软件,内核可以管理硬件并且作为Hardware和Running Program的接口。

进程是运行中的程序,是由内核管理的程序。Kernel和User Processes之间重要的区别,Kernel运行在Kernel Mode,User Processes运行在User Mode。

代码运行在Kernel Mode可以完全无限制的执行任何CPU instruction和引用any memory address。这是非常强大但也是充满危险的特权,内核程序很容易崩溃整个系统,因为只有内核程序可以访问内核空间。

在用户模式下,执行代码无法直接access hardware或reference meory,在用户模式下运行的代码必须委托给系统API(system call)才能访问硬件或内存。因为这种隔离,用户模式下的崩溃总是可恢复的,并且计算机上大多数代码运行在用户模式下。

Hardware | 理解主内存

在计算机系统所有硬件中,Main Memory可能是最重要的。它用来存储运行中的内核和进程,CPU也只能操作在内存上,CPU读取指令和数据从内存中,然后写数据返回给内存。

在内存中,state术语经常被描述为当前进程已经完成或正在执行等状态,而不是描述为比特的排列顺序,因为进程通常都是有数百万比特组成。