摘要:
一、分析文件头 1. 段入口类型定义(/usr/include/elf.h)下面产生的hello是32位的 使用命令 Hexdump –x ELF_1.o 第一行: 前4字节,蓝色部分,是一个魔数,表示这是一个ELF对象 下一个字节(右边这个)01说明是个32位对象(64位的是02); 下一个字节是 阅读全文
摘要:
实验目的: 1、理解模块原理 2、编写模块代码 3、编译模块 4、加载模块 5、测试模块 6、卸载模块 实验步骤 1、实验原理 Linux模块是一些可以作为独立程序来编译的函数和数据类型的集合。之所以提供模块机制,是因为Linux本身是一个单内核。单内核由于所有内容都集成在一起,效率很高,但可扩展性 阅读全文
摘要:
作者:杨舒雯,原创作品转载请注明出处,《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC 1000029000 目录: 1.通过简单的汇编程序谈谈对计算机工作方式的认识 http://www.cnblogs.com/yswysw/p/5210 阅读全文
摘要:
杨舒雯(原创作品转载请注明出处) 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC 1000029000 实验目的: 使用gdb跟踪分析一个schedule()函数 ,验证您对Linux系统进程调度与进程切换过程的理解;; 理解进程上下文的 阅读全文
摘要:
第4章 进程调度35 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统。只有通过调度程序的合理调度,系统资源才能最大限度地发挥作用,多进程才会有并发行的效果。 调度程序没有太复杂的原理,最大限度地利用处理器时间的原 阅读全文
摘要:
第七章 链接 7.1 编译器驱动程序 大多数编译系统提供编译驱动程序,它代表用户在需要时调用语言预处理器、编译器、汇编器和链接器。 7.2 静态链接 像Unix ld程序这样的静态链接器以一组可重定位目标文件和命令行参数作为输入,生成一个完全链接的可以加载和运行的可执行目标文件作为输出。输入的可重定 阅读全文
摘要:
LINUX内核分析第七周学习总结——可执行程序的装载 杨舒雯(原创作品转载请注明出处) 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC 1000029000 学习笔记 一、预处理、编译、链接和目标文件的格式 1.可执行程序是怎么得来的 C 阅读全文
摘要:
Chapter 3 进程管理 3.1 进程 1. 进程就是处于执行期的程序(目标码存放在某种存储介质上),但进程并不仅仅局限于一段可执行程序代码。通常进程还要包含其他资源,像打开的文件,挂起的信号,内核内部数据,处理器状态,一个或多个具有内存映射的内存地址空间及一个或多个执行线程。当然还包括用来存放 阅读全文
摘要:
Chapter 18 调 试 18.1 准备开始 1.准备工作: 一个bug 一个藏匿bug的内核版本 相关内核代码的知识和运气 2.执行foo就会让程序立即产生核心信息转储(dump core)。 18.2 内核中的bug 往往是经由连锁反应触发的。 1.内核bug的原因: 错误代码(如没有把正确 阅读全文
摘要:
一、 阅读理解task_struct数据结构http://codelab.shiyanlou.com/xref/linux 3.18.6/include/linux/sched.h 1235; 进程是计算机中已运行程序的实体。在面向线程设计的系统(Linux 2.6及更新的版本)中,进程本身不是基本 阅读全文