`
- 浏览:
98495 次
- 性别:
- 来自:
杭州
-
- 编译内核:
- 在编译内核之前,必须配置它;
- 配置的选项以CONFIG_FEATURE形式表示,如对称多处理器(SMP)的配置选项为:CONFIG_SMP=y/n;y表示启用,n表示不起作用;
- make config:该工具会挨个遍历所有配置项,要求用户选择yes,no或是module;
- make menuconfig:基于X11的图形工具;
- make xconfig:基于gtk+图形工具;
- make gconfig:
- make defconfig:创建一个默认配置;
- 配置文件存放在代码树根目录的.config文件中,可以直接修改或用它来配置新的代码树,此时需要验证和更新配置:make oldconfig;
- 配置好后,就可以用make命令来编译它了;
- 编译时,会在内核代码树的根目录下创建一个System.map文件;这是一份符号对照表,用以将内核符号和它们的起始地址对应起来。调试的时候,如果把内存地址翻译成容易理解的函数名以及变量名会很有用;
- 安装内核:
- 如何安装和体系结构以及启动引导工具有关;如在使用grub的x86的系统上,把arch/i386/boot/bzImage拷贝到/boot目录下,使用vmlinuz-version来命令它,并编译/boot/grub/grub.cfg文件(ubuntu 10.04),为新内核建立一个新的启动项;
- 内核开发的特点:
- 内核编程时不能访问C库:主要原因是速度和大小的问题;不过,大部分常用的C库函数在内核中都已经得到了实现;如操作字符串的函数组就位于lib/string.c文件中,只要包含<linux/string.h>头文件,就可以使用它们;
- 内核编程时必须使用GNU C:内核开发者总是要用到gcc提供的许多语言扩展部分(gcc是多种GNU编译器的集合,它包含了的C编译器即可以编译内核,也可以编译Linux系统上用C写的其他代码);最让人感兴趣的C语言扩展是:
- 内联函数:GNU的C编译器支持内联函数;在内核中,为了类型安全的原因,优先使用内联函数而不是宏;
- 内联汇编:gcc编译器支持在C函数中嵌入汇编语句;
- 分支声明:对于条件选择语句,gcc内建了一条指令用于优化;在一个条件经常出现或只有很少才会出现时,编译器可以根据这条指令对分支条件进行优化;内核把这条指令封装成宏:如likely()和unlikely();
- 没有内存保护机制:在内核中,不应该去做内存非法的地址访问,引用空指针等,否则内核会死掉;另外,内核中内存都不分页;
- 不要轻易在内核中使用浮点数:
- 容积小而固定的栈;
- 考虑同步和并发;
- Linux是抢占多任务操作系统:内核的进程调度程序对进程进行调度,内核必须对这些任务同步;
- Linux内核支持多处理器系统:多个处理器运行的代码很可能会同时访问共享的同一个资源;
- 中断是异常的,因此中断处理程序有可能访问同一资源;
- Linux内核可以被抢占,因此几段代码可能同时访问相同的资源;
- 可移植性的重要性;
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
3. **配置内核**:运行`make menuconfig`命令,配置内核以适应S5PV210。这包括选择正确的体系结构(ARM)、处理器类型(例如,S5PV210)、设备树(Device Tree)支持以及必要的硬件驱动。 4. **设备树**:S5PV210...
- **自顶向下教学法:** 从宏观角度出发,逐步深入到具体的内核实现细节,使学生能够系统地掌握知识。 - **案例分析:** 通过分析具体的案例,帮助学生更好地理解抽象概念。 #### 七、结语 通过本课程的学习,学生...
在《Linux Kernel Development: 完美版》这份文档中,作者Randy Dunlap详细介绍了Linux内核开发的相关知识和实践经验。作为一份全面深入的技术指南,该文档不仅涵盖了基础知识,还深入探讨了Linux社区的文化与价值观...
不过,可以从标题“Linux内核设计的艺术”出发,展开关于Linux内核设计方面的知识点。以下为对Linux内核设计相关的知识点详细说明: Linux内核是操作系统的核心部分,负责管理系统资源,包括CPU、内存、设备驱动...
文档还提供了一个宏观视角,展示了Linux 0.01内核的源码组织结构,从目录层级出发,解析了各个主要目录的作用与功能,如boot目录下的引导程序、kernel目录下的核心模块、mm目录下的内存管理、fs目录下的文件系统支持...
在start_kernel函数中,尽管内核初始化过程中涉及到大量的代码和复杂的逻辑,但从物理内存管理角度出发,可以通过对关键函数调用的分析,来理解Linux内核是如何逐步建立起对物理内存的管理能力的。值得注意的是,...
从这个文件出发,开发者可以追踪到整个GPIO操作的代码路径。 在代码中,可以看到对一个名为gpio_set_value的函数的调用,这个函数是一个宏定义。要找到这个宏定义对应的代码,需要查看E:\iTOP4418\linux\kernel\...
本书内容的组织方式突破了传统讲解方法的局限,从操作系统的实际运行过程出发,分析了每一个动作的设计意图和实现原理。其创新性的写作方式不仅注重理论知识的传授,还通过实际案例和图解方式,让读者能够透彻地理解...
《Windows 内核情景分析 下》是毛德操先生撰写的一本深入探讨Windows操作系统内核的书籍,专注于从实际场景出发解析Windows内核的工作机制。这本书对于深入理解Windows操作系统、进行系统级编程以及优化有着极高的...
- **单层感知器**:从理论基础出发,逐步介绍如何在TensorFlow中定义模型、选择优化算法并训练模型。 - **多层感知器**:进一步探讨多层感知器的理论和实践,包括模型定义、优化技术等。 - **卷积网络**:重点...
- **视角转换**: 从攻击者的角度出发,理解内核的设计缺陷及其利用方法。 - **策略制定**: 基于对内核的理解,制定有效的攻击策略。 **6. 用户空间进程与调度器** - **进程管理**: 解释操作系统是如何管理和调度...
在《Linux Kernel Validation Tools》这份资料中,作者Nicholas McGuire从兰州大学分布式与嵌入式系统实验室出发,详细介绍了针对Linux内核开发的一系列工具和技术。该文档不仅为内核开发者提供了宝贵的资源,而且...
在深入了解Linux内核编译的过程中,本篇文章将从Linux内核编译的基础概念出发,详细介绍编译过程中的注意事项及技巧,帮助读者更好地掌握这一技能。 #### 二、理解Linux内核 1. **核心的概念**:核心(Kernel)是...
本章从网络协议栈的角度出发,详细解析了TCP/IP协议簇的各个层次,包括网络接口、IP层、传输层等。此外,还介绍了Linux内核如何处理网络数据包的接收和发送过程,以及如何实现路由选择等功能。 #### 十三、系统调用...
我们可以从这些关键点出发,探讨操作系统的基本概念及其在技术史上的演变。 操作系统是一套管理计算机硬件与软件资源的程序,它为应用软件提供抽象的、高级的接口,而不是直接的机器码。例如,操作系统的文件系统...
真正的技术成熟应该是能跳脱出这些无谓的争论,从“计算的本质”出发来理解事物。 作者通过与朋友的对话,提出了关于微内核与宏内核的新见解,认为微内核系统可能并不比宏内核系统慢,这在文档中提及了Minix3与...
《ArmLinux BOOTLOADER全程详解》一文深入探讨了ARM架构下Bootloader的关键概念与实践,作者董磊鋆从基本概念出发,逐步解析了压缩内核(COMPRESSED KERNEL)、未压缩内核(DECOMPRESSED KERNEL)、JFFS2文件系统、...