社区
驱动开发/核心开发
帖子详情
求高手赐教,为什么一个操作系统可以安装到不同的CPU上?
shangweidenglu
2009-11-09 12:22:17
比如AMD和INTEL的CPU,----------又或者其他的牌子的CPU ,比如苹果的CPU,所用的指令系统都是不一样的吧,如果一个指令占2个字节,那么这两个字节的内容对于AMD和INTEL应该都是不同的吧。
那么操作系统如何针对各自不同的CPU生成各自不同的指令呢?是通过驱动程序吗?
而且,为什么windows不针对各自不同的CPU生成各自对应专用系统而提高性能呢?
...全文
869
17
打赏
收藏
求高手赐教,为什么一个操作系统可以安装到不同的CPU上?
比如AMD和INTEL的CPU,----------又或者其他的牌子的CPU ,比如苹果的CPU,所用的指令系统都是不一样的吧,如果一个指令占2个字节,那么这两个字节的内容对于AMD和INTEL应该都是不同的吧。 那么操作系统如何针对各自不同的CPU生成各自不同的指令呢?是通过驱动程序吗? 而且,为什么windows不针对各自不同的CPU生成各自对应专用系统而提高性能呢?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
打赏
举报
回复
楼上正解!!!
操作系统
疑问:
相同的
cpu
架构,在
不同
的
操作系统
下生成的程序为什么不可以通用?程序不是机器语言么?针对硬件操作的阿 2012-05-24 11:05dieyuechaoren1 | 分类:
CPU
| 浏览358次 假设可执行程序是完全静态的,不需要动态库的支持 实际上我问的也算是 可执行代码是依赖
操作系统
的还是依赖
cpu
架构的?为什么?
高手
赐教
,莫嫌菜鸟提出的问题有点傻,呵呵 分享到
oracle rac 节点崩溃重装
linux下oracle rac
一个
节点崩溃,而另
一个
节点正常,如何重装崩溃节点?请
高手
赐教
! 本人已经重装崩溃节点的系统,但rac如何恢复,是通过节点2删除rac中节点1的信息,然后再新增节点的方法?还是可以不用删除节点信息,直接可以恢复? 具体步骤如何?请
高手
赐教
啊,不甚感激! node1 已坏 node2 正常 重装node1后,计算机名还是node1,直接可以添加吗?不用删除以前
uCOS在51单片机上的移植心得
引言 很多人对于编写自己的
操作系统
很感兴趣,uCOS51是个不错的选择。它的优点是简单易懂,学习成本低,有利于向32位
CPU
过渡。目前,嵌入式BBS上的热点是:嵌入式实时多任务
操作系统
、单片机上网、32bit
CPU
(如ARM等)。其实通过uCOS51学习完全可以掌握这些热门技术的精髓,而且学习成本低廉。为此我会陆续将我在研发过程中的经验体会写出来与大家交流,共同进步。 ...
无法
安装
RealPlayer
在windows2003系统中
安装
RealPlayer 10.5,
安装
到12%的时候跳出来
一个
空白的提示框,点了确定就退出
安装
。 开始怀疑是上一次
安装
的RealPlayer没有卸载干净。手工清理注册表RealPlayer的所有项目+windows优化大师清理注册表+恢复以前没有
安装
过RealPlayer的系统注册表。结果故障依旧。这样就可以确定不是注册表的问题。 进而怀疑是不是同类的
win7黑苹果
安装
教程
前言 看了网上诸多
安装
教程根据自己的理解写的随记 其中有解释不恰当的地方 我水平也不高
高手
见了忘
赐教
指正 一 准备工具 1懒人版镜像(即.cdr 不要原版) 2硬盘
安装
助手 将系统镜像写入磁盘工具 3变色龙 用来引导
安装
系统 4 wowpc.iso 引导工具 镜像写入
安装
盘后将这个文件添
驱动开发/核心开发
21,616
社区成员
21,711
社区内容
发帖
与我相关
我的任务
驱动开发/核心开发
硬件/嵌入开发 驱动开发/核心开发
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章