【转】程序在内存中的分布

 前些天学习到了程序在虚拟内存中分布的一些知识点,结合在网上查阅的一些资料,整理一下知识点。本博客参考博主 hackbuteer1的《程序在内存中的分布》这篇文章。

 

    

 

v 在现代的操作系统中,当我们说到内存,往往需要分两部分来讲:物理内存和虚拟内存。从硬件上讲,虚拟空间是CPU内部的寻址空间,位于MMU之前,物理空间是总线上的寻址空间,是经过MMU转换之后的空间。

 

例如:对于一台内存为256M的32bit x86主机来说,它的虚拟地址空间范围是0~0xFFFFFFFF(4G),而物理地址空间范围是0x00000000~0x0FFFFFFF(256M)。

 

v 一般我们所说的程序在内存中的分布指的就是程序在虚拟内存中的存储方式。

 

从低地址到高地址,可分为下面几段: 

Ø 预留内存地址(操作系统维护的内存地址,不可访问) 

 

Ø 程序代码区(只读,存代码和一些其他的东西); 

 

Ø data段(存初始化的全局变量和static变量,另外还有文字常量区,常量字符串就是放在这里,程序结束后有系统释放); 

 

Ø bss段(存未初始化的全局变量和static变量); 

 

Ø 堆(由低地址向高地址增长,一般(C++)new和(C)malloc分配,由程序员分配释放);

 

Ø 共享库文件(调用的库文件,位于堆和栈之间); 

 

Ø 栈(由高地址向低地址增长,和堆的增长方式相对,对不同的OS来说,栈的初始大小有规定,可以修改,目前默认一般为2M,由编译器自动分配释放); 

 

 

 

 

 

v 以上程序在虚拟内存空间中的分布,适用于一般的操作系统和内核。但不完全适用,例如:《unix系统编程》32位下,0-3G是用户区,3G-4G是内核区。

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

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

相关文章

GARFIELD@04-02-2005

treat 转载于:https://www.cnblogs.com/rexhost/archive/2005/04/02/130985.html

【转】TechEd第一课:新一代关系管理系统XRM**

提起微软的CRM产品,最先想到的是CRM 4.0。除了字面理解上的客户关系管理系统外,微软也赋予这款产品“应用开发平台”的角色,并给它一个新名字——XRM。XRM到底是什么东西?它能用来做什么?这些问题都在今天这节“微软新…

图形工具包 linux,GTK 4.0图形工具包正式发布:时隔四年的重大版本!

GTK是用于创建图形用户界面的工具包,GTK提供了一整套的小部件,适用于从小型一次性工具到完整的应用程序套件的项目。GTK是GNOME开发平台的核心,但是它也可以用于编写其他Linux环境的应用程序,以及针对微软Windows和苹果macOS的应用…

linux设备驱动学习,linux设备驱动学习4

Linux设备驱动程序学习(4)-高级字符驱动程序操作[(1)ioctl and llseek]今天进入《Linux设备驱动程序(第3版)》第六章高级字符驱动程序操作的学习。一、ioctl大部分设备除了读写能力,还可进行超出简单的数据传输之外的操作,所以设备…

[代码阅读] ECS toString实现方法

引言 ECS 提供了一种编程方式来生成以不同标记语言编写的文档。它设计为通过面向对象的抽象来生成所有标签。 ECS 目前版本为1.4.2 ,支持 HTML 4.0 和 XML 。 因为工作原因,作者粗略读了ECS的部分原代码,着重了解ECS如果通过toString方法…

【转】设备数据通过Azure Functions 推送到 Power BI 数据大屏进行展示

设备数据通过Azure Functions 推送到 Power BI 数据大屏进行展示(1.准备工作) 原创 Sean Yu 云计算实战 2019-12-06 本案例适用于开发者入门理解Azure Functions/ IoT Hub / Service Bus / Power BI等几款产品。 主要实战的内容为: 将设备遥…

【转】Azure Messaging-ServiceBus Messaging消息队列技术系列1-基本概念和架构

前段时间研究了Window Azure ServiceBus Messaging消息队列技术,搞了很多技术研究和代码验证,最近准备总结一下,分享给大家。 首先,Windows Azure提供了两种类型的消息队列机制:Azure Queues和ServiceBus Queues。 其…

Atlas应用程序调试技巧

本文为翻译文章,原文地址:http://atlas.asp.net/docs/Overview/debug.aspx “Atlas”程序由服务器端代码和客户端代码组成,并且,浏览器可能会要去异步请求一些数据。那么,怎样才能Debug这样的web程序呢。本文将告诉…

【转】Azure Messaging-ServiceBus Messaging消息队列技术系列2-编程SDK入门

各位,上一篇基本概念和架构中,我们介绍了Window Azure ServiceBus的消息队列技术的概览。接下来,我们进入编程模式和详细功能介绍模式,一点一点把ServiceBus技术研究出来。 本章我们主要介绍ServiceBus的编程SDK编程入门。 首先…

linux octave源码安装,在Linux操作系统上安装Octave的方法

本文介绍在Ubuntu、Debian、Arch Linux、Fedora、OpenSUSE操作系统上安装Octave(也称GNU Octave)的方法,它还支持Flatpak方式安装。简介GNU Octave是一种用于科学和数学计算操作的解释性命令语言,它与Matlab兼容,支持各种扩展,允许…

linux安装静默安装was7,WAS7.0 - 安装并升级WAS7.0.0.31(静默安装)

WAS7.0 - 安装并升级WAS7.0.0.31(静默安装)安装之前需要准备的文件:C1G35ML.tar.gz:WAS7.0安装包C1G36ML.tar.gz:WAS升级工具7.0.0-WS-WASSDK-LinuxX64-FP0000031.pak 7.0.0-WS-WAS-LinuxX64-FP0000031.pak :7.0.0.31升级包&…

【转】Azure云存储及存储账户概述***

本文介绍下Azure云存储及存储账户。 1、什么是微软Azure云存储 微软Azure云存储是微软提供的云端数据存储服务,是一种可伸缩、持久化的数据存储服务,可以在Internet上被访问并按实际存储容量收费。它也可以被REST API访问,可以保存Azure云端…

插入法排序c语言程序,插入排序算法及C语言实现

插入排序算法是所有排序方法中最简单的一种算法,其主要的实现思想是将数据按照一定的顺序一个一个的插入到有序的表中,最终得到的序列就是已经排序好的数据。直接插入排序是插入排序算法中的一种,采用的方法是:在添加新的记录时&a…

【转】Microsoft Azure存储服务:存储账户****

在正式使用 Microsoft Azure 存储服务之前,你至少需要有一个 Azure 订阅并创建「存储账户」。Azure 订阅账户可以访问和使用各种 Azure 服务,在有了 Azure 订阅之后便可以开始创建「存储账户」并开始使用前面存储类型与访问中曾介绍过的 blobs、表&#…

【转】Azure Logic App Demo

使用Azure Logic App Azure Function 完成简单的业务流程 什么是Logic App Azure 逻辑应用提供了,用于在云中简化并实现可缩放的集成和工作流的方式。 它提供了可视化设计器,用于为流程建模并将流程作为一系列步骤(称为工作流)…

【转】Azure应用部署方式对比

如图 azure环境应用托管方式对比 1. app service serverless azure的app service支持几乎所有语言开发的web app,既可以手动使用publish profile部署,也可以使用vsts创建一个(CDCI)持续集成。都非常方便。 而azure的function app…

c语言哪个方法称为程序大门,学会这8个经典小程序,就相当于跨入了C语言大门...

描述【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。2.程序源代码&#x…

【转】无服务计算(Serverless Computing)核心知识

Serverless Computing概念 云原生计算基金会CNCF(Cloud Native Computing Foundation, CNCF)Serverless Whitepaper v1.0对无服务器计算作了如下定义: Serverless computing refers to the concept of building and running applications tha…

c语言中指数优化,西藏东财中证医药卫生指数C净值下跌1.96% 请保持关注

来源:金融界基金作者:机器君金融界基金08月07日讯 西藏东财中证医药卫生指数型发起式证券投资基金(简称:西藏东财中证医药卫生指数C,代码008552)公布最新净值,下跌1.96%。本基金单位净值为1.397元,累计净值…

PE文件结构详解(一)基本概念

(一)基本概念 PE(Portable Execute)文件是Windows下可执行文件的总称,常见的有DLL,EXE,OCX,SYS等,事实上,一个文件是否是PE文件与其扩展名无关,P…