进程同步

标签 process synchronization operating-system critical-section

将一段代码指定为关键部分的因素

据我了解,进程同步是使用信号量等内核数据结构来实现的,以防止并发访问关键部分代码。 一般来说,我认为定义是“关键部分是可以访问共享数据(或)共享资源的代码段”。所以问题是:

  • 共享数据是一个用户空间实体。因此,用户进程有责任确保其访问的一致性。
  • 我认为内核应该注意多个进程对资源的并发访问。那里需要什么样的用户级别同步?
  • 用户空间程序中的一段代码被决定为关键部分的因素是什么。

最佳答案

您正在将“内核空间/用户空间”与“关键部分”混合在一起。
内核/用户空间仅定义进程拥有什么样的权限。如果线程在用户空间中执行,则它无法直接访问物理内存。它必须经过内核的虚拟内存管理。
另一方面,临界区是代码的一部分,如果由两个进程并行执行可能会导致数据损坏。发生这种情况是因为代码正在访问某些共享资源。
这两个概念是独立的。临界区可以位于用户空间或内核空间。为了避免共享资源的损坏,需要某种类型的同步。即使在两个进程/线程在内核模式下运行并想要访问共享资源的情况下,它们也需要应用某种同步机制(自旋锁或互斥锁)。

我希望这解释有帮助。

关于进程同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13291300/

相关文章:

c# - 使用HSQL进行.NET开发及流程相关问题

node.js - 有没有办法在退出时在 Node js 中启动异步操作?

iphone - 多人网络游戏中的同步?

c# - 像 Dropbox 这样的同步服务,文件索引背后的理论?

iphone - 使用哪个 iPhone SDK 来实现兼容性

android - Android 中禁用的进程

java - 如果 Linux 命令包含特殊符号,则无法使用 java

java - 对java中的线程感到困惑

linux - 当操作系统为 "on its own"时,内核是否停止运行 "fully loaded"?

C:读取txt文件,重定向+按大小写追加到新文件