• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

架构和操作系统的区别

沃尔夫斯堡的羊 2020-02-05 浏览量:2205
​在系统编程中经常会涉及到两个概念架构和操作系统,架构亦即指令集,如X86和Arm,操作系统如WindowsLinux以及其它嵌入式操作系统,这里请教一下,架构和操作系统的区别?比如Linux既能在X86上跑,也能在Arm上跑,这两者之间的区别是啥?是不是在实现Linux内核时需要裁剪(根据对应架构结构和组成只实现对应架构平台具有的模块,如外设驱动)?除去操作系统,通过汇编也能在相应架构的平台上实现软件功能,操作系统和架构之间有没有耦合的地方?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
所有亮答 数量:1
  • 架构和操作系统是完全不同的东西。一个是针对硬件的,一个是软件的。

    你提到了 架构和指令集的关系,确实本身硬件架构从一种层面说,就是指令集的实现(支持)。

    操作系统作为底层基础软件,通过编译配置、设备模块驱动等等实现对底层架构的抽象封装,提供给上层调用,比如所有架构的cpu都支持加法操作,但不同的架构具体的指令可能是不同的,如果这些架构都被某种操作系统(比如linux)支持,则在这样的操作系统层面上再提供的加法计算处理(比如python下的或者命令行的)就可以有统一的指令完成。


    现在有的操作系统可以在很多硬件上跑起来,比如linux支持很多架构的东西,这些架构(以及硬件)上的差异,通过不同的编译配置、模块加载实现编译封装,从而可以提供操作系统以上的基本统一的接口。确实,因为不同架构能力不同,可能各自实现的对应linux内核是需要配置裁剪的,但这种裁剪可能更多的是最底层支持能力上,一般运算能力相当的cpu,同样功能模块的内核可以都支持,只是产生的内核镜像不同(为了支持不同的架构),此外依据不同的架构后外网电路等等支持的驱动设备不同。


    其实汇编和C语言对开发操作系统来说,仅仅是编辑语言不同,功能实现上没有本质区别,只有有对应的编译工具链,都能实现功能。


    操作系统和架构之间有联系,但没有强耦合,理论上现在你见到的操作系统只要有支持的意愿,都可以编译输出支持不同的架构(当然相应架构运算能力要足够才有意义),之所以没有那么多操作系统支持那么多架构,仅仅是因为商业等方面的原因,而不是不能。比如现在windows系列也有arm支持(其实很早的win ce也算是一种支持),linux等等类Unix系统就更不说啦,连有些soc环境都可以跑一跑。

相关问题

问题达人换一批

架构和操作系统的区别