如何同时保护共享资源不受用户进程和内核进程的影响?。这是罕见且非常极端的情况。我在一次采访中被问到这个问题。 时间差
最佳答案
好吧,这可以通过几种方式来完成。 一种这样的方式是
系统调用
创建两个系统调用,一个获取锁,一个释放锁。如果用户进程想要访问共享资源,它会调用acquire-lock系统调用。如果系统调用成功返回,用户进程就可以访问共享资源。当用户进程完成后,它将通过调用释放系统调用来释放锁。系统调用自身获取一个释放 spinlock_t
或 mutex_t
(或任何其他锁定机制)。想要访问共享资源的内核进程必须使用 spin_lock/spin_unlock
或 mutex_lock/mutex_unlock
获取相同的锁。
正如@Damon 所指出的,这是非常笼统的问题,您应该在面试中提出具体问题,以便给出具体答案。
关于linux - 如何同时保护共享资源不受用户进程和内核进程的影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11547278/