Linux 内核进程与线程的内存管理剖析
1. 技术要求
在深入探讨之前,需要做好一些准备工作。建议你已经完成了开发环境的搭建,准备好运行 Ubuntu 18.04 LTS 或更高稳定版本的虚拟机,并安装了所有必需的软件包。为了更好地学习,强烈建议你先设置好工作空间环境,具体步骤如下:
1. 克隆代码仓库:从 https://github.com/PacktPublishing/Linux - Kernel - Programming 克隆代码。
2. 实践操作:以实践的方式进行学习。
同时,需要熟悉基本的虚拟内存概念、用户模式进程虚拟地址空间(VAS)的段布局和栈等知识。
2. 理解进程和中断上下文
大多数现代操作系统采用的是整体式设计。当进程或线程发出系统调用时,会切换到特权内核模式并执行内核代码,这就是所谓的进程上下文。例如,设备驱动程序的大部分代码就是在进程上下文中执行的。
除了进程上下文,内核代码还可以在中断上下文中执行。当硬件设备(如键盘、网卡、磁盘等)发出硬件中断时,CPU 的控制单元会保存当前上下文,并立即将 CPU 重新引导到中断处理程序(ISR)的代码执行。这是一种异步切换到内核模式的方式。
内核代码的执行上下文可分为以下两种:
| 上下文类型 | 进入方式 | 执行特点 |
| ---- | ---- | ---- |
| 进程上下文 | 通过系统调用或处理器异常(如页面错误)进入内核 | 同步执行(自上而下) |
| 中断上下文 | 通过外设芯片的硬件中断进入内核 | 异步执行(自下而上) |
下面是一个简单的 m
超级会员免费看
订阅专栏 解锁全文

213

被折叠的 条评论
为什么被折叠?



