1、 给MenuOS增长time-asm命令
代码解释函数
1.-rf:强制删除
2.clone :从新克隆
3.time-asm:显示系统时间的汇编形式
给MenuOS增长time和time-asm命令调试
- 更新menu代码到最新版
- 在main函数中增长MenuConfig
- 增长对应的Time函数和time-asm函数
- make rootfs
2、使用gdb跟踪系统调用内核函数sys_time
解释得几点:code
- 调试的时候一直按n单步执行会进入schedule函数
- sys-time返回后进入汇编代码处理gdb没法继续跟踪。
- 执行int 0x80以后system_call对应的代码
3、系统调用在内和代码中的工做机制和初始化
回顾: 用户态和内核态的转变和匹配blog

系统调用机制的初始化
- `\init\main.c start_kernel
- \arch\x86\kernel\traps.c
#ifdef CONFIGX8632 set systemtrapgate(SYSCALLVECTER,&systemcall);进程
setbit(SYSCALLVECTOR,used_vectors);it
endif
4、简化后便于理解的sys_call伪代码
关键的信息asm
- 在系统调用以前它有可能会造成进程调度
总结:内核能够当作不少种中断处理不一样的集合。sed
简单浏览system_call到iret之间的主要的代码
- save all:保存现场
- iterrupet return 实际上就是irq_return宏。
- work pending 里面的work notifysig是用来处理pending signal信号的。
- schedule是个重要的代码,决定了进程调度的代码。
总结
本周就是继续去学代码,还有一个上周的巩固,很充实。im