详解C语言的编译过程
本文将以一个简单的 “Hello, World!” 程序为起点,通过
gcc -v命令揭示编译过程的神秘面纱,并进一步以一个多文件的项目为例,逐步拆解C语言编译的四大核心步骤:预处理 (Preprocessing)、编译 (Compilation)、汇编 (Assemble) 和 链接 (Linking)。
本文将以一个简单的 “Hello, World!” 程序为起点,通过
gcc -v命令揭示编译过程的神秘面纱,并进一步以一个多文件的项目为例,逐步拆解C语言编译的四大核心步骤:预处理 (Preprocessing)、编译 (Compilation)、汇编 (Assemble) 和 链接 (Linking)。
内核最新的调度策略宏:
#define SCHED_NORMAL 0 // 普通时间共享任务(CFS)
#define SCHED_FIFO 1 // 实时 FIFO
#define SCHED_RR 2 // 实时轮转
#define SCHED_BATCH 3 // 批处理任务
#define SCHED_IDLE 5 // 空闲任务
#define SCHED_DEADLINE 6 // 截止期调度
重新梳理 Linux 用户态相关的调度系统调用,包括 作用、参数意义、返回值,以及内核内部逻辑。
本文代码地址:https://github.com/Shibo-Zhu/linux-try/tree/master/kernel_cpufreq_ctl
在 Linux 的世界里,内核是操作系统的核心,负责管理系统的所有硬件资源。为了保持内核的精简、稳定和高效,我们不能随意修改它。然而,硬件和软件的需求日新月异,我们又必须有办法扩展内核的功能。内核模块(Kernel Module) 正是解决这一矛盾的完美方案。
本文代码地址:https://github.com/Shibo-Zhu/linux-try/tree/master/kernel_module_hello
struct task_struct 是 Linux 内核中用于表示进程的核心数据结构。它包含了进程的各种信息,如状态、调度信息、内存管理信息、文件描述符等。理解 task_struct 的结构和各个字段的作用,对于深入了解 Linux 进程调度机制至关重要。