9 lines
823 B
Markdown
9 lines
823 B
Markdown
# 进程管理
|
||
|
||
## 自旋锁
|
||
讨论进程管理,就必须先搞懂自旋锁。
|
||
|
||
1. 为了避免死锁,加锁和释放锁中涉及开关中断,为了保证释放锁之后与加锁之前的中断使能标志保持一致,需要保存加锁之前关中断时的中断使能状态,在释放锁之后开中断时将中断使能恢复到之前所保存的状态。(即封装之后的push_off()和pop_off())
|
||
2. 由于现代编译器的代码优化和指令重排以及现代CPU的乱序执行(Out-of-Order Execution),在上锁期间需要额外的操作来保证读写操作的顺序一致性,在RISC-V中可以用__sync_synchronize指令来保证严格的执行顺序。(注:关于这个问题可以具体参考[这篇文章](https://www.0xffffff.org/2017/02/21/40-atomic-variable-mutex-and-memory-barrier/))
|
||
|