首页 > 系统相关 >无涯教程-进程 - 镜像

无涯教程-进程 - 镜像

时间:2023-08-26 15:33:00浏览次数:40  
标签:初始化 教程 babukrishnam int 无涯 地址 static 镜像 segment

现在,我们已经了解了如何获取进程及其父进程的基本信息,是时候来研究进程信息的细节了。

以下是进程镜像的图形表示。

Process Images进程镜像(Process Image)到底是什么? 进程镜像是执行程序时所需的可执行文件,该镜像通常包含以下部分-
  • 代码段或文本片段(Code segment or text segment)
  • 数据段(Data segment)
  • 堆栈段(Stack segment)
  • 堆片段(Heap segment)
  • 代码段(Code segment)  -  是目标文件或程序的虚拟地址空间的一部分,由可执行指令组成。这通常是只读数据段,并且具有固定的大小。

        两种类型。

               初始化的数据段(Initialized)           -   是目标文件或程序的虚拟地址空间的一部分,由初始化的静态变量和全局变量组成。

               未初始化的数据段(Un-initialized)  -  是目标文件或程序的虚拟地址空间的一部分,由未初始化的静态变量和全局变量组成。

  • 数据段(Data segment)      -   是可读写的,因为可以在运行时更改变量的值,此段的大小也固定。
  • 堆栈段(Stack segment)    -   是分配给自动变量和函数参数的内存区域,在执行函数调用时,它还会存储一个返回地址。 Stack使用LIFO(后进先出)机制来存储本地或自动变量,函数参数以及存储下一个地址或返回地址,返回地址是指函数执行完成后要返回的地址。根据本地变量,函数参数和函数调用,此段大小是可变的,此段从较高的地址增长到较低的地址。
  • 堆段(Heap segment)        -   是分配给动态内存存储的内存区域,例如malloc()和calloc()调用。根据用户分配,此段大小也是可变的。此段从较低的地址增长到较高的地址。

现在,让我们检查一些示例程序在段(数据段和bss段)上的大小变化,通过执行命令" size"可以知道段大小。

初始程序

文件:segment_size1.c

#include<stdio.h>

int main() {
   printf("Hello World\n");
   return 0;
}

在以下程序中,添加了未初始化的静态变量,这意味着未初始化的段(BSS)大小将增加4个字节,注意-在Linux操作系统中,int的大小为4个字节。整数数据类型的大小取决于编译器和操作系统支持。

文件:segment_size2.c

#include<stdio.h>

int main() {
   static int mystaticint1;
   printf("Hello World\n");
   return 0;
}

在以下程序中,将添加一个初始化的静态变量,这意味着初始化的段(DATA)大小将增加4个字节。

文件:segment_size3.c

#include<stdio.h>

int main() {
   static int mystaticint1;
   static int mystaticint2 = 100;
   printf("Hello World\n");
   return 0;
}

在以下程序中,将添加一个初始化的全局变量,这意味着初始化的段(DATA)大小将增加4个字节。

文件:segment_size4.c

#include<stdio.h>

int myglobalint1 = 500;
int main() {
   static int mystaticint1;
   static int mystaticint2 = 100;
   printf("Hello World\n");
   return 0;
}

在以下程序中,添加了未初始化的全局变量。这意味着未初始化的段(BSS)大小将增加4个字节。

文件:segment_size5.c

#include<stdio.h>

int myglobalint1 = 500;
int myglobalint2;
int main() {
   static int mystaticint1;
   static int mystaticint2 = 100;
   printf("Hello World\n");
   return 0;
}

执行步骤

汇编

babukrishnam $gcc segment_size1.c -o segment_size1
babukrishnam $gcc segment_size2.c -o segment_size2
babukrishnam $gcc segment_size3.c -o segment_size3
babukrishnam $gcc segment_size4.c -o segment_size4
babukrishnam $gcc segment_size5.c -o segment_size5

执行/输出

babukrishnam size segment_size1 segment_size2 segment_size3 segment_size4 segment_size5
   text  data  bss  dec  hex  filename
   878   252    8   1138 472  segment_size1 
   878   252   12   1142 476  segment_size2 
   878   256   12   1146 47a  segment_size3 
   878   260   12   1150 47e  segment_size4 
   878   260   16   1154 482  segment_size5
babukrishnam

参考链接

https://www.learnfk.com/process/inter-process-communication-process-image.html

标签:初始化,教程,babukrishnam,int,无涯,地址,static,镜像,segment
From: https://blog.51cto.com/u_14033984/7244648

相关文章

  • 【Matlab 教程】-02 Matlab 基本操作与矩阵输入
    1、Matlab2020a界面简介2、命令行窗口1、操作符+-*/^在命令行窗口,输入表达式并回车计算,结果会以ans作为默认变量名,也可以在工作区查看优先级:()>^>*/>+-点击查看操作符+-*/^代码>>2+1ans=3 2+12-12/32*32^32、练习注意l......
  • 无涯教程-进程 - 信息
    在进入进程信息之前,我们需要了解一些事情,例如-  什么是进程? 进程是正在执行的程序。  什么是程序? 程序是一个文件,其中包含进程的信息以及在运行时如何进行构建。当您开始执行程序时,它将被加载到RAM中并开始执行。每个进程都用唯一的正整数标识,称为进程ID或简......
  • Webstorm 免费激活教程(2023最新,亲测有效)
    Webstorm是jetbrains公司旗下一款JavaScript开发工具。被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScriptIDE”等。Webstorm目前已经更新到最新的2023.2版本了,许多小伙伴私聊问我,为啥之前2021.3.1的激活套路对新版本2023.2......
  • Webstorm 最新激活教程,亲测有效
    本激活教程适用Windows/Mac/Linux系统,文中以Windows系统为例做讲解,其他系统按照教程顺序即可。下载最新的Webstorm2023.2版本安装包我们先从Webstorm官网下载Webstorm2023.2版本的安装包,下载链接如下:https://www.jetbrains.com/webstorm/download点击下载,静心等待......
  • 无涯教程-Python - XML处理
    XML是一种可移植的开放源语言,它使程序员能够开发可由其他应用程序读取的应用程序,而无需考虑操作系统和/或开发语言。可扩展标签语言(XML)是一种类似于HTML或SGML的标签语言。万维网联盟建议这样做,并且可以作为开放标准使用。XML对跟踪少量到中等数量的数据而无需基于SQL的主干......
  • 【Matlab 教程】-01 简介
    1、背景介绍MatrixLaboratory高级编程语言许多有用的toolboxs和内置functions简单的可视化2、课程目标如何使用Matlab编写程序,通过大量实践、实验解决工程上的问题3、课程计划1.简介2.Matlab基本操作与矩阵输入3.结构化程式与自定函数4.变量与文件存......
  • Webstorm2023 下载(附图文激活教程,亲测有效)
    笔者几乎试了网上几乎所有的Webstorm激活方案,发现这种靠谱的激活方法,先上图。第一步:下载最新的Webstorm2023.2版本安装包我们先从Webstorm官网下载Webstorm2023.2版本的安装包,下载链接如下:https://www.jetbrains.com/webstorm/download点击下载,静心等待其下载完......
  • Webstorm 安装使用教程(最新图文教程,亲测有效)
    前言本教程适用Windows/Mac/Linux系统,文中以Windows系统为例做讲解,其他系统按照教程顺序即可。笔者几乎试了网上几乎所有的Webstorm激活方案,发现这种靠谱的激活方法,先上图。第一步:下载最新的Webstorm2023.2版本安装包我们先从Webstorm官网下载Webstorm2023.2......
  • 无涯教程-Python - 多线程
    运行多个线程类似于同时运行多个不同的程序,但具有以下优点-一个进程中的多个线程与主线程共享相同的数据空间,因此比起单进程,它们可以更轻松地共享信息或彼此通信。有时称为轻量级进程的线程,它们不需要太多的内存开销。开始新线程要生成另一个线程,您需要调用thread模块中可......
  • AE2021下载 AE最新版下载+安装包+安装教程 中文版直装
    AfterEffects是视频编辑工作室的领先创作软件,经常用于电影、电视和网络等行业。它可以创建电影视频标题、标题和过渡,从剪辑中删除对象,并支持动画效果。AfterEffects是一款行业标准的动态图形和视觉效果软件,可帮助用户将任何灵感转化为动画。软件地址:看置顶贴AE主要功能图形视......