Linux 内核(用于 Ubuntu)如何管理对数据的并发访问?

Linux 内核(用于 Ubuntu)如何管理对数据的并发访问?

我想知道 Ubuntu 中使用的 Linux 内核如何管理对共享数据的并发访问?

答案1

先生,我认为您对锁定是什么以及互斥锁的用途存在误解。此外,您对 Ubuntu 是什么也存在误解。

让我们从后者开始:Ubuntu 是一个基于 Linux 的分配。所有低级系统架构组件均由 Linux 内核完成。Ubuntu 只是将不同的软件部分组合在一起,以强大、统一且用户友好的方式配置、安装和更新它们的一种方式。因此,您的问题是指 Linux,而不是 Ubuntu。

互斥锁用于确保不会错误地同时访问和修改公共资源(例如内存)。由于进程通常不共享内存等资源(无论是在 Windows 还是在 Linux 中),因此当使用线程,而不是进程。这是使用互斥锁实现的,你说得对;这里您将找到有关此内容的更多信息。Linux 使用 POSIX 线程。但是,作为一名程序员,您是使用互斥锁还是其他东西(如自旋锁或临界区),这取决于您,而不是系统(请参阅这里),无论是 Windows 还是 Linux。

至于进程,需要文件锁定,但那是另外一回事。是的,进程在 Windows 和 Linux 中的实现方式不同(最重要的是在调度方面;请参阅演示来阐明这一点)。

答案2

在 2.6 版之前,Linux 是非抢占式内核。现在,它是完全抢占式的,因此当任务在内核中运行时,它可以被抢占。

Linux 内核提供自旋锁信号量用于内核锁定。在 SMP 机器上,基本的锁定机制是自旋锁,并且内核的设计使得自旋锁只持续很短时间。

这不适用于单处理器计算机。在单处理器计算机中,内核会禁用内核抢占;而不是释放自旋锁,它使内核抢占

相关内容