当前位置: 首页 > news >正文

购物网站需求分析报告lnmp装wordpress

购物网站需求分析报告,lnmp装wordpress,做网站服务公司,网站的技术分析C/C内存分布 一、内存组成二、静态区域文本段 #xff08;Text / 只读区域 RO#xff09;已初始化读写数据段#xff08;RW data -- Initialized Data Segment#xff09;未初始化数据段#xff08;BSS -- Block Started by Symbol#xff09; 三、动态区域堆#xff08… C/C内存分布 一、内存组成二、静态区域文本段 Text / 只读区域 RO已初始化读写数据段RW data -- Initialized Data Segment未初始化数据段BSS -- Block Started by Symbol 三、动态区域堆heap栈stack 四、STM32 内存分析Flash区域RAM区域map文件分析 一、内存组成 根据动静特性可以将内存分为动态区域和静态区域代码段Code、只读数据段RO data、读写数据段RW Data、未初始化数据段BSS属于静态区域。堆和栈属于动态区域。 二、静态区域 文本段 Text / 只读区域 RO 通常代码段和只读数据段合成为文本段(Text), 包含实际要执行的代码机器指令和 常量(常量区Ro data)例如字符串常量等。它通常是共享的多个实例之间共享文本段。文本段是不可修改的。 已初始化读写数据段RW data – Initialized Data Segment 已初始化数据是在程序中声明并且具有初值的变量这些变量需要占用存储器的空间在程序执行时它们需要位于可读写的内存区域内并具有初值以供程序运行时读写。 未初始化数据段BSS – Block Started by Symbol 未初始化的全局变量和静态变量程序运行之前不需要占用存储器的空间BSS段的变量只有名称和大小却没有值。 BSS段主要是为了节省可执行文件在磁盘上所占的空间其仅仅记录变量所需的大小。储存未初始化的或初始化为0的全局变量和静态变量。 BSS段属于静态内存分配所以放在RAM里。 对未初始化的大型数组的节省效率比较明显。举例如下 static int a[10000]; int main() { } 在上述程序中若不存在 BSS 段则可执行文件将开辟一个 10000 * sizeof(int) 大小的空间并全部存储为0int 为4字节的情况下该变量将在磁盘上占用39KB的空间。但是此时若是存在BSS 段则在可执行文件中将只是记录现在的BSS段总大小为40000即可而无需真正的占据39KB的空间. 代码优化对BSS段的影响全局变量与静态变量没有初始化或初始化值为0时都会放在.bss段。初始化为非0值则放在.data段。考虑以下两个静态变量分别存储在哪个段中: static int x1 1; static int x2 0; 很明显可以看出X1将被发在.data段中。令人意外的是 X2 将被放置在 .bss 段中因为 x2 的值为0被认为是未初始化的因此将会被放在 .bss 段中以节省磁盘空间。 三、动态区域 对于程序运行过程中的内存使用堆和栈一般是相向扩展的。堆的分配由程序来分配但是栈是由编译器管理的。 堆heap 堆内存只在程序运行时出现一般由程序员分配和释放。在具有操作系统的情况下如果程序没有释放操作系统可能在程序例如一个进程结束后回收内存。注意它与数据结构中的堆是两回事其操作方式类似于数据结构中的链表。 当进程调用malloc等函数分配内存时新分配的内存就被动态添加到堆上堆被扩张 当利用free等函数释放内存时被释放的内存从堆中被剔除堆被缩减。 FreeRTOS的内存分配有五个方案 如果申请的内存空间都在一个连续的空间内heap_4就够用了但如果存在部分空间申请在内部RAM、部分在外部RAM这时候就需要使用heap_5方案了heap_5是在heap_4基础上实现的。 特点缺点heap_1简单、不支持内存释放需要管理内存空间heap_2支持内存释放不支持碎片管理需要管理内存空间、碎片问题heap_3malloc-free操作简单碎片问题heap_4支持碎片管理需要管理内存空间heap_5支持多个不连续内存空间碎片管理需要管理内存空间 栈stack 栈内存只在程序运行时出现在函数内部使用的局部变量、函数的参数以及返回值将使用栈空间栈空间由编译器自动分配和释放。其操作方式类似于数据结构中的栈。 例一静态存储区、栈区、堆区 #include stdio.h #include string.h #include stdlib.hint main(void) {char *a hello 1; //静态存储区char b[] hello 2; //栈区char *c (char *)malloc(sizeof(b)); //堆区memcpy(c, hello 3, sizeof(b));//a[2] C; //操作静态区会报错只读不可修改b[2] C; //操作栈-修改成功c[2] C; //操作堆-修改成功printf( a:%p %s\n b:%p %s\n c:%p %s\n,a,a,b,b,c,c);return 0; }程序运行结果如下 a:0000000000404000 hello 1b:000000000061FE08 heClo 2c:00000000007F1400 heClo 3四、STM32 内存分析 在对于RAM紧缺的嵌入式系统中是缺少MMU内存管理单元的。因此在一些嵌入式系统中比如常用的STM32来讲内存映射被划分为闪存段也被称为Flash用于存储代码和只读数据和 RAM段用于存储读写数据。 在《ARM Cotrex-M3权威指南》中有关 M3的存储器映射表 STM32的Flash和RAM地址范围从图中我们可以看出RAM地址是从0x2000 0000开始的Flash地址是从0x8000 0000开始的。 Flash区域 如上图所示Flash又可以分为这么几个部分。 分别是文本段Text 其中文本段中又包含可执行代码Executable Code和常量Literal Value在文本段之后就是只读数据区域Read Only Data当然并不是所有架构的单片机都满足这样一个排布规律这里只针对于ARM Cortex M3系列的只读数据段后面接着的就是数据复制段Copy of Data Section第一次遇见这个概念的朋友看到数据复制可能会有疑惑其实这个段充当的作用是存放程序中初始化为非0值得全局变量的初始值之所以要将初始值存放到这里 是因为全局变量是存放在RAM上的RAM上的值掉电便丢失每次上电之后这些变量是要重新赋值的而重新赋值的值就存放在这里 那为什么不存放初始化为0的全局变量的初始值呢原因也很简单既然是初始化为0那么在上电之后统一对存放初始化为0的全局变量的那块区域清0就好。 RAM区域 如上图所示RAM中包含了如下几个部分 栈Stack:存放局部变量和函数调用时返回的地址堆heap:由malloc申请free释放bss:存放未初始化或者是初始化为0的全局变量data存放初始化为非0的全局变量 map文件分析 CodeRO DataRW DataZI DataExecutableCodeRead OnlyData data 程序占用 Flash Code RO data RW data 程序运行时候占用 RAM RW data ZI data Code RO data RW data 的大小也是生成的 bin 文件的大小
http://www.hkea.cn/news/14322196/

相关文章:

  • 做一个平台 网站服务器搭建苏州网站制作出名 乐云践新
  • 新东方广州门户网站设计专业
  • 网站新开怎么做营销伊犁园xyz视频人入口
  • d0906网站建设与管理建立一个企业网站需要花多少钱
  • 建设部建造师网站海口网站建设加q.479185700
  • 有哪些简单的网站手机创建网站的软件
  • 高端网站定制设计宁波论坛天一楼市
  • 怎么用dw做响应式网站龙岗在线官网
  • shopify如何做瀑布流网站宿迁网站建设流程
  • 网站的建设与应用网络销售怎么做网站
  • 广西教育平台网站建设网页开发背景
  • 怎样可以查到做网站公司wordpress腾讯课堂
  • 网络小白如何建立个人网站做房产抵押网站需要什么手续费
  • 写一个网站需要什么技术wordpress网站新闻
  • 网站开发总监招聘wordpress 后台点击没反应
  • 廊坊网站建设优化门户网站系统程序
  • 数据过滤网站模板下载山东省专业群建设网站
  • 建设银行正式宣布郑州官网优化推广
  • 深圳网络公司做网站查询网站的二级域名
  • 建设银行 杭州市公积金管理中心网站c2c商城网站建设方案
  • 怎么建设维护学校的网站可以做软件外包项目的网站
  • 手机网站怎么制作内容嘉兴网站关键词
  • 人防工程做资料的网站adsl服务器建网站
  • 杭州做商业地产开什么网站好wordpress 插件 文章
  • 打开国外网站很慢网站开发设计框图
  • 如何介绍设计的网站宁波专业的网站建设团队
  • 参加网站建设项目人员保障体系上海网站建设有限公司
  • 百度提交网站改版网站建设预计费用
  • 石家庄工信部网站备案asp mysql做网站
  • 网站主页设计教程做网站教材