2016年4月20日
摘要: Linux内核分析总结 一、博客地址 计算机是如何工作的:http://www.cnblogs.com/disturbia/p/5212724.html 操作系统是如何工作的:http://www.cnblogs.com/disturbia/p/5245004.html 构造一个简单的Linux系统 阅读全文
posted @ 2016-04-20 20:03 20135232 阅读(297) 评论(0) 推荐(0) 编辑
  2016年4月13日
摘要: 一、进程切换的关键代码switch_to的分析 (一)进程调度与进程调度的时机分析 1.不同类型的进程有不同的调度需求 第一种分类: I/O-bound:频繁地进行I/O,花费很多的时间等待I/O操作的完成 CPU-bound:计算密集型,需要大量的CPU时间进行计算 I/O-bound:频繁地进行 阅读全文
posted @ 2016-04-13 21:17 20135232 阅读(251) 评论(0) 推荐(0) 编辑
  2016年4月12日
摘要: 第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间。进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统。只有通过调度程序的合理调度,系统资源才能最大限度地发挥作用,多进程才会有并发执行的效果。 4.1 多任务 1.多任务操作系统就是能同时并发地交互执 阅读全文
posted @ 2016-04-12 19:52 20135232 阅读(207) 评论(0) 推荐(0) 编辑
  2016年4月6日
摘要: 一、预处理、编译、链接和目标文件的格式 (一)可执行程序是怎么得来的? 1. 2.可执行文件的创建——预处理、编译和链接 shiyanlou:~/ $ cd Code [9:27:05] shiyanlou:Code/ $ vi hello.c [9:27:14] shiyanlou:Code/ $ 阅读全文
posted @ 2016-04-06 19:47 20135232 阅读(361) 评论(0) 推荐(0) 编辑
  2016年4月5日
摘要: 第七章 链接 1.链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(或被拷贝)到存储器并执行。 2.链接可以执行于编译时,也就是在源代码被翻译成机器代码时;也可以执行于加载时,也就是在程序被加载器加载到存储器并执行时;甚至执行于运行时,由应用程序来执行。在早期的计算机 阅读全文
posted @ 2016-04-05 20:26 20135232 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 第三章 进程管理 3.1 进程 1.进程: 进程就是处于执行期的程序。 进程就是正在执行的程序代码的实时结果。 进程是处于执行期的程序以及相关的资源的总称。 进程包括代码段和其他资源。 2.线程:执行线程,简称线程,是在进程中活动的对象。 内核调度的对象是线程而不是进程。 Linux对线程并不特别区 阅读全文
posted @ 2016-04-05 19:54 20135232 阅读(242) 评论(0) 推荐(0) 编辑
  2016年3月29日
摘要: 一、知识点总结 (一)进程的描述 1.操作系统内核里有三大功能: 进程管理 内存管理 文件系统 2.进程描述符:task_struct 2.进程描述符——struct task_struct 3.进程状态转换图 数据结构分析: (二)进程的创建 1.进程的状态以及fork一个进程的用户态代码 2.f 阅读全文
posted @ 2016-03-29 14:49 20135232 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 第十八章 调试 18.1 准备开始 1. 需要的只是: 一个bug 一个藏匿bug的内核版本 相关内核代码的知识和运气 2. 在跟踪bug的时候,掌握的信息越多越好。 18.2 内核中的bug 1. 内核bug多种多样,产生的原因有很多:从错误代码(没有把正确的值存放在恰当的位置);到同步时发生的错 阅读全文
posted @ 2016-03-29 13:53 20135232 阅读(164) 评论(0) 推荐(0) 编辑
  2016年3月23日
摘要: (一)给MenuOs增加time和time-asm命令 更新menu代码到最新版 在main函数中增加MenuConfig 增加对应的Ttime和TimeAsm函数 make rootfs (二)使用gdb跟踪系统调用内核函数sys_time 1.sys_time返回后进入汇编代码处理gdb无法继续 阅读全文
posted @ 2016-03-23 16:27 20135232 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 1.调用在用户空间进程和硬件设备之间添加了一个中间层。该层主要作用有三个: 2.系统调用是用户空间访问内核的唯一手段;除异常和陷入外,是内核唯一合法的入口。 1.情况下,应用程序通过在用户空间实现的应用编程接口(API)而不是直接通过系统调用来编程。 2.C库提供了POSIX的绝大部分API。 1. 阅读全文
posted @ 2016-03-23 15:31 20135232 阅读(177) 评论(0) 推荐(0) 编辑