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,效率还不低。

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

相关推荐
IT成长日记1 小时前
05【Linux经典命令】Linux 用户管理全面指南:从基础到高级操作
linux·运维·服务器·用户管理·命令
Sapphire~7 小时前
Linux-07 ubuntu 的 chrome 启动不了
linux·chrome·ubuntu
伤不起bb7 小时前
NoSQL 之 Redis 配置与优化
linux·运维·数据库·redis·nosql
广东数字化转型8 小时前
nginx怎么使用nginx-rtmp-module模块实现直播间功能
linux·运维·nginx
啵啵学习8 小时前
Linux 里 su 和 sudo 命令这两个有什么不一样?
linux·运维·服务器·单片机·ubuntu·centos·嵌入式
半桔8 小时前
【Linux手册】冯诺依曼体系结构
linux·缓存·职场和发展·系统架构
网硕互联的小客服9 小时前
如何利用Elastic Stack(ELK)进行安全日志分析
linux·服务器·网络·安全
冰橙子id10 小时前
linux——磁盘和文件系统管理
linux·运维·服务器
无聊的小坏坏10 小时前
环境变量深度解析:从配置到内核的全链路指南
linux·bash
才鲸嵌入式10 小时前
01 Ubuntu20.04下编译QEMU8.2.4,交叉编译32位ARM程序,运行ARM程序的方法
linux·c语言·单片机·嵌入式·arm·qemu·虚拟机