linux中内核和用户空间之间的原子行为?

时间:2018-03-07 15:40:27

标签: linux linux-kernel synchronization

我想知道无论如何要保持内核和用户空间之间的原子行为?

例如dm-thin:

一个用户空间程序询问瘦设备分配块并告诉程序" OK"。

现在断电发生在alloc block之后,并没有告诉程序" OK"。

程序会再次询问精简设备分配,并且内核会先浪费一个已分配的块,因为程序并不知道它已分配一次。

那么无论如何都要使行为原子化?或任何设计模式建议?

1 个答案:

答案 0 :(得分:0)

从用户空间到内核的每次互动都通过system call(在syscalls(2)中列出)。

从用户角度来看,系统调用(根据定义)是原子的。当然它可能会失败(见errno(3))。

我猜device mapper可能(或可能应该)与systemd互动。