20135337朱荟潼 Linux第五周学习总结——扒开系统调用的三层皮(下)_weixin_34272308的博客-程序员秘密

技术标签: 操作系统  

朱荟潼 + 原创作品转载请注明出处 + 《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.进程调度的时机很重要。

初始化

744834-20160322213957308-620466322.jpg

set_system_trap_gate,设置系统陷阱门,即系统调用。

(四)简化后便于理解system_call伪代码

伪代码

744834-20160322223134558-947025509.png
744834-20160322223141042-1212112766.png
744834-20160322223148401-1972874826.png

【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)

744834-20160322212640183-204493780.png

【494】保护现场

【502】调用了系统调用处理函数(实际是系统调用的服务程序)

【533】至此,系统调用处理过程结束

【595】——>【610】处理信号

【597】决定进程调度的代码schedule

流程图
744834-20160327114329448-738155336.jpg

二、实验内容

1.给MenuOS增加time和time-asm命令

744834-20160323185933667-601484001.png
744834-20160323185942167-1797829934.png

sys_time返回后进入汇编处理,gdb无法继续跟踪.

单步执行跟踪到ret_from_fork断点处继续执行汇编语句,jmp syscall_exit之后就无法跟踪。

make rootfs:自动编译,生成根文件系统,自动启动.

(gdb)list 查看代码.

(gdb)s 单步调试进入函数体.

(gdb)n 单步调试不进入函数体.

744834-20160323185422058-1175715138.png
744834-20160323185350183-1517632195.png
744834-20160323185431589-1615697049.png

转载于:https://www.cnblogs.com/zzzz5/p/5308633.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34272308/article/details/93208724

智能推荐

sychronized工作原理和Java对象结构-多线程安全-并发编程(Java)_sycnoized_gaog2zh的博客-程序员秘密

1、Java对象头Java对象构成:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding),图示:对象头:以32位虚拟机为例,Java对象头构成如下普通对象: Object Header(64 bits) Mark Word(32 bits) Klass Word(32 bits) 数组对象: Object Head

温故而知新的意思是什么?温故而知新出自哪里?_dituicyqz的博客-程序员秘密

温故而知新的意思是温习学过的知识,从而得到新的理解与体会。出自《论语·为政》子曰:“温故而知新,可以为师矣。”温故而知新的意思“温故而知新”有四解:一为“温故才知新”,温习已学的知识,并且由其中获得新的领悟;二为“温故及知新”:一方面要温习典章故事,另一方面又努力撷取新的知识。三为,温故,知新。随着自己阅历的丰富和理解能力的提高,回头再看以前看过的知识,总能从中体会到更多的东西。第四,是指通过回味历史,而可以预见,以及解决未来的问题。这才是一个真正的大师应该具有的能力。合并这

BZOJ1015 [JSOI2008]星球大战starwar——逆向思维并查集+路径压缩_bzoj lca 并查集路径压缩_QYitong的博客-程序员秘密

1015: [JSOI2008]星球大战starwarTime Limit: 3 Sec  Memory Limit: 162 MBSubmit: 5558  Solved: 2553[Submit][Status][Discuss]Description  很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系。某一天,凭着一个偶然的机遇,一支反抗军

计算机二进制什么时候会溢出,如何在二进制级别检测到溢出?_维几的博客-程序员秘密

任何时候你想要处理这些alu项目,无论是加,减,乘等,都是以2位或3位数开头,比32位或64位数更容易处理。在2或3位之后无论是22位还是2200位都无关紧要,它从外面完全相同。基本上你可以手工制作一个包含所有3位操作数及其结果的表格,以便你可以直观地检查整个表格,但是所有32位操作数对应所有32位操作数及其结果的表格,不能通过在合理的时间内,不能在视觉上检查整个表格。现在是两个补码,这只是一个表...

Ubuntu Server 14.04 安装配置Ganglia监控Hadoop_just_young的博客-程序员秘密

今天配置了Ganglia来监控Hadoop和Hbase,这里做一下简单的记录。ganglia主要有两个进程,它们是:gmond和gmetad。集群内的节点,通过运行gmond收集发布节点状态信息,然后gmetad周期性的轮询gmond收集到的信息,然后存入rrd数据库,通过web服务器可以对其进行查询展示。1.首先,选择一台服务器来运行gmetad和apache服务器(主节点)。1.1

战术攻防思维撷粹(2)(转)_cuiji1279的博客-程序员秘密

战术攻防思维撷粹(2)(转)[@more@]  **远程作业  得到了帐户、种植了Sniffer,但是固执的Blackhat并不因此而禁止他们的控制欲望。后门的威胁也就随之而来。这里我所安装的仅仅是一个简单的远程命令行工...

随便推点

ISO15765乘用车汽车诊断总结_李汽车电子的博客-程序员秘密

A7] == [B1S1,B1S2,B2S1,B2S2,B3S1,B3S2,B4S1,B4S2]40 64 4 对PID[41-60]的支持情况 位编码[A7…A3] ==缸组1,传感器1-4。60 96 4 对PID[61-80]的支持情况 位编码[A7…C0 192 4 对PID[C1-E0]的支持情况 位编码[A7…00 0 4 对PID[01-20]的支持情况 位编码对应支持情况(见后面详解1)80 128 4 对PID[81-A0]的支持情况 位编码[A7…

EAVCapture项目中的开机自动升级脚本_Yantai666的博客-程序员秘密

#!/bin/bash#brief:to solve match correct event node when EAVCapture starts.#date:September 17,2015.#author:zhangshaoyan,shel[email protected]#This script is used to execute autoupdate tas

SpringMVC传参日期字符串报错处理_rzg813的博客-程序员秘密

SpringMVC传参日期字符串报错处理在调用方法里加入如下代码即可:@InitBinderprotected void initBinder(WebDataBinder binder) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); binder.registerCustomEditor(D

教育网_gerly的博客-程序员秘密

河南教育资源网http://www.hner.net/中国教育科研网http://202.205.11.71/

chrome 修改默认搜索引擎为google.com_weixin_33953249的博客-程序员秘密

2019独角兽企业重金招聘Python工程师标准>>> ...

2023-03-27 C语言正则表达式库 pcre2 简述(chitGPT给出的回答和我的补充)_不停感叹的老林的博客-程序员秘密

PCRE2(Perl Compatible Regular Expression 2)是一个支持 Perl 语法的正则表达式库。它是 PCRE(Perl Compatible Regular Expression)的升级版,提供了更多的功能和更高的性能。PCRE2 可以用于 C、C++、Java、Python、PHP 等多种编程语言中,用于处理文本匹配、搜索和替换等操作。使用 PCRE2,需要先安装库文件和头文件。然后在代码中包含头文件,调用相应的函数进行正则表达式的操作。

推荐文章

热门文章

相关标签