I / O等指令在用户模式下如何工作?

时间:2017-12-05 21:32:57

标签: io operating-system kernel usermode

我很好奇,因为我正在阅读这本提及的操作系统书籍

"用户程序始终以用户模式运行,该模式仅允许指令的子集[...]。通常,在用户模式下不允许涉及I / O和内存保护的所有指令。 要从操作系统获取服务,用户程序必须进行系统调用,该系统调用将陷入内核并调用操作系统。"

如果一般不允许在用户模式下使用I / O,但是让我说我​​有一个C ++或Java程序要求输入,或者让我们说其他任何东西就像搜索栏一样程序。每当我选择搜索栏(意思是我会写一些东西),然后调用TRAP指令来调用操作系统(因为操作系统在内核中运行)才能访问I / O,即键盘?我不确定我是否正确遵守或者我错了什么。

在用户模式下不允许使用I / O,但是对操作系统中的应用程序使用输入,或者甚至在操作系统本身都有键盘命令。如果您可以使用键盘命令,则表示操作系统随时可用于I / O.然后在用户模式下禁止关于I / O指令的原始声明。

我很抱歉我的无知,但我对这些术语以及用户和内核之间的区别感到有点困惑。我知道操作系统在内核模式下运行,应用程序在操作系统中运行,因此最终应用程序可以访问I / O.

3 个答案:

答案 0 :(得分:0)

请问应用程序是否需要操作系统处理它们的I / O? 意思是,只有操作系统才有权做这类事情......

我错了吗?

答案 1 :(得分:0)

将你的书扔进垃圾箱或用它来装猫箱。

你明显的悖论是,你认为你必须处于内核模式才能进行I / O,但你的书却说:

  

“用户程序始终以用户模式运行,只允许指令的子集”

你的悖论的解决方案是你的书在胡说八道。

使用程序并不总是在用户模式下运行。它们经常以内核模式运行。操作系统的一个基本功能是提供一组内核模式系统服务,提供对内核模式的受控访问。

换句话说,你的直觉比你困惑的书的文字更好。

答案 2 :(得分:0)

了解“用户模式”和“内核模式”的含义非常重要。一个进程被映射到用户特权的内存区域,具体取决于内存布局。
内核模式基本上是在超级用户特权内存区域中的例程,由程序调用以执行所需的工作(I / O)。