共计 1197 个字符,预计需要花费 3 分钟才能阅读完成。
写在后面的话
以前读书都只局限于看过,没有输入的过程,忘得很快,当初想试试这样整顿之后输入,会不会好点。
始终以来对 Linux 的内核都是蜻蜓点水式学习,毫无深刻,但当前可能要频繁用到,得构建一下本人的常识体系,心愿能多多记录吧。
内核定义
- 内核是操作系统的外围,由负责响应中断的中断服务程序,调度程序(治理多个过程共享处理器工夫),过程地址空间的内存管理程序,以及网络、过程间通信等零碎服务程序独特组成。
处于零碎态,领有受爱护的内存空间和拜访硬件设施的所有权限。即内核空间。
- 用户空间只能以过程为视角,只能看到他被容许调用的局部系统资源,和本人的内存空间。
Linux 内核简介
Linux 继承于 Unix,如广泛的 API 接口(Posix),但并没有齐全基于某个特定 Unix。其差别在于:
Linux 充沛排汇了微内核的概念(服务模块化治理,抢占式内核,反对内核线程,以及动静加载内核模块的能力)。inmod,rmmod,
- 微内核的定义,其实在学校里的时候老师强调过,真正的微内核指的的是内核只保留无奈从内核中去掉的必要服务,如调度服务和中断服务等。其余服务包含 fs,driver 模块都能从内核中去掉。微内核设计的重要目标之一是平安。因为咱们很容易就能够晓得许多 bug 和受攻击面都是来自于内核所搭载的模块服务,进而导致整个零碎的平安透露和解体。
- 但微内核的弊病也很显著。因为各个服务模块化加载之后运行在不同的地址空间,无奈进行间接的函数调用,而采纳了 IPC(inter-process communication),须要进行上下文的切换导致不必要的开销。
- 所以 Linux 仍旧是单内核,所有服务模块运行在一个地址空间,能够间接调用函数。实用至上。
- Linux 反对 对称多处理机制 SMP。
- 抢占式 preemptive 内核。容许在内核运行的工作优先执行的能力。其余大部分 Unix 不反对抢占。
- Linux 内核并不辨别线程和个别过程:所有过程都一样,只是其中一些共享资源。
- Linux 提供具备设施类的 面向对象的设施模型、热插拔事件,以及用户空间的设施文件系统 sysfs
- 疏忽 Unix 过期规范和不必要个性。
处理器任何工夫点上的流动能够被划分成:
- 运行于用户空间,执行用户过程
- 运行于内核空间,处于过程上下文,代表某一次零碎调用。
- 运行于内核空间,处于中断上下文,与任何过程无关,处于某个特定中断。
陷入内核态
零碎调用
- 通过调用库,让内核实现不同工作,但通常内核调用只是库调用的一个步骤。printf(), 提供数据缓存和格式化操作,调用 write()零碎调用只是他的一个动作。但 open()等是一一对应。strcpy()不必零碎调用。
通过零碎调用进入内核态,咱们称为内核代其执行,内核运行于过程的上下文中。
中断服务
中断的典型代表是来自硬件设施的中断。内核通过中断号查找中断服务程序,调用服务程序解决中断,在中断上下文中运行。保障中断服务可能第一工夫解决和退出。
正文完