摘要: 此为个人学习笔记存档 week 7 可执行程序的装载 一、预处理、编译、链接和目标文件的格式 可执行文件的创建——预处理、编译和链接 cd Code vi hello.c gcc E o hello.cpp hello.c m32 vi hello.cpp gcc x cpp output S o 阅读全文
posted @ 2016-04-06 20:36 20135202闫佳歆 阅读(206) 评论(0) 推荐(0) 编辑
摘要: week 6 实验:分析Linux内核创建一个新进程的过程 1.使用gdb跟踪创建新进程的过程 准备工作: rm menu rf git clone https://github.com/mengning/menu.git 更新Menu cd menu mv test_fork.c test.c 把 阅读全文
posted @ 2016-03-31 11:22 20135202闫佳歆 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 第三章 进程管理 一、进程 1.进程 进程就是处于执行期的程序。 进程就是正在执行的程序代码的实时结果。 进程是处于执行期的程序以及相关的资源的总称。 进程包括代码段和其他资源。 2.线程 执行线程,简称线程,是在进程中活动的对象。 内核调度的对象是线程 而不是进程。 Linux对线程并不特别区分, 阅读全文
posted @ 2016-03-30 21:19 20135202闫佳歆 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 此为个人学习笔记存档! week 6 进程的描述与创建 一、进程的描述 1.进程控制块task_struct 以下内容来自视频课件,存档在此。 为了管理进程,内核必须对每个进程进行清晰的描述,进程描述符提供了内核所需了解的进程信息。 [struct task_struct][1]数据结构很庞大 Li 阅读全文
posted @ 2016-03-30 21:14 20135202闫佳歆 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 第十八章 调试 内核级开发的调试工作远比用户级开发艰难的多。 一、准备开始 准备工作需要的是: 一个bug 一个藏匿bug的内核版本 相关内核代码的知识和运气 在这一章里,调试的主要思想是 让bug重现 ,但是在内核中这并不是很容易做到的。因此,在跟踪bug的时候,掌握的信息越多越好。 二、内核中的 阅读全文
posted @ 2016-03-24 15:47 20135202闫佳歆 阅读(163) 评论(0) 推荐(0) 编辑
摘要: week 5 实验:分析system_call中断处理过程 一、使用gdb跟踪分析一个系统调用内核函数(上周选择那一个系统调用)——getpid 复习视频: 如何实现? 更新menu代码到最新版 test.c中main函数里,增加MenuConfig() 增加对应的两个函数,Time和TimeAsm 阅读全文
posted @ 2016-03-22 17:59 20135202闫佳歆 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 此为个人笔记存档 week 5 系统调用(下) 一、给MenuOS增加time和time asm命令 这里老师示范的时候是已经做好的了: rm menu rf 强制删除 git clone http://github.com/mengning/menu.git 克隆相关信息 cd menu make 阅读全文
posted @ 2016-03-22 17:53 20135202闫佳歆 阅读(324) 评论(0) 推荐(0) 编辑
摘要: 第五章 系统调用 一、与内核通信 系统调用在用户控件进程和硬件设备之间添加了一个中间层,作用如下“ 为用户空间提供了一种硬件的抽象接口 系统调用保证了系统的稳定和安全 每个进程都运行在虚拟系统中,而在用户控件和系统的其余部分提供这样一层公共接口 在Linux中,系统调用是用户控件访问内核的唯一手段; 阅读全文
posted @ 2016-03-20 22:01 20135202闫佳歆 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 实验四 使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 在这里我选择的是第20号系统调用,getpid。 1.使用库函数API: 代码如下: / getpid.c / include include int main() { pid_t pid; pid = getpid(); p 阅读全文
posted @ 2016-03-15 21:21 20135202闫佳歆 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 此为个人笔记存档 week 4 系统调用(上) 一、用户态、内核态和中断处理过程 用户通过 库函数 与系统调用联系起来。 1.内核态 在高执行级别下,代码可以执行 特权指令 ,访问 任意的物理地址 。 2.用户态: 代码的掌控范围受到限制。 intel x86 CPU有四个权限分级,0 3。Linu 阅读全文
posted @ 2016-03-15 21:15 20135202闫佳歆 阅读(242) 评论(0) 推荐(0) 编辑