一、进程的不同分类方式:
1、系统进程和用户基础
2、前台进程和后台进程
3、CPU密集型进程和IO密集型进程
二、进程的层次结构
1、unix进程家族树:init为根,父进程结束,子进程会跟着结束
2、Windows:各个进程地位相同,无父子进程关系
三、进程和程序的区别:
1、程序是静态的(可执行文件),进程是动态的,可执行文件的内容通过拷贝到内存上占用CPU运行变成进程。
2、进程能准确刻画并发,程序因为没在运行,就不会由并发概念
3、进程有生命周期,诞生和释放,时间上比程序短暂,程序存储在磁盘上相对长久
4、程序可以对应多个进程,
5、进程可以创建其他进程。
四、操作系统给每个进程分配了一个地址空间。
可对应到c/c++中的堆空间,栈空间,常量区,代码区等概念
五、进程映像:
1、对进程执行活动全过程的静态描述,理解成进程的快照就可以
2、进程映像由进程地址空间内容,硬件寄存器内容,该进程相关的内核数据结构,内核栈组成
3、用户相关的内容:进程地址空间,包括代码段,数据段,堆和栈,共享库等
4、寄存器相关的内容:程序计数器,指令寄存器,程序状态寄存器,栈指针,通用寄存器的值
5、内核相关的内容:静态部分包括:PCB以及各种资源的数据结构,动态部分包括:内核栈(不同进程在加入内核后使用不同的内核栈)
六、上下文切换
1、将CPU硬件信息从一个状态信息切换到另一个进程的过程叫做上下文切换
2、进程运行时,其硬件信息保存在CPU上的寄存器中,寄存器包括:程序寄存器,程序状态寄存器,栈指针,通用寄存器,其他控制寄存器的值
3、进程不运行时,这些寄存器的值保存在进程控制块PCB中,当操作系统要运行一个新的进程时,将PCB的的相关值送到对应的寄存器中
七、可再入程序:
可再入程序时可被多个进程同时调用的程序,具有以下性质:
纯代码,在执行过程中自身不会改变,调用它的进程应该提供数据区,生活中大部分的程序都是可再入程序。



