用于多个进程的多个中断向量表

问题描述 投票:1回答:1

我的想法:

假设两个应用程序在Linux x86(多任务)中并行运行,并且它们都共享键盘外围设备。如果我按下键盘上的按钮,则会发生中断,并且控制必须切换到相应的中断例程。中断源的中断例程的起始地址从中断向量表中获取,该向量表已从0x0000定义。但是对于同一个键盘中断,两个应用程序可能需要不同的例程。因此,要执行的例程应取决于它实际中断了哪个任务。

所以这意味着必须为两个进程保留两个单独的中断向量表,并且它们由内核在进程打开时间片时加载?

linux operating-system kernel interrupt interrupt-handling
1个回答
0
投票

在用户地址空间中运行的进程无法处理中断,因此没有向量表。中断向量表将驻留在内核地址空间中。

[对于键盘,内核的向量表将处理中断并接受按键。然后,内核将通过系统调用将按键中的字符发送到用户应用程序。在Linux中,系统调用很可能会抽象为用户进程正在读取的文件。

多个用户进程(在此示例中为应用程序)可以从同一文件读取,因此行为取决于文件/文件(例如设备)的详细信息。很有可能最终导致进程之间首先读取数据的争夺。实际上,让多个进程同时访问同一文件通常是一个坏主意。

© www.soinside.com 2019 - 2024. All rights reserved.