2012-07-18 44 views
2

如何同时保护用户进程和内核进程的共享资源?这是非常罕见的情况。我在采访中被问到这个问题。 TIA如何同时保护用户进程和内核进程的共享资源?

+0

您无法保护内核中的任何内容。它可以控制一切。 – Linuxios 2012-07-18 19:15:16

+0

您可以尝试标记资源页面(假设它是内存资源)不可访问。我想这必须在内核中完成,因为用户空间权限可能不会影响内核。 – fork0 2012-07-18 21:34:19

+0

@Linuxios,这是一般性声明。但总的来说,我们使用了几个锁定机制(当然,只在合作环境下),比如自旋锁,信号量,互斥锁,可能会使用某些条件信号等。我的查询仅与此上下文相关(仅限于) 。谢谢 – kannah 2012-07-19 05:33:24

回答

0

那么,它可以通过多种方式完成。 一种这样的方式是

系统调用
创建两个系统调用,一个获得锁和一个释放锁。如果用户进程想访问共享资源,它将调用获取锁定系统调用。如果系统调用成功返回,用户进程可以访问共享资源。当用户进程完成时,它会通过调用释放系统调用来释放锁。系统调用自己获取版本spinlock_tmutex_t(或任何其他锁定机制)。想要访问共享资源的内核进程必须使用spin_lock/spin_unlockmutex_lock/mutex_unlock来获取相同的锁。

正如@Damon指出的那样,这是非常普遍的问题,您应该向面试中提出具体问题,以便给出具体答案。

相关问题