开发操作系统,用户模式,中断和系统调用

时间:2019-03-19 21:41:32

标签: operating-system system-calls interrupt interrupt-handling keyboardinterrupt

在我的操作系统中,我需要进入用户模式。 我知道该怎么做,但是当我处于用户模式时,没有中断。所以这意味着例如:

  • 当我在键盘上键入内容时,缓冲区将不满。那么如果缓冲区为空,我该如何进行系统调用以从键盘获取char?

如果您有一些示例,我可以看一下系统调用,并告诉我该怎么做,这样我才能进入用户模式,仍然可以从键盘上获取输入,

希望我能说清楚。。谢谢您的帮助!

1 个答案:

答案 0 :(得分:2)

在几乎所有cpu体系结构中,至少有两种机制可以从用户(特权较低)模式过渡到系统(特权较高)模式:陷阱和中断。陷阱产生于指令,例如被零除或进入系统模式的特殊指令。中断是由电信号引起的,处理器通过切换到系统模式作出响应。无论哪种情况,处理器都会保存足够的信息,以便能够在任一模式下恢复执行,并以系统模式下的预先安排的指令开始执行。

因此,键盘式设备在按下或释放键时可能会导致中断,这会导致系统切换到系统模式,以运行特定于该中断的代码(通常在设备驱动程序内)。该代码通常会将事件放入缓冲区,并唤醒任何等待它的人。

用户程序可以使用一些参数创建陷阱,以将其定向到键盘设备驱动程序,在该驱动程序中,它将从缓冲区中提取以前的事件,或者等待事件可用(如果为空)。

用户/系统的区别并不深远;这是系统完整性的粗略机制。