我很好奇,因为我正在阅读这本操作系统书籍,其中提到
“用户程序始终在用户模式下运行,它只允许指令的子集 [...]。通常,所有涉及 I/O 和内存保护的指令都不允许在用户模式下运行。为了从操作系统获取服务,用户程序必须进行系统调用,它会陷入内核并调用操作系统。”
如果在用户模式下通常不允许 I/O,但假设我有一个 C++ 或 Java 程序要求输入,或者让我们说任何程序中的搜索栏之类的其他东西。每当我选择搜索栏(意味着我会写一些东西)时,就会调用一条 TRAP 指令来调用操作系统(因为操作系统在内核中运行)以便能够访问 I/O,即键盘?我不确定我是否正确遵循或我做错了什么。
用户模式下不允许 I/O,但您在操作系统中为应用程序使用输入,甚至操作系统本身也有键盘命令。如果您可以使用键盘命令,则意味着操作系统随时准备好进行 I/O。然后是关于 I/O 指令在用户模式下被禁止的原始声明。
我很抱歉我的无知,但我对这些术语以及用户和内核之间的区别有点困惑。我知道操作系统在内核模式下运行,应用程序在操作系统中运行,所以最终应用程序确实可以访问 I/O。