摘要: 一、LINUX内核分析 链接汇总 计算机是如何工作的 操作系统是如何工作的 构造一个简单的Linux系统MenuOS 系统调用的三个层次 系统调用的三个层次(下) 创建新进程的过程 可执行程序的装载 进程的切换和系统的一般执行过程 二、读书笔记汇总 《Linux内核设计与实现》 第一、二章学习笔记 阅读全文
posted @ 2016-04-17 18:39 20135231 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 进程的切换和系统的一般执行过程 一、进程调度的时机 中断处理过程(包括时钟中断、I/O中断、系统调用和异常)中,直接调用schedule(),或者返回用户态时根据need_resched标记调用schedule(); 内核线程可以直接调用schedule()进行进程切换,也可以在中断处理过程中进行调 阅读全文
posted @ 2016-04-11 17:22 20135231 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 一、 预处理、编译、链接 gcc编译源代码生成最终可执行的二进制程序,GCC后台隐含执行了四个阶段步骤。 预处理 → 编译 → 汇编 → 链接 预处理:编译器将C源代码中包含的头文件编译进来和执行宏替换等工作。 gcc编译源代码生成最终可执行的二进制程序,GCC后台隐含执行了四个阶段步骤。 预处理: 阅读全文
posted @ 2016-04-05 16:26 20135231 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 链 接 一、链接 1、链接(linking)是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(或被拷贝)到存储并执行。链接可以执行于编译时(compile time),也就是在源代码被翻译成机器代码时;也可以执行于加载时(load time),也就是在程序被加载器(loa 阅读全文
posted @ 2016-04-03 17:20 20135231 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 创建新进程的过程 一、进程的描述 为了管理进程,内核必须对每个进程进行清晰的描述,进程描述符提供了内核所需了解的进程信息。 1、进程控制块PCB——task_struct 操作系统的三大管理功能 进程管理 内存管理 文件系统 PCB task_struct中包含 进程状态 进程打开的文件 进程优先级 阅读全文
posted @ 2016-03-30 21:56 20135231 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 一、进程 1、进程就是处于执行期的程序(目标码存放在某种存储介质上)。但进程并不仅仅局限于一段可执行程序代码,通常进程还要包含其他资源。执行线程,简称线程(thread),是在进程中活动的对象。 2、每个线程都拥有一个独立的程序计数器、进程技和一组进程寄存器。 3、内核调度的对象是线程,而不是进程。 阅读全文
posted @ 2016-03-27 21:55 20135231 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 调 试 一、准备开始 一个bug 一个藏匿bug的内核版本 相关内核代码的知识和运气 知道这个bug最早出现在哪个内核版本中。 1、想要成功进行调试: 让这些错误重现 抽象出问题 从代码中搜索 二、内核中的bug 从隐藏在源代码中的错误到展现在目击者面前的bug,往往是经历一系列连锁反应的事件才可能 阅读全文
posted @ 2016-03-24 11:41 20135231 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 系统调用的三个层次(下) 一、给MenuOS增加time和time-asm命令 1、克隆并自动编译 MenuOS rm menu -rf 强制删除原menu文件 git clone https://github.com/mengning/menu.git 从github中克隆 cd menu mak 阅读全文
posted @ 2016-03-21 11:39 20135231 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 第五章 系统调用 在现代操作系统中,内核提供了进程与内核进行交互的一组接口。有如下作用: 1、用户空间进程和硬件设备之间通过系统调用来交互,其主要作用有三个。 2、系统调用是用户空间访问内核的唯一手段;除异常和陷入外,是内核唯一合法的入口。 1、应用程序通过在用户空间实现的应用编程接口(API)而非 阅读全文
posted @ 2016-03-19 11:38 20135231 阅读(338) 评论(0) 推荐(0) 编辑
摘要: 用户通过库函数与系统调用联系起来。 在高的执行级别下,代码可以执行特权指令,访问任意的物理地址,这时的CPU就对应内核态 在低级别的指令状态下,代码 只能在级别允许的特定范围内活动。在日常操作下,执行系统调用的方式是通过库函数,库函数封装系统调用,为用户提供接口以便直接使用。 中断处理是从用户态进入 阅读全文
posted @ 2016-03-17 12:32 20135231 阅读(263) 评论(0) 推荐(0) 编辑