编译程序时,它将转换为机器可以"理解"的机器代码.这个机器代码如何与操作系统交互以执行从键盘输入的操作?对我来说,似乎机器代码应该运行在比操作系统更低的级别,因此,我无法理解操作系统如何充当编译应用程序和硬件之间的中介.
PS:我刚刚开始进行C++编程,我正在努力了解cin和cout是如何工作的
我一直在阅读系统调用及其在Linux中的工作方式.我仍然有更多的阅读要做,但有一件事,我已经读过的没有回答的是,为什么我们需要系统调用?
我知道系统调用是来自用户空间程序的请求,内核要做一些事情,但我的问题基本上是:为什么用户空间程序不能自己做呢?为什么Glibc不执行实际操作而不仅仅是作为系统调用的包装器?
例如,如果我调用fopen()我的程序,为什么glibc会调用open系统调用?为什么glibc本身不进行操作?
我明白这意味着glibc开发人员会有更多的工作,他们必须对Linux有一个深入的了解,但是glibc与Linux内核的关系是否已经非常密切了?
另外,我知道系统调用函数在CPU的0环上运行......但是真正重点是什么呢?如果我执行一个程序,我给它明确的运行权限,那么通过分离哪些代码可以在不同的上下文中运行来添加什么安全性,因为你还是给了它所有权限?