OS如何保护多任务中的驾驶员互动?

OS如何保护多任务中的驾驶员互动?

我一直在思考。让我们考虑这个例子:我们在 PC 上运行了 2 个程序。第一个是互联网浏览器,第二个是一些 WiFi 扫描软件。现在,浏览器想要通过 WiFi 使用互联网连接,但 WiFi 扫描仪需要将 WiFi 适配器切换到扫描模式...

好的,那么,现代OS体系结构中的哪一侧负责处理这些类型的碰撞?

因为,例如 WiFi 扫描仪扫描仪将 WiFi 适配器切换为扫描模式。现在,浏览器已启动。因此操作系统将 CPU 时间切换到浏览器。它调用一些抽象的网络操作系统层,该层调用 WiFi 驱动程序并希望从中接收数据。

基本上,我想知道这些情况是如何解决的。我一直在思考这个问题,但从来没有真正弄清楚。因为有几种选择:

例如,操作系统内置的 API 函数,例如用于将文本打印到控制台或绘制到 Windows 的基本 API,它会处理屏幕上哪个实际帧的哪个进程,并调用 GPU 驱动程序本身,因此不会发生冲突。

但是,您可以编写自己的驱动程序,而不必依赖某些繁重的 OS API。然后 2 个应用程序可以使用此驱动程序实现两个相反的功能。我理解这一点的主要问题是多任务环境。因为如果进程 1 之前调用过某个驱动程序函数,并且在驱动程序请求完成之前切换到进程 2,那么进程 2 又如何调用它呢?谢谢。

答案1

回答您的具体问题(带扫描仪的浏览器)。我知道在每个操作系统中,如果 WiFi 卡切换到另一种模式,其他应用程序就会失去连接(以防它们无法切换回该模式,但浏览器不太可能出现这种情况)。扫描完成后,连接将恢复。

和更多的抽象答案。哈尔-硬件抽象层。甚至 X Server 和 Windows 的窗口系统都不会直接调用视频/鼠标/键盘驱动程序。每个请求都必须经过 HAL(因此,例如,文件系统不需要知道特定设备是 U 盘、硬盘还是其他东西,它只是一个块设备)。

我很确定 HAL 维护着某种队列,其中的请求必须传递给特定的驱动程序。因此,基本上,多线程唯一导致的问题就是竞争条件,因为这个队列是 FIFO(先进先出)。因此,在扫描仪和浏览器的情况下,如果扫描仪是第一个访问 WiFi 卡的应用程序/线程,则扫描仪获胜,常规连接丢失。但是,如果浏览器先发出请求,那么它将能够接收数据,并且模式将在稍后切换。

我希望这能清除一切。

相关内容