首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么将操作系统(OS)称为硬件相关/平台相关

为什么将操作系统(OS)称为硬件相关/平台相关
EN

Stack Overflow用户
提问于 2010-09-25 03:42:11
回答 5查看 8.6K关注 0票数 2

为什么我们说操作系统完全依赖于硬件(而不是像RAM/USB等硬件外围设备)?硬件独立性这个词的意思是,操作系统应该运行在没有任何底层硬件抽象层的任何平台上,如ARM/x86/xtensa/starcore等。

您能给我一个简单/通用操作系统中的确切硬件依赖项吗?这到底意味着操作系统中的哪些点是访问硬件的,还是取决于平台?

同样,有没有可能编写一个简单的操作系统或RTOS (使用C语言)而不依赖于任何硬件或平台(即没有任何VM概念),这样它就可以在任何平台上运行?

我希望从操作系统内核端得到答案,而不是像RAM /键盘/鼠标那样从外围端得到答案

我将给你一个操作系统中确切的硬件依赖性的例子,“在上下文切换时(任务/线程的上下文应该仅在底层平台/CPU的帮助下存储)”。

__Kanu

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-09-25 03:46:08

通常,以下内容依赖于硬件:

针对代码访问和protection

  • Device互斥原语的
  • System security
  • Some内存管理和 I/O
    • 系统级保护。

在某种程度上,从某种程度上讲,操作系统内核需要建立在某些东西之上。大多数内核都是这样写的,它们与硬件接触的表面积尽可能小,但那里必须有一些接触点。

你可以用C编写内核的大部分(通常是这种情况)。但你需要在一些东西上运行。如果你对操作系统的定义稍加混淆,你可能会有一个依赖于硬件的“微内核”,并在其上构建许多上面的抽象,就像玩具操作系统一样,但你会在性能/准确性/复杂性方面受到影响。

票数 4
EN

Stack Overflow用户

发布于 2010-09-25 03:53:27

任何操作系统都至少依赖于一块硬件: CPU。有不同的CPU,每个CPU的工作方式不同,并且具有不同的“本地语言”。因为操作系统“只是一个需要在CPU上运行的程序”,所以它必须用CPU的本地语言编写,因此依赖于它。例如,你不能在ARM或PowerPC处理器上运行普通的视窗系统。它只能在英特尔兼容的CPU上运行。

可以编写一个可以针对不同CPU编译并在其上运行的操作系统,大多数UNIXes,如Linux、FreeBSD等都是很好的例子。但是需要为它们想要在其上运行的每个CPU进行编译(“翻译”)。

除了CPU,操作系统还需要一些方法来处理一些东西,所以它需要像硬盘或ROM、屏幕和键盘一样的输入和输出(但不一定;例如,电梯不需要真正的键盘,通常甚至不需要屏幕)。访问这些设备有各种不同的方法,操作系统依赖于这些方法(例如,像PCI总线这样的总线系统,或者像用于串行端口的16550这样的专用芯片)。

票数 4
EN

Stack Overflow用户

发布于 2010-09-25 03:44:35

从内存管理到计时器(调度),从网络到视频,再到键盘,再到BIOS,几乎所有关于操作系统的东西都在某种程度上依赖于硬件。所有这些都需要依赖于硬件的C代码和/或汇编。

这并不意味着你不能提取出很多在不同架构之间共享的通用C代码。Linux就是一个典型的例子。它已经被移植到大量的硬件平台上,每个平台都需要定制代码。然而,仍然有大量的共享C代码(例如文件系统驱动程序)。

当然,即使是ANSI C的部分也只能在你的硬件上运行,前提是你的编译器可以针对它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3790419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档