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