摘要:
第三章 进程管理 3.1 进程 进程就是处于执行期的程序(目标码存放在某种存储介质上)。但进程并不仅仅局限于一段可执行程序代码,通常进程还要包含其他资源。 执行线程,简称线程(thread) , 是在进程中活动的对象。每个线程都拥有一个独立的程序计数器、进程技和一组进程寄存器。内核调度的对象是线程, 阅读全文
摘要:
第十八章 调试 18.1 准备开始 需要的只是: ①一个bug。大部分bug 通常都不是行为可靠而且定义明确的。②一个藏匿bug 的内核版本。③相关内核代码的知识和运气。 许多时候,当可以精确地重现一个bug 的时候,就已经成功了一大半了。 18.2 内核中的bug 从隐藏在源代码中的错误到展现在目 阅读全文
摘要:
扒开系统调用的“三层皮” (下) 一、知识总结 1.在MenuOS中通过添加代码增加自定义的系统调用命令 本周从内核态出发研究系统调用,通过跟踪调试,首先把上周的两个命令加到MenuOS中: rm menu rf 强制删除原menu文件 git clone https://github.com/me 阅读全文
摘要:
第五章 系统调用 5.1 与内核通信 ①系统调用在用户空间进程和硬件设备之间添加了一个中间层。 ②该层主要作用有三个: 首先,它为用户空间提供了一种硬件的抽象接口。 第二,系统调用保证了系统的稳定和安全。作为硬件设备和应用程序之间的中间人,内核可以基于权限、用户类型和其他一些规则对需要进行的访问进行 阅读全文
摘要:
第一章 Linux内核简介 1.1Unix的历史 ①Unix是一个强大、健壮和稳定的操作系统。 ②.Unix的特点:第一,Unix很简洁,没有不明确的系统,仅仅提供几百个系统调用并且有一个非常明确的设计目的。第二,在Unix中,所有的东西都被当做文件对待。第三,Unix的内核和相关的系统工具软件是用 阅读全文
摘要:
扒开系统调用的“三层皮” 一、 用户态、内核态和中断处理过程 1.用户态、内核态区别 ①在高级别的状态下,代码可以执行特权指令,访问任意的物理地址,这种CPU执行级别就对应着内核态。 ②在相应的低级别执行状态下,代码的掌控范围会受到限制。 ③为什么会有这种级别划分?答:没有访问权限划分容易使得系统混 阅读全文
摘要:
相关知识点 1.arch目录 占据相当庞大的空间,X86目录下代码需要重点关注。 2.init目录 内核启动的相关代码基本都在此目录下,内含MAIN.C,文件中START_KERNEL是整个LINUX内核的起点。 3.kernel 后跟文件名,Linux内核的核心代码在kernel目录中。可以使用m 阅读全文
摘要:
函数调用堆栈 一、三个法宝: ①存储程序计算机工作模型,计算机系统最最基础性的逻辑结构 ②函数调用堆栈,高级语言得以运行的基础,只有机器语言和汇编语言的时候堆栈机制对于计算机来说并不那么重要,但有了高级语言及函数,堆栈成为了计算机的基础功能;函数参数传递机制和局部变量存储. enter pushl 阅读全文
摘要:
计算机是如何工作的 计算机系统是由硬件和系统软件组成的,它们共同工作来运行应用程序。虽然系统的具体实现方式随着时间不断变化,但是系统内在的概念却没有改变。所有计算机系统都有相似的硬件和软件组件,它们执行着相似的功能。一些程序员希望深入了解这些组件是如何工作的,以及这些组件是如何影响程序的正确性和性能 阅读全文
摘要:
读书笔记 [第二周读书笔记]
[http://www.cnblogs.com/20135323fuyunjin/p/4823945.html] [第三周读书笔记]
[http://www.cnblogs.com/20135323fuyunjin/p/4842699.html] [第四周读书笔... 阅读全文