20 为什么linux可以同时兼容x86和arm,一个操作系统不是只能对应特定的硬件系统吗?

为什么linux可以同时兼容x86和arm,一个操作系统不是只能对应特定的硬件系统吗?
请先 登录 后评论

22 个回答

杀死小鲁班

看了很多回复,各种各样的分析,全都没有说到点子上。原因很简单,因为linux开源。

请先 登录 后评论
骑着雅迪喷奥迪

系统和驱动层之间有一层抽象层,该层向上屏蔽硬件信息,向下屏蔽操作系统信息,该层主要是对驱动层进行再封装,这样,硬件平台不一样时,只需要改动该层的驱动即可,从理论来讲,更好的方式是驱动层再封装一次,平台移植时只更新具体的驱动代码,个人见解

请先 登录 后评论
黄河边

操作系统最大部分代码都是通过C语言来写的,很少一部分驱动是汇编语言来写的,这部分和CPU架构是相关的。一般来说操作系统经过编译,同一涛代码可以跑在不同的CPU上,去针对不同的CPU架构进行编译就可以了,下面汇编部分的驱动那要重写。

请先 登录 后评论
带猴帽的小孩

源码编译成哪种版本,就是那种版本

请先 登录 后评论
BP虫

Linux是UNIX系操作系统。UNIX基本是以C语言开发的(C占95%以上),而C是一种自生长语言,也就是天生具有可移植性。不能移植的是Windows之类。

请先 登录 后评论
讲透古诗词

这个其实也不难。一个操作系统,核心代码针对不同的cpu基本上是不变的。不同cpu的指令不同,在操作系统针对某一cpu开发后,要移植到其它cpu平台后,虽然核心功能不用改变,但是需要重新编译,以适用不同的指令。另外针对不同cpu的特别处理,需要重新编写,以达到性能的优化。模块化的编程技术,肯定弄将不同cpu 需要修改的地方进行分离,以便维护。

而windows 系统,针对x86平台做了太多的设计,如果要修改,可能要花费很多的工作。这也是当初wintel 联盟的后果。

其实window一直都在试图开发优秀的arm 平台的移动wimdows系统,只不过被google抢了位置。另一方面也是因为windows依赖于原有的windows。船太大了,调头和精简都做的不是很好。本来想通过售后诺基亚翻盘,结果血亏。

这个世界,没有永恒的老大。前浪的命运是注定的。现在intel被amd追着打,windows也正努力向arm和其它cpu 过渡。垄断世界20多年的wintel联盟,行将就木。未来整个严重依赖windows的应用系统生态也会逐渐向多元化的方向发展。

请先 登录 后评论
你在想什么呀

Windows支持arm只是运行不了exe文件

请先 登录 后评论
霹雳263521714453

谁说的 编译好的Linux执行代码能同时运行x86和arm上 指令集都不一样。 那是因为代码级的跨平台 由编译器面向不同平台。 理论上代码级都可以做到 windows源代码也可以。 只不过不同的硬件结构 有优化 和硬件相关部分 造成做不到。

请先 登录 后评论
简93722996

玩过破解pa4 ,switch ,发现就是是linux系统。基于x86的。

请先 登录 后评论
头号独家

宏编译

请先 登录 后评论