程涵  原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 [使用库函数API和C代码中嵌入汇编代码触发同一个系统调用]  知识点整理 一.用户态.内核态和中断 处理过程 1. 通过库函数完成系统调用:库函数将系统调用封装起来. 2. 用户态与内核态 内核态:一般现代CPU有几种指令执行级别.在高执行级别下,代码可以执行特权指令,访问任意的物理地址,这种CPU执行级别对应着内核态. 用户态:在相应的低级别…
程涵  原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 进程的切换和系统的一般执行过程 知识点梳理 一.进程切换的关键代码分析 1.1 进程调度与进程调度的时机分析 操作系统原理中介绍了大量进程调度算法,这些算法从实现的角度看仅仅是从运行队列中选择一个新进程,选择的过程中运用了不同的策略而已. 对于理解操作系统的工作机制,反而是进程的调度时机与进程的切换机制更为关键. 不同类型的进程有不同的调度需求…
程涵  原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 可执行程序的装载 知识点梳理 一.预处理.编译.链接和目标文件的格式 可执行程序是如何得来的 C源代码(.c)经过编译器预处理被编译成汇编代码(.asm) 汇编代码由汇编器被编译成目标代码(.o) 将目标代码链接成可执行文件(a.out) 可执行文件由操作系统加载到内存中执行 vi hello.c gcc -E -o hello.cpp hell…
程涵  原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 进程的描述和进程的创建 知识点梳理: 一. 进程的描述 (1)操作系统的三大管理功能包括 进程管理 内存管理 文件系统 (2)PCB task_struct中包含 进程状态 进程打开的文件 进程优先级信息 (3)通过唯一的进程标识PID来区别每个进程. (4)进程状态(代码分析) http://codelab.shiyanlou.com/xref…
程涵  原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000  [反汇编一个简单的C程序]   实验截图: 分析汇编代码的工作过程中堆栈的变化 两个宏指令:enter, leave 除特殊指明,eip在执行完某一条指令后会自动开始执行下一条指令. esp,ebp寄存器总是指向一个堆栈.esp指向栈顶,ebp指向栈底(栈底是相对的,每个函数有自己的基地址).函数调用堆栈是由逻辑上多个堆栈叠加起来的. 函数的返…
程涵  原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000  [操作系统是如何工作的]   教学内容重要部分整理总结 1.三个法宝:存储程序计算机.函数调用堆栈.中断机制. 存储程序计算机工作模型,计算机系统最最基础性的逻辑结构. 函数调用堆栈,高级语言得以运行的基础,只有机器语言和汇编语言的时候堆栈机制对于计算机来说并不那么重要,但有了高级语言及函数,堆栈成为了计算机的基础功能.(函数参数传递机制和局部…
 程涵  原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 [跟踪分析Linux内核的启动过程]  知识点梳理 Linux内核源代码 arch:支持不同的CPU的源代码,其中的关键目录包括:Documentation.drivers.firewall.fs.include等 documentation:文档目录 fs:文件系统 init:内核启动相关的代码main.c.Makefile等基本都在该目录中…
程涵  原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 分析system_call中断处理过程 实验过程及截图 一.使用gdb跟踪分析一个系统调用内核函数 更新menu代码到最新版 test.c中main函数里,增加MenuConfig() 增加对应的两个函数,Time和TimeAsm make rootfs 自动编译脚本 更新menu代码到最新版 test.c中main函数里,增加MenuConfi…
张文俊 + 原创作品转载请注明出处 + <Linux 内核分析> MOOC 课程 实验要求: 1.总结部分要求阐明自己对“计算机是如何工作的”理解: 2.博客中需要使用实验截图: 实验内容: 1.阐述计算机是如何工作的: 2.分析汇编代码的工作过程中堆栈的变化: 一.冯诺依曼体系结构 冯诺依曼体系结构是现代计算机的基础,现在大多计算机仍是冯诺依曼计算机的组织结构,只是作了一些改进而已,并没有从根本上突破冯体系结构的束缚. 根据冯·诺依曼体系结构构成的计算机,必须具有如下功能: 把需要的程序和数…
张文俊 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.第二周学习内容总结 1.计算机工作“三大法宝” 首先,计算机工作原理最重要的三个内容就是:存储程序计算机工作模型.中断机制和函数调用堆栈. 存储程序计算机工作模型是计算机系统最最基础性的逻辑结构: 中断机制是多道程序操作系统的基点,没有中断机制程序只能从头一直运行结束才有可能开始运行其他程序: 函数调用堆栈是高级语言得以…