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

站酷设计网站官网入口插画设计济宁亿峰科技做网站一年多少费用

站酷设计网站官网入口插画设计,济宁亿峰科技做网站一年多少费用,株洲网站网络推广怎么做,wordpress 分库请思考当以下这个经典的hello world代码&#xff0c;调入内存并且在cpu上运行变成一个进程的时候&#xff0c;代码中的各个数据在内存中是如何进行分布的 #include <stdio.h>int main() {printf("Hello, World!\n");return 0; } 进程内存布局 进程在内存中的…

请思考当以下这个经典的hello world代码,调入内存并且在cpu上运行变成一个进程的时候,代码中的各个数据在内存中是如何进行分布的

#include <stdio.h>int main() {printf("Hello, World!\n");return 0;
}

进程内存布局

进程在内存中的数据分布通常分为多个段(Segment),每个段负责存储不同类型的数据。进程使用的是虚拟空间的地址,这些段在虚拟地址空间中是连续的,但实际物理内存可能分散或不连续。以下是典型的进程内存布局:

1. 代码段(Text Segment)

  • 内容:存储程序的机器指令(即编译后的代码)。

  • 特性:只读,不可修改,多个进程可共享同一代码段。

2. 数据段(Data Segment)

  • 内容:存储全局变量和静态变量。

  • 分类

    • 已初始化数据段:存储显式初始化的全局和静态变量。

    • 未初始化数据段(BSS段):存储未初始化的全局和静态变量,程序加载时初始化为零。

3. 堆(Heap)

  • 内容:动态分配的内存(如mallocnew等)。

  • 特性:手动管理,大小不固定,向高地址增长。

4. 栈(Stack)

  • 内容:存储局部变量、函数参数、返回地址等。

  • 特性:自动管理,大小有限,向低地址增长。

5. 共享库(Shared Libraries)

  • 内容:存储动态链接库的代码和数据。

  • 特性:多个进程可共享,减少内存占用。

6. 环境变量和命令行参数

  • 内容:存储环境变量和命令行参数。

  • 位置:通常位于栈的上方。

7. 内存映射区(Memory Mapped Region)

  • 内容:用于内存映射文件或匿名映射。

  • 特性:允许文件直接映射到内存,便于高效访问。

典型内存布局(从低到高地址)

+---------------------------+ 高地址
| 环境变量和命令行参数     	|
+---------------------------+
| 栈(Stack)                | <--- 向低地址增长
|			|				|
|			|				|
|			v				|
+---------------------------+
| 内存映射区                  |
+---------------------------+
| 共享库                     |
+---------------------------+
|			^				|
|			|				|
|			|				|
| 堆(Heap)                 | <--- 向高地址增长
+---------------------------+
| 未初始化数据段(BSS)     	|
+---------------------------+
| 已初始化数据段(Data)    	|
+---------------------------+
| 代码段(Text)            	|
+---------------------------+ 低地址

Hello world在内存中的分布

#include <stdio.h>int main() {int i = 42;printf("Hello, World!\n");printf("int i = %d\n", i);return 0;
}
+---------------------------+ 高地址
| 环境变量和命令行参数      	|
+---------------------------+
| 栈(Stack)              	| <--- 向低地址增长
|   - main函数的栈帧         	|
|   - 局部变量 int i = 42   	|
|   - printf的参数           |
|     - "Hello, World!\n"   |
|     - "int i = %d\n", i   |
+---------------------------+
| 共享库(Shared Libraries) 	|
|   - printf的实现代码       	|
+---------------------------+
| 堆(Heap)                	| <--- 向高地址增长
|   (该程序未使用堆)       	|
+---------------------------+
| 未初始化数据段(BSS)     	|
|   (该程序未使用BSS)      	|
+---------------------------+
| 已初始化数据段(Data)    	|
|   (该程序未使用数据段)   	|
+---------------------------+
| 代码段(Text)            	|
|   - main函数的机器指令     	|
|   - printf的调用指令       	|	
+---------------------------+ 低地址

用户态栈:每个进程在用户空间拥有独立的栈(位于用户虚拟地址空间),用于存储函数调用、局部变量等。

内核态栈:每个进程在内核空间还有一个独立的内核栈(通常较小,如8KB或16KB),专门用于内核态执行时的调用链(如系统调用、中断处理)。

内核线程(Kernel Thread):仅有内核栈,无用户栈(因为不运行用户态代码)。

内核栈大小固定,设计紧凑以保证性能和安全性

http://www.dtcms.com/a/546792.html

相关文章:

  • 网站备案域名更改公司濮阳网络直播
  • 自学网站建设多久如何做网络推广人员
  • 荣成做网站中国建设法律法规网官方网站
  • 临海建设局官方网站文昌网站建设 myvodo
  • 运城住房和建设局网站新网站建设一般多少钱
  • W3C WSDL 活动:推动Web服务互操作性的关键力量
  • 婚庆网站建设的需求分析wordpress注册授权
  • 三维重建【0-D】3D Gaussian Splatting:相机标定原理与步骤
  • 中国企业商务网站建设河南seo网站多少钱
  • 做预算兼职的网站东莞设计网站企业
  • 网站建设项目工作分解结构建设银行交学费网站
  • Python导入opencv报错“DLL load failed while importing cv2: 找不到指定的模块”排错过程记录
  • 黄金外汇网站建设网站备案在哪查
  • 大二java学习笔记:子类与继承
  • 网站毕设代做免费seo网站诊断
  • 旅游网站分析广告喷绘制作公司介绍
  • 解决 IsaacSim 5.0 与 ROS2 Python 版本冲突的完整指南
  • 万网空间存放两个网站湖州网站建设哪家公司好
  • 酒店 企业网站建设的思路jsp ajax网站开发典型实例 pdf
  • 关于命理的一些猜想
  • 西安有那些做网站的公司好商城的网站统计如何做
  • 复古风格网站建筑网站大全免费
  • 网站改版建设,有哪些内容唐山公司网站建设 中企动力唐山
  • 柏乡企业做网站h5网站制作费用
  • 专业企业网站建设报价潍坊专业技术人员继续教育
  • Quartus II下载安装教程Quartus II 18保姆级安装步骤(附安装包)
  • 查询网站开发的端口建站优化
  • 外贸公司网站怎么做网站运营推广该如何做
  • h5开源网站模板学校网站建设规划
  • 浙江网站推广运营网络的基本概念