这可能是一个愚蠢而奇怪的问题,但是我真的无法入睡,直到找到答案。计算机如何知道如何在屏幕上显示文本和GUI?如果我没有记错的话,x86计算机的启动过程如下所示:
- BIOS启动CPU和其他硬件,并检查是否一切正常
- CPU从第一个512开始执行代码?引导分区的字节数,屏幕显示引导加载程序菜单
- 执行选定的内核
- 等等
我的问题是:如果启动内核之前没有操作系统,计算机如何知道如何在屏幕上显示文本?BIOS和引导程序可以显示一些文本和基本的GUI。他们怎么做到的?BIOS /引导程序是否告诉CPU(GPU?)必须在位置(0,0)上显示蓝色像素,然后在(1,0)上显示白色像素,等等?
我的第二个理论是BIOS具有基本的显示器驱动程序,该驱动程序具有要在屏幕上打印的某种API。显示器的驱动程序是否提供某种print()函数?
从我看到的结果来看,用于打印文本的汇编功能特定于每个操作系统,因此不能直接通过CPU的指令集使用。
我的问题的第2部分是,桌面环境(如KDE或GNOME)如何工作?假设我想为Linux创建一个全新的桌面环境。我从哪里开始?C / C ++或任何其他高级语言都没有函数来在位置(x,y)上显示n色 prixel。显示dekstop的程序是用什么语言编写的?是否按像素创建桌面?GTK或Qt之类的库如何工作?我知道我只能显示一个只有几个功能的窗口,但是这些功能如何真正起作用?
对不起,如果我的问题不清楚。英语不是我的母语。
C:\>debug<ENTER>
-f b800:0 FA0 21 CE(从该地址填充,即FA0,即4000字节),则提示中会填充一些字符。可能有点像那样。就像将数据写入内存并在屏幕上获取一样,但是我在疯狂猜测。我认为在DOS中也可以使用。