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内核分析第五周--扒开系统调用的"三层皮"(下) 李雪琦+原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.知识点总结 (一)给MenuOS增加time和time-asm命令 1.更新menu代码到最新版 2.test.c中main函数里,增加MenuConfig() 3.增加对应的两个函数,Time和TimeAsm函数 4.make rootfs自动…
作者:刘世鹏20135304  <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.给MenuOS增加time和time-asm命令 1. 通过内核的方式(跟踪调试系统调用)来理解并使用系统调用. rm menu -rf //强制删除当前menu git clone http://github.com/mengning/menu.git //重新克隆新版本的menu cd menu ls make rootfs…
rm menu -rf 强制删除原menu文件 git clone http://github.com/mengning/menu.git 从github中克隆 cd menu 在test.c中增加上周编写的两个函数:Getpid()和GetpidAsm(),修改test.c中的main函数,添加两行代码MenuConfig make rootfs这一步之后会打开menu,输入help后可以看到当前的系统调用: 分别执行刚加进去的两个系统调用: 插入断点进行调试: 从system_call开始到…
扒开系统调用的三层皮(上) 一.用户态.内核态和中断 库函数将系统调用封装起来. 1.什么是用户态和内核态 一般现代CPU都有几种不同的指令执行级别. 在高执行级别下,代码可以执行特权指令,访问任意的物理地址,这种CPU执行级别就对应着内核态. 而在相应的低级别执行状态下(用户态),代码的掌控范围会受到限制.只能在对应级别允许的范围内活动.系统容易崩溃. 在intel X86CPU有四种不同的执行级别0,1,2,3,linux只使用了0级和3级分别来表示内核态和用户态. 2.在linux内核代码…
Linux内核分析第四周学习总结--系统调用的工作机制 内核态 执行级别高,可以执行特权指令,访问任意物理地址,在intel X86 CPU的权限分级为0级. 用户态 执行级别低,只能访问0x00000000-0xbfffffff之间的逻辑地址,权限分级为3级. 区分与切换 CS:eip(代码段选择寄存器/偏移量寄存器)中,CS寄存器最低两位表示特权级.状态通过中断来切换,包括硬件中断和系统调用两种方式. 寄存器上下文 从用户态切换到内核态时,int指令会保存用户态的寄存器上下文到内核堆栈中,同…
Linux第五周学习总结--扒开系统调用的三层皮(下) 作者:刘浩晨 [原创作品转载请注明出处] <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.给MenuOS增加time和time-asm命令 1. 克隆并自动编译MenuOS rm menu -rf 强制删除原menu文件 git clone http://github.com/mengning/menu.git 从github中克隆 2. test.c…
扒开系统调用的三层皮(下) 一.给menuOS增加time和time-asm 通过内核调试系统调用.将上次做的实验加入到menusOS,变成menusOS里面的两个命令. 1 int Getpid(int argc , char * argv[]) 2{ 3 int pid; 4 pid=getpid(); 5 printf("pid=%d\n",pid); 6 return 0; 7 } 8 9 int Getpidasm(int argc , char *argv[]) 10 {…
姬梦馨 原创作品 http://mooc.study.163.com/course/USTC-1000029000 一.用户态.内核态和中断处理过程 用户通过库函数与系统调用联系起来:库函数帮我们把系统调用封装起来. 1.内核态 高级别执行,可以使用特权指令,访问任意的物理地址. 在高执行级别下,代码可以执行特权指令,访问任意的物理地址.   2.用户态: 用户态:低级别执行,代码范围受到限制. 对应x86 3级(x86CPU有0-3四个级别)intel x86 CPU有四个权限分级,0-3.…