From 292fd7f9b780e3d118bae890f8c09d20d6b8607e Mon Sep 17 00:00:00 2001 From: mp6sgfx3h <1610531619@qq.com> Date: Fri, 24 Jun 2022 09:17:57 +0800 Subject: [PATCH] ADD file via upload --- 思路.txt | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 思路.txt diff --git a/思路.txt b/思路.txt new file mode 100644 index 0000000..ec47e3c --- /dev/null +++ b/思路.txt @@ -0,0 +1,18 @@ +一、熟练掌握如何增加系统调用 + 1、原理 + 2、具体操作 + +二、实现给定的四个函数 + 1、sleep + 具体实现思路: + 1>注册SIGALRM信号的处理函数; + 2>调用alarm(nsecs)设定闹钟; + 3>调⽤pause等待,内核切换到别的进程运行; + 4>nsecs秒之后,闹钟超时,内核发SIGALRM给这个 进程 ; + 5>从内核态返回这个进程的⽤户态之前处理未决信 号,发现有SIGALRM信号,其处理函数是sig_alrm; + 6> 切换到用户态执行sig_alrm函数,进⼊sig_alrm 函数时SIGALRM信号被⾃动屏蔽,从sig_alrm函数 返回SIGALRM信 号⾃动解除屏蔽。然后⾃动执⾏ 系统调用sigreturn再次进入内核,再返回用户态继续 执行进程的主控制流程(main函数调⽤的mysleep 函数); + 7>pause函数返回-1,然后调⽤alarm(0)取消闹钟, 调⽤sigaction恢复SIGALRM信号以前的处理动作 。 + 2、getcwd + 3、getdents + 4、execve2 +三、反思总结 \ No newline at end of file