1、内核

看做是不断对请求进行响应的服务器

内核服务

Linux内核-内核同步

2 内核抢占

Linux内核-内核同步

内核抢占特点:一个内核态运行的进程,可能在执行内核函数期间被另外一个进程取代

用户抢占:内核即将返回用户空间的时候,如果need resched标志被设置,会导致schedule()被调用,此时就会发生用户抢占。在内核返回用户空间的时候,它知道自己是安全的。所以,内核无论是在从中断处理程序还是在系统调用后返回,都会检查need resched标志。如果它被设置了,那么,内核会选择一个其他(更合适的)进程投入运行。

简而言之,用户抢占在以下情况时产生

1从系统调返回用户空间

2从中断处理程序返回用户空间

内核抢占目的:

       减少用户态进程的分派延迟diapatch tatency,即从进程变为可执行状态到它实际开始运行之间的时间间隔。

什么情况不允许内核抢占:当被current_thread_info()宏所引用的thread_info描述符的preempt_count字段大于0时,就禁止内核抢占。

 Linux内核-内核同步

 

内核抢占时机:只有当内核正在执行异常处理程序(尤其是系统调用),而且内核抢占没有被显式的禁用时(即preempt_count=0),才可能抢占内核。本地CPU必须打开本地中断,否则无法完成内核抢占。 

Linux内核-内核同步

 

 3 同步原语

Linux内核-内核同步

Linux内核-内核同步 

                      Linux内核-内核同步

 

 

 

相关文章:

  • 2019-03-09
  • 2022-01-21
  • 2021-10-19
  • 2021-08-12
  • 2021-09-15
  • 2021-09-07
猜你喜欢
  • 2021-09-04
  • 2021-10-19
  • 2021-09-21
  • 2021-12-26
  • 2021-08-21
  • 2021-10-19
  • 2021-12-23
  • 2021-12-23
相关资源
相似解决方案