精华内容
下载资源
问答
  • SVN初始化失败

    2021-01-06 15:54:56
    初始化失败ÿ0c;失败原因: ----------------------------------------------------------------------- 注意! 你的密码ÿ0c;对于认证域: CollabNet Subversion Repository 只能明文保存在磁盘上! 如果...
  • 集群磁盘扩容步骤

    2019-02-27 18:34:26
    3、界面左侧有配置阵列选项、下一步选择增加配置、手动配置、将左侧配置的磁盘加入右侧驱动、选择raid0 模式,自动设置磁盘容量大小合并磁盘、进行磁盘初始化、保存重启 二、挂载磁盘 1、mkfs -t xfs /dev/sdc 对...

    一、磁盘安装配置

    1、插入磁盘,重启
    2、重新启动服务器,进入webbios设置页面(开发集群使用ctrl + H 进入webbios,不同服务器可能不一样)
    3、界面左侧有配置阵列选项、下一步选择增加配置、手动配置、将左侧未配置的磁盘加入右侧驱动、选择raid0 模式,自动设置磁盘容量大小合并磁盘、进行磁盘初始化、保存重启

    二、挂载磁盘

    1、mkfs -t xfs /dev/sdc 对新磁盘进行格式化
    2、mkdir /data2创建对应的挂载目录
    3、mount /dev/sdc /data2 挂载新磁盘
    4、修改 /etc/fstab,开机挂载磁盘的配置
    加入一行: /dev/sdc /data2 xfs noatime 0 0

    三、集群配置修改

    1、增加Datanode文件目录
    参数:dfs.datanode.data.dir 添加挂载的盘目录
    2、增加Namenode元数据目录
    参数:dfs.namenode.name.dir 添加挂载的盘目录
    3、修改Nodemanager本地目录
    参数:yarn.nodemanager.local-dirs
    4、修改NodeManager 容器日志目录
    参数:yarn.nodemanager.log-dirs
    5、修改Kafka数据日志目录
    参数:log.dirs

    注意:

    重启集群可能会出现时间不同步导致hbase 无法启动,可以使用ntp同步一下集群时间
    在这里插入图片描述
    欢迎扫码进群,期待更优秀的你!

    展开全文
  • 存放未初始化的全局变量,将.data和.bss分开的理由是为了节约磁盘空间,.bss不占实际的磁盘空间。这句话该怎么理解呢? 可以看下面的例子: #include <stdio.h> int a[1000]; int b[1000] = {1}; int main() {...

    转自https://blog.csdn.net/Move_now/article/details/69307890


    elf文件中.bss段:
    存放未初始化的全局变量,将.data和.bss分开的理由是为了节约磁盘空间,.bss不占实际的磁盘空间。这句话该怎么理解呢?
    可以看下面的例子:

    #include <stdio.h>
    int a[1000];
    int b[1000] = {1};
    int main()
    {
        printf("123\n");
        return 0;
    }
    
    

    这里编写了一个test.c的文件,gcc编译gcc test.c -o test之后,使用ls -l test命令可以得到可执行文件的信息,我们只关注文件的大小为12608。

    在这里插入图片描述
    使用命令size test查看各个段的大小(不包含stack和heap段):

    在这里插入图片描述
    接着我们修改源程序:

    #include <stdio.h>
    int a[1000] = {1};
    int b[1000] = {1};
    int main()
    {
        printf("123\n");
        return 0;
    }
    

    编译之后,使用ls -l test命令再次查看可执行文件的信息:

    在这里插入图片描述
    使用命令size test查看段的大小:

    在这里插入图片描述
    可以看到大小从12608变成了16608,与之前相对比,该文件占据的大小涨了4000字节,这不就是我们的数组a[1000]的大小吗?我们所在的改动仅仅是初始化了a[1000],让这个数组的所在段从.bss段改到了.data段。通过size test命令查看bss段的大小也减小了。这就证明了.bss段中的数据并没有占据磁盘空间,从而节约了磁盘的空间

    当程序加载运行时,就会为.bss段中的数据分配内存并进行初始化了

    下面还有两个疑问,那就是int a[1000]既然不占据实际的磁盘空间(是指不占据应该分配的内存大小),那么它的大小和符号存在哪呢?

    .bss段占据的大小存放在ELF文件格式中的段表(Section Table)中,段表存放了各个段的各种信息,比如段的名字、段的类型、段在elf文件中的偏移、段的大小等信息。

    我们可以通过命令readelf -S test来查看test可执行文件的段表(这里只截取了一部分):

    在这里插入图片描述
    这里再额外说明一个很有趣的地方,在elf文件结构中,有一个字符串表.strtab,里面存放的是elf文件中各个段的名字以及变量名等字符串,字符串表中记录了这些字符串以及对应的下标,需要用到这些字符串时,直接用偏移下标去取就行了。段表中存放的段的名字这一项,就是存的.strtab中对应字符串的偏移

    .bss段所占空间的大小存在哪里解决了,那么就剩下符号了。
    符号当然对应的存在符号表.symtab中了。
    我们可以通过命令readelf -s test来查看:

    在这里插入图片描述
    在第49行,我们看到了定义的全局数组b[1000],4000那一项表明数据的大小是4000字节,OBJECT代表是一个变量,GLOBAL代表是作用域是全局的。

    最后我们总结一下:

    .bss不占据实际的磁盘空间,只在段表中记录大小,在符号表中记录符号。当文件加载运行时,才分配空间以及初始化。

    展开全文
  • 内存映射

    2020-07-30 17:14:23
    未初始化的全局变量和未初始化的局部静态变量默认值是0,本来这些变量也可以放到data段的,但是因为他们都是0,所以为他们在data段分配空间并且存放数据0是没有必要的。(目的就是为了节省磁盘内存空间)程序在运行...

    目标文件各个段在文件中的布局如下:

    映射表
    各个段介绍:

    init段:

    程序初始化入口代码,在main() 之前运行。

    bss段:

    BSS段属于静态内存分配。通常是指用来存放程序中未初始化的全局变量和未初始化的局部静态变量。未初始化的全局变量和未初始化的局部静态变量默认值是0,本来这些变量也可以放到data段的,但是因为他们都是0,所以为他们在data段分配空间并且存放数据0是没有必要的。(目的就是为了节省磁盘内存空间)程序在运行时,才会给BSS段里面的变量分配内存空间。

    在目标文件(*.o)和可执行文件中,BSS段只是为未初始化的全局变量和未初始化的局部静态变量预留位置而已(只是简单的维护开始和结束的地址,即总大小),它并没有内容,所以它不占据空间。

    data段:

    数据段(datasegment)通常是指用来存放程序中已初始化的全局变量和已初始化的静态变量的一块内存区域。数据段属于静态内存分配。

    text段:

    代码段(codesegment/textsegment)通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读,某些架构也允许代码段为可写,即允许修改程序。在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。

    rodata段:

    存放的是只读数据,比如字符串常量,全局const变量 和 #define定义的常量。例如: char*p=“123456”, "123456"就存放在rodata段中。
    1.常量不一定存在rodata里,有的立即数在编码指令里,即.text代码段中。
    2.对于字符串常量,编译器会自动去掉重复的字符串如图指针地址
    地址
    3.可以有多个进程共享提高空间利用率
    4.在某些嵌入式系统中,rodata存放在rom中,运行时直接读取rom无需加载在ram内存中

    strtab段:

    存储的是变量名,函数名等。例如: char* szPath="/root",void func() 变量名szPath 和函数名func 存储在strtab段里。

    shstrtab段:

    bss,text,data等段名也存储在这里。

    rel.text段:

    针对 text段的重定位表,还有 rel.data(针对data段的重定位表)

    heap堆:

    堆是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张);当利用free等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减)

    stack栈:

    是用户存放程序临时创建的局部变量,也就是说我们函数括弧“{}”中定义的变量(但不包括static声明的变量,static意味着在数据段中存放变量)。除此以外,在函数被调用时,其参数也会被压入发起调用的进程栈中,并且待到调用结束后,函数的返回值也会被存放回栈中。由于栈的先进先出特点,所以栈特别方便用来保存/恢复调用现场。从这个意义上讲,我们可以把堆栈看成一个寄存、交换临时数据的内存区。

    验证BSS内存空间

    程序1:
    int ar[30000];
    void main()
    {
    }

    程序2:
    int ar[300000] = {1, 2, 3, 4, 5, 6 };
    void main()
    {
    }
    结论是:程序2编译之后所得的.exe文件比程序1的要大得多。 为什么?
    区别很明显,一个位于.bss段,而另一个位于.data段,两者的区别在于:
    全局的未初始化变量存在于.bss段中,具体体现为一个占位符;
    全局的已初始化变量存于.data段中;而函数内的自动变量都在栈上分配空间。

    .bss是不占用.exe文件空间的,其内容由操作系统初始化(清零);

    而.data却需要占用,其内容由程序初始化,因此造成了上述情况。

    注意:

    1. bss段(未手动初始化的数据)并不给该段的数据分配空间. 程序运行后,系统分配内存空间并由系统初始化,默认内存空间的值都为0. section table中保存了BSS段(未初始化的全局变量和未初始化的局部静态变量)内存空间大小总和,所以程序运行后,系统知道该分配多少内存给BSS段。

    2. data(已手动初始化的数据)段则为数据分配空间,数据保存在目标文件中。

    展开全文
  • .bss与COMMON以及它们之间的区别

    千次阅读 2019-03-27 17:34:04
    目标格式文件区分已初始化与未初始化变量是为了空间效率:在目标文件中,未初始化变量不需要占据任何实际的磁盘空间,运行时,分配这些变量,初始值为0; COMMON在节头部表中没有条目,是一个特殊的伪节(oseudosecti...

    .bss与COMMON

    .bss中存放,未初始或者被初始化为0的全局变量以及静态变量。在目标文件中.bss section不占据实际的空间,只是一个占位符。目标格式文件区分已初始化与未初始化变量是为了空间效率:在目标文件中,未初始化变量不需要占据任何实际的磁盘空间,运行时,分配这些变量,初始值为0;

    COMMON在节头部表中没有条目,是一个特殊的伪节(oseudosection),表示还未被分配位置的未初始化的的数据目标。

    COMMON和.bss的区别

    COMMON和.bss的区别很细微,现代的版本根据以下规则来将可重定位目标文件的符号分配到COMMON和.bss中

    COMMON--------------未初始化的全局变量
    .bss ---------------------未初始化的静态变量,以及初始化为0的全局变量或静态变量

    为什么采取这两种方式来分配全局和静态变量的符号?

    采取这两种看起来很绝对的区分方式的原因来自于连接执行符号解析的方式。在某些情况下连接器允许多个模块定义同名的全局符号。当编译器材翻译某个符号时,遇到一个弱全局符号(已初始化的全局变量是强全局符号,未初始化的全局变量是弱全局符号),比如一个未初始化的全局变量x,编译器无法知道其他模块是否也定义了这个x。如果其他模块也定义了x,编译器无法预测连接器该使用x的多重定义中的哪一个。所以编译器把x分配给COMMON,把决定权留给连接器。另一方面,如果x初始化为0,那么他就是一个强全局符号,根据连接器的规则如果有一个强符号和一个弱符号,那么选择强符号。所以编译器会直接把x给.bss。类似的,静态符号的构造就必须是唯一的,所以编译器可以自信的把他们分配到.data或.bss。

    展开全文
  • C语言规定,未初始化的全局变量和局部静态变量的初始值为0 所以不需要为其分配任何空间。 .data 已经初始化的变量中存放具体的初始值,需要占磁盘空间。 BSS Block Started by Symbol 用于为符号预留空间 ...
  • 初始化期间以及接受连接之前,会自动重播在意外关闭之前完成更新数据文件的修改。 默认,redo log在磁盘上由ib_logfile0和ib_logfile1两个文件物理表示。 MySQL以循环方式写入redo log文件。redo log中的数据...
  • BSS(未初始化数据)没有存放在磁盘程序文件。应为它们运行前初始值为0。正文段和已初始化数据存放在目标文件中。 堆区用于动态分配内存,位于BSS和栈中间的区域。采用链式存储,频繁的malloc()和free()导致其效率...
  • 关于内存空间的分配内存空间主要由五个部分组成代码段(.text)、...BSS段:用来存放程序中未初始化的全局变量和静态变量(初始化分为显式和隐式初始化,未初始化指程序员不初始化的话,自动初始化为0。)不占磁盘空间,
  • 进程映像

    2021-04-20 20:41:11
    进程映像 进程在内存中的分布情况 ... bss 静态数据段:存储未初始化过的全局变量、未初始化过的静态局部变量,该段内存会在运行时先清理为0 heap 堆内存: 由程序员手动管理,比较麻烦,但是足够大 stack 栈内存:
  • 在没有调入内存前,可执行程序分为代码段、数据区和未初始化数据区三部分。 BSS段:(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于...
  • 进程映像: ...bss 静态数据段 储存未初始化的全局变量、未初始化过的被static修饰的局部变量,程序运行时会被清理为0 stack 栈 储存局部变量、块变量,会随着程序不断申请、释放,由操作系统管理,特
  • bss 静态数据段:存储未初始化过的全局变量、未初始化过的静态局部变量,该段内存会在运行时先清理为0 heap 堆内存: 由程序员手动管理,比较麻烦,但是足够大 stack 栈内存: 存储局部变量、块变量,由操作系统自动...
  • 关于BSS段的大小

    千次阅读 2015-09-17 21:44:20
    但BSS段在磁盘上不占用任何空间,它仅是记录所有未初始化全局变量与局部静态变量的大小总和。 2.BSS段在加载运行前的处理 当可执行文件加载运行前,会为BSS段中的变量分配足够的空间并全部自动清理(因此,才有...
  • 初始化寄存器ÿ0c;打印必要信息 call loader ;执行loader,把现在这张软盘的数据全部读到8000h开始。 jmp kernalseg:0 ;跳转到内核。物理地址为c200h=8000h+4200h;8000为loader的 ;开始地址,4200...
  • DELL PowerEdge R710 RAID1装系统…

    千次阅读 2017-06-14 13:41:06
    问题描述: 之前为RAID0,装系统正常;改成RAID1后,安装Windows ...重做RAID后,未初始化。 解决办法: 初始化,再安装系统,正常。 注:这是我遇到的问题的解决办法,可能无法解决所有的此类问题,仅供参考。
  • 进程线程基础

    2017-04-26 22:38:33
    进程:elf文件执行过程,4G虚拟空间,代码+初始化数据段+未初始化数据段+堆+栈+env,命令行参数 进程状态 进程上下文:context(PC,reg,堆栈指针等) 进程模式 用户模式 空间地址0x0000 0000 -0xbfff ffff 3G空间,...
  • 中文API支持库(1.0-0

    2009-04-17 08:28:19
    _LZ初始化() 这个函数用于初始化内部缓冲区。对一个给出打开文件句柄的一个文件进行解压时,将用到这个缓冲区。注意完成后一定用LZClose关闭这个句柄。最多只能同时打开16个压缩文件句柄 。返回值:由lz32.dll库使用...
  • 进程、、、

    2017-09-16 09:39:43
    进程:elf文件执行过程,4G虚拟空间,代码+初始化数据段+未初始化数据段+堆+栈+env,命令行参数 进程状态 '进程上下文:context(PC,reg,堆栈指针等) 进程模式 : 用户模式 :空间地址0x0000 0000 -0xbfff ffff 3G空间,...
  • bss段的作用

    千次阅读 2011-09-08 13:15:58
    bss段主要是为了节省程序的目标文件或者说可执行文件所占的磁盘空间。... 对于单个变量可能不明显,但当情形是初始化和未初始化的大型数组时,例如   int ar0[10000] = {1, 2, 3, ...};   和
  • linux知识(一) 程序、进程与线程程序进程程序如何变成进程?...ZI段:(.bss段)未初始化的为0的变量段(全局变量和静态变量) 进程 进程: 进程是资源分配的最小单位,占用系统资源 进程主要包括: RO段:
  • 这五个段分别是: BSS段: 通常用来存放程序中未初始化的全局变量的一块内存区域.属于静态内存分配. 问题:全局变量不都是默认被初始化为0吗? (data)数据段: 通常是指用来存放程序中已初始化的全局变量的一块内存区域....
  • 进程映像: 程序:存储磁盘上的可执行文件(二...静态数据段 未初始化的全局变量,程序运行时会被清理为0。 heap 堆 由程序员手动管理 特点就是够大 从低地址想高地址拓展 stack 栈 局部变量、块变量 会随着程序运行不断
  • 如果一个硬盘第0扇区被清0(就是每个字节都填上00),或者被别的数据破坏(如病毒),导致分区表损坏,那么硬盘在磁盘管理器里看到的磁盘状态是“未初始化”或者“未分区”状态。如下图: ...
  • bss 静态数据段 未初始化的全局变量,程序运行时会被清理为0。 stack 栈 局部变量、块变量 会随着程序运行不断申请、释放 由于系统管理 heap 堆 由程序员手动管理 特点就是够大 局部变量和全局变量: 局部变量:定义...
  • kbhit函数检查是否有键按下,返回值为整数,按键时返回0,需要头文件conio.h。 4.利用控制信息修改数据模型变为新的数据模型 例:贪吃蛇游戏 #include #include #include #include #include int head,...
  • 系统修复引导过程及引导修复一、磁盘引导二、grub文件引导三、内核加载四、系统初始化镜像五、系统启动级别六、超级用户密码忘记 一、磁盘引导 mbr=主引导记录=0磁道1扇区446 作用:记录grub2引导文件的位置,当mbr...

空空如也

空空如也

1 2 3 4 5
收藏数 99
精华内容 39
关键字:

未初始化磁盘0