社区
驱动开发/核心开发
帖子详情
求高手赐教,为什么一个操作系统可以安装到不同的CPU上?
shangweidenglu
2009-11-09 12:22:17
比如AMD和INTEL的CPU,----------又或者其他的牌子的CPU ,比如苹果的CPU,所用的指令系统都是不一样的吧,如果一个指令占2个字节,那么这两个字节的内容对于AMD和INTEL应该都是不同的吧。
那么操作系统如何针对各自不同的CPU生成各自不同的指令呢?是通过驱动程序吗?
而且,为什么windows不针对各自不同的CPU生成各自对应专用系统而提高性能呢?
...全文
1014
17
打赏
收藏
求高手赐教,为什么一个操作系统可以安装到不同的CPU上?
比如AMD和INTEL的CPU,----------又或者其他的牌子的CPU ,比如苹果的CPU,所用的指令系统都是不一样的吧,如果一个指令占2个字节,那么这两个字节的内容对于AMD和INTEL应该都是不同的吧。 那么操作系统如何针对各自不同的CPU生成各自不同的指令呢?是通过驱动程序吗? 而且,为什么windows不针对各自不同的CPU生成各自对应专用系统而提高性能呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
liunx1987
2009-11-18
打赏
举报
回复
通过编译器生成相应架构的二进制代码,如ARM的toolchain为arm-linux-*,x86的toolchain位x86-linux-*等,由编译器来完成。。。
aaassd_cn
2009-11-16
打赏
举报
回复
PC上都是X86体系的,所以通用,多媒体部分不同,会有额外的优化,对于其他嵌入式设备,有不同的CSP,这样OS就可以不感知CPU差异了(MIPS还需要额外的编译器)
dthxman
2009-11-16
打赏
举报
回复
首先,明确一点,不同的cpu不是牌子不同,是指不同的架构,如x86,arm,mips,power等,好,接下去,对于同一种架构,对应的指令集的规范是一样的,这就意味着同一个操作系统,只要是装在同一个架构的cpu上,就不用重新编译,因为他们与硬件沟通的语言一样的,即指令集规范。那么,对于不同的架构,意味着不同的指令集,操作系统必须在该指令集的编译器下重新编译,才能安装。
举个最简单的例子,为什么有这么多国人说龙芯不是自己的cpu,就是因为指令集的问题,用了mips的指令集,这就相同于cpu的灵魂一样,外壳再怎么变,还是一个人。
shangweidenglu
2009-11-15
打赏
举报
回复
我顶!
faked
2009-11-11
打赏
举报
回复
[Quote=引用楼主 shangweidenglu 的回复:]
比如AMD和INTEL的CPU,----------又或者其他的牌子的CPU ,比如苹果的CPU,所用的指令系统都是不一样的吧,如果一个指令占2个字节,那么这两个字节的内容对于AMD和INTEL应该都是不同的吧。
那么操作系统如何针对各自不同的CPU生成各自不同的指令呢?是通过驱动程序吗?
而且,为什么windows不针对各自不同的CPU生成各自对应专用系统而提高性能呢?
[/Quote]
对于x86来说,amd/intel指令集没有什么不同,其各自可能会有一些增强指令,当然amd/intel自身的实现并不同,但并不会影响 其执行x86指令的正确性。
同一套操作系统,对于不同的cpu其实是有多套二进制代码的,譬如说x86的ia32, x86_64等。并不是在安装 的时候确定,因为无法保证操作系统安装程序本身正常运行。安装的时候能确定一些平台特性。
至于windows针对各自cpu对应用系统进行优化,楼主想要有什么样的优化尼?
iwillbeback008
2009-11-11
打赏
举报
回复
[Quote=引用 8 楼 arnold9009 的回复:]
估计是安装包里包含了各种架构的内核文件,安装的时候根据具体架构自动选择的吧
内核之外的东东就跟CPU没有关系了
[/Quote]
同感
技术输出者
2009-11-10
打赏
举报
回复
学习
zjf0000
2009-11-10
打赏
举报
回复
上层应用一样,与硬件相关的部分独立出来,移植的时候只需修改硬件相关的部分.
DISINHUI
2009-11-09
打赏
举报
回复
看看dos内核代码,就知道了。所有硬件CPU对二进制指令是直接识别的。也是相同的。
codesnail
2009-11-09
打赏
举报
回复
[Quote=引用 7 楼 shangweidenglu 的回复:]
不同的CPU编码都是不一致的啊
[/Quote]
有的是一样的,比如都是arm核的
最主要的问题是操作系统是要被编译的,不同的编译环境编译出来的机器码是不一样的,所以是可以移植的,不同cpu的细小差别可以用宏定义来区分!
Arnold9009
2009-11-09
打赏
举报
回复
估计是安装包里包含了各种架构的内核文件,安装的时候根据具体架构自动选择的吧
内核之外的东东就跟CPU没有关系了
shangweidenglu
2009-11-09
打赏
举报
回复
不同的CPU编码都是不一致的啊
shangweidenglu
2009-11-09
打赏
举报
回复
[Quote=引用 3 楼 kelibin 的回复:]
指令系统给出的是汇编指令,汇编指令会转成二进制指令,CPU对二进制指令的识别是一样的
[/Quote]
程序都是直接编译成二进制代码了啊
shangweidenglu
2009-11-09
打赏
举报
回复
等待高手
codesnail
2009-11-09
打赏
举报
回复
[Quote=引用 1 楼 duojinian 的回复:]
看看dos内核代码,就知道了。所有硬件CPU对二进制指令是直接识别的。也是相同的。
[/Quote]
arm 的 和x86 一样?
胡扯
只能说是可能两种cpu用的是同一种编码规则
Kelibin
2009-11-09
打赏
举报
回复
指令系统给出的是汇编指令,汇编指令会转成二进制指令,CPU对二进制指令的识别是一样的
lgy198612
2009-11-09
打赏
举报
回复
楼上正解!!!
Windows
操作系统
为什么能够识别
不同
的
CPU
所用的机器语言???
本文解释了
操作系统
如何识别
不同
CPU
所使用的机器语言,包括x86、x86-64、MIPS、POWER等
不同
类型的
CPU
。重点讨论了机器语言的差异以及
操作系统
如何适应这些差异。
一文读懂国产
操作系统
:
不同
CPU
架构下的软件
安装
包格式全解析
本文详解国产
操作系统
在
不同
CPU
架构(ARM/aarch64、LoongArch、MIPS、x86_64)下的软件
安装
包命名规则与适配逻辑,涵盖架构识别命令、
安装
包后缀含义、deb/rpm格式差异、多架构软件分发策略及容器化解决方案,重点面向系统运维与开发者提供实操指南。
不同
操作系统
及
CPU
字长、寻址能力、指针宽度的理解
本文介绍了
不同
CPU
字长、
CPU
位宽、寻址能力、
操作系统
32/64位及指针大小的相关知识。字长受软件系统制约,
CPU
位宽与数据总线位宽对应,寻址能力和地址总线位宽有关,32位
CPU
只能装32位系统,64位
CPU
两者皆可,指针长度在
不同
系统下有差异。
应用软件,
操作系统
,
CPU
的关系
本文深入探讨了
操作系统
在软件运行中的关键作用,包括
CPU
指令集、
操作系统
与应用程序的关系、软件编译流程、虚拟机的工作原理以及
不同
平台间的兼容性问题。重点阐述了Linux与UNIX的异同,以及Android和iOS的软件开发语言。此外,还详细解释了64位和32位系统、虚拟机如何模拟
不同
硬件环境以及Android应用程序的运行机制。文章强调了
操作系统
作为翻译官和管家的角色,以及底层接口在软件跨平台兼容性中的重要性。
操作系统
面试题:进程如何阻塞?进程阻塞为什么不占用
CPU
?
本文详细解析了进程如何通过阻塞在接收网络数据时避免
CPU
占用,涉及网卡接收、中断机制、工作队列与等待队列,揭示了
操作系统
调度如何让进程在非活跃状态下释放
CPU
资源。
驱动开发/核心开发
21,620
社区成员
21,709
社区内容
发帖
与我相关
我的任务
驱动开发/核心开发
硬件/嵌入开发 驱动开发/核心开发
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章