以往博客链接: 第一周 计算机系统是如何工作的 第二周 操作系统是如何工作的 第三周 构造一个简单的Linux系统MenuOS 第四周 扒开系统调用的三层皮(上) linux内核分析 第五周读书笔记 第五周 扒开系统调用的三层皮(下) 第六周 分析Linux内核创建一个新进程的过程 linux内核分 Read More
posted @ 2016-04-24 21:51 20125221银雪纯 Views(131) Comments(0) Diggs(0) Edit
一、计算机是如何工作的 冯·诺依曼结构: 从硬件的角度:CPU通过总线和内存连接,CPU从IP所指的代码段取指令执行。 从程序员的角度:内存负责保存指令,CPU负责执行指令。 CPU怎么识别,识别什么样的指令: API 程序员与计算机的接口 ABI 程序与CPU的接口 约定指令是用什么寄存器 x86 Read More
posted @ 2016-04-24 16:07 20125221银雪纯 Views(171) Comments(0) Diggs(0) Edit
第四章 进程调度 4.1 多任务 1、多任务操作系统就是能同时并发的交互执行多个进程的操作系统。 2、多任务操作系统使多个进程处于堵塞或者睡眠状态,实际不被投入执行,这些任务尽管位于内存,但是并不处于可运行状态。 3、多任务系统分类: (1)非抢占式多任务 (2)抢占式多任务 4、Linux提供了抢 Read More
posted @ 2016-04-17 16:33 20125221银雪纯 Views(172) Comments(0) Diggs(0) Edit
笔记: 实验:使用gdb跟踪分析一个schedule()函数 Read More
posted @ 2016-04-17 12:48 20125221银雪纯 Views(142) Comments(0) Diggs(0) Edit
第七章 链接 1、链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载到存储器并执行。 2、链接可以执行于编译时,加载时,运行时。 7.1编译器驱动程序 1、大多数编译系统提供编译驱动程序,它代表用户在需要时调用语言预处理器、编译器、汇编器和链接器。 7.2 静态链接 1 Read More
posted @ 2016-04-10 20:49 20125221银雪纯 Views(144) Comments(0) Diggs(0) Edit
一、编译链接的过程和ELF可执行文件格式 ELF文件中有三种文件 可重定位文件:保存着代码和适当的数据,用来和其他的object文件一起来创建一个可执行文件或者是一个共享文件。 可执行文件:保存着一个用来执行的程序;该文件指出了exec(BA_OS)如何来创建程序进程映象。 共享文件:保存着代码和合 Read More
posted @ 2016-04-10 14:58 20125221银雪纯 Views(171) Comments(0) Diggs(0) Edit
第三章 进程管理 3.1 进程 进程:处于执行期的程序 线程是在进程活动中的对象;内核调度的对象是线程而不是进程,在Linux系统中,并不区分线程和进程 在现代操作系统中, 进程提供两种虚拟机制:虚拟内存器和虚拟内存。 进程在创建它的时刻开始存活,这通常是调用fork系统的结果。该系统调用通过复制一 Read More
posted @ 2016-04-02 15:54 20125221银雪纯 Views(198) Comments(0) Diggs(0) Edit
进程的描述 操作系统的三大管理功能:进程管理、内存管理、文件系统 为了管理进程,内核必须对每个进程进行清晰的描述,进程描述符提供了内核所需了解的进程信息。 进程控制块PCB task_struct:进程状态、进程打开的文件、进程优先级信息 task_struct总体数据结构的抽象: 进程的状态: 注 Read More
posted @ 2016-04-01 20:34 20125221银雪纯 Views(194) Comments(0) Diggs(0) Edit
rm menu -rf 强制删除原menu文件 git clone http://github.com/mengning/menu.git 从github中克隆 cd menu 在test.c中增加上周编写的两个函数:Getpid()和GetpidAsm(),修改test.c中的main函数,添加两 Read More
posted @ 2016-03-26 23:01 20125221银雪纯 Views(241) Comments(0) Diggs(0) Edit
第18章 调试 内核调试的难度大于用户级 一、准备开始 开始之前需要的是: 一个行为可靠且定义明确的bug 一个隐匿bug的内核版本 相关内核代码的知识和运气 想要成功的调试,取决于能不能将这些bug重现。 二、内核中的bug 产生:错误代码,同步错误,错误的管理硬件 症状:降低所有程序的运行性能, Read More
posted @ 2016-03-25 00:18 20125221银雪纯 Views(195) Comments(0) Diggs(0) Edit