96SEO 2026-02-19 10:23 0
缺点编译的时候就得知道哪段内存是空闲的但是在实际的系统中很难做到比如编译的时候1000处是空闲的但是执行的时候就不一定了。

编译时重定位的程序只能放在内存固定位置载入时重定位的程序一旦载入内存就不能动了
1.词法分析将源代码分解为词法单元tokens如标识符、关键字、运算符等。
3.语义分析检查语法树的语义正确性进行类型检查和语义规则验证。
4.中间代码生成生成中间表示形式如抽象语法树AST或中间代码。
6.目标代码生成将优化后的中间代码转换为目标机器的汇编代码或机器代码。
编译器负责执行以上步骤将源代码转换为可执行代码或可加载的目标文件。
编译产生的目标文件可能包含可执行代码、库函数、符号表等。
加载是将目标文件或可执行代码加载到内存中并执行的过程。
它包括以下步骤
1.内存分配为程序分配足够的内存空间包括代码段、数据段、堆和栈等。
2.符号解析解析目标文件中的符号表建立符号与内存地址之间的关联。
3.重定位如果目标文件中存在地址引用进行地址修正将相对地址转换为实际的内存地址。
5.初始化执行程序的初始化代码如全局变量的初始化、运行时库的初始化等。
加载器Loader负责执行以上步骤将目标文件加载到内存中并启动程序的执行
进程再执行过程中会发生变化不一定每次执行都放在同一块内存空间程序的基址存放在PCB中。
当一次运行时程序被放在内存1000的位置PCB中的base为1000换出再换入到地址2000的地方PCB中的base为2000。
执行指令时第一步
先从PCB中取出这个基地址。
基地址加上程序中的逻辑地址就得到了这条指令真正的物理地址。
找到空闲内存将这段空闲程序基地址放到PCB中然后将程序放入空闲内存
在编译过程中源代码会经过一系列的编译器处理其中的一个重要步骤是将源代码转换为可执行的机器代码。
这个过程中编译器会将程序按照功能或作用划分为不同的段通常包括代码段、数据段和堆栈段。
代码段包含程序的指令机器代码用于执行程序的操作。
在程序执行时代码段会被加载到内存中并按照指令的顺序依次执行。
数据段存储程序的静态变量和全局变量等数据。
这些变量在程序运行过程中会保持不变存储在数据段中的数据在整个程序执行期间都是可访问的。
堆栈段用于存储程序执行期间的局部变量、函数调用信息和函数返回地址等。
每当程序调用函数或进入一个新的作用域时相关的数据会被压入堆栈中当函数返回或作用域结束时相关数据会被弹出。
堆栈的管理由程序在运行时负责
操作系统对应的段表就是GDT表每个进程对应的段表是LDT表。
段表形式如下图所示
把程序分成多个段在内存中找到空闲的地方把段放进去记录这个段在内存中的基址放入LDT表把LDT表中赋给PCB将PC指针设为程序初值每次取值执行都去查LDT表根据LDT表找到该条指令的基址再加上程序中的偏移地址获得该条指令的物理地址。
一个程序分成多个段编译干的事儿在内存中找到一个空闲区域算法数据结构通过磁盘读写把程序载入进来设备驱动建立映射表和PCB关联进程管理
内存碎片太太多将空闲分区合并这个时候需要移动内存这个操作叫内存紧缩在这个过程中计算机中其他进程也无法运行。
内存紧缩需要花费大量的时间如果复制速度1M/1秒则1G内存的紧缩时间为1000秒。
内存紧缩管理内存碎片太消耗时间了在实际情况中不可行。
让面包没有谁都不想要的碎末——将面包分成片类比可以将内存分成页。
将每个段分页并编页号将每页放入空闲的页面中并将页框号与段页号的对应关系放入页表中当CPU取值执行时根据页表和程序中的偏移地址找到该条指令的物理地址。
如果用一个变量标识该页有没有使用用到的逻辑页才有页表项页表中的页号不连续就需要比较、查找、折半降低效率。
如果页表连续只需要一次查找就能找到需要的页。
页表是一个数据结构用于存储虚拟地址和物理地址之间的映射关系。
页表中的每一项存储了一个虚拟页号到物理页框号的映射。
虚拟内存是计算机操作系统中的一种技术它提供了一种抽象的、相对较大的内存空间使得程序可以访问比物理内存更大的地址空间。
虚拟内存的主要目的是扩展计算机系统的内存容量使得运行大型程序和处理大量数据时更加高效。
它通过将物理内存和硬盘上的存储空间结合起来创建一个逻辑上连续且更大的地址空间供程序使用。
在虚拟内存的机制下每个程序都被分配了一块连续的虚拟内存空间该空间被划分为固定大小的块称为页面或页。
物理内存也被划分为与页面大小相同的块称为物理页面或页框。
当程序需要访问虚拟内存中的某个页面时操作系统会将该页面从硬盘加载到物理内存中的一个空闲页框中并建立虚拟内存与物理内存之间的映射关系。
虚拟内存的使用带来了以下几个主要的好处
1.内存扩展虚拟内存使得程序能够使用比实际物理内存更大的地址空间从而能够运行更大的程序或处理更多的数据。
2.内存隔离每个程序都有自己独立的虚拟内存空间相互之间不会干扰。
这提供了更好的安全性和稳定性一个程序的崩溃不会影响其他程序的运行。
3.虚拟内存管理操作系统负责管理虚拟内存和物理内存之间的映射关系根据程序的需求进行页面的加载和卸载。
它可以将不常用的页面置换交换到硬盘上从而释放物理内存供其他程序使用。
4.内存保护虚拟内存允许操作系统为每个页面设置访问权限例如只读、读写、执行等。
这样可以防止程序对其它程序或操作系统的内存空间进行非法访问。
找到空闲段把段程序“假装”放在虚拟内存上建立段表在物理内存中找空闲页建立页表利用重定位使用内存
假设虚拟内存有4G大小但是对应的实际物理内存只有1G大小如何给用户大内存的感觉呢
用过去的历史预测将来。
LRU选最近最长一段时间没有使用的页淘汰最近最少使用。
缺点每次地址访问都需要修改时间戳需要维护一个全局的时钟找到最小值实现代价较大。
维护一个页码栈
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback