为什么应用程序是特定于操作系统的?[计算机原理]

news2025/1/30 4:06:26

你把WINDOWS程序复制到MAC上使用,会发现无法运行。你可能会说,MAC是arm处理器,而WINDWOS是X86 处理器。但是在2019年,那时候MAC电脑还全是Intel处理器,在同样的X86芯片上,运行MAC和WINDOWS 程序还是无法互相兼容。如果我们深入思考,这应该让我们感到困惑,因为可执行文件本质上是对于CPU的机器码。那问题就是:

为什么都是机器码,而不能迁移?

应用程序为何特定于操作系统的原因。即使两个操作系统使用相同的 CPU 架构,应用程序也可能无法在两个系统上运行。这是因为应用程序不仅与架构相关,还与操作系统相关。这是一个非常重要的结论,它告诉我们,虽然应用程序理论上是直接对于CPU的机器码,但是实际上受到在CPU上运行的操作系统的节制。那我们的程序,在什么时候,执行什么任务的时候,会和操纵系统相关呢?答案是系统调用(SYSTEM CALLS)的时候(聪明的同学可能已经明白怎么回事了,此事在LC3 TRAP陷入程序中亦有记载)就是
应用程序机器码 = 架构机器码 + 操作系统调用机器码 应用程序机器码=架构机器码+操作系统调用机器码 应用程序机器码=架构机器码+操作系统调用机器码
CPU 工作模式

在这里插入图片描述

CPU在现代计算系统中如此重要,如此处于关键地位。所有的程序的执行都要依赖它,这也意味着那些愚笨的程序员,或则恶意的程序员写的代码,如果也一字不落的执行,会对整个计算机系统造成重大危害。所以CPU有两种工作模式: 内核模式(KERNAL MODE) 和 用户模式(USERMODE)

在内核模式的时候,CPU被赋予了超级权限,它可以执行指令集中的全部内容。这样他可以完成如下功能:IO,操作计时器,读取内存。 (诸如此类的硬件操作

而用户模式之下,CPU只会执行它的指令集的子集。完成基本的数据移动,复制,条件和循环。这些指令很有用,但是在很多时候不能满足和硬件交互的需求。

你或许已经明白操作系统工作在内核模式,而普通的应用程序工作在用户模式

当普通的应用程序需要和硬件进行交互的时候。就会调用操作系统提供的接口。即操作系统调用。这个时候CPU的工作模式就会从用户模式转换为内核模式。将那些比较危险的操作(内存泄漏之类的啊嗯)代有操作系统完成。

操作系统的特殊接口

可以想见,操作系统通过系统调用提供服务,而这些系统调用通常是特定于操作系统的。所以应用程序基本都是特定于操作系统的。此外,可执行文件的格式也是引发兼容性问题的一个重要因素。操作系统对程序的结构和加载方式有特定的规则,以确保可执行文件的正确运行。此外,运行时环境也是影响因素之一某些编程语言在虚拟机或解释器上运行,使得代码能够跨平台运行。然而,这也带来了兼容性问题。

还有一个重要的原因,就是可执行文件格式,程序不光包含机器码,还有数据(比如运行时需要展示的字符串,图片,音频什么的)不同的操作系统把这些资源和机器码的打包方式和读取方式是不一样的,LINUX使用ELF(可连接和可执行文件格式)WINDOWS使用的PE格式(便携式可执行文件格式)。这也是一大因素,不过,不是我们今天讲的主要内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2285243.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多项日常使用测试,带你了解如何选择AI工具 Deepseek VS ChatGpt VS Claude

多项日常使用测试,带你了解如何选择AI工具 Deepseek VS ChatGpt VS Claude 注:因为考虑到绝大部分人的使用,我这里所用的模型均为免费模型。官方可访问的。ChatGPT这里用的是4o Ai对话,编程一直以来都是人们所讨论的话题。Ai的出现…

什么是循环神经网络?

一、概念 循环神经网络(Recurrent Neural Network, RNN)是一类用于处理序列数据的神经网络。与传统的前馈神经网络不同,RNN具有循环连接,可以利用序列数据的时间依赖性。正因如此,RNN在自然语言处理、时间序列预测、语…

Flink运行时架构

一、系统架构 1)作业管理器(JobManager) JobManager是一个Flink集群中任务管理和调度的核心,是控制应用执行的主进程。也就是说,每个应用都应该被唯一的JobManager所控制执行。 JobManger又包含3个不同的组件。 &am…

网络工程师 (6)操作系统概述

一、操作系统的定义 (一)基本定义 操作系统(Operating System,简称OS)是计算机系统中至关重要的基础性系统软件。它是计算机硬件与上层软件之间的桥梁,负责管理和控制整个计算机系统的硬件和软件资源&…

【2025年数学建模美赛C题】第1-5问F奖解题思路+高级绘图+可运行代码

基于多模型分析的奥运会奖牌预测与影响因素研究 解题思路一、问题重述二、问题分析三、模型假设与符号说明四、数据预处理五、奖牌榜预测5.1 基于LSTM长短期记忆循环神经网络的预测模型的建立5.2 模型预测结果 六、首枚奖牌预测6.1 BP神经网络的建立6.2 模型预测结果 七、各国奖…

RoboMaster- RDK X5能量机关实现案例(一)识别

作者:SkyXZ CSDN:https://blog.csdn.net/xiongqi123123 博客园:https://www.cnblogs.com/SkyXZ 在RoboMaster的25赛季,我主要负责了能量机关的视觉方案开发,目前整体算法已经搭建完成,实际方案上我使用的上…

检测到联想鼠标自动调出运行窗口,鼠标自己作为键盘操作

联想鼠标会自动时不时的调用“运行”窗口 然后鼠标自己作为键盘输入 然后打开这个网页 (不是点击了什么鼠标外加按键,这个鼠标除了左右和中间滚轮,没有其他按键了)

星火大模型接入及文本生成HTTP流式、非流式接口(JAVA)

文章目录 一、接入星火大模型二、基于JAVA实现HTTP非流式接口1.配置2.接口实现(1)分析接口请求(2)代码实现 3.功能测试(1)测试对话功能(2)测试记住上下文功能 三、基于JAVA实现HTTP流…

如何将电脑桌面默认的C盘设置到D盘?详细操作步骤!

将电脑桌面默认的C盘设置到D盘的详细操作步骤! 本博文介绍如何将电脑桌面(默认为C盘)设置在D盘下。 首先,在D盘建立文件夹Desktop,完整的路径为D:\Desktop。winR,输入Regedit命令。(或者单击【…

java 判断Date是上午还是下午

我要用Java生成表格统计信息,如下图所示: 所以就诞生了本文的内容。 在 Java 里,判断 Date 对象代表的时间是上午还是下午有多种方式,下面为你详细介绍不同的实现方法。 方式一:使用 java.util.Calendar Calendar 类…

C语言------数组从入门到精通

1.一维数组 目标:通过思维导图了解学习一维数组的核心知识点: 1.1定义 使用 类型名 数组名[数组长度]; 定义数组。 // 示例: int arr[5]; 1.2一维数组初始化 数组的初始化可以分为静态初始化和动态初始化两种方式。 它们的主要区别在于初始化的时机和内存分配的方…

FLTK - FLTK1.4.1 - 搭建模板,将FLTK自带的实现搬过来做实验

文章目录 FLTK - FLTK1.4.1 - 搭建模板,将FLTK自带的实现搬过来做实验概述笔记my_fltk_test.cppfltk_test.hfltk_test.cxx用adjuster工程试了一下,好使。END FLTK - FLTK1.4.1 - 搭建模板,将FLTK自带的实现搬过来做实验 概述 用fluid搭建UI…

DeepSeek学术写作测评第二弹:数据分析、图表解读,效果怎么样?

我是娜姐 迪娜学姐 ,一个SCI医学期刊编辑,探索用AI工具提效论文写作和发表。 针对最近全球热议的DeepSeek开源大模型,娜姐昨天分析了关于论文润色、中译英的详细效果测评: DeepSeek学术写作测评第一弹:论文润色&#…

Direct2D 极速教程(2) —— 画淳平

极速导航 创建新项目:002-DrawJunpeiWIC 是什么用 WIC 加载图片画淳平 创建新项目:002-DrawJunpei 右键解决方案 -> 添加 -> 新建项目 选择"空项目",项目名称为 “002-DrawJunpei”,然后按"创建" 将 “…

在win11系统笔记本中使用Ollama部署deepseek制作一个本地AI小助手!原来如此简单!!!

大家新年好啊,明天就是蛇年啦,蛇年快乐! 最近DeepSeek真的太火了,我也跟随B站,使用Ollama在一台Win11系统的笔记本电脑部署了DeepSeek。由于我的云服务器性能很差,虽然笔记本的性能也一般,但是…

【Super Tilemap Editor使用详解】(十五):从 TMX 文件导入地图(Importing from TMX files)

Super Tilemap Editor 支持从 TMX 文件(Tiled Map Editor 的文件格式)导入图块地图。通过导入 TMX 文件,你可以将 Tiled 中设计的地图快速转换为 Unity 中的图块地图,并自动创建图块地图组(Tilemap Group)。以下是详细的导入步骤和准备工作。 一、导入前的准备工作 在导…

低代码系统-产品架构案例介绍、明道云(十一)

明道云HAP-超级应用平台(Hyper Application Platform),其实就是企业级应用平台,跟微搭类似。 通过自设计底层架构,兼容各种平台,使用低代码做到应用搭建、应用运维。 企业级应用平台最大的特点就是隐藏在冰山下的功能很深&#xf…

python:taichi 绘制太极图

安装 pip install taichi pip install opencv-python pycairo where ti # -- taichi 高性能可视化 Demo 展览 ti gallery D:\Python39\Lib\site-packages\taichi\examples\algorithm\circle-packing\ 点击图片,执行 circle_packing_image.py 可见 编写 taijitu.py 如…

Linux(19)——使用正则表达式匹配文本

新年快乐! 目录 一、正则表达式: 二、通过 grep 匹配正则表达式: 三、查找匹配项: 一、正则表达式: 正则表达式使用模式匹配机制查找特定内容,vim、grep 和 less 命令都可以使用正则表达式,P…

USB 3.1-GL3510-52芯片原理图设计

USB 3.1-GL3510-52芯片原理图设计 端口功能与兼容性物理层集成与性能电源相关特性充电功能其他特性原理图接口防护ESD 保护要求 GL3510-52是一款由Genesys Logic(创惟科技)研发的USB转换芯片,具有以下特点: 端口功能与兼容性 它…