一.什么是进程:
在用户角度看:进程就是程序的一次动态执行过程。
在系统内核角度看:①进程是分配资源的最小单位。②是操作系统分配内存,CPU时间片系统资源的基本单位。③每个进程都有自己的虚拟空间和进程状态。
二.进程的特性:
- 动态性:进程的实质就是程序的一次执行过程,进程是动态产生,动态消亡的。
- 并发性:任何进程都可以和其他进程一同执行。
- 独立性:进程能够独立运行,是系统分配和调度资源的基本单位。
- 异步性:因为进程具有独立性,各进程之间是独立的,不可预知的速度向前推进
- 结构性:从结构上看,进程有进程控制块,数据段,程序段三部分组成。
三.进程和程序的区别:
① 进程是动态的,程序是静态的。
② 进程的生命周期是短暂的,程序是永久的。
③ 一个进程只对一个程序,一个程序可以对多个进程。
四.创建子进程的过程:
- 给新建的进程分配一个独一无二的进程标识符,在内核中创建PCB。
- 复制父进程的环境。
- 给子进程分配资源栈,堆,代码段,数据段等。
- 复制父进程的地址空间内容到子进程的地址空间里。
- 将进程置为就绪状态,放到等待序列中
五.销毁进程的过程:
- 释放资源,内存文件等
- 记账信息
- 将进程设置为僵尸状态
- 转存储调度,将CPU让给需要使用的进程
六.进程的终止:
进程的终止分为俩种,第一种为正常终止,第二种为异常终止。
正常终止:①从main函数返回②调用exit③调用_exit
异常终止:①信号终止②调用abort信号终止,是上一种信号的特例。
调用exit和_exit的区别:
调用_exit函数是直接从内核退出,而掉用exit函数会先执行清理处理(关闭所有IO流,执行各种清理程序)在进入内核退出
exit是标准库函数,_exit是底层系统调用。
。在执行main函数前要执行启动例程。
七.进程的状态:
- 运行状态:指正在CPU中运行或者就绪状态。
- 可中断睡眠状态:当进程处于可中断状态,系统不会调度该进程执行。
- 不可中断睡眠状态:不可中断,指的不是CPU不响应外部硬件中断,而是指进程不响应异步信号。
- 暂停状态:进程收到SIGSTOP,SIGTSTP,SIGINT,SIGTTOU信号时就会进入暂停状态。
- 僵死状态:当进程已经停止运行,父进程没有询问其状态,称该进程为僵死状态。