如何同时保护共享资源免受用户进程和内核进程的影响?这是罕见的,非常极端的情况。我在接受采访时被问到这个问题。 TIA
答案 0 :(得分:0)
嗯,可以通过多种方式完成。 一种方法是
系统调用
创建两个系统调用,一个用于获取锁,另一个用于释放锁。如果用户进程想要访问共享资源,它将调用acquire-lock系统调用。如果系统调用成功返回,则用户进程可以访问共享资源。当用户进程完成时,它将通过调用释放系统调用来释放锁。系统调用自身获取释放spinlock_t
或mutex_t
(或任何其他锁定机制)。想要访问共享资源的内核进程必须使用spin_lock/spin_unlock
或mutex_lock/mutex_unlock
获取相同的锁。
正如@Damon指出的那样,这是非常通用的问题,你应该向面试提出具体问题,以便给出具体答案。