当一个程序被编译时,它会被转换成机器码(machine code),这种代码可以被计算机“理解”。那么,这些机器码如何与操作系统进行交互以完成例如从键盘获取输入的操作呢?对我来说,机器码应该运行在比操作系统更低的级别,因此,我无法理解操作系统是如何作为编译后应用程序和硬件之间的中介进行操作的。
附注:我刚开始学习C++编程,并且正试图理解cin和cout的工作原理。
当一个程序被编译时,它会被转换成机器码(machine code),这种代码可以被计算机“理解”。那么,这些机器码如何与操作系统进行交互以完成例如从键盘获取输入的操作呢?对我来说,机器码应该运行在比操作系统更低的级别,因此,我无法理解操作系统是如何作为编译后应用程序和硬件之间的中介进行操作的。
附注:我刚开始学习C++编程,并且正试图理解cin和cout的工作原理。
这是一个非常好的问题(比你知道的更好),有很多可以学习的。很多。
我会尝试简短地回答。操作系统充当软件和硬件之间的抽象层:
Software
.
/|\
| communicates with
\|/
'
Operating System
.
/|\
| communicates with
\|/
'
Hardware
操作系统通过称为“驱动程序”的程序与硬件进行通信(广泛使用的术语),并通过称为“系统调用”的过程与软件进行通信(不太常用的术语)。