一、CPU如何执行程序?

提纲

  • 图灵机工作方式
  • 冯诺依曼模型
  • 线路位宽CPU位宽
  • 程序执行基本过程
  • 执行具体过程

1. 图灵机工作方式

图灵机可以视作“一台带规则的自动草稿机”
在这里插入图片描述
图灵机基本组成:

  • 纸带(内存):连续格子组成,每个格子写入字符,纸带好比内存,格子上的字符好比内存中的程序与数据;

  • 读写头:一支笔,能读格子、改符号、左右移动。

  • 状态表:一本规则手册,

  • 控制器:负责对照规则表,自动执行上面操作。

  • 工作过程:循环 “看→改→移→换状态”
    从 初始状态 开始,重复以下步骤:

  • ① 读:读写头看当前格子的符号(比如 1);

  • ② 查规则:根据当前状态和符号,查状态表,得到三个指令(改什么符号、往哪移、变啥状态);


  • 改 + 移:按指令改符号、移动读写头; ④ 换状态:切换到新状态,回到步骤①,直到碰到 终止状态 停下。

总的来说,图灵机计算1+2的过程。图灵机的主要功能就是读取纸带格子中的内容,交给控制单元识别字符是数字还是运算符,如果是数字存入状态器,如果是运算符,则通知运算符单元读取状态中的数值进行计算,计算结果最终返回给读写头,读写头将结果写入到纸袋的格子中。

2.冯诺依曼模型

1945年冯诺依曼遵循图灵机设计,提出用电子元件构建计算机,并约定二进制进行计算和存储。

冯诺依曼计算机基本结构有5个重要部分,运算器、控制器、存储器、输入设备和输出设备。

在这里插入图片描述
运算器、控制器是在中央处理器中,存储器就是内存,输入输出都是计算机外设,比如鼠标键盘是输入设备,显示器是输出设备。

在这里插入图片描述

内存

计算机的程序和数据都存储在内存中,存储基本单位是字节(byte),1字节等于8位(8 bit)。每个字节对应一个内存地址。

存储区域线性,指内存地址从0开始编号,自增排序,类似数组,最后一个地址为内存总字节数-1,因此内存读写任何一个数据的速度是一样的。

中央处理器

中央处理器即CPU,32位CPU和64位CPU区别在于一次能计算多少字节数据:

  • 32位CPU一次可以计算4字节;
  • 64位CPU一次可以计算8字节;
    32 位和 64 位,通常称为 CPU 的位宽,代表的是 CPU 一次可以计算(运算)的数据量。

32 位和 64 位,通常称为 CPU 的位宽,代表的是 CPU 一次可以计算(运算)的数据量。如果是 8 位的 CPU,那么一次只能计算 1 个字节(0-255)范围内的数值,这样就无法完成一次10000 * 500

总线

输入输出

Linux内核 vs Windows内核

内核

内核是什么?[应用与硬件设备交互的中间桥梁]

计算机由外部硬件设备构成,CPU、内存、硬盘等,如果每个应用都要和这些硬件对接通信协议就太麻烦!所以需要一个“中间人”,统一对接应用和计算机硬件。内核就是应用连接硬件设备的桥梁,应用只关心如何与内核交互,不用关心硬件细节!
在这里插入图片描述

内核有什么能力?

  • 进程调度:
    • 管理进程线程,决定哪个进程线程用CPU;
  • 内存管理:
    • 管理内存,决定内存分配与回收;
  • 硬件通信:
    • 管理硬件设备,为进程与硬件设备之间提供通信功能;
  • 系统调用:
    • 提供系统调用,如果应用程序需要运行更高权限的服务,就需要用到系统调用,是用户程序与操作系统之间的接口;

内核如何工作?

内核权限高,可以直接控制CPU、内存、硬盘等硬件设备,而应用程序权限很小,因此操作系统把内存分为两个区域:

  • 内核空间:这个内存空间只有内核程序可以访问。
  • 用户空间:这个内存空间专门给应用程序使用;

内核空间的代码可以访问所有内存空间,用户空间的代码只能访问一个局部的内存空间。

因此,当程序使用用户空间的时候,我们称该程序在用户态执行;程序使用内核空间时,程序在内核态运行。

应用程序如果需要进入内核空间,就需要系统调用实现:
在这里插入图片描述
系统调用与中断:
正常情况下,内核程序执行在内核态,用户程序执行在用户态。当应用程序使用系统调用时,会产生一个中断,发送中断后,CPU会中断当前执行中的用户程序,转而跳转到中断处理程序,也就是开始执行内核程序,内核程序处理完毕后,主动触发中断,把CPU执行权限交回用户程序,回到用户态继续工作。

Linux的设计

Linux诞生于1991年,芬兰小伙子C语言实现。

Linux设计理念:

  • MultiTask,多任务;
  • SMP,对称多处理;
  • ELF,可执行文件链接格式;
  • Monolithic Kernel,宏内核;

MultiTask

Linux是个多任务操作系统,可以有多个任务同时(并发 / 并行)进行。

  • 并发:单核CPU,轮流处理多个任务,每个任务处理一段时间就切换执行另一个任务,宏观上同时处理多个任务;
  • 并行:多核CPU,多个CPU核心真正同时处理多个任务;

SMP

Linux具有对称多处理特性,代表每个CPU地位相等,具体的:

  • 资源使用权限相同;
  • 多CPU共享同个内存;
  • 每个CPU都可以访问完整的内存和硬件资源;

不存在Linux某个程序单独服务某个应用或者内核程序,每个程序都可以被分配到任意一个CPU执行。

ELF

ELF(Executable and Linkable Format,可执行与可链接格式)是 Linux 系统中最常用的二进制文件格式,简单说,它就像一个 “统一的包装盒”,能装下程序编译、链接、运行过程中需要的各种二进制数据(比如代码、数据、符号等),并且让系统和工具(编译器、链接器、操作系统)能 “看懂” 里面的内容。

在这里插入图片描述
它的核心特性可以通俗理解为:

  1. “一包多用” 的通用性
  • 同一个格式能装多种类型的文件:比如编译中间产生的目标文件(.o)、最终能直接运行的可执行文件、共享库(.so,类似 Windows 的.dll),甚至程序崩溃时的核心转储文件(core dump)。不用为不同类型的二进制文件设计多种格式,简化了系统处理逻辑。
  1. “结构化打包” 的灵活性

ELF 文件内部像 “分层抽屉”:

  • 最外层有个 “标签页”(ELF头部),记录文件类型(是可执行文件还是库)、适配的 CPU 架构(x86/ARM 等)、入口地址(程序从哪开始跑)等关键信息。
  • 里面的内容按 “用途” 分区域放:比如
    “代码区”(.text,存程序指令)、“数据区”(.data,存初始化的变量)、“符号表”(.symtab,存函数 /
    变量的名字和地址)等。 这些区域在 “打包”(链接阶段)时按 “节(Section)” 划分,在 “拆包运行”(加载到内存)时按
    “段(Segment)” 划分,既方便编译器链接,又方便操作系统加载到内存。
  1. “跨设备兼容” 与 “可扩展”
    它不挑 CPU 架构,只要在 “标签页” 里注明适配的架构(比如 x86 或 ARM),不同设备都能识别。而且如果以后有新需求(比如加新类型的数据),可以在 “抽屉” 里加新的区域,不影响原有结构,扩展性很强。
  2. “按需加载” 的动态链接支持
    比如我们写程序时用了系统库(如 printf 函数),ELF 能让程序不把库代码 “打包”
    进自己的文件里,而是在运行时通过 “动态链接器”(类似 “快递员”)临时加载系统里的共享库(.so)。这样既节省内存(多个程序共用一个库),又方便库更新(改库不用重新编译所有程序)。
  3. “清晰的符号管理” 程序里的函数名、变量名(比如 “add 函数”“count 变量”),在 ELF 里会被记录在 “符号表” 中,像 “通讯录” 一样,告诉编译器 / 链接器 “这个名字对应哪个地址”,确保程序运行时能正确找到要用的函数或变量。

总之,ELF 的核心是 “统一、灵活、兼容”,让 Linux 系统里的二进制文件从编译到运行的全流程都能被高效处理,是 Linux 程序能正常工作的 “幕后功臣”。

ELF 文件有两种索引,Program header table 中记录了运行时所需要的段,而Section header table 记录了二进制文件中的各个段的首地址。

ELF如何生成?

我们编写的代码,首先通过编译器编译成汇编代码,接着通过汇编器编程目标代码,也就是目标文件,最后通过链接器把多个目标文件以及调用的各自函数库链接起来,形成可执行文件即ELF。

ELF如何被执行呢?

执行ELF文件时,会通过装载器把ELF文件装载在内存中,CPU读取内存中的指令和数据,程序就被执行起来了。

Monolithic Kernel

Monolithic Kernel 即宏内核,是操作系统内核一种经典架构:把操作系统所有核心功能(比如进程管理、内存分配、文件系统、设备驱动、中断处理等)都打包在一个单一的内核程序里,并且认为它们都运行在最高权限的“内核态”。

宏内核的核心特征:

  • “大一统”结构:不像微内核(Microkernel)那样把功能拆成多个独立模块,宏内核里所有关键组件都 “挤” 在同一个内存空间里,彼此直接通信(比如函数调用),不需要复杂的跨进程交互。
  • 效率优先:因为组件间通信直接,没有额外的权限切换或消息传递开销,所以性能通常比较高(比如进程调度、内存访问更快)。
  • 依赖内核态特权:所有核心功能都运行在 “内核态”(操作系统的最高权限模式),能直接访问硬件资源,省去了用户态与内核态切换的成本。

优缺点:

  • 优点:性能好,响应快,适合对效率敏感的场景(比如服务器、桌面系统)。
  • 缺点:内核体积大、结构复杂,修改或维护某个功能(比如加一个新设备驱动)可能需要重新编译整个内核;而且一个组件出问题(比如驱动崩溃)可能导致整个内核崩溃。

与之相对的是微内核(Microkernel)
核心思路是极简核心+外部服务:
只把操作系统最底层、最必要的功能(进程调度、内存基础管理、进程之间消息传递)放进内核态,其他功能(文件系统、设备驱动、网络协议)都做成独立的服务进程,跑在用户态。

混合内核(Hybrid Kernel)
核心思路是“取两者之长”:
保留微内核的精简核心框架,但是把一些常用的关键服务(文件系统、设备驱动)挪到内核态,减少消息传递的开销。

既不会像微内核那样,所有非核心功能都在用户态,可以避免性能损失。也不会像宏内核那样所有功能都挤在核内,保证了一定模块化。

  • 优点:平衡了模块化设计与性能需求;

Windows设计

当今Windows7/10使用的内核叫做Windows NT,全称New Technology。

在这里插入图片描述
与Linux异同点:

  • 相同:
    • 多任务
    • 对称多处理
  • 不同:
    • 混合型内核:
    • 可执行文件:PE,可移植执行文件

在这里插入图片描述

总结

内核架构:

  • 宏内核:包含多个模块,整个像一个完整的程序都运行在内核态。
  • 微内核:有一个最小版本的内核只负责最重要的功能,一些模块和服务则有用户态管理。
  • 混合内核:是宏内核和微内核的结合,内核中抽象出了微内核的概念,也就是内核中有一个小型的内核,其他模块在这个基础上搭建,整个内核就是个完整的程序。

Linux采用了宏内核设计,Windows采用了混合内核设计。

两个操作系统的可执行文件是最大差异,Linux是ELF,Windows是PE.

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQLite与MySQL:嵌入式与客户端-服务器数据库的权衡

SQLite与MySQL:嵌入式与客户端-服务器数据库的权衡 在开发应用程序时,数据库选择是一个至关重要的决策,它会影响应用的性能、可扩展性、部署难度和维护成本。SQLite和MySQL是两种广泛使用的关系型数据库管理系统,它们各自针对不同…

CppCon 2018 学习:Smart References

“强类型别名”(strong typedefs) 的动机和实现,配合一个简单例子说明: 动机(Motivation) 用 using filename_t string; 和 using url_t string; 来区分不同的字符串类型(比如文件名和网址&…

高性能高准确度的CPU电压与温度监测软件HWInfo

🖥️ 一、软件概述 Windows版:图形化界面,支持实时监控(温度、电压、风扇转速等)、基准测试及报告生成,兼容Windows XP至Windows 11系统。Linux版:命令行工具,由openSUSE社区维护&a…

H3C WA6322 AP版本升级

1、查看当前版本:R2444P01 2、官网下载升级文件: WA6300系列版本说明H3C WA6300系列(适用于WA6330、 WA6322、WA6320H、WA6320、 WTU630H、WTU630、WA6330-LI、WA6320-C、WA6320-D、WA6320H-LI、WA6338、WA6322H、WTU632H-IOT、WAP922E、WAP923、WA6320…

用 YOLOv8 + DeepSORT 实现目标检测、追踪与速度估算

【导读】 目标检测与追踪技术是计算机视觉领域最热门的应用之一,广泛应用于自动驾驶、交通监控、安全防护等场景。今天我们将带你一步步实现一个完整的项目,使用YOLOv8 DeepSORT实现目标检测、追踪与速度估算。>>更多资讯可加入CV技术群获取了解…

Python实例题:基于 Python 的简单聊天机器人

Python实例题 题目 基于 Python 的简单聊天机器人 要求: 使用 Python 构建一个聊天机器人,支持以下功能: 基于规则的简单问答系统关键词匹配和意图识别上下文记忆功能支持多轮对话可扩展的知识库 使用tkinter构建图形用户界面。实现至少 …

相机:Camera原理讲解(使用OpenGL+QT开发三维CAD)

相机为三维场景提供了灵活便捷的视角变换和交互能力,通过相机操作可以实现全方位、各角度的场景浏览。 怎样在三维场景中引入相机,怎样处理和实现视角的放缩、移动、旋转?在视角旋转时以指定目标为中心又该怎样处理? 原文&#…

开源的虚拟电厂预测数据:资源、应用与挑战

引言 虚拟电厂(Virtual Power Plant, VPP)是一种通过聚合分布式能源资源(如太阳能、风能、储能系统、电动汽车和可控负荷)来优化电力系统运行的数字化能源管理平台。准确的预测数据是虚拟电厂高效运行的关键,而开源数据为研究者和企业提供了低成本、高透明度的解决方案。…

IDE全家桶专用快捷键----------个人独家分享!!

给大家分享一下我个人整理的快捷键,其中包含对电脑的操作,以及在编写代码时的操作🚀Window系列1 WindowsR 开启运行对话框--->输入cmd启动黑窗口​2 WindowsE 快速打开我的电脑 ​3 WindowsL 电脑锁屏 ​4 WindowsD 显示/恢复桌面 ​5 Win…

人工智能概念:RNN中的基础Encoder-Decoder框架

文章目录一、序列(Seq2Seq)转换的核心架构二、Encoder-Decoder框架基础原理2.1 整体工作流程2.2 编码器(Encoder)详解2.3 解码器(Decoder)工作机制与缺陷三、基础框架的核心缺陷分析(以"欢…

R 列表:深入解析与高效应用

R 列表:深入解析与高效应用 引言 在R语言中,列表(List)是一种非常重要的数据结构,它允许我们将不同类型的数据组合在一起。列表在数据分析和统计建模中扮演着至关重要的角色。本文将深入探讨R列表的概念、创建方法、…

uniapp 国密sm2加密

1. uniapp 国密sm2加密 在uniapp中使用国密SM2算法进行加密解密,你可以通过安装第三方库miniprogram-sm-crypto来实现。这个库提供了SM2、SM3和SM4算法的实现,可以在小程序和uniapp项目中使用。 1.1. 安装miniprogram-sm-crypto 首先,你需要…

07_持续集成与部署:DevOps的核心引擎

07_持续集成与部署:DevOps的核心引擎 引言 在快速迭代的软件开发时代,持续集成(CI)与持续部署(CD)已成为企业提升竞争力的关键。通过自动化构建、测试和部署流程,CI/CD能够显著缩短交付周期,提高软件质量,降低发布风险。本文将深入探讨CI/CD的核心理念、实施路径与最…

电脑休眠设置

Dont Sleep的意思就是“不要睡觉”,用在电脑里就是“阻止休眠”的意思。但这款软件其实有“阻止休眠”和“允许休眠”两个功能。 阻止休眠时可以选择事件,是计时器、电池、CPU、网络这几个事件进行触发阻止休假的功能。 允许休眠也可以根据自己的需求进行…

蓝牙墨水屏上位机学习(3)

main.js中sendimg()函数学习,对应发送图片按钮函数代码如下:async function sendimg() {const canvasSize document.getElementById(canvasSize).value;const ditherMode document.getElementById(ditherMode).value;const epdDriverSelect document.…

Linux应用基础

1. 基础概念 1.1 系统调用 系统调用实际上是Linux内核为上层应用程序提供的API接口,方便应用程序进行调用,类似于SVC。 1.2 库函数 库函数是应用层里边的东西,在系统调用的上层,通常以动态库文件(.so)形式…

【时间序列数据处理的噩梦与救赎:一次复杂数据可视化问题的深度复盘】

时间序列数据处理的噩梦与救赎:一次复杂数据可视化问题的深度复盘 创建时间: 2025/7/3 技术栈: Vue 3 TypeScript UniApp ECharts 问题级别: 🔴 系统性架构问题 🎯 引言:当简单需求变成技术噩梦 “老哥,这个图表时…

Redis--黑马点评--基于stream消息队列的秒杀优化业务详解

基于redis的stream结构作为消息队列,实现异步秒杀下单 需求: 创建一个Stream类型的消息队列,名为stream.oreders 修改之前的秒杀下单Lua脚本,在认定有抢够资格后,直接向stream.orders中添加消息,内容包括…

Zephyr RTOS 防止中断影响数据写入

目录 概述 1 中断保护核心策略 1.1 中断锁定/解锁 (IRQ Locking) 1.2 自旋锁 (Spin Locks) 2 高级保护技术 2.1 双重缓冲技术 2.2 RCU (Read-Copy-Update) 模式 3 中断安全数据写入模式 3.1 FIFO队列保护 3.2 原子操作保护 4 性能优化策略 4.1 分区数据保护 4.2 中断…

Hinge×亚矩云手机:以“深度连接”为名,重构云端社交的“真实感”

当传统婚恋社交应用困于“浅层匹配”“硬件性能瓶颈”与“信任成本高企”,当Z世代对“灵魂共鸣、沉浸体验、隐私安全”的需求愈发迫切,以“设计让你删除的应用”为理念的Hinge,正携手亚矩云手机开启一场“云端深度社交革命”——用云端算力破…