在我的操作系统中,我需要移至用户模式。我知道如何进行移动,但是当我处于用户模式时,没有中断。,所以这意味着:
-
当我在键盘中输入某些内容时,缓冲区将不会填充。那么,如果缓冲区为空,我该如何进行系统调用以从键盘获取字符?
如果您有一些示例,我可以查看系统调用,并可以告诉我如何进行操作,以便我可以处于用户模式并仍然从键盘获得输入,我会很感激。
希望我能清楚..谢谢您的帮助!
在几乎所有CPU架构中,至少有两种机制可以从用户(较少特权)到系统(更特权)模式过渡:陷阱和中断。陷阱是由指令产生的,例如按零分割或输入系统模式的特殊说明。中断是由电信号引起的,处理器通过切换到系统模式来响应。无论哪种情况,处理器都可以保存足够的信息,以便能够在两种模式下恢复执行,并在系统模式下以预先安排的指令开始执行。
因此,当按下键或释放键时,键盘样式设备可能会导致中断,这会导致系统切换到系统模式以运行特定于该中断的代码(通常在设备驱动程序中)。该代码通常会将活动放入缓冲区,并唤醒任何正在等待它的人。
用户程序可以用一些参数制作陷阱,以将其引导到键盘设备驱动程序,从而从缓冲区中提取以前的事件,或者如果事件为空,则等待事件可用。
用户/系统的区别并不深刻;这是系统完整性的粗糙机制。