
Linux内核编程
文章平均质量分 81
null
巭犇
做一件事,感动自己...
展开
-
内核编程十三:进程状态详解
中的成员正是用来标记进程状态的核心字段,它存储了进程的当前状态标志(如等)......原创 2025-03-26 00:00:00 · 1024 阅读 · 0 评论 -
内核编程十二:打印内核态进程的属性
【代码】内核编程十一:打印task_struct中的数据。原创 2025-03-26 00:00:00 · 240 阅读 · 0 评论 -
内核编程十一:进程的数据结构
是用于描述进程的核心数据结构,存储了进程的所有关键信息,包括进程ID、状态、调度信息、内存管理信息、文件描述符等。:存储该进程的虚拟内存区域(VMA,Virtual Memory Area)。:指向进程的内存管理结构,包含代码段、数据段、堆、栈等信息。:进程 ID,是 Linux 内核唯一标识一个进程的数值。:线程组 ID,同一进程的多个线程共享相同的。:保存进程的调度信息,如优先级、时间片等,供。:保存进程打开的所有文件的描述符信息,如。:指向该进程创建的子进程列表。复制父进程的部分信息,如。原创 2025-03-26 00:00:00 · 755 阅读 · 0 评论 -
内核编程十:进程的虚拟地址空间
请思考当以下这个经典的hello world代码,调入内存并且在cpu上运行变成一个进程的时候,代码中的各个数据在内存中是如何进行分布的。原创 2025-03-25 00:00:00 · 476 阅读 · 0 评论 -
内核编程九:进程概述
通常把进程定义为程序执行的一个实例,因此,如果16个用户同时运行vi,那么就有16个独立的进程(尽管它们共享同一个可执行代码)。是程序运行后的实例,它是动态的,包含代码、数据、堆栈、CPU寄存器等信息。,包括内存、CPU时间、文件描述符等,以保证不同进程之间不会相互干扰。是存储在磁盘上的可执行文件,本质上是静态的代码和数据。:创建一个新进程(子进程),几乎完全复制父进程。:进程可以执行,但正在等待CPU调度。:系统为每个进程分配的唯一编号。:在进程内加载并执行新的程序。:查看当前系统的所有进程信息。原创 2025-03-25 00:00:00 · 618 阅读 · 0 评论 -
内核编程八:基于printk宏的pr_* 宏
pr_*在之前的文章讲到printk的使用方法,我们发现通过printk宏打各个级别的日志非常繁琐,所以在Linux内核中基于printk宏又新定义了一些宏,例如在。原创 2025-03-06 00:00:00 · 732 阅读 · 0 评论 -
内核编程七:Linux 内核日志的级别
Linux 内核日志(Kernel Log)有 8 个不同的级别(Severity Levels),用于表示消息的严重性。它们的定义在头文件中,并且可以用于printk()进行日志打印。KERN_EMERGKERN_ALERTKERN_CRITKERN_ERRKERN_INFOKERN_DEBUGprintk()如果printk()没有指定级别,默认使用,一般为。可以使用dmesgdmesg在文件中可以查看和修改printk()4 4 1 7你可以修改日志级别,比如设置默认日志级别为KERN_INFO。原创 2025-03-06 00:00:00 · 1332 阅读 · 0 评论 -
内核编程六:kernel log buffer
Linux 内核日志缓冲区(Kernel Log Buffer)用于存储内核日志消息,包括启动过程、驱动程序信息、错误报告和调试信息。原创 2025-03-05 08:30:00 · 295 阅读 · 0 评论 -
内核编程五:从hello world开始
这是一个简单的 Linux 内核模块(LKM)示例,模块加载时打印 “Hello, world”,卸载时打印 “Goodbye curl world”。通过 module_init 和 module_exit 宏,分别指定了模块加载和卸载时的函数。原创 2025-02-27 10:38:30 · 1025 阅读 · 0 评论 -
内核编程四:内核空间组件
这些组件共同协作,确保 Linux 内核的高效运行。原创 2025-03-05 08:30:00 · 253 阅读 · 0 评论 -
内核编程三:Library and system call APIs
在Linux内核开发中,**库(Library)系统调用API(System Call API)**是两个重要的概念,它们共同构成了用户空间和内核空间之间的交互机制。原创 2025-03-04 08:30:00 · 795 阅读 · 0 评论 -
内核编程二:CPU特权级别
CPU 运行级别通常指的是,用于控制操作系统和应用程序的权限,以确保系统的安全性和稳定性。x86 处理器(如 Intel 和 AMD)的保护模式定义了,在大多数现代操作系统(如 Linux、Windows)中,只使用。ARM 处理器的运行级别称为在实际应用中,普通程序通常运行在,而操作系统内核和驱动运行在。原创 2025-03-04 08:30:00 · 1131 阅读 · 0 评论 -
内核编程一:用户空间和内核空间
用户空间是普通应用程序运行的环境,位于CPU 运行级别(Ring 3),具有受限的访问权限,无法直接操作硬件或内核资源。内核空间是 Linux 内核运行的环境,位于CPU 运行级别(Ring 0),具有最高权限,可直接访问硬件设备和管理系统资源。用户空间(User Space)内核空间(Kernel Space)运行级别Ring 3(低权限)Ring 0(最高权限)访问权限受限,不能直接访问硬件拥有全部权限程序示例bashvimgcc进程管理、设备驱动、文件系统关键作用运行用户应用程序。原创 2025-03-04 08:30:00 · 867 阅读 · 0 评论