Operating system 开发操作系统、用户模式、中断和系统调用

Operating system 开发操作系统、用户模式、中断和系统调用,operating-system,system-calls,interrupt,interrupt-handling,keyboardinterrupt,Operating System,System Calls,Interrupt,Interrupt Handling,Keyboardinterrupt,在我的操作系统中,我需要转到用户模式。 我知道如何移动,但当我处于用户模式时,没有中断。这意味着例如: 当我在键盘上键入内容时,缓冲区将无法填满。那么,如果缓冲区是空的,我应该如何进行系统调用以从键盘获取字符呢 若你们有一些例子,我可以看看系统调用,并可以告诉我如何使它,所以我可以在用户模式下,仍然从键盘输入,我将不胜感激 希望我说清楚。。谢谢你的帮助 在几乎所有cpu架构中,至少有两种机制可以从用户(权限较低)模式转换到系统(权限较高)模式:陷阱和中断。陷阱产生于指令,例如被零除,或进入系

在我的操作系统中,我需要转到用户模式。 我知道如何移动,但当我处于用户模式时,没有中断。这意味着例如:

  • 当我在键盘上键入内容时,缓冲区将无法填满。那么,如果缓冲区是空的,我应该如何进行系统调用以从键盘获取字符呢

若你们有一些例子,我可以看看系统调用,并可以告诉我如何使它,所以我可以在用户模式下,仍然从键盘输入,我将不胜感激


希望我说清楚。。谢谢你的帮助

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

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

用户程序可以使用一些参数制作陷阱,将其定向到键盘设备驱动程序,在那里它将从缓冲区提取以前的事件,或者如果事件为空,则等待事件可用


用户/系统的区别并不深刻;这是一种粗糙的系统完整性机制。

你说的“没有中断”是什么意思?处于用户模式是如何防止中断被传递的?我读到的是,当您处于用户模式时,您执行cli来停止中断,所以没有中断。当Im处于用户模式并被零除时,系统不会崩溃,但“你不能被零除”的信息也不会打印出来。如果没有中断,你的系统就会死机、过期、死机,死机。你能给我发一些关于它的文章吗?我必须尽快实施你最好是一个快速的读者。。。。Douglas Comer关于Xiu操作系统的书是一个很好的起点。我怀疑它是否印刷,但可能是pdf格式的。它集中在组织和概念上,同时最小化cpu实现细节。X86还不错,如果你仔细研究github,你会发现一些项目有足够的脚手架,你可以不用做很多工作就移植自己的内核。