Kernel
Kernel是什么?wikipedia的介绍是
在計算機科學中,內核又稱核心,是一個電腦程式,用來管理軟體發出的資料I/O要求,將這些要求轉譯為資料處理的指令,交由CPU及電腦中其他電子元件進行處理,是現代操作系統中最基本的部分。 為眾多應用程序提供對計算機硬件的安全訪問的一部分軟件,這種訪問是有限的,並由內核決定一個程序在什麼時候對某部分硬件操作多長時間。直接對硬件操作是非常複雜的。所以內核通常提供一種硬件抽象的方法,來完成這些操作。通過進程間通信機制及系統調用,應用進程可間接控制所需的硬件資源(特別是處理器及IO設備)。
嚴格地說,內核並不是計算機系統中必要的組成部分。程序可以直接地被調入計算機中執行;這樣的設計,說明了設計者不希望提供任何硬件抽象和操作系統的支持。
(有略微删减)
结构简图 实现的核心功能
分类
通常在内核设计上,会被分为微内核与宏内核
宏内核在硬件之上定义了一个高阶抽象界面,用一组原语(或称为系统调用)来实现操作系统的功能。
微内核由简单硬件抽象层和一组关键原语组成,仅仅包含建立一个系统的必要部分。
双态
Kernel提供两种运行模式,即用户态与内核态(有许多其他的名称,如管态目态) 用户向内核态提出操作请求,内核检查并响应,后返回结果。 用户态驻留应用和程序包,内核态拥有各种管理系统的引擎。
由此提供了两种对Kernel的调用:过程调用、系统调用
- 过程调用只能在用户态下运行,不能进入核心态;而系统调用可以实现从用户态到核心态的转变
- 系统调用可分为5个类别:进程控制、文件管理、设备管理、信息维护 和 通信
- 系统程序解决带共性的问题,并为程序的开发和执行提供更方便的环境,是系统内所有用户共有的可执行的程序(可执行不代表有权利执行)
考点:系统程序不是操作系统的组成部分 考点:最重要的系统程序就是命令解释程序
shell基本工作原理
命令解释程序 的基本功能是接收用户输入的命令,然后解释并且执行(它不是操作系统的内核部分)
实现命令的常见方式
- 内置方式:命令解释程序本身就包含执行该命令的代码
- 外置方式:每条外置命令都对应专门的系统程序,通常以可执行文件的形式存放在磁盘上
Kernel官方网站:Linux Kernel Official Website