《Linux内核与分析》第五周
2016-03-27 13:21
435 查看
20135130王川东
一、给MenuOS增加time和time-asm命令
命令:1、强制删除:rm menu -rf
2、克隆:git clone (后跟需要克隆数据所在的位置)
3、自动编译,自动生成根文件系统,并自动启动:make rootfs
给MenuOS增加time和time-asm命令步骤:
1、更新menu代码到最新版
2、在main函数中增加MenuCongfig
3、增加对应的time和time-asm函数
4、make rootfs
二、使用gdb跟踪调用内核函数sys-time
跟踪方法和上次所学内容一样:
注:sys_time返回后进入汇编代码处理,gdb无法继续进行追踪
执行int 0x80之后执行system_call对应的代码
三、系统调用在内核代码中的处理过程
1、系统调用机制的初始化
\init\main.c start_kernel
trap_init()
\arch\x86\kernel\traps.c
#fdef CONFIG_x86_32
set_system_trap_gate(SYSTALL_VECTOR,&system_call)(SYSTALL_VECTOR:系统调用的工作向量,&system_call:汇编代码的入口,系统执行int 0x80就跳转到该处执行)
set_bit(SYSCALL_VECTOR,used_vectors)
#endif
2、system_call伪代码:
system_call位置:/ arch/x86/kernel/entry_32.S中
系统调用是特殊的中断:存在保存现场和恢复现场
SAVE_ALL保存现场
restore_all恢复现场
call *sys_call_table(,%eax,4)调用系统调用函数:eax存的是系统调用号,根据系统调用号去找sys_call_table中的中断处理。
INTERRUPT_RETURN,就是iret。
更新 menu 代码到最新版:
在main 函数中增加 MenuConfig:
增加对应的Getuid函数和Getuidasm函数
流程图:
总结:
发生中断时,CPU暂停执行当前程序,产生中断响应。中断响应主要工作是:
(1)中止当前程序的执行;
(2)保存原程断点现场
(3)转到相应的处理程序。
接着中断处理程序进行相应处理:
(1)保存中断程序现场
(2)分析中断原因,转入相应处理程序
(3)调用中断处理程序
(4)中断返回。
一、给MenuOS增加time和time-asm命令
命令:1、强制删除:rm menu -rf
2、克隆:git clone (后跟需要克隆数据所在的位置)
3、自动编译,自动生成根文件系统,并自动启动:make rootfs
给MenuOS增加time和time-asm命令步骤:
1、更新menu代码到最新版
2、在main函数中增加MenuCongfig
3、增加对应的time和time-asm函数
4、make rootfs
二、使用gdb跟踪调用内核函数sys-time
跟踪方法和上次所学内容一样:
注:sys_time返回后进入汇编代码处理,gdb无法继续进行追踪
执行int 0x80之后执行system_call对应的代码
三、系统调用在内核代码中的处理过程
1、系统调用机制的初始化
\init\main.c start_kernel
trap_init()
\arch\x86\kernel\traps.c
#fdef CONFIG_x86_32
set_system_trap_gate(SYSTALL_VECTOR,&system_call)(SYSTALL_VECTOR:系统调用的工作向量,&system_call:汇编代码的入口,系统执行int 0x80就跳转到该处执行)
set_bit(SYSCALL_VECTOR,used_vectors)
#endif
2、system_call伪代码:
system_call位置:/ arch/x86/kernel/entry_32.S中
系统调用是特殊的中断:存在保存现场和恢复现场
SAVE_ALL保存现场
restore_all恢复现场
call *sys_call_table(,%eax,4)调用系统调用函数:eax存的是系统调用号,根据系统调用号去找sys_call_table中的中断处理。
INTERRUPT_RETURN,就是iret。
更新 menu 代码到最新版:
在main 函数中增加 MenuConfig:
增加对应的Getuid函数和Getuidasm函数
流程图:
总结:
发生中断时,CPU暂停执行当前程序,产生中断响应。中断响应主要工作是:
(1)中止当前程序的执行;
(2)保存原程断点现场
(3)转到相应的处理程序。
接着中断处理程序进行相应处理:
(1)保存中断程序现场
(2)分析中断原因,转入相应处理程序
(3)调用中断处理程序
(4)中断返回。
相关文章推荐
- linux内核分析第五次实验
- Linux 防火墙开放特定端口 (iptables)
- linux-常用命令
- Linux内核第五节 20135332武西垚
- linux系统centOS7安装
- Linux内核分析:实验五--使用GDB跟踪系统调用执行过程
- 《Linux内核分析》第五周
- linux snmp常用结点值
- Linux信号(signal) 机制分析
- linux驱动的异步通知(kill_fasync,fasync)---- 驱动程序向应用程序发送信号
- linux系统启动流程详解
- linux vi命令
- Linux环境下的部分常用vi命令
- 善用Linux与Windows中的筛选功能及其他有用功能
- linux初学之7——vim编辑器
- centos7 五大查找常用命令
- linux windows 双系统 8小时时差 更正命令
- centos7 常用命令
- 把Linux系统装在U盘上
- CentOS 6系统启动流程详解