【发布时间】:2012-08-25 19:25:34
【问题描述】:
在任何入门课程中,您学习的第一件事就是 System.out.println、printf 等打印到标准输出并在您的屏幕上弹出。我想知道该过程中的所有详细步骤。简而言之,我知道涉及以下内容,但我不知道所有细节:
- 对内核进行系统调用
- 文本被光栅化
- CPU 执行程序指令(使用共享库对吗?)
- 涉及屏幕的驱动程序
- CPU 与主板上的某些总线(PCI?还是 PCIe?)通信
- 总线将数据发送到屏幕
我的一些具体问题是:
- 计算机如何知道标准输出意味着放在屏幕上?如果连接了多个屏幕怎么办?它如何从硬盘驱动器或以太网插孔中识别屏幕?
- 视频驱动程序如何参与到方程式中?它如何知道使用什么驱动程序?
- CPU 如何将数据放到总线上?例如,它如何知道要写入哪个地址?该地址如何用于将数据发送到写入位置?您能否提供一些在此过程中使用的示例 CPU 指令?
谢谢!
【问题讨论】:
-
这个问题真的没用。他们称其为标准输出(简称stdout)是有原因的:它是一种标准的输出方式,意味着它存在于操作系统的任何地方的同一个地方。该位置的确切位置取决于操作系统(您没有指定)。有关更多详细信息,请研究您所询问的特定操作系统的内核,因为 Linux 和 Windows(以及其他操作系统)的实现方式不同。投票结束时“不是一个真正的问题”。
-
我会以任何操作系统为例。此外,问题不仅限于内核。请不要关闭我的有效问题。
-
@JohnK:虽然这个问题没有结束(这是一个很好的问题),但以后尽量缩小你的问题范围。你看到我的回答有多长,而且只是表面上而已。因此,如果您想详细了解每个步骤的工作原理,请将这些问题作为单独的问题提出。
标签: io kernel cpu drivers motherboard