培训建设网站,运行wordpress环境,网站建设代码好难啊,深圳建网站服务商产生原因#xff1a; 由于多进程对临界资源的抢占 根本原因#xff1a; 1、对于单核处理器而言#xff0c;内核支持抢占就会出现竞态 2、对于多核处理器而言#xff0c;是核与核的竞态 3、进程与中断间存在竞态 4、arm开发板不会出现中断与中断间的竞态#xff08;目前 由于多进程对临界资源的抢占 根本原因 1、对于单核处理器而言内核支持抢占就会出现竞态 2、对于多核处理器而言是核与核的竞态 3、进程与中断间存在竞态 4、arm开发板不会出现中断与中断间的竞态目前NVIC支持中断的嵌套存在中断间的竞态 解决方法 1、中断屏蔽 2、自旋锁 3、信号量 4、互斥体 5、原子操作 1、中断屏蔽 就是关闭中断不过关闭的时间是纳秒(ns)级的
2、自旋锁 一个进程抢占了临界资源上锁别的进程会在原地等待自旋状态直到解锁 特点 1、自旋状态会消耗cpu资源 2、自旋锁会出现死锁现象如两次上锁一次解锁 3、自旋锁支持进程的上下文切换也支持中断的上下文切换由于特点4和中断屏蔽 4、自旋锁适用于临界资源较小的场景锁内不能有耗时操作也不能有copy_from/to_user此类函数由于特点1
3、信号量 原理类似自旋锁但有所区别信号量的-来抢占临界资源抢占不到资源的进程会进入休眠态 特点 1、休眠态不消耗cpu资源但是运行态---休眠态的过程中会消耗cpu资源 2、信号量不会出现死锁现象 3、信号量支持进程的上下文切换但不支持中断的上下文切换 4、不论临界资源较大或较小信号量都适用
4、互斥体 与信号量极度相似区别在于互斥体不是立即进入休眠态它会等待一段时间如果这段时间内临界资源被释放他就不进入休眠态不然才进入休眠态
5、原子操作 将进程占用临界资源这个过程看作一个整体来防止竞态的出现内部是个变量原子变量通过对原子变量的-1与0比较来确定对临界资源的占用。