美文网首页LinuxLinux学习之路
APUE读书笔记-07进程环境(3)

APUE读书笔记-07进程环境(3)

作者: QuietHeart | 来源:发表于2020-05-11 12:09 被阅读0次

6、c程序的内存布局

一般来说c程序具有如下的几个部分:

  • 文本段:这里包含 cpu 执行的机器指令。一般来说这个段是可以共享的,对于经常运行的程序来说,它在内存中只有一个拷贝,这个段也是只读的区域。
  • 初始化的数据段:一般简称为数据段,包含了在程序中指定初始化的数据。像类似 int a =99; 这样在所有函数之外被显示指定了初始值方式定义的变量就被初始化成为这类的数据段。
  • 未初始化的数据段:一般称作 bss 段。这样的数据段在程序运行之前被内核初始化成为0或者 null 指针。例如 int a[100]; 这样在所有函数之外定义的变量就被存储在这个数据段中。
  • 栈区:这个区域存放自动变量,用来保存函数调用的信息。
  • 堆区:运行时动态分配内存的时候会在这里申请,一般它在非初始化数据和栈区之间。
    一个典型的内存布局图示:


    图片.png

通过 size(1) 命令可以察看某个程序的文本段,数据段,以及 bss 段的大小。例如:

$size /usr/bin/cc /bin/sh
text     data   bss     dec     hex   filename
79606     1536   916   82058   1408a   /usr/bin/cc
619234    21120 18260  658614   a0cb6   /bin/sh

更为具体的信息,请参见后面给出的参考资料。

译者注

原文参考

参考: APUE2/ch07lev1sec6.html

7、共享库

大多数 unix 系统支持共享库,共享库把一些公共的函数从可执行文件中提取出来了,这样保证在运行的时候内存中只有一个库函数的拷贝。这样会减少可执行文件的大小,同时也带来了一些运行时间开销(在第一次启动可执行文件的时候以及第一次使用库函数的时候。)另外一个共享库优点就是如果库函数被修改了,那么只需要替换库文件就行了,不用重新链接程序(当然前提是那些被修改的函数的参数类型和数目是不变的)

程序可以要求使用或者不用共享库。例如可以通过 cc 或者 ld 的编译选项进行指定。

如: cc -static hello1.c

这样会导致程序在编译的时候不使用共享库。更为具体的信息在前面的预备知识“Linux系统中程序库文件简介”中描述了。

译者注

原文参考

参考: APUE2/ch07lev1sec7.html

相关文章

  • APUE读书笔记-07进程环境(3)

    6、c程序的内存布局 一般来说c程序具有如下的几个部分: 文本段:这里包含 cpu 执行的机器指令。一般来说这个段...

  • APUE读书笔记-07进程环境(1)

    1、简介 在下一章讲述进程控制相关的内容之前,我们需要先看一下单个进程的情况。本章,我们将会看到 main 函数在...

  • APUE读书笔记-07进程环境(2)

    4、程序的命令行参数 程序的命令行参数是 main 的参数 argc , argv 指定的。前面第7章第2节说过这...

  • APUE读书笔记-07进程环境(4)

    8、内存分配 ISO C 指定了三种内存分配的方式: 这三种函数如果返回的指针是非空的表示分配成功,如果出错了那么...

  • APUE 进程环境

    本文使用golang的syscall,os,golang.org/x/sys/unix包 1.main函数 mai...

  • APUE读书笔记-13守护进程(3)

    4、登陆错误 守护进程的一个问题就是如何处理错误消息。不能将消息简单地写入到标准错误输出中,因为守护进程并没有控制...

  • APUE读书笔记-09进程关系(3)

    5、Session 一个session是一个或者多个进程组的集合。参考资料中给出了一个简单的图来表示这个意思。 这...

  • APUE第7章 进程环境

    7.1引言 将介绍进程控制原语,在此之前需先了解进程的环境。本章 中将学习:当程序执行时,其main函数是如何被调...

  • APUE读书笔记-17高级进程通信(3)

    举例:基于流的s_pipe函数实现 下面的代码展示了基于流的s_pipe函数的实现。这个实现只是调用了标准的pip...

  • APUE读书笔记-08进程控制(3)

    6、wait和waitpid 当一个进程结束的时候,无论是正常的还是非正常的,内核都会通过发送SIGCHLD信号来...

网友评论

    本文标题:APUE读书笔记-07进程环境(3)

    本文链接:https://www.haomeiwen.com/subject/uxjdghtx.html