摘要:
1、 理解模块原理 linux模块是一些可以作为独立程序来编译的函数和数据类型的集合。之所以提供模块机制,是因为Linux本身是一个单内核。单内核由于所有内容都集成在一起,效率很高,但可扩展性和可维护性相对较差,模块机制可弥补这一缺陷。 Linux模块可以通过静态或动态的方法加载到内核空间,静态加载 阅读全文
摘要:
作业列表 (点击作业跳转) linux内核分析作业:以一简单C程序为例,分析汇编代码理解计算机如何工作 linux内核分析作业:操作系统是如何工作的进行:完成一个简单的时间片轮转多道程序内核代码 linux内核分析作业3:跟踪分析Linux内核的启动过程 linux内核分析作业4:使用库函数API和 阅读全文
摘要:
1. 实验目的 选择一个系统调用(13号系统调用time除外),系统调用列表,使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 分析汇编代码调用系统调用的工作过程,特别是参数的传递的方式等。 阐明自己对“系统调用的工作机制”的理解。 本次实验选择fork系统调用,其系统调用号为: 一 阅读全文
摘要:
第四章进程调度 进程调度程序可看做在可运行太进程之间分配有限的处理器时间资源的内核子系统。调度程序是多任务操作系统的基础。通过调度程序的合理调度,系统资源才能最大限度地发挥作用,多进程才会有并发执行的效果。 最大限度地利用处理器时间的原则是,只要有可以执行的进程,那么总会有进程在执行。 4.1多任务 阅读全文
摘要:
1、可执行文件的格式 在 Linux 平台下主要有以下三种可执行文件格式: 1、a.out(assembler and link editor output 汇编器和链接编辑器的输出) 2、COFF(Common Object File Format 通用对象文件格式) 3、ELF(Executab 阅读全文
摘要:
第七章链接 链接:将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载。连接可执行于编译时、加载时、运行时。由叫链接器的程序执行。 链接器使得分离编译成为可能。使得可以把 大程序分解成小模块,利于管理。 理解链接器将帮助你构筑大程型序;避免一些危险的编程错误;帮助你理解语言的作 阅读全文
摘要:
task_struct结构: struct task_struct { volatile long state;进程状态 void *stack; 堆栈 pid_t pid; 进程标识符 unsigned int rt_priority;实时优先级 unsigned int policy;调度策略 阅读全文
摘要:
第三章进程管理 进程是Unix操作系统抽象概念中最基本的一种。我们拥有操作系统就是为了运行用户程序,因此,进程管理就是所有操作系统的心脏所在。 3.1进程 概念: 进程:处于执行期的程序。但不仅局限于程序,还包含其他资源(打开的文件,挂起的信号,内核内部数据,处理器状态,一个或多个具有内催音社的内存 阅读全文
摘要:
1.增加 Menu 内核命令行 调试系统调用。 步骤:删除menu git clone (tab) make rootfs 这就是我们将 fork 函数写入 Menu 系统内核后的效果,通过命令行,实现了操作系统调用过程。 2.GDB 追踪内核调用 sys_fork 通过查询操作系统内核调用函数 A 阅读全文
摘要:
第十八章调试 18.1 准备开始 需要准备的东西: l 一个bug:大部分bug通常都不是行为可靠而且定义明确的 l 一个藏匿bug的内核版本:找出bug首先出现的版本 l 相关内核代码的知识和运气 最好能让bug重现,有一些bug存在而且有人没办法让他重现,因为内核与用户程序和硬件间的交互很微妙。 阅读全文