进程的提出为了解决 程序并发的问题,能够显著提供高提高CPU的利用率
什么是进程?
进程是具有独立功能的程序,关于某个数据集合上的依次运行活动(某个程序在运行)
1、进程和程序的区别
1)程序是一个静态的概念(一堆指令的集合)
进程是个动态的(体现的是程序的依次运行活动)
2)一个程序能够对应多个进程
一个进程只能对应一个程序
3) 系统分配资源的最小单位是进程
进程的地址空间是互相独立的
2、如何在一个进程内 新建一个进程
fork()
ps -ef
在linux内核中, 为了区分不同的进程,特地给每一进程赋予
一个唯一的number,进程号(pid) the id of process
pid 的数据类型是 pid_t
3、进程的地址空间
任意一个进程能够访问的最大的地址空间为 4G
.text: 代码段,正文段 保存指令的区域, 只读
.data:
初始化的全局变量 和 初始化的 static 变量
.bss:
程序在运行时, 会把 .bss段全部清零
没有初始化的全局变量或者 static变量
.rodata:
read only data 只读数据段
常量: 字符串常量
被const修饰的变量:const char ch = 'H';
stack(栈): 自动分配并且会自动回收 (函数栈)
函数传参的时候,是传值还是传地址
int a;
heap(堆): 动态分配, 随进程的持续,并且必须手动释放
malloc alloc realloc free
char *ptr = malloc(100);