Linux内核分析第四周 扒开系统调用的三层皮(上) 郭皓 原创作品转载请注明出处 <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1000029000 一.用户态.内核态和中断 用户态:当进程在执行用户自己的代码时,则称其处于用户态,即此时处理器在特权级最低的(3级)用户代码中运行. 内核态:当一个进程执行系统调用而陷入内核代码中执行时,我们就称进程处于内核态,此时处理器处于特权级最高的(0级)内核代码中执行. PS:CPU指令…
LINUX内核分析第四周--扒开系统调用的三层皮 李雪琦 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.用户态.内核态和中断处理过程 1. 用户态和内核态 CPU指令执行级别: 执行特权指令,访问任意的物理地址--内核态. 低级别:代码只能在级别允许的特定范围内活动--用户态.在日常操作下,执行系统调用的方式是通过库函数,库函数封装系统调用,为用户提供接口以便直接使用. I…
一.用户态.内核态和中断处理过程 系统调用是用户通过库函数方式:库函数帮我们把系统调用封装起来. 内核态:高级别执行,可以使用特权指令,访问任意的物理地址. 用户态:低级别执行,代码范围受到限制. CS寄存器的最低两位表明了当前代码的特权级. 在linux中,0xc0000000以上的地址空间只能在内核态下访问,0x00000000-0xbfffffff的地址空间两种状态下都可以使用.(逻辑地址) 二.中断处理是从用户态进入内核态主要的方式 从用户态进入内核态:必须保存用户态的寄存器上下文 中断…
(一)给MenuOs增加time和time-asm命令 更新menu代码到最新版 在main函数中增加MenuConfig 增加对应的Ttime和TimeAsm函数 make rootfs (二)使用gdb跟踪系统调用内核函数sys_time 1.sys_time返回后进入汇编代码处理gdb无法继续跟踪 2.执行0x80之后执行system_call对应的代码 3.entry32.s中system_call 不是一个函数,只是一段汇编代码的起点,gdb不能跟踪它. (三)系统调用在内核代码中的处…
Linux内核分析第五周 扒开系统调用的三层皮(下) 郭皓 原创作品转载请注明出处 <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1000029000 实验:分析system_call中断处理过程 1.给MenuOS增加time和time-asm命令 rm menu -rf //强制删除原menu文件 git clone http://github.com/mengning/menu.git //从github中克隆 cd me…
Linux内核分析第九周 期中总结 一.知识概要 1. 计算机是如何工作的 存储程序计算机工作模型:冯诺依曼体系结构 X86汇编基础 会变一个简单的C程序分析其汇编指令执行过程 2. 操作系统是如何工作的 函数调用堆栈 模拟存储程序计算机工作模型和时钟中断 在mykernel基础构建一个简单的操作系统 3.构造一个简单的Linux系统 Linux内核源代码 构造一个简单的Linux系统 跟踪调试Linux内核的启动过程 4. 系统调用 用户态.内核态和中断 系统调用概述 使用库函数API和C代码…
姬梦馨 原创作品 http://mooc.study.163.com/course/USTC-1000029000 一.用户态.内核态和中断处理过程 用户通过库函数与系统调用联系起来:库函数帮我们把系统调用封装起来. 1.内核态 高级别执行,可以使用特权指令,访问任意的物理地址. 在高执行级别下,代码可以执行特权指令,访问任意的物理地址.   2.用户态: 用户态:低级别执行,代码范围受到限制. 对应x86 3级(x86CPU有0-3四个级别)intel x86 CPU有四个权限分级,0-3.…
第七周 可执行程序的装载 郭皓 原创作品转载请注明出处 <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1000029000 一.预处理,编译,链接和目标文件格式 1.可执行程序是怎么得来的 c代码->预处理->汇编代码->汇编器->目标代码->链接成可执行文件->加载到内核执行 2.目标文件的格式ELF 符号修饰标准.变量内层布局.函数调用方式等这些跟可执行代码二进制兼容性相关的内容称为ABI…
操作系统是如何工作的 上章重点回顾: 计算机是如何工作的?(总结)——三个法宝 存储程序计算机工作模型,计算机系统最最基础性的逻辑结构: 函数调用堆栈,高级语言得以运行的基础,只有机器语言和汇编语言的时候堆栈机制对于计算机来说并不那么重要,但有了高级语言及函数,堆栈成为了计算机的基础功能: enter pushl %ebp movl %esp,%ebp leave movl %ebp,%esp popl %ebp 函数参数传递机制和局部变量存储 中断,多道程序操作系统的基点,没有中断机制程序只能…
Linux内核分析第三周  构造一个简单的Linux系统MenuOS 前提回顾 1.计算机是如何工作的三个法宝 1.存储程序计算机 2.函数调用堆栈 3.中断 2.操作系统的两把宝剑 中断上下文的切换 进程上下文的切换 第一讲  Linux内核源代码介绍 arch目录包括了所有和体系结构相关的核心代码.它下面的每一个子目录都代表一种Linux支持的体系结构,例如i386就是Intel CPU及与之相兼容体系结构的子目录.PC机一般都基于此目录. init目录包含核心的初始化代码(不是系统的引导代…