进程的基本知识
程序的执行
程序顺序执行的特征
顺序性:处理机按照程序的的顺序执行
封闭性:结构不受外界因素的影响
可再现性:重复执行、结果相同
描述程序执行的依赖关系的方法
前趋图(有向无环图)
并发执行的特征
间断性(挂起、休眠等操作)
失去封闭性,因为内存池等属于公共资源
不可再现性:重复执行的结构不同
进程的描述
进程结构
进程的特征
动态性:具有生命周期,由创建而执行,由调度而执行,由撤销而消亡
并发现:多个进行同时允许
独立性:每个进行独立运行、独立分配资源、独立接受调度
异步行:每个进程的运行时不可知的
进程和程序的关系
进程是一个动态概念,程序是一个静态概念
进程具有并行特征
进程是竞争资源的基本单位
进程的三种基本状态(处于生命周期的哪个阶段)
就绪状态、执行状态、阻塞状态
另一个状态,挂起
进程控制
进程控制块(PCB)
pcb中的信息:
- 进程标识符
- 处理机状态(主要寄存器的状态)
通用寄存器,暂存信息,包括现有数据
指令计数器,访问的下一条指令的地址
程序状态字(
Program Status Word)
用户栈指针
- 进程调度信息
进程状态
进程优先级
与调度算法有关信息
- 进程控制信息
程序和数据的地址(外存活内存中的地址)
进程同步和通信机制
资源清单,所需资源与已分配资源(动态变化)
PCB的组织方式
线性方式
N一般不会太大,不同的操作系统都不一样
链表方式:按状态分(执行、就绪、阻塞、空闲(此时控制块中没有任何信息))
索引方式
进程控制
进程的创建(creation of process)
- 申请空白PCB,为新进程申请唯一的数字标识符(如何无法申请空白PCB是,可能创建进程失败)
- 分配资源
- 初始化进程控制块
- 将该进程送入进程队列(就绪状态)
进程的终止(termination of process)
终止条件
- 正常结束
- 异常结束(自己本身出错)
- 外界干预(终止命令、父进程终止、被父进程终止)
进程的阻塞与唤醒
相当于JAVA语言的wait,可以被唤醒notify、notifyAll,释放CPU的执行权
进程的挂起与激活
相当于JAVA语言的Sleep操作
进程的同步
几个概念
互斥:互斥是并发执行的多个进程由于
竞争同一资源而产生的相互排斥的关系,这些资源必须协调使用
同步:同步是进程间
共同完成一项任务时直接发生相互作用的关系,具有合作关系
临界资源:以此仅允许一个进程使用的共享资源
临界区:在每个进程中访问临界资源的那段程序,例如每个进程中使用打印机的程序,使用加锁机制
进程必须互斥的进入临界区