0%

Linux-11-进程控制与进程间通信

进程的基本概念

进程与程序

进程的组成部分

  • 指令段(Text)
    • 程序的CPU指令代码,包括:主程序和子程序编译后的CPU指令代码, 以及调用的库函数代码
    • 指令段的大小固定不变,只读
  • 用户数据段
    • 全局变量,静态(static)变量,字符串常数
    • 允许数据段增长和缩小,实现内存的动态分配
      • 系统调用sbrk()允许编程调整数据段的大小(调整单位为“页”)
      • 内存管理库函数,如:malloc(),free()
  • 用户栈段
    • 程序执行所需要的栈空间,实现函数的调用
      • 用于保存子程序返回地址
      • 在函数和被调函数之间传递参数
      • 函数体内部定义的变量(静态变量除外)
    • main函数得到的命令行参数以及环境参数
      • 存放在栈的最底部
      • main函数运行之前,这些部分就已经被系统初始化
    • 栈段的动态增长与增长限制
  • 系统数据段
    • 上述三部分在进程私有的独立的逻辑地址空间内(CPU用户态访问)
    • 系统数据段是内核内的数据,每个进程对应一套
      • 包括页表和进程控制块PCB

物理地址和虚拟地址转换

PTE字段描述

字段