gpt4 book ai didi

assembly - 如果处理器不产生中断,系统软件必须做什么?

转载 作者:行者123 更新时间:2023-12-01 09:42:26 24 4
gpt4 key购买 nike

有关中断的问题

if a processor didn't have the ability to service interrupts, what would the system software have to do to make sure that each keyboard keystroke was detected, each mouse movement was registered, ethernet (network) data was processed correctly, and files were successfully loaded into memory?

最佳答案

If a processor didn't have the ability to service interrupts, what would the system software have to do to make sure that each keyboard keystroke was detected, each mouse movement was registered, ethernet (network) data was processed correctly, and files were successfully loaded into memory?



有两种方法可以进行 IO。

异步IO

做 IO 的好方法是 CPU 要求设备执行 IO,然后让 CPU 做其他工作(包括运行其他程序),直到发生 IRQ 通知 OS IO 请求完成。对于具有(例如)4 个 CPU 和 20 个设备的计算机;这允许所有 4 个 CPU 和所有 20 个设备同时进行有用的工作。这是每个现代操作系统(包括现代“单任务”操作系统)都使用的方法。

在这种情况下;如果没有 IRQ,您必须通过非常频繁地检查 IO 请求完成来模拟它们(例如,可能会在任何地方插入 check_for_IO_completion() 函数调用),其中“频率”是“设备性能”(延迟,可以使用多少时间)之间的折衷在 IO 请求完成和操作系统知道 IO 请求完成并能够启动下一个请求之间传递)和“CPU 性能”(所有 check_for_IO_completion() 调用浪费了多少 CPU 时间)。当然(特别是如果有任何安全性 - 例如“内核空间”与“用户空间”隔离)没有好的妥协 - 无论您牺牲了多少什么样的性能,您都不能期望性能相同就像使用 IRQ 一样。

同步IO

做 IO 的坏方法是 CPU 要求设备执行 IO,然后不断轮询该设备,直到 IO 完成。对于具有(例如)4 个 CPU 和 20 个设备的计算机;您永远不会同时发生超过 4 件事情(4 个 CPU 中的每一个都在做有用的工作或等待 IO 请求完成)并且您将始终有至少 20 个硬件(设备或 CPU)浪费/无法做有用的工作。

这是固件(例如 BIOS 和 UEFI)使用的方法,因为它更简单,并且因为固件仅用于非常短暂地启动操作系统(主要涉及“从磁盘加载内核”并且不会从允许许多硬件同时工作),并且因为固件在此之后被丢弃/忽略。还有一些可怕的旧操作系统使用这种方法(例如 MS-DOS)。

对于这种方法,IRQ 并没有真正使用,所以如果没有 IRQ 也没有多大关系。

注意:有些设备可以在没有软件请求的情况下传输数据(例如键盘、鼠标、网卡接收但不发送数据包)。没有 IRQ 和同步 IO;这些类型的设备需要足够大的缓冲区来存储数据,直到软件请求它和/或某种方法来处理导致丢失数据的缓冲区溢出(例如 TCP/IP 重试)。

关于assembly - 如果处理器不产生中断,系统软件必须做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58188945/

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