首页 > 系统相关 >linux系统内存分布图

linux系统内存分布图

时间:2024-04-25 10:58:40浏览次数:30  
标签:初始化 int 代码段 分布图 内存 linux 虚拟内存

目录

linux系统内存分布图:

linux系统使用的是虚拟内存,不是真是的为物理地址(linux中使用虚拟内存,虚拟内存和物理内存的转换通过MMU硬件来实现。)

1:保留区:

 空间啊128M(大小) 

2: 代码段:

3: 程序由数据以及指令组成

代码段存储的是编译器对程序编译之后生成的二进制指令,代码段分为两部分,分别是.text段 
和.init段。(.text段用于存储用户程序生成的指令,.init段用于存储系统初始化的指令,这两部分的属性		是只读的,在程序运行之后代码段中的数据就不应该再被修改。在程序运行之前代码段的内存空间就已经被内	核计算完成。)---存储指令  只读不能改变特性

4:数据段:(静态分布区)

数据存储在两部分,一个部分是栈空间,另一个部分是数据段
      .bss:用于存储程序中未被初始化的全局变量以及未被初始化的静态局部变量以及初始化为0的全局变量和初始化为0的静态局部变量。(int a; staic int a; int a=0; staic int a=0)  ----可以初始化为0
      .data段:用于存储程序中的已经被初始化的全局变量和已经被初始化的静态局部变量,另外注意初始化的值不能为0!(int a=5; 和staic int a=5; 初始化不能为0)
      .rodata段:被称为只读常量区,程序中的常量(整型常量、字符串常量)都是存储在该区域,对于该区域的属性是只读的,当程序结束后该区域的内存会被释放。----(存储常量的区域)
堆:匿名内存,动态分配空间,由程序员自己申请,内存空间向上扩展,只能用指针来访问。
栈(stack):由系统自动分配空间,栈的内存向下扩展。(也是线性结构)

5:栈:

(栈就好像一个瓶子倒过来的,栈顶可以变化,栈低地址不变。(数据先进后出(入栈),后出先出(出栈))

image

image

6:内核(kernel):映射到进程虚拟内存,但程序无法访问(不允许用户访问的位置)

作业1:
image
作业2:
image
作业3:
image
作业4:
image
作业5:
image
作业6:
image

标签:初始化,int,代码段,分布图,内存,linux,虚拟内存
From: https://www.cnblogs.com/wxp55/p/18155586

相关文章

  • linux centos7 3.10+安装mysql8.0.36
    目录网络源linux操作先搜索有没有安装低版本的mysql5.7或者和mysql冲突的mariadb卸载冲突软件一定要卸载,否则会导致安装mysql失败安装mysql的依赖包,wget,解压源码包时所用的依赖库增加一个mysql的user解压源码包到当前目录给mysql改一个简单的名字编辑/etc下的mysql配置文件my.cnf......
  • 在Linux中,如何创建一个新用户?
    在Linux中创建新用户通常使用useradd命令或adduser命令。这两个命令的功能相似,但adduser命令在某些发行版(如Debian及其衍生版)中更常用,因为它提供了一个更为友好的交互过程,自动处理一些额外的设置,比如创建邮箱、设置密码等。下面是使用这两个命令创建新用户的详细步骤:1.使用user......
  • 在Linux中,如何查看当前日期和时间?
    在Linux中查看当前日期和时间,最常用且直接的方法是使用date命令。这是一个快速简便的命令,不需要任何参数即可显示当前系统的日期和时间信息。以下是具体的操作步骤:打开终端:首先,打开你的Linux系统的终端。这可以通过快捷键(通常是Ctrl+Alt+T)或者从应用菜单中找到“终端”来完成......
  • 在Linux中,如何添加一个用户到特定的组?
    在Linux系统中,用户可以属于一个或多个组。将用户添加到特定的组是权限管理的一部分,允许用户继承组的权限和访问控制。以下是将用户添加到特定组的步骤:1.使用usermod命令使用usermod命令:要将用户添加到现有的组,你可以使用usermod命令的-aG(appendtogroup)选项。sudousermod......
  • 在Linux中,如何监控系统的性能?
    在Linux中监控系统性能是一个关键的运维任务,它有助于识别瓶颈、优化资源分配并确保系统的稳定运行。以下是一些常用的命令行工具和方法,用于监控Linux系统的性能:top命令:top是最基础也是最常用的实时系统监控工具,它可以显示当前系统中的进程列表以及CPU、内存使用情况等。通过......
  • K8S集群问题:案例一:Java调用Glibc2.28-69内存分配器无法限制虚拟内存VIRT问题
    一、问题描述1、背景:租户反馈,Apr711:22容器出现夯死现象,容器部署的单个java进程;宿主机上,top显示的容器进程virt内存持续增长32G,目前messages日志没有看到oom的记录,基本是。租户其他bc7、8系统上有添加参数MALLOC_ARENA_MAX进行限制,基本维持在16G左右,目前bcoe21.10系统配置......
  • linux网络配置
    网络配置命令ifconfigifconfig命令通常用于查看、配置和管理网络接口的信息,其通常用法如下:查看所有网络接口信息:可以直接运行ifconfig命令来查看系统上所有网络接口的信息,包括接口名、IP地址、MAC地址等。查看特定网卡信息:可以指定网卡名来查看特定网卡的详细信息。......
  • Linux统计文件内容重复行
    需求:在一个文件中,如下文件内容有许多乱序的重复值,那我们想要快速知道哪些是重复值怎么办?试问你能靠眼里10秒内找到吗?哈哈哈 解决方案:先使用sort命令将文件内容进行排序,再使用uniq命令进行统计重复值uniq常用参数-c#在每行前统计重复的次数......
  • linux 离线安装 mysql8.0
    一、下载linuxmysql8.0离线安装包mysql下载地址:https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xzmysql官方下载最新版本:https://dev.mysql.com/downloads/mysql/ 然后选择linux把下载的压缩包上传到要安装的服务器上,解压mysql t......
  • DIY从入门到放弃:内存到底应该插在哪个槽里
    看到这个标题,你可能会发出嘲讽的声音:内存当然是插在内存插槽里啊!且慢,咱们要聊的是,主板有多个内存插槽,那么在不会插满的情况下,内存应该优先插在哪个插槽里呢?首先要知道的是,主板上的内存插槽确实是有优先级的,一般来说,小主板会有2个内存插槽,而大主板则会提供4个插槽,从离CPU最近的......