linux - 如何同时保护共享资源不受用户进程和内核进程的影响?

标签 linux operating-system locking

如何同时保护共享资源不受用户进程和内核进程的影响?。这是罕见且非常极端的情况。我在一次采访中被问到这个问题。 时间差

最佳答案

好吧,这可以通过几种方式来完成。 一种这样的方式是

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

正如@Damon 所指出的,这是非常笼统的问题,您应该在面试中提出具体问题,以便给出具体答案。

关于linux - 如何同时保护共享资源不受用户进程和内核进程的影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11547278/

相关文章:

linux - 如果还没有换行符,则在与模式匹配的行之前创建换行符

regex - Bash 正则表达式匹配不起作用

MySql 错误 > 超过锁定等待超时;尝试重新启动事务 SQLState : 41000 VendorError: 1205

c# - 为什么这段代码中的锁不起作用?

c# - 我可以跨项目使用 "lock"吗?

c - System V 信号量多次递增/递减

c - 我如何覆盖加载了 dlopen 的库中的全局符号?

c++ - 使用内存映射传递分配的内存

c - 在虚拟内存系统上强制执行介质类型

linux - 完成变量和信号量之间的区别