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

2023-05-16

 

操作系统需要完成抽象逻辑地址空间,保护独立地址空间,提供可以访问共享的内存空间,还需要根据程序运行场景虚拟出更多的地址空间这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(内存管理单元),查询对应的物理地址 ,如果没有则到主存中去寻址。

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 制作ROS移动机器人地盘

    制作ROS移动机器人地盘 摘要概述硬件需求车体设计电路设计程序设计PID控制轮速 摘要 本教程讲述如何利用扫地机轮子制作ROS移动机器人地盘 概述 原本不打算自己造轮子的 xff0c 但是网上的移动机器人地盘要么巨贵 对于学生党 xff0c
  • Lumia520刷安卓教程

    Date 2017 09 02 Author SuperDeveloper Descreption install android on luima 520 devices Email na1206 64 live com 警告 本教程只适
  • openwrt编译及第一个安装包教程

    Date 2017 03 14 Made SuperDeverloper Email na1206 64 live com Target For mt7688 based board 说明 xff1a 本人在学习过程中走了不少弯路 xff0
  • turtlebot3 Slam+nvigation仿真 ROS-lunar

    Date 2017 09 06 Author SuperDeveloper Description Slam simulation 说明 xff1a 1 Slam 初学笔记 xff0c 搭建slam仿真环境 xff1b 2 文章里的连接可能
  • 基于NVIDIA Xavier NX(ubuntu20.04)的Optitrack视觉定位 PX4+ros noetic(实物运行记录)

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 前言一 xff1a 硬件准备两种界面化显示的方式无线连接有线连接 二 xff1a 软件准备1 远程登录软件 NoMachine2
  • ros机器人搭建总纲

    author xff1a superDeveloper date 2017 11 29 type note 近期准备搭建一个ROS机器人平台 xff0c 建立此博客记录搭建过程以及相关问题的解决办法 xff0c 作为笔记 xff0c 亦供相
  • ros gmapping 运行错误:Assertion 'beams<LASER_MAXBEAMS' failed>

    在使用真实激光器发布数据的时候 xff0c 出现了 Laser is mounted upward警告 xff0c 以及slam gmapping tmp buildd ros hydro openslam gmapping 0 1 0 2
  • realloc():invalid next size....错误

    Author SuperDeveloper Date 2018 1 2 在程序中使用了realloc函数 xff0c 更改结构体数组的大小 xff0c 错误代码如下 xff1a struct point span class hljs su
  • git简单命令笔记

    这是一篇关于git的使用笔记 xff0c 刚刚开始使用git 1 创建git本地仓库 xff1a 在你需要版本控制的项目Project根目录下右键点击Git Bash here执行git init 然后在该目录下生成 一个 git的隐藏文件
  • 源码编译Boost库的正确姿态

    源码编译Boost库的正确姿态 写在前面step 1 step 2 step 3 step4 写在前面 项目需要编译pcl库到arm平台 xff0c 交叉编译Boost xff0c Eigen3 Flann 之后再编译pcl库的时候总是报错
  • 第一讲、四旋翼的整体控制方案

    各位朋友 xff0c 我们工作室以后会长期更新一些飞行器干货 xff0c 本部分先介绍四旋翼的整体控制方案及相关设计 控制系统的框架如下 xff0c 借鉴网上来源图片 xff0c 传感器主要是姿态传感器 xff0c 对于大四轴而言 xff0
  • 网页中屏蔽鼠标右键、Ctrl+N、Shift+F10

    lt script language 61 34 Javascript 34 gt 屏蔽鼠标右键 Ctrl 43 N Shift 43 F10 F5刷新 退格键 屏蔽F1帮助 function window onhelp return fa
  • asp.net上一页下一页的部分代码

    lt asp linkbutton id 61 34 btnFirst 34 nclick 61 34 PagerButtonClick 34 runat 61 34 server 34 CommandArgument 61 34 0 34
  • Visual C# 编程操作Excel

    Visual C 编程操作Excel 2004 08 20 作者 xff1a 邵回祖 出处 xff1a ahcit http www yesky com SoftChannel 72342380468109312 20040819 1844
  • C#保存图片到IMAGE字段

    byte FileByteArray System IO MemoryStream ImageStream this sqlConnection1 ConnectionString 61 strConn try if this sqlCon
  • Android-蓝牙sco通话

    APP调用AudioManager startBluetoothSco frameworks base media java android media AudioManager java public void startBluetoot
  • Docker启动时的报错汇总

    八个Docker常见故障 https mp weixin qq com s 2GNKmRJtBGHhUyVBRbRgeA 八个Docker常见故障 报错一 xff1a error initializing graphdriver Docke
  • 利用JAVA操作EXCEL文件

    利用JAVA操作EXCEL文件 转载自 xff1a www csdn net 2003 年 1 月 在开源世界中 xff0c 有两套比较有影响的API可供使用 xff0c 一个是POI xff0c 一个是jExcelAPI 其中jExcel
  • 网站不能更新,错误 '80004005'

    网站数据转移到了另一台服务器 后台数据不能更新 因为程序原因也无错误信息报出 数据库为ACCESS数据库 初步估计是不是数据库只读或是NTFS的权限问题 对数据库目录添加EVERYONE和IIS的来宾帐户写入和修改权限 还是不能更新数据 最
  • vb6实现程序延时的几种方法

    VB6在开发发贴机时 提交数据要用到延时程序 让程延时和等待 从网上找了三种方法 三种方法以最后一种最好用 第一种如果不DOEVENTS的话 会使人感觉程序无反应一样 有以下方法 xff1a 1 使用Windows API函数Sleep 新

随机推荐