gpt4 book ai didi

linux - 操作系统中的两个 I/O 阻塞进程和一个击键事件

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:21:27 25 4
gpt4 key购买 nike

在多核 CPU 中考虑以下情况,为简单起见,我们坚持使用 linux 内核。

wait_char()
{
while (1)
{
ch = readchar();
putchar(ch);
}
}
  1. 我打开两个终端 A 和 B 并在每个终端中运行 wait_char() 代码
  2. 进程A和进程B都被阻塞并放入I/O队列等待键盘中断的到来。比方说,A 在那个队列中领先于 B
  3. 现在我专门选择了终端B并从我的键盘输入了一个键
  4. CPU 在内核模式下运行键盘中断服务程序
  5. 自然地,我会看到输入的键在控制台中得到回显。

现在内核如何确定它是给 B(在 I/O 队列中落后的)的?

最佳答案

进程不在等待 I/O 的队列中。当您在终端 B 上输入内容时,设备驱动程序知道它来自终端 B。设备很可能会触发中断。然后,操作系统会将数据发送给在终端 B 上有待处理读取请求的任何人。

如果您有两个进程从终端 B 读取数据,那么哪个进程获得字符是随机的。

关于linux - 操作系统中的两个 I/O 阻塞进程和一个击键事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42230014/

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