Linux0.11内核部分图解

本文深入剖析Linux 0.11内核,包括单内核模式、系统架构、中断机制、进程管理的各个细节,如进程状态、初始化、创建与调度。此外,还介绍了内存的划分和堆栈使用,展示了Linux内核如何高效管理硬件资源和进程上下文。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


总结自赵炯《Linux内核完全注释》,做为学习笔记

Linux 内核模式

Linux 0.11 内核,采用了单内核模式。单内核模式的主要优点是内核代码结构紧凑、执行速度快,不足之处主要是层次结构性不强。可粗略地分为三个层次:调用服务的主程序层、执行系统调用的服务层和支持系统调用的底层函数。如图:
在这里插入图片描述

Linux 内核系统体系结构

Linux 内核主要由 5 个模块构成,它们分别是:进程调度模块、内存管理模块、文件系统模块、进程间通信模块和网络接口模块。这几个模块之间的依赖关系如图:
在这里插入图片描述
所有的模块都与进程调度模块存在依赖关系。因为它们都需要依靠进程调度程序来挂起(暂停)或重新运行它们的进程。通常,一个模块会在等待硬件操作期间被挂起,而在操作完成后才可继续运行。

根据Linux 0.11 内核源代码的结构将内核主要模块绘制,如图:
在这里插入图片描述
所有这些模块还会依赖于内核中的通用资源。这些资源包 括内核所有子系统都会调用的内存分配和收回函数、打印警告或出错信息函数以及一些系统调试函数。

中断机制

在使用 80X86 组成的 PC 机中,采用了两片 8259A 可编程中断控制芯片。每片可以管理 8 个中断源。 通过多片的级联方式,能构成最多管理 64 个中断向量的系统。在PC/AT 系列兼容机中,使用了两片 8259A 芯片,共可管理 15 级中断向量,如图:
在这里插入图片描述
在总线控制器控制下,8259A 芯片可以处于编程状态和操作状态。编程状态是 CPU 使用 IN 或 OUT 指令对 8259A 芯片进行初始化编程的状态。一旦完成了初始化编程,芯片即进入操作状态,此时芯片即 可随时响应外部设备提出的中断请求(IRQ0 – IRQ15)。

通过中断判优选择,芯片将选中当前高优先级 的中断请求作为中断服务对象,并通过 CPU 引脚 INT 通知 CPU 外中断请求的到来,CPU响应后,芯片从数据总线 D7-D0 将编程设定的当前服务对象的中断号送出,CPU 由此获取对应的中断向量值,并执行 中断服务程序。

对于 Linux 内核来说,中断信号通常分为两类:硬件中断和软件中断(异常)。每个中断是由 0-255 之间的一个数字来标识。对于中断 int0–int31(0x00–0x1f),每个中断的功能由 Intel 公司固定设定或保留用, 属于软件中断,但 Intel 公司称之为异常。因为这些中断是在 CPU 执行指令时探测到异常情况而引起的。中断 int32–int255 (0x20–0xff)可以由用户自己设定。 在 Linux 系统中,则将 int32–int47(0x20–0x2f)对应于 8259A 中断控制芯片发出的硬件中断请求信号 IRQ0-IRQ15,并把程序编程发出的系统调用(system_call)中断设置为 int128(0x80)。

进程管理

内核程序通过进程表(task)对进程进行管理,每个进程在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术考古员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值