20135337朱荟潼 Linux第五周学习总结——扒开系统调用的三层皮(下)
朱荟潼 + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课http://mooc.study.163.com/course/USTC 1000029000
一、学习内容
(一)给MenuOS增加time和time-asm命令(详见 :二、实验内容)
四步
1.更新menu代码到最新版;
2.在main函数中增加MenuConfig;
3.增加对应的Time函数和TimeAsm函数;
4.make rootfs。
(二)使用gdb跟踪系统调用内核函数sys_time(详见 :二、实验内容)
(三)系统调用在内核代码中的工作机制和初始化
1.进程调度的时机很重要。
初始化

set_system_trap_gate,设置系统陷阱门,即系统调用。
(四)简化后便于理解system_call伪代码
伪代码



【7、10】宏。SAWV_ALL宏保存现场
【16】调用系统调用号(eax的值)对应的服务程序
【19】判断当前任务是否需要处理 syscall_exit_work(当前进程信号处理、系统需要调度)
【21、23】不执行——>restore_all:irq_return
【32】work_notifysig 处理信号
【33】需要重新调度
【35】调度结束,返回系统调度调度
1.进程调度中会发生中断上下文切换&进程上下文切换。
2.内核抽象理解是许多种中断处理的集合。
(五)简单浏览system_call到iret之间主要代码
ENTRY(system_call)

【494】保护现场
【502】调用了系统调用处理函数(实际是系统调用的服务程序)
【533】至此,系统调用处理过程结束
【595】——>【610】处理信号
【597】决定进程调度的代码schedule
流程图

二、实验内容
1.给MenuOS增加time和time-asm命令


sys_time返回后进入汇编处理,gdb无法继续跟踪.
2.MenuOS中添加了fork,用gdb跟踪fork分析其内核处理函数sys_clone。
单步执行跟踪到ret_from_fork断点处继续执行汇编语句,jmp syscall_exit之后就无法跟踪。
make rootfs:自动编译,生成根文件系统,自动启动.
(gdb)list 查看代码.
(gdb)s 单步调试进入函数体.
(gdb)n 单步调试不进入函数体.



20135337朱荟潼 Linux第五周学习总结——扒开系统调用的三层皮(下)的更多相关文章
- Linux第五周学习总结——扒开系统调用的三层皮(下
Linux第五周学习总结--扒开系统调用的三层皮(下) 作者:刘浩晨 [原创作品转载请注明出处] <Linux内核分析>MOOC课程http://mooc.study.163.com/co ...
- LINUX内核分析第五周学习总结——扒开系统调用的“三层皮”(下)
LINUX内核分析第五周学习总结--扒开系统调用的"三层皮"(下) 标签(空格分隔): 20135321余佳源 余佳源 原创作品转载请注明出处 <Linux内核分析>M ...
- 《Linux内核分析》第五周学习总结 扒开系统调用的三层皮(下)
扒开系统调用的三层皮(下) 郝智宇 无转载 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.给Men ...
- 20135337朱荟潼 Linux第六周学习总结——进程的描述和进程的创建
朱荟潼 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课http://mooc.study.163.com/course/USTC 1000029000 第六周 进程的描述 ...
- 20135337朱荟潼 Linux第七周学习总结——可执行程序的装载
朱荟潼 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 第七周 Linu ...
- 20135337朱荟潼 Linux第三周学习总结 ——Linux内核源代码简介
朱荟潼 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课http://mooc.study.163.com/course/USTC 1000029000 知识笔记 1.ar ...
- 20135337朱荟潼 Linux第八周学习总结——进程的切换和系统的一般执行过程
第八周 进程的切换和系统的一般执行过程 一.进程切换关键代码switch_to 1.不同类型进程有不同调度需求--两种分类 2.调度策略--规则 Linux中进程优先级是动态的,周期性调整. 3.时机 ...
- #Linux第四周学习总结——扒开系统调用的三层皮(上)
Linux第四周学习总结--扒开系统调用的三层皮(上) 一.用户态.内核态和中断 系统调用通过库函数. 1.用户态和内核态 区分(不同的指令执行级别): 用户态:在相应的低执行状态下,代码的掌控范围受 ...
- LINUX内核分析第四周学习总结——扒开系统调用的“三层皮”
LINUX内核分析第四周学习总结--扒开系统调用的"三层皮" 标签(空格分隔): 20135321余佳源 余佳源 原创作品转载请注明出处 <Linux内核分析>MOOC ...
随机推荐
- How to display values with in piechart using Jfreechart(values in sector )
I am using Jfreechart to create pie charts. Values are displayed outside pie chart as labels. I want ...
- jfreechart createBarChart 去掉立体感
就是图中每个柱上的白条 提问者采纳 加上这句:barRenderer.setBarPainter(new StandardBarPainter())
- linux配置路径PATH问题
临时: 终端输入 export PATH=/myPath:$PATH 等号左右无空格 永久: 在用户家目录下即-目录, ...
- 微信发红包 PHP 实现
最近做生日营销,需要微信发红包,特此从网上找了一篇教程 首先你的有个服务号,并且开通了微信支付,我在这就不说怎么去申请和开通了,我是看了微信官方文档后,想看官方文档的朋友可以到下面这个链接 https ...
- 补码与C++的应用
12.inti=(int)((unsigned int)0xffffffff+(unsigned int)0xffffffff); printf(“%d”,i);结果是:C A.0 ...
- TDD&BDD
BDD行为驱动开发的一种敏捷开发技术 TDD测试驱动开发
- leetcode 26—Remove Duplicates from Sorted Array
Given a sorted array nums, remove the duplicates in-place such that each element appear only once an ...
- IN2REG group 的时序分析
针对 IN2REG 的 timing group,其 timing 模型是假设 input pin 外面有一个虚拟的reg(如图中的 reg1),这个虚拟reg的 clock 是 virtual cl ...
- TensorFlow(1):使用Docker镜像搭建TensorFlow环境
1,关于TensorFlow TensorFlow 随着AlphaGo的胜利也火了起来. google又一次成为大家膜拜的大神了.google大神在引导这机器学习的方向. 同时docker 也是一个非 ...
- SAP调用RestfulApi接口接收数据
因为准备要做一个关于调用外部接口的需求,所以自己先练习一下. 程序说明:我已经在.net开发的系统里提供一个api接口,现在在sap访问这个接口,来接收数据. 这里涉及Restful Api知识,以后 ...