Linux 为何不把图形用户界面写入内核?

Linux 为何不把图形用户界面写入内核?

早先是没能力,之后是没必要,现在是不应该

先插一句,现代Windows9的图形也不在内核里,只是还保留一组兼容。

90年代时的计算机都是两套图形系统:一套是普通软件窗口API9,Windows上不论是MFC还是ATL9背后都是gdi32.dl,Linux无论GTK还是QT背后都是X,后者用CPU渲染出一张图片,然后送入显存,显示适配器把显存转成VGA信号输出;另一套是游戏,他们会调用DirectX/OpenGL,后者用GPU渲染出3D图像,然后直接进显存输出。当时玩游戏进入退出时屏幕都会黑一下,这就是两套图形系统都要分别设置显卡参数,显卡在切换状态。同时还有个全屏模式,游戏会独占屏幕,其它应用和桌面都不显示。

显然图形一这种软件渲染模式效率低下,进内核就是好选择。在微软里,盖茨一声令下这事就妥了。但Linux做不到,因为他只管内核,图形是另一个叫XFree86的组织实现的,让两个互不隶属的国际组织相互协调做复杂架构升级是不可能的。所以Windows的图形能力很长时间里都是碾压的。

然后就到了Windows Vista9,盖茨给出了放到今天仍然先进的架构,其中图形系统也做了大改。应用改为调用GDI+,后者调用Direct2D,背后就是DirectX。也就是说整个Windows桌面就是一个大游戏,所有渲染都是GPU完成的,进出游戏也不会黑屏了,游戏也能窗口玩了。全GPU硬件渲染的效率远高于CPU软件渲染,这时图形就没必要进内核了

Linux这边也没闲着,虽然还是保留了X的架构,但增加了扩展接,比如著名的AIGLX。新接口让应用先找OpenGL渲染,然后通知X去找GPU要结果,相当于旧架构融入了新技术。应用只要用新版GTK/QT重新编译就能享受提升。这时Linux的图形能力在理论上是不亚于Windows的,做不好那是显卡驱动的锅,所以Fuck Nividia。

到了今天,Windows架构改动不大,Vista打下的基础太好了,只有一些小改动。一个是原先进了内核的旧图形系统win32k.sys9,微软出于向后兼容还继续保留,但总出bug,所以一气之下用Rust重写了。另一个是DirectX升级到10,彻底释放了CPU,进一步提升GPU利用率。

Linux这些年倒是大改革,新的Wayland机制废掉了X,相当于以新技术为基础兼容老架构。走到这其实三大0S的图形系统已经非常接近了,都是应用直接找GPU渲染,然后再由窗口管理器整合显示,无非是渲染接口不同。此时再说图形进内核就是不应该了。

但三家所用的DirectX/Vulkan9/Mentle虽然长相不同,但内在机理都一样,所以可以互转。能在Linux上玩Windows 3A大作就是系统背后把DX指令翻译成了Vulkan,效率还不低。

总之,图形进内核是个历史的插曲,今天不必在意了

相关推荐
lldhsds10 分钟前
书生大模型实战营第四期-入门岛-1. Linux前置基础
linux
wowocpp33 分钟前
ubuntu 22.04 硬件配置 查看 显卡
linux·运维·ubuntu
山河君1 小时前
ubuntu使用DeepSpeech进行语音识别(包含交叉编译)
linux·ubuntu·语音识别
鹏大师运维1 小时前
【功能介绍】信创终端系统上各WPS版本的授权差异
linux·wps·授权·麒麟·国产操作系统·1024程序员节·统信uos
筱源源1 小时前
Elasticsearch-linux环境部署
linux·elasticsearch
pk_xz1234563 小时前
Shell 脚本中变量和字符串的入门介绍
linux·运维·服务器
小珑也要变强3 小时前
Linux之sed命令详解
linux·运维·服务器
Lary_Rock5 小时前
RK3576 LINUX RKNN SDK 测试
linux·运维·服务器
云飞云共享云桌面7 小时前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络
Peter_chq7 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端