摘要:
由于Linux内核是一种单内核模式的系统,因此内核中所有程序几乎都有紧密的联系,它们之间的调用关系非常密切。所以在阅读一个源代码文件时往往需要参阅其他相关的文件。因此有必要在开始阅读内核源代码之前,先熟悉一下源代码文件的目录结构。 这里我们首先列出 Linux 内核完整的源代码目录,包括其中的子目录 阅读全文
摘要:
在Linux 0.11内核中,为了有效地使用机器中的物理内存, 内存被划分成几个功能区域,如图2-9所示。 图2-9 物理内存使用的功能区域分布图 Linux内核程序占据在物理内存的开始部分, 接下来是用于供硬盘或软盘等块设备使用的高速缓冲区部分。 当一个进程需要读取块设备中的数据时,系统会首先将数 阅读全文
摘要:
程序是一个可执行的文件,而进程(process)是一个执行中的程序实例。 利用分时技术,在Linux操作系统上同时可以运行多个进程。 分时技术的基本原理: 把CPU的运行时间划分成一个个规定长度的时间片(time slice), 让每个进程在一个时间片内运行。 当进程的时间片用完时系统就利用调度程序 阅读全文
摘要:
在Linux 0.11内核中,PC的可编程定时芯片Intel 8253被设置成每隔10ms就发出一个时钟中断(IRQ0)信号。 这个时间节拍就是系统运行的脉搏,我们称之为1个系统滴答。 因此每经过1个滴答就会调用一次时钟中断处理程序(timer_interrupt)。 该处理程序主要用来通过 jif 阅读全文
摘要:
在使用80x86组成的PC中,采用了两片8259A可编程中断控制芯片。 每片可以管理8个中断源。通过多片的级联方式,能构成最多管理64个中断向量的系统。 在 PC/AT 系列兼容机中,使用了两片8259A芯片,共可管理15级中断向量。其级联示意图见图2-5。其中从芯片的 INT 引脚连接到主芯片的 阅读全文
摘要:
2.1 Linux内核模式和体系结构 操作系统主要由4部分组成: 硬件、 操作系统内核、 操作系统服务 用户应用程序 图2-1 操作系统组成部分 用户应用程序:指那些字处理程序、互联网浏览器程序或用户自行编制的各种应用程序; 操作系统服务程序:指向用户提供的服务,被看作是操作系统部分功能的程序。 在 阅读全文
摘要:
参考资料: 手把手教你使用VSCode进行linux内核代码阅读和开发 - 知乎 (zhihu.com) 2023 年对比一下 ccls 和 clangd | 工欲善其事,必先利其器 (martins3.github.io) Linux驱动实践:带你一步一步编译内核驱动程序 - 知乎 (zhihu. 阅读全文
摘要:
试了各种错之后结果发现还是得用自己编译的才行,单纯的头文件还是会出现各种错误。 基本参考了How to use the Microsoft Linux kernel v6 on WSL2 | Microsoft Learn这篇文章的内容。可以选择不用v6只用官方github上默认的。具体步骤也是一样 阅读全文
摘要:
目录Faster sorting algorithms discovered using deep reinforcement learning将算法表示为低级CPU指令DRL for discovering faster algorithmsTransformer encoderLatency v 阅读全文
摘要:
目录一、typedef的四种用法1. 定义类型别名2. typedef struct3. 定义和平台无关的数据类型4. 为复杂的声明顶一个简单别名二、如何理解复杂声明和定义三、右左法则四、用typedef简化复杂的声明和定义 内容与参考资料基本一致,稍微修改了一点参考资料上存在的错误 一、typed 阅读全文