gpt4 book ai didi

windows - 什么是保护区,它与临界区有何不同?

转载 作者:可可西里 更新时间:2023-11-01 09:59:10 35 4
gpt4 key购买 nike

有一个 "guarded region" Windows中的概念,类似于临界区。谁知道它与 Critical 有何不同?

最佳答案

回想一下,任何现代操作系统上的进程都是由多个组件组成的。我们感兴趣的是:

  • 代码:正在执行的程序的主体,
  • 内存:代码以及与执行相关的数据(堆和堆栈)在进程期间存储在那里,
  • 线程:一个执行上下文,即与该上下文相关的 CPU 状态和内存位(例如堆栈),
  • signal slots:一种进程结构,用于保存线程相互发出的信号,每个线程都有一个这样的结构(即,它是线程的内存位之一)

在一个进程中,这些对象可能有多个实例;通常一个进程中的所有现有线程都可以访问代码和内存。在任何时候,事件线程(即并发执行)的数量可能与 CPU 上的可用内核数量一样多。如果这些线程属于同一个进程,则在访问相同的内存或代码段时可能会发生干扰。为此,Windows 实现了所谓的 critical sections。 ,它们基本上是 protected 代码块(它与 Java 中的同步代码块的概念非常相似)。

但是,当信号被触发或发送给它们时,线程也可能会从它们当前的执行代码路径转移。在 Windows 上,APC 是该信号机制的一种形式。 protected 部分可用于确保线程在能够处理这些信号(在本例中为 APC)之前完成给定的代码块。

因此,尽管临界区会阻止除事件线程之外的任何其他线程同时执行 protected 代码段, protected 区段将确保当前线程在启动后不会执行 protected 代码以外的任何其他代码。

作为一个简单的类比,想象一下代码部分就像建筑物中的公寓(流程代码)。输入受严格保护代码的人(线程)将锁上公寓的大门,从而防止任何其他人在她还在里面时进入。如果密码受到保护,那么操作系统将锁定此人的手机,防止她在真正离开公寓之前接听电话。

临界区的典型场景是需要独占访问特定资源(套接字、文件句柄、内存数据结构)。对于 APC,类似地, protected 部分将防止线程在 APC 执行中试图访问一个这样的资源时干扰自身,而该资源已经在其当前执行代码路径中使用。

关于windows - 什么是保护区,它与临界区有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24734486/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com