操作系统需要完成抽象逻辑地址空间,保护独立地址空间,提供可以访问共享的内存空间,还需要根据程序运行场景虚拟出更多的地址空间这4步。

在操作系统中管理内存的方法包括:程序重定位、分段、分页、虚拟内存、按需分页虚拟内存等。

一、地址空间 和地址的生成

地址空间分为两种,一种是物理地址空间,它的地址空间和内存条代表的主存,硬盘代表的外村是直接映射的关系。第二种是逻辑地址空间,指的是应用程序所能看到的地址空间,它是一维的,由十六位数字表示。所有逻辑地址空间都会落实在一个物理地址空间上,这个映射规则由操作系统完成。

1)逻辑地址的生成

以Linux下的GCC的编译过程为例gcc的编译过程分为三步:

第一步将  文件1.c  文件2.c   文件3.c 分别通过编译器解析成汇编语言   文件1.s  文件2.s   文件3.s     。    可执行命令   gcc  -S  文件1.s  文件2.s   文件3.s    只激活预处理,和编译

第二步将   文件1.s  文件2.s   文件3.s 分别通过汇编器  文件1.o  文件2.o   文件3.o      。     可执行命令   gcc  -c  文件1.s  文件2.s   文件3.s    只激活预处理,和编译和汇编,生成obj目标代码文件

第三步将这些文件通过链接器生成 out 的可执行文件 如果不想编译出来成  a.out 名字            可执行命令   gcc -o  新文件名   待编译文件名

合成a.out 的文件过程中将文件头的数据大小,代码段,bss段,数据段 通过符号表中的引用信息来进行合并。

生成出来的a.out 文件包含四部分内容:

1) 文件头 : 包含了文件的加载信息和大小,其中

1.1) tsize = 代码段大小

1.2) dsize = 包含了初始化全局变量和初始化静态局部变量的数据段大小。

1.3) bsize  =包含了未初始化的全局变量和未初始化的静态局部变量的bss段大小。

1.4) total_size =加载  a.out文件的总大小

2)代码段:包含了可执行代码

3)数据段: 包含了初始化全局变量和初始化静态数据

4)符号表: 可选,用于调式。

生成可执行文件后,通过一个loader方法将可执行文件上的段大小,偏移量映射到逻辑地址来进行正确的数据的访问和执行操作。

2)物理地址的生成

当CPU取到逻辑地址时,通过自身的MMU(内存管理单元),查询对应的物理地址 ,如果没有则到主存中去寻址。

操作系统原理: 计算机的体系结构、内存的层次结构 、地址的生成相关推荐

  1. linux的原理和运用,Linux操作系统原理与应用_内存寻址

    原标题:Linux操作系统原理与应用_内存寻址 第五讲今天上线啦. 在本次课程中,陈老师详细的讲解了有关于内存寻址的演变的相关知识. 第一部分中,介绍了关于内存寻址的相关背景知识.内存寻址-操作系统设 ...

  2. 操作系统原理第八章:内存管理

    目录 1 内存管理背景 2 固定分区分配 3 动态内存分配 3.1 首先适应 (First-fit) 3.2 最佳适应 (Best-fit) 3.3 外碎片问题 4 分页 5 分页硬件支持 6 分段管 ...

  3. 操作系统原理:连续的内存分配

    一.由于内存释放导致的内存碎片的问题 空闲内存碎片化可能导致很多的内存不会被利用.内存碎片包含两种,一种时内部碎片,一种时外部碎片,所谓的内部碎片,就是分配给应用程序使用但是实际却无法被利用的碎片,而 ...

  4. 《操作系统》OS学习(四):计算机体系结构、内存层次和地址生成

    计算机除了计算能力之外还有存储能力,存储能力即计算机拥有一系列的存储介质,我们可以在存储介质上存储我们的代码和数据.计算机体系结构中约定了哪些地方可以用来存储数据:CPU内的寄存器.内存和外存.不同的 ...

  5. 清华操作系统课程(向勇、陈渝)笔记——第三章(一)(计算机体系结构/内存分层体系)

    计算机体系结构/内存分层体系 计算机体系结构 CPU:控制程序执行 内存:放置程序代码和数据 设备(I/O) 内存分层体系 寄存器和缓存:CPU可以直接访问,操作系统无法控制,速度快但容量有限 主存/ ...

  6. Linux操作系统原理与应用04:内存管理

    目录 1. Linux内存管理概述 1.1 内存的层次结构 1.2 虚拟内存概述 1.2.1 虚拟内存基本思想 1.2.2 进程虚拟地址空间 1.3 内核空间到物理空间的映射 1.3.1 内核空间的线 ...

  7. Linux 操作系统原理 — 内存 — 基于局部性原理实现的内/外存交换技术

    目录 文章目录 目录 前文列表 基于局部性原理实现的内-外存交换技术 局部性原理 Swap 交换分区 前文列表 <Linux 操作系统原理 - 内存 - 物理存储器与虚拟存储器> < ...

  8. 计算机操作系统原理教程与实训(目录)

    计算机操作系统原理教程与实训 第一章 计算机操作系统概论 1.1 操作系统的形成与发展 1.1.1 人工操作方式 1.1.2 脱机输入/输出技术 1.1.3 批处理技术 1.1.4 多道程序设计技术 ...

  9. 全国计算机四级——操作系统原理笔记

    学习建议:结合书和笔记把知识过一遍 -> 买题库刷试卷 -> 始终学不明白的题目去刷章节题目 -> 背新增试卷题目 关于本笔记:写者参加2022年5月的考试,参考<全国计算机等 ...

最新文章

  1. 漫画 | 如何用 Kubernetes 实现 CI/CD 发布流程?
  2. 为什么程序员需要关心顺序一致性(Sequential Consistency)而不是Cache一致性(Cache Coherence)
  3. [UE4]解析json数据
  4. 独热编码 one-hot Encoding
  5. 95-30-020-java.util-Map
  6. Eclipse 插件之间互相依赖, 导出Jar包安装, 报错“java.lang.NoClassDefFoundError”
  7. 全才出书,值得一读——Leo推荐《我也能做CTO之程序员职业规划》
  8. 腾讯云分布式高可靠消息队列CMQ架构最佳实践
  9. 服务器上不存在该种子文件,风行为什么点击种子链接总会弹出“找不到文件关联或无效的菜单句柄”...
  10. css 兼容解决方案,CSS的常见兼容性问题解决方案
  11. 计算机java证书有哪些_计算机专业应该考这些证书!
  12. 洛谷P3709 大爷的字符串题 莫队
  13. 利用Get-FileHash工具进行哈希验证
  14. java----判断闰年和平年
  15. python的十句名言_经典十句名言
  16. 【六祎 - HTML模板】提交按钮模板-带特效
  17. rpm常用命令汇总 -- 安装,升级,查询,验证,卸载
  18. Found my pics from 2007
  19. 2015给自己充电加薪——免费领取极客学院VIP会员
  20. DICOM医学图像处理:BMP转DCM、DCM转BMP、多张BMP转DCM、JPG转DCM,,多张JPG转DCM。

热门文章

  1. 娓娓道来Promise
  2. 简便方法创建自签名证书
  3. yum安装nginx的负载均衡详解
  4. LLVM每日谈之二十三 LLVM/Clang编译Linux内核资料
  5. ASP.NET MVC开发,编辑页面和添加页面基本相同,我们控制器 Add Edit是共用同一个View吗?...
  6. IP地址概念及其划分
  7. 新浪微博-企业微博运营手册
  8. SDWebImage详解
  9. windows XP cmd命令集
  10. neo4j 在centos 中的安装