过程同步



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

据我了解,process synchronization使用诸如semaphores之类的内核数据结构使用,以防止同时访问代码的critical section一般而言,我认为定义为"关键部分"是可以访问共享数据(或)共享资源的代码部分。所以问题是:

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

您正在将"内核空间/用户空间"与"关键部分"混合。
内核/用户空间仅定义一个过程具有哪种特权。如果线程在用户空间中执行,则无法直接访问物理内存。它必须通过内核的虚拟内存管理。
另一方面,关键部分是代码的一部分,如果两个过程并行执行,则可能导致数据损坏。由于代码正在访问某些共享资源。
,这将发生。
这两个概念是独立的。关键部分可以在用户空间或内核空间中。需要某种同步,以避免共享资源的损坏。即使在两个过程/线程以内核模式运行并想要访问共享资源的情况下,他们也需要应用某种同步机制(Spinlocks或Mutex)。

我希望这解释有帮助。

可以通过命名同步对象实现过程间同步。WINDWS同步函数提供了名为sutexes和命名信号量的函数。请参阅此答案。

例如,许多过程的共享资源可能是共享内存。

使用 critical section术语在问题中完成的方法有些误导,因为有关键的部分对象(Windows)用于线程同步。

我怀疑您的意思是更一般,因为您也明确记录了过程。

但是,任何共享资源,无论是共享内存还是任何其他对象,都应受到处理时的同时访问。

最新更新