深入理解OS--漫游,流水线,汇编
计算机系统漫游编译过程1.预先处理阶段宏展开#include展开得到文本表示的.i文件2.编译阶段转换为汇编表示的.s文件3.汇编阶段转换为二进制机器指令表示的.o文件4.链接阶段链接得到可执行二进制指令文件系统的硬件组成1.总线常被设计为传送定长的字节块称为字。总线有各种类型不同类型有不同作用。系统总线内存总线I/O总线。2.桥连接不同类型总线。cpu直连系统总线通过io桥分别连接内存总线i/o总线。3.I/O设备每个I/O设备通过一个设备控制器嵌入到系统或适配器可插拔与I/O总线相连4.主存物理上由一组动态随机存取存储器芯片组成逻辑上一个线性的字节数组每个字节有唯一地址5.处理器解释或执行存储在主存中指令的引擎处理器按指令模型操作模型由指令集架构决定。5.1.处理器位宽总线位宽32 位和 64 位 CPU 最主要区别在于一次能计算多少字节数据(1).32 位 CPU 一次可以计算 4 个字节(2).64 位 CPU 一次可以计算 8 个字节这里的 32 位和 64 位通常称为 CPU 的位宽代表的是 CPU 一次可以计算运算的数据量。如果计算的数额不超过 32 位数字的情况下32 位和 64 位 CPU 之间没什么区别的只有当计算超过 32 位数字的情况下64 位的优势才能体现出来。另外由于总线传输数据地址控制信息位宽一般等于CPU位宽故32位CPU最大只能寻址4GB内存。而64位CPU寻址范围则很大理论最大的寻址空间为2^64。5.2.软件位宽64 位和 32 位软件实际上代表指令是 64 位还是 32 位的。64位指令可以使用64位寄存器支持64位宽的运算指令。(1).如果 32 位指令在 64 位机器上执行需要一套兼容机制就可以做到兼容运行了。但是如果 64 位指令在 32 位机器上执行就比较困难了因为 32 位的寄存器存不下 64 位的指令(2).操作系统其实也是一种程序我们也会看到操作系统会分成 32 位操作系统、64 位操作系统其代表意义就是操作系统中程序的指令是多少位比如 64 位操作系统指令也就是 64 位因此不能装在 32 位机器上。6.寄存器文件一个小的存储设备由一些单个字长的寄存器组成每个寄存器有唯一的名字指令集架构描述的是每条机器代码指令的效果微体系结构描述的是处理器实际如何实现存储器层次结构操作系统管理硬件所有应用程序对硬件的操作尝试必须通过操作系统基本功能1.防止硬件被失控的应用程序滥用2.向应用程序提供简单一致的机制来控制低级硬件设备进程并发运行一段时间内交替运行并行运行同一时刻同时运行。上下文操作系统保持跟踪进程运行所需的所有状态信息上下文切换操作系统把控制权从当前进程转移到另一进程时发生具体动作保存当前进程的上下文恢复新进程的上下文将控制权传递到新进程管理方系统内核操作系统代码常驻内存的部分线程作为执行单元。同一进程的多个线程在进程上下文运行共享同样的代码和全局数据虚拟内存每个进程有一个虚拟地址空间。mmap堆区域增长方向实际上是可配置的。下图为向上增长。文件文件就是字节序列设备都可看成是文件系统间利用网络通信多核多线程多核将多个CPU集成到一个集成电路芯片上超线程多线程允许一个CPU执行多个控制流指令级并行处理器同时执行多个指令超标量处理器可达到比一个周期一条指令更快的执行速率单指令多数据并行一个执行操纵多个目标数据汇编不同机器对应不同汇编语言。本部分介绍基于x84-64的汇编语言。寄存器1.PC 下条指令在内存中的地址2.整数寄存器文件含16个命名的位置分别存64位值。3.条件码寄存器4.一组向量寄存器16组寄存器介绍6432168描述%rax%eax%ax%al%rbx%ebx%bx%bl%rcx%ecx%cx%cl%rdx%edx%dx%dl%rsi%esi%si%sil%rdi%edi%di%dil%rbp%ebp%bp%bpl%rsp%esp%sp%spl%r8%r8d%r8w%r8b%r9%r9d%r9w%r9b%r10%r10d%r10w%r10b%r11%r11d%r11w%r11b%r12%r12d%r12w%r12b%r13%r13d%r13w%r13b%r14%r14d%r14w%r14b%r15%r15d%r15w%r15b指令源数据1.常数2.取自寄存器3.取自内存指令结果存储1.寄存器2.内存寻址模式Imm(rb, ri, s)对应的有效地址为ImmR[rb] R[ri] * s例子操作数数值描述$ImmImm数值为ImmraR[ra]数值在寄存器ra内(ra)M[R[ra]]从寄存器ra内取地址从地址所在内存处取值Imm(rb, ri, s)M[ImmR[rb]R[ri]*s]计算地址为ImmR[rb]R[ri]*s再从地址所在内存处取值程序的用户栈从栈底逐渐扩展。扩展方向是虚拟地址不断减少的方向。指向栈顶对象的虚拟地址小于指向栈底对象的虚拟地址。条件码寄存器标志位意义描述CF进位标志最近的操作是否让最高位产生了进位ZF零标志最近的操作得出的结果为0SF符号标志最近的操作得到的结果为负数OF溢出标志最近的操作导致一个补码溢出局部数据需要放在内存的情形为了提升效率一般情况下局部变量存储在寄存器中。1.寄存器不足以存放所有本地数据2.对局部数据用了3.局部变量是数组或结构内存对齐任何k字节的基本对象的虚拟地址需要是k的倍数。汇编代码中使用.align x指明全局数据所需的对齐。举例structs2{inti;intj;charc;};structs2a;structs2d[4];为了保证任意s2类型实例中字段ij的地址可被sizeof(int)整除必须要求1.对i对象内偏移为0对j对象内偏移为4。2.对s2的实例对象对象起始地址需要可被4整除。进一步考虑s2类型数组下每个数组中对象实例起始地址需要可被4整除所以每个s2实例实际占据的内存尺寸是12字节。函数指针的值是该函数机器代码表示中第一条指令的地址。指令流水线指令分解指令分解描述取值PC地址处获取指令译码执行访存数据写入内存/从内存读数据写回写结果到寄存器文件更新PC顺序执行时的问题一个时钟周期需要足够大以使信号能在一个周期内传播所有阶段。流水线提高了系统单位时间内服务的顾客总数。对单个顾客可能会增加完成任务所需时间流水线的目的是每个时钟周期都发射一条新指令。需在取出当前指令后马上确定下条指令位置。数据相关下条指令会用到上条指令结果控制相关下条指令位置由上条指令确定用暂停来避免数据冒险转发【用上一指令计算中间数据作为本指令数据来源】综合使用暂停转发插入气泡【让已进行的指令变为无效】指令执行速度CPU 的硬件参数都会有GHz这个参数比如一个1GHz 的CPU指的是时钟频率是1G代表着1秒会产生1G次数的脉冲信号每一次脉冲信号高低电平的转换就是一个周期称为时钟周期。对于 CPU 来说在一个时钟周期内CPU 仅能完成一个最基本的动作时钟频率越高时钟周期就越短工作速度也就越快。一个时钟周期一定能执行完一条指令吗答案是不一定的大多数指令不能在一个时钟周期完成通常需要若干个时钟周期。但通过流水线技术基本可以做到每个时钟周期将一个新的指令投入运行。一个老的指令执行完其最后一个周期。内联在原本要调用函数的地方直接展开消除了函数调用的开销。提升程序性能设计时间复杂度良好的算法避免不必要的多次求值和函数调用减少不必要的内存访问对不可预测的分支采用条件传送代替分支预测循环展开技术利用时间局部性空间局部性

相关新闻

带薪快乐日记:用微信小程序记一笔「带薪快乐」

带薪快乐日记:用微信小程序记一笔「带薪快乐」

带薪快乐日记:用微信小程序记一笔「带薪快乐」一篇可公开的产品介绍 使用说明 技术片段。文中截图为示意稿,代码为脱敏示例,不含 AppID、云环境 ID、密钥或真实用户数据。这是什么? 带薪快乐日记(工程代号 HappyPoop…

2026/8/6 17:25:29 阅读更多 →
深入解析二极管指数I-V特性:从物理原理到工程实践

深入解析二极管指数I-V特性:从物理原理到工程实践

1. 从“开关”到“指数”:二极管正向特性的真实面貌 提起二极管,很多刚入行的电子工程师或者硬件爱好者的第一反应就是“单向导电”,把它想象成一个理想的电子开关:正向导通,反向截止。这个模型在分析数字电路、整流大…

2026/8/6 17:25:29 阅读更多 →
STM32-047X-STM32单片机智能交流电表047X-21(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_

STM32-047X-STM32单片机智能交流电表047X-21(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_

STM32-047X-STM32单片机智能交流电表047X-21(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_ 产品功能描述: 本系统由STM32F103C8T6单片机核心板、TFT1.44寸彩屏液晶显示电路、交流电压互感器TV1005M、交流电流互感器TA1005M、继电器…

2026/8/6 17:25:29 阅读更多 →

最新新闻

计算机毕业设计之基于Spring Boot的社区便民服务管理系统的设计与实现

计算机毕业设计之基于Spring Boot的社区便民服务管理系统的设计与实现

二十一世纪我们的社会进入了信息时代,信息管理系统的建立,大大提高了人们信息化水平。传统的管理方式对时间、地点的限制太多,而在线管理系统刚好能满足这些需求,在线管理系统突破了传统管理方式的局限性。于是本文针对这一需求设…

2026/8/6 18:06:47 阅读更多 →
计算机毕业设计之基于Spring Boot的社区垃圾分类管理平台的设计与实现

计算机毕业设计之基于Spring Boot的社区垃圾分类管理平台的设计与实现

近些年来,随着科技的飞速发展,互联网的普及逐渐延伸到各行各业中,给人们生活带来了十分的便利,社区垃圾分类管理平台利用计算机网络实现信息化管理,使整个社区垃圾分类管理的发展和服务水平有显著提升。本文拟采用Ecli…

2026/8/6 18:06:47 阅读更多 →
美匠作品集多模态踩坑系列|导读

美匠作品集多模态踩坑系列|导读

美匠作品集多模态踩坑系列|导读最近在做化妆师作品集与「以图搜妆」时,连续踩了几处坑:分类写死、异步打标写不进 category、淡妆被误杀、架构图被误放行、本地 URL 云端拉不到、服务没配 VL Key。本系列按问题拆短文,便于检索&am…

2026/8/6 18:06:47 阅读更多 →
Canguo Science 的学术 Skills 是怎么把模型输出变成规范 Word / PDF 的?(含代码)

Canguo Science 的学术 Skills 是怎么把模型输出变成规范 Word / PDF 的?(含代码)

科研工作流的最后一公里是"成稿"——把一堆分析结果、笔记、引用,拼成一份格式规范的 Word 或 PDF。这一步最磨人的不是写内容,而是排版、对齐引用、统一格式。Canguo Science 把它封装成了"学术 Skills":模型负责产出内…

2026/8/6 18:06:47 阅读更多 →
技术突破:ComfyUI-Manager实现企业级AI绘画工作流自动化管理

技术突破:ComfyUI-Manager实现企业级AI绘画工作流自动化管理

技术突破:ComfyUI-Manager实现企业级AI绘画工作流自动化管理 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable various…

2026/8/6 18:05:46 阅读更多 →
D2DX暗黑破坏神2高清补丁:3步实现60fps宽屏的终极指南

D2DX暗黑破坏神2高清补丁:3步实现60fps宽屏的终极指南

D2DX暗黑破坏神2高清补丁:3步实现60fps宽屏的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 还在忍受暗…

2026/8/6 18:05:46 阅读更多 →

日新闻

深入解析LimboAI C++内核:架构设计与性能优化实战

深入解析LimboAI C++内核:架构设计与性能优化实战

1. 项目概述:为什么我们需要深入LimboAI的C内核?如果你是一名使用Godot引擎的游戏开发者,尤其是对AI行为逻辑有较高要求的项目,那么LimboAI这个名字你大概率不会陌生。它作为Godot 4生态中一个备受瞩目的行为树与状态机插件&#…

2026/8/6 0:00:06 阅读更多 →
Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

1. 项目概述与核心思路大家好,我是老张,一个在游戏开发一线摸爬滚打了十多年的老码农。今天咱们接着聊《空洞骑士》风格2D动作游戏的Demo制作。上一期我们搭好了基础框架,处理了角色移动和碰撞,这一期,我们要让游戏世界…

2026/8/6 0:00:06 阅读更多 →
被动防火门市场前景发展趋势

被动防火门市场前景发展趋势

被动防火门依靠材质结构、密闭构造阻隔烟火蔓延,无需电控启动,是建筑被动消防系统核心构件,行业依托新规管控、城市更新、工业安全升级迎来稳定扩容,整体朝着合规化、专项化、低碳化、智能化方向发展。现阶段 GB12955‑2024 新版国…

2026/8/6 0:00:06 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/5 15:00:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/5 13:13:56 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/5 21:00:14 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →