进程通信
进程
进程模型
物理层面:
物理内存:进程占用一片内存空间,可以说进程就是内存的某片空间。
任意时刻,在CPU上只能执行一条指令,所以任意时刻上在CPU上执行的进程只有一个,到底执行哪一条由物理程序计数器决定。
物理层面上,所有进程共用一个程序计数器。
逻辑层面:
因为要记录每个进程的执行情况和所处的执行位置,这样才能在下次接着执行时从正确的地点开始。
从这个角度来看,每个进程都有自己的计数器。
从逻辑上讲,程序计数器可以有很多个。
时间推移
进程的推移。
进程的状态
执行、阻塞和就绪
对于这三种状态,可以组成六种转换。
- 执行->就绪
- 执行->阻塞
- 阻塞->就绪
- 就绪->执行
- 阻塞->执行
- 就绪->阻塞
上边的转换中,前4种转换时可以实现的。
对于后两种转换:
- 阻塞进程即使被给予CPU也无法执行,OS在调度时并不会在阻塞队列里挑选。因此阻塞态无法直接转换成执行态。
- 对于就绪状态的进程来说,因为并没有执行,自然无法进入到阻塞状态。一个进程只能在执行时才可能阻塞,没有执行的进程无法直接转换到阻塞状态。
进程创立
步骤:
- 分配进程控制块
- 初始化机器寄存器
- 初始化页表
- 将程序代码从磁盘读进内存
- 将处理器状态设置为“用户态”
- 跳转到程序的起始地址(设置程序计数器)
进程管理
管理工具:进程控制块(PCB,Process Control Block)。PCB里边存放和进程相关的资料(寄存器,程序计数器、状态字、栈指针、优先级、进程ID、信号、创立时间、所耗CPU时间等)。采纳的数据结构主要是线性表、链表和结构体、也可能有树和图结构。
进程管理最大的问题:资源分配