国产操作系统最致命的短板,被这个开源软件补上了!

【黑暗之光】国产操作系统最致命的短板,被这个开源软件补上了 既然.text区域的CPU指令在Windows和Linux之间是“可移植的”,你可能立刻会想到,如果有一个程序,可以把foo函数在Windows编译出的.text 给“取”出来,拿到Linux上执行,应该是可以运行的。Windows的系统调用非常多,源码又不公开,全是黑匣子,我们不知道Windows内部到底是如何实现的,Windows文档又很差......(大胆猜测一些,微软是故意的)。“不行,现在的软件都是给Windows开发的,国产操作系统是基于Linux爆改的,软件跑不了。 阅读详情

“国产操作系统为什么没人用?”

“因为上面没有软件。”

“那么多软件,下载下来,一安装不就行了吗?”

“不行,现在的软件都是给Windows开发的,国产操作系统是基于Linux爆改的,软件跑不了。”

“那就给国产Linux开发软件啊?!”

“没人开发,因为国产操作系统没人用。”

“你这不就成了鸡生蛋,蛋生鸡的了,无解循环......”

这是我和一个朋友关于国产桌面操作系统的一次对话。

其实这几年国产桌面操作发展得相当不错,像Deepin,统信等根据国人的审美和操作习惯,做了很多本土化工作,并且内置了各种常用的软件如WPS Office、搜狗输入法、有道词典、网易云音乐等,用来做日常办公完全够用。

e7ca73b1d09b1e568e367e9b97e859f2.png

但是,国产操作系统做得再好,也只能涵盖一部分软件,对于Windows庞大生态生态中那千千万万的软件,只能望洋兴叹了。

如果你要用的软件不被国产操作系统支持,那怎么办?

最简单的方案是用类似VirtualBox这样的虚拟机,在虚拟机中运行Windows,然后在Windows上安装想要的软件。

c7bb68ea7a1ba704a170ae2eca7df57b.png

这种一层摞一层的办法有用,就是效率太低,运行速度太慢:

3d525c45db118895f612f5cdf6213509.png

有没有办法,既能在Linux上运行Windows软件,又能避免效率的损失呢?

有!这个软件叫做Wine。

c07efb86b35d5957ff4d5431af22e2e8.png

Wine不是虚拟机,而是一个软件兼容层,它通过“转发”的方式,让Windows程序可以运行在Linux之上。

要想理解Wine的秘密,必须得从最底层看起。

01

可移植的CPU指令

比如这段代码:

int foo(int x) {
    return x * x;
}

都基于x86 CPU编译(这一点儿很重要),在Linux上这样的:

f2240e9530df0906dd777a3ab7b099d6.png

在Windows上是这样的:

b5e25e4eb6dd2965d0c0e4ad9f7ff1c9.png

看起来差别相当大,对吧?

但是,由于两者生成的代码都是基于x86 CPU的,换句话说,CPU指令集(mov、imul、ret之类)是完全相同的。

3be08a9cd3de5a0689294d4c251f7623.png

Linux上可执行文件是ELF格式,下图的.text 区域就是CPU的指令

ddd8f3aa883e7818ed4094bffa7bb880.png

Window上的可执行文件是PE格式,CPU指令也在.text区域

1c500a800d7f1faef6434f8e90d4cb50.png

既然.text区域的CPU指令在Windows和Linux之间是“可移植的”,你可能立刻会想到,如果有一个程序,可以把foo函数在Windows编译出的.text 给“取”出来,拿到Linux上执行,应该是可以运行的。

Wine其实就是这么干的,它把Windows可执行文件加载到内存中,分析一下,找到可执行代码的位置,跳转到这个地方执行就可以了!

02

系统调用

如果事情就这么简单,任何人都可以写一个Wine,Windows上的海量软件就可以轻松移植到Linux上,Windows生态的优势将不复存在。

但Windows的桌面霸主地位坚如磐石,这其中的关键就是:系统调用。

操作系统是对硬件功能的封装,它对外提供了一系列服务如读写硬盘、读写内存、进程管理等。

应用程序想使用这些服务,必须通过系统调用来进行,别无它法。

而Windows和Linux的系统调用,是完全不同的。

名称不同、参数不同、语义也不同。

2d4878c6c23f9963f367380149fb18e9.png

一个稍微有用的应用程序,肯定要使用系统调用(无论是直接还是间接方式),那就立刻和操作系统绑定了。

比如这个hello world

#include <stdio.h>
int main() {
    printf("Hello!\n");
    return 0;
}

在Linux上是这样的,它调用的是puts函数。

2696180559bb49b8d190b62e4660d5b6.png

在Windows上编译后是这样的,调用的是printf函数。

5e80907de56f0256ec45998a434b8ab6.png

puts和printf都C标准库的函数,C标准库最终还是走到系统调用那里,毕竟你要在控制台输出“Hello!”,这事儿只能操作系统来办。

要想在Linux上运行Windows程序,有两条路

(1)把Windows系统调用在Linux上重新实现一遍,这和重写OS差不多了

(2)把Windows系统调用拦截,转发到Linux的系统调用

Wine开发团队选择了第二条道路,当应用程序调用Windows 系统调用时,Wine进行“拦截”,然后转发到Linux的系统调用。

07b5fb5b4aa6496d8d4a3a8ce062e519.png

这个事情画个图很简单,实现起来太麻烦了。

Windows的系统调用非常多,源码又不公开,全是黑匣子,我们不知道Windows内部到底是如何实现的,Windows文档又很差......(大胆猜测一些,微软是故意的)。

更要命的是,这些系统调用还存在一些错误、缺陷、奇怪的副作用,Wine在拦截转发的时候,这些错误和缺陷不但不能修复,还必须原封不动地去复现它们。

如果不这么干,那些Windows软件在Linux上运行起来的行为就不同了。

这还不算完,别忘了Windows游戏啊,它们都在调用微软的DirectX,这是微软专门为游戏开发提供的API,仅支持Windows。

在Linux平台下也有个对应的东西,原来叫OpenGL,现在新一代的图形API叫做Vulkan。

很明显,DirectX和Vulkan是不同的东西。

da280f9fe8aec63a277a2467483c02a6.png

为了把DirectX调用转换成Vulkan,Valve(Steam就是他们家的)和CodeWeavers(主要赞助Wine)合作开发了Proton。

8e35ac7f2f3a83a951a68f8c7db92ba2.png

Proton 最初于 2018 年 8 月 21 日发布,当时Valve还发布了一个 27 款游戏的名单,这些游戏经过测试和认证,性能与 Windows 原生版本相同,无需最终用户进行调整。其中包括《毁灭战士》(2016 年)、《雷神之锤》和《最终幻想 VI》等。

03

总结

看了Wine干的这些事情,你肯定会感慨,让Windows应用在Linux上顺利地跑起来可真不容易啊。

这是没办法的事情,谁让Windows是桌面操作系统的老大呢?

微软通过Windows系统调用API和DirectX等API,构建了非常宽的护城河。

开源的Wine在这个护城河上建立一座桥,这座桥虽然还不完美,但足以让大量的Windows应用来到Linux的世界快乐地玩耍。

相信国产操作系统一定会充分地利用Wine这样开源界的成果,让自己的生态变得更加丰富。

ps,本文用到的例子来源于https://werat.dev/blog/how-wine-works-101/,这篇文章有更多细节,感兴趣的话可以看看。

全文完,觉得不错的话点个赞或者在看吧!

近期爆文:

造福无数打工人,世界第7大网站,为什么过得如此卑微

被哈佛扫地出门,他发明了让无数程序员痛不欲生的编程语言,获得了计算机最高奖!

这两个大龄程序员,打算搞垮一个世界软件巨头!

这两个程序员要花100万,彻底重写世界上最复杂的软件

世界上最大的盗版网站,遇到麻烦了!

美国的顶尖程序员,深夜都在狂玩儿这个游戏!

这个女生写的软件,解决了无数程序员最头疼的问题!

你们程序员为什么不靠自己的项目谋生?而必须为其他人打工?

摆了个摊,日销930元,80后女产品经理不再焦虑了

从AD到HFSS:Gerber文件驱动的PCB三维电磁仿真全流程解析 本文详细解析了从AD到HFSS的Gerber文件驱动的PCB三维电磁仿真全流程,重点介绍了Gerber文件作为桥梁的重要性、AD端Gerber文件导出实战指南、HFSS 3D Layout导入技巧及高级问题排查方法。通过实际案例和技巧分享,帮助工程师高效完成PCB电磁仿真,提升设计验证效率。 阅读详情

相关推荐

飞控算法-姿态解算之互补滤波

飞控乱入之姿态解算 姿态解算是通过读取各个传感器的数据进行融合最终得到当前飞行器的姿态,姿态通常用Euler角(Roll-Pitch-Yaw)来表示 姿态解算框架 姿态解算的数据源可来自于陀螺仪或加速度计,他们分别都可以得到当前姿态,但实际上他们都有各自的传感器性能的优缺点,需要取长补短,进行数据融合才能得到真实的姿态,这种方法简称 互补滤波 算法 传感器特性 互补滤波 姿态解...

GoolyOh的专栏 1万+

国产操作系统有哪些

总体上感觉作为个人使用是没有任何问题的,常用的软件也都搞定了,可能有部分还不如windows上,但是现在的电脑配置普遍比较高,我的也就是I5+8G+固态,使用感觉非常的流畅,不是夸大的,要不是之前的笔记本淘汰了,在那台笔记本上一直都有使用,而且使用很长一段时间了,作为程序员linux的生态还是可以的,而且Deepin的服务器版本已经用到华为的服务器上了,这已经说明了一切。deepin和UOS的区别,deepin是免费社区版本,系统内核最新,对新平台设备支持最好,也能最快使用到最新的功能和软件。

ITSM/ITIL/网络安全/IT运维 2万+

Unity集成阿里Qwen2.5-Omni全模态大模型实战:语音交互与多模态AI开发指南

本文详细介绍了在Unity中集成阿里Qwen2.5-Omni全模态大模型的实战指南。通过C#脚本开发,实现语音交互、图像分析等多模态AI功能,涵盖API调用、音频处理、流式响应解析等核心步骤,为游戏、虚拟人等Unity应用提供沉浸式智能交互解决方案。

weixin_29005499的博客 315

国产化操作系统都有哪些?如何选择?

中标麒麟操作系统支持多种国产CPU平台,包括龙芯、申威、飞腾等,这提供了更多的硬件选择灵活性。它基于Linux,能够提供稳定的运行环境,适合需要长时间稳定运行的Java服务器。:银河麒麟V10支持云原生应用,这意味着它能够更好地与现代的云平台和容器技术集成,为Java应用提供更灵活的部署选项。:中标麒麟提供了全面的技术支持服务,包括远程支持、现场服务和定制服务,这对于确保生产环境的稳定运行非常关键。:银河麒麟V10已经在政府、国防、金融等多个关键领域得到应用,这证明了其在各种严苛环境下的可靠性和安全性。

weixin_40914952的博客 4万+

RTX 4060笔记本也能跑!保姆级教程:用Ollama在Windows上部署DeepSeek-R1-8B模型

本文详细介绍了如何在RTX 4060笔记本上通过Ollama本地部署DeepSeek-R1-8B模型,提供从环境配置到性能调优的全流程优化指南。针对笔记本用户的显存、散热等问题,给出了量化模型选择、启动参数优化及散热解决方案,帮助用户在消费级硬件上高效运行大语言模型。

weixin_28745067的博客 525

Amos实战:如何用Bootstrap法检验中介效应?附完整操作步骤

本文详细介绍了如何使用Amos软件通过Bootstrap法检验中介效应,包括模型设定、参数配置和结果解读。Bootstrap方法因其不依赖正态分布假设、统计功效高等优势,成为中介效应分析的首选方法。文章提供了完整的操作步骤和实用建议,帮助研究者准确评估变量间的中介作用机制。

zz67890的博客 1440

国产电脑操作系统有哪些比较好用

3.UOS:是一款国产的原版系统,由统信技术有限公司打造,基于deepin所进行深度开发,目前已是一款开发的非常完善的系统,这个大家应该更熟悉。3.UOS:是一款国产的原版系统,由统信技术有限公司打造,基于deepin所进行深度开发,目前已是一款开发的非常完善的系统,这个大家应该更熟悉。2.中标麒麟:Linux桌面软件是上海中标软件有限公司发布的面向桌面应用的操作系统产品,相信大家也都有听过。2.中标麒麟:Linux桌面软件是上海中标软件有限公司发布的面向桌面应用的操作系统产品,相信大家也都有听过。

qq_29508575的博客 9636

第一节:从Chat_Bot 到 AI_Agent——一个范式转换

本文系统剖析了工业级AI代理系统ClaudeCode的设计原理与工程实践。通过对比ChatBot与Agent的三个本质差异:自主循环决策vs单轮应答、环境交互vs纯文本I/O、持久状态管理vs无状态对话,揭示了构建生产级Agent系统的关键挑战。文章详细解析了ClaudeCode的五层架构设计、1800+文件组成的运行时系统,包括工具调度、权限管理、状态持久化等核心机制,并阐述了从简单API调用到完整Agent系统的演进路径。

2201_75869398的博客 68

不吹不黑,客观理性深入探讨国产操作系统

本篇博文不吹不黑,客观理性深入探讨国产操作系统。文中数据来自权威的媒体报道。

qq_45732829的博客 1万+

视源CVTE嵌入式面试题及参考答案(200+面试题,17万字)

内核模块如何设置? 内核模块是可在运行时动态加载到内核或从内核卸载的代码块。以下是设置内核模块的步骤: 首先,编写内核模块代码。通常使用 C 语言编写,包含必要的头文件,如<linux/init.h>、<linux/module.h>等。在代码中,需要定义模块的初始化函数和清理函数。初始化函数在模块加载时被调用,用于进行模块的初始化工作,如注册设备、分配资源等。清理函数在模块卸载时被调用,用于释放资源、注销设备等。 例如: #include <li

大模型大数据攻城狮的专栏 2204

【26美赛D题】2026美赛数学建模(MCM/ICM)思路解析及代码分享

2026美赛D题数学建模竞赛思路解析摘要:本文针对美赛D题提供系统性解决方案,提出四层建模框架(数据层、机理层、模型层、决策层),强调逻辑闭环比模型复杂度更重要。包含通用建模步骤:指标体系构建、状态评估、动态预测和策略优化,并给出Python基础代码框架。论文建议采用七段式结构,突出从现实问题到决策方案的完整闭环。核心在于通过数据驱动方法揭示问题规律,结合多源数据整合、系统行为建模和风险评估,最终形成可落地的决策建议,体现数学建模解决实际问题的能力。

一键难忘的博客 1083

嵌入式数据库国产化适配:IntarkDB与飞腾E2000兼容认证解读

嵌入式数据库是运行在资源受限设备上的数据管理核心,与服务器数据库不同,它需要适配特定的处理器架构、操作系统与存储介质。在国产化替代浪潮下,从交叉编译工具链匹配到掉电安全机制验证,每个适配环节都直接影响设备运行的稳定性。兼容认证的意义在于将‘能用’提升为‘敢用’——通过系统化的功能测试、性能测试与长稳验证,为开发者提供可靠的选型依据。国创灵梭IntarkDB与飞腾腾珑E2000完成兼容认证,正是这一趋势下的典型实践,为电力、工控等关键领域的国产化方案提供了可复用的技术路径与参考样本。

weixin_33970449的博客 359

使用 Python 爬取 YouTube 视频评论(弹幕)

✅ 如何使用 Python 调用 YouTube Data API v3。✅ 如何爬取指定视频的所有评论信息。✅ 如何对评论数据进行初步分析与可视化。✅ 如何扩展功能,实现评论回复获取和多视频批量爬取。

2201_76125261的博客 643

几个国产操作系统简介

1:aCoral是电子科技大学计算机学院嵌入式实时计算实验室开发的一款嵌入式多核实时操作系统,开源 ,支持多核 2:RT-Thread 国产嵌入式操作系统 3:DeltaKVM──第一个国产嵌入式操作系统上的KVM 4:国产“S-6”嵌入式操作系统 5:国产嵌入式操作系统和欣1.0 6:都江堰操作系统 国内的实时操作系统研究开发有两种类型。 一类是中国自主开发的...

嵌入式之斋 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

HarmonyOS应用如何开发,使用什么开发工具及安装使用教程说明!

本篇文章主要讲解鸿蒙os的开发工具安装使用教程、鸿蒙os的应用开发说明指引、鸿蒙os对于开发者的机遇以及鸿蒙os是否会成为主流操作系统的问题刨析。 日期:2021-6-30 作者:csdn 任聪聪 一、相关文档和下载地址 1.开发者工具的官方文档:https://developer.harmonyos.com/cn/docs/documentation/doc-guides/tools_overview-0000001053582387 2.鸿蒙os系统开发工具官网:https://developer..

任聪聪的博客 7064

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

u盘检测工具哪个好用_Win 7还是win 10?不如看看这3大国产操作系统,到底哪个最好用...

使用win7还是win10?使用win7系统存在安全隐患,但是安装win10对于使用年限较久的电脑来说,运行不流畅就是常事~~~那么,为什么不看看国内的操作系统呢?实际上国内研发的操作系统,无论是操作习惯和操作界面,都是按照我们国人的喜好来设计的,整体的体验感应该会比国外Linux系统要好一点,起码界面是中文,不用自己去纠结怎么设置中文。实际上国内开发操作系统的企业有很多,当然质量就参差不齐了,其...

weixin_39959126的博客 2898

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

信创之国产浪潮电脑+统信UOS操作系统体验1:硬件及软件常规功能支持情况介绍

本文详细介绍了笔者使用浪潮英政CP320F+统信UOS操作系统的信创产品的体验和感受,总体来说,这款搭配超出了笔者最开始的期望,办公基本上够用了,当然也有些问题,但是作为国产信创的笔记本,个人觉得只要随着使用人员越来越多,不断优化演进,最终会达到国际先进的水平。

老猿Python 1万+

在移动硬盘中安装deepin_只需3步,利用Hyper-V快速安装国产系统,深度体验deepin超流畅操作!...

操作系统,对于电脑的重要性是不言而喻,而在众多国产系统中,我们最为熟悉的系统就莫过于深度deepin系统,号称操作流畅,界面超美!有许多的朋友想要尝试使用深度操作系统,但是又不敢直接将电脑安装为深度。那么,怎么才能体验这个深度系统呢?下面就教大家如何使用win10自带Hyper-V虚拟机,快速安装国产操作系统-深度deepin,深度体验deepin超流畅操作!第一步:下载深度Deepin镜像文件!...

weixin_39726267的博客 1258

【Linux】国产深度系统装机必备(开发、日常使用)

必备工具

qq_43590771的博客 446

用快马AI三分钟搞定麒麟Wine配置——国产系统运行Windows应用的终极方案

最近在麒麟OS上跑Windows软件时,总遇到兼容性问题。每次折腾Wine配置都要花大半天查资料,直到发现用快马(InsCode)的AI辅助开发,居然能三分钟生成定制化配置!这个项目最让我惊喜的是部署流程——原本以为要折腾服务器配置,结果在快马只需点个按钮就自动生成了可公开访问的网址。对于需要快速验证想法的开发者来说,这种开箱即用的体验确实能省下大量时间。还发现个超实用功能:当遇到复杂软件兼容性问题时,可以直接用AI对话区描述现象,系统会给出针对性的Wine调试命令。比如有次CAD软件闪退,AI建议的。

BlackironLynx23的博客 1229

介绍及分析国产操作系统

随着国产操作系统市场份额的逐步扩大,软件开发行业也需要逐渐适应和满足用户的需求,提供更好的用户体验和更完善的应用程序。除了以上几种国产操作系统,中国还有其他一些开发中或试用中的操作系统项目,如深度OS、龙芯操作系统等。麒麟操作系统主要应用于政府、军事、金融、教育等领域,被广泛使用。国产操作系统在近年来得到了快速的发展,这些系统大多基于Linux内核,并具备较高的安全性、适应性和可定制性。近年来,中国政府和企业开始加大对自主研发操作系统的投入,旨在减少对外国操作系统的依赖,并提升信息安全。

wrgjnm的博客 5709

从零开始:用麒麟WINE助手在国产系统上运行企业级Windows软件

经过两周的紧张工作,我们成功完成了迁移。所有业务功能100%可用性能达到原系统的90%以上用户几乎感觉不到操作差异系统稳定性良好,运行一个月无故障前期评估很重要:详细的兼容性检测可以避免后期很多麻烦配置优化是核心:WINE的参数调整对性能影响很大用户习惯要考虑:尽量保持界面和操作方式不变测试要全面:不能只测主要功能,边缘场景也要覆盖。

EmeraldEagle36的博客 447

你应该知道的八款国产操作系统

目前世界上存在的那些操作系统:Windows、MAC OS X、MVX、DOS/VSE、UNIX、Linux等,很少见到国产操作系统的影子,你知道国产操作系统有那些吗?虽然国内的操作系统我们可能用不上,但我们有足够的理由去了解TA们。 国产操作系统有哪些? SPG思普操作系统 [简称SPGnux] SPG思普操作系统是一款由中国软件公司开发的计算机操...

weixin_33875839的博客 7910
上一篇: 曾经对程序员最好的公司,撤退了
下一篇: 开源软件的叛徒,加入了微软
码农翻身
码农翻身 《码农翻身》作者 《码农翻身》作者
博客等级 码龄8年 3万+粉丝 1084原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值