社区
BESTI.Linux内核原理与分析
作业
帖子详情
《Linux内核原理与分析》第六周作业
娄老师
2021-10-29 05:19:38
完成
《Linux内核原理与分析》教学进程
中第六周的任务。
...全文
1135
回复
打赏
收藏
《Linux内核原理与分析》第六周作业
完成《Linux内核原理与分析》教学进程中第六周的任务。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
0人已提交
完成率0%
提交任务
暂无数据
暂无数据
提交任务
修改积分
请选择导出文件
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
2024-2025-1 20242805《
Linux
内核
原理
与
分析
》
第六周
作业
在
Linux
系统中,系统调用的过程从用户程序执行system_call指令开始,到执行iret指令结束,详细解释如下:用户程序发起系统调用:用户程序通过执行一个系统调用指令(在x86架构中通常是int 0x80或syscall指令)来请求操作系统服务。进入
内核
态:当系统调用指令执行时,CPU从用户态切换到
内核
态,开始执行
内核
代码。保存用户态寄存器:在进入
内核
态之前,
内核
会保存当前用户态的寄存器状态,以便在系统调用结束后能够恢复。
20242803《
Linux
内核
原理
与
分析
》
第六周
作业
1、删除原有的menu,在github上下载新版本menu修改menu中test_api.c文件,来使用系统调用setuid和getuid编译运行,系统调用列表参见 torvalds/
linux
。再另打开一个shell,进行GDB调试,建立GDB和gdbserver之间的连接。此后,在getpid函数处设置断点,进行
分析
。2、根据系统调用的过程,从 system_call 开始到 iret 结束之间的整个过程,并画出简要准确的流成图。回到
Linux
Kernel目录,启动一个使用指定
内核
和根文件系统的虚拟机,同时允许远程调试。在x86架构的操作系统中,
20222817《
Linux
内核
原理
与
分析
》
第六周
作业
从系统调用处理过程的入口开始,可以看到SAVE_ALL保存现场,然后找到sys_call和sys_call_table。call *sys_call_table(,%eax,4)就是调用了系统调用的
内核
处理函数,之后restore_all和最后一个INTERRUPT_RETURN(iret)用于恢复现场并返回系统调用到用户态结束。在这个过程中可能会执行syscall_exit_work,里面有work_pending,其中的work_notifysing是处理信号的。
BESTI.Linux内核原理与分析
31
社区成员
13
社区内容
发帖
与我相关
我的任务
BESTI.Linux内核原理与分析
北京电子科技学院 《Linux内核原理与分析》课程
复制链接
扫一扫
分享
社区描述
北京电子科技学院 《Linux内核原理与分析》课程
linux
高校
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章