在没有功能参与的情况下打印到标准输出

时间:2015-11-06 01:19:32

标签: c function io stdout

如何在不调用任何功能的情况下在屏幕上打印任意文本?

提出这个问题的另一种方法是如何实现i / o功能?

我尝试在谷歌搜索,但不幸的是,没有找到类似的结果,好像它是某种绝密的东西。

用于研究目的。 在不知情的情况下,我个人感觉不到真正的程序员。

1 个答案:

答案 0 :(得分:3)

嗯,最后,松散地说,计算机中的低级软件设置了一个特殊的内存位置,或者使用一条特殊指令来改变CPU上某些引脚的电压,硬件会响应这些变化。

但是用户级进程无权访问这些指令或内存位置。搞乱驱动硬件的东西是在内核中执行的“设备驱动程序”的责任。它们使用这些特殊的存储器位置或指令,每个位置或指令都由特定的硬件设备负责。

用户级进程通过系统调用与设备驱动程序进行通信,如注释中所述。系统调用不像普通的函数调用 - 你不只是调用代码。在为其想要做的事情设置“请求”之后,用户级进程通常通过使用软件中断指令来戳内核。内核醒来,查看您的请求,然后决定自己执行哪些代码。内核代码以更高的权限级别运行,并将直接调用访问硬件的设备驱动程序。

这就是内核保持进程相互安全的方式。

实际上从stdout到屏幕是一个漫长的过程:

  • 标准库最终进行系统调用,写入附加到stdout的“管道”。这是它离开你的过程的地方。

  • 控制台正在读取管道的另一端。控制台是一个用户级进程,因此必须进行系统调用才能进行读取。

  • 控制台决定要显示的内容以及如何使其对您可见。将会有更多层,但最终会有系统调用驱动程序来控制图形硬件。他们会弄乱在屏幕上变成像素的位,使你的文字可见。