Concurrency and Synchronization
Contents
Concurrency and Synchronization
本章主要是讲进程间通信(IPC), 不过是从硬件的角度来看.
IPC里面常用的信号量, 其实也只是在共享内存中存入了一个数字, 而所谓的lock, 也只是数量为1的semaphore.
但是如果不同core上的进程同时对同一个内存地址进行写操作的话, 会产生冲突吗? 这个貌似是内存或者总线去解决的, 目前还没找到具体实现, 先mark一下.
IPC的一个重要问题是deadlock, 比如进程A和进程B:
|
|
|
|
当进程A执行完wait(x)
后, 进程B被调度, 而且执行了wait(y)
, 显然这两个进程永远都无法结束.
一个比较直观而且简单的方案是对IPC中需要用到的信号量进行排序, 在进程wait
时, 总是先wait
顺序在前的信号量.