今天开通了博客,第一篇文章开始针对linux内核,摘录一些内核学习的重点.
1.操作系统是指在整个系统中负责完成最基本功能和系统管理的那些部分。这些部分包括内核、设备驱动程序、文件系统、启动引导程序、shell.
2.系统运行中,app通过 系统调用 来与内核进行通信.当一个应用程序使用系统调用,可以说内核正在执行其代码.
| |||
| |||
|
| ||
|
注意:硬件设备和内核通信时使用中断打断内核运行.
内核运行在进程上下文中,中断后系统运行在中断上下文中.准备专门中断上下文,保证中断的及时响应和退出.
3.处理器运行状态必定在以下三个状态下:
l 用户空间,执行用户进程;
l 内核空间,进程上下文;
l 内核空间,中断上下文;
例子:CPU空闲时,运行在一个空进程,处于进程上下文阶段.
4.单内核和微内核:
Linux是单内核,但具备微内核的:
模块化设计/动态装载内核,即可以裁剪内核大小;
抢占内核机制:正在运行的进程可以被抢占.
5.内核开发特点
l 内核不能访问标准的C代码库和C头文件
l 必须使用GNU C
l 没有内存保护机制
l 尽量不去做浮点运算
l 进程的堆栈大小确定且容积较小
l 同步和并发需要注意