程序的概念
一个程序由多个程序段组成,其中任何一个程序段都是顺序的,这种程序的执行的方式就是程序的顺序执行。
程序顺序执行的特点
- 顺序性 - 处理机按照程序的顺序执行。
- 封闭性 - 程序一旦开始运行,他的结果不受到外界的影响。
- 可再现性 - 程序的执行结果和执行速度无关,之和初始条件有关。
程序并发执行的特征
间断性: 程序之间要共享系统的资源,形成相互制约的关系。相互制约导致了并发程序具有”执行-暂定-执行”的这种规律
失去封闭性 程序在并发执行时,系统的资源会受到多个程序的影响,程序就失去了封闭性。
不可再现性 程序在并发执行的时候,多次运行初始条件相同的同一程序会得出不同的运行结果。
进程的三种基本状态
- 就绪状态(Ready) - 这个状态下的进程只要获得cpu控制权,就能立刻运行。
- 运行状态(Running) - 正在运行的进程
- 阻塞状态(Blokced) - 由于发生某些事件导致程序暂停,放弃cpu控制权,进入阻塞状态。
三种状态的关系如下图:
挂起状态
计算机的资源是有限的,在资源不足的时候,把一些资源调出内存,在后续需要的时候再调回内存。
引起挂的原因有:
- 终端用户的请求。当终端用户在自己的程序运行期间发现有可疑问题时,希望暂停使自己的程序静止下来。亦即,使正在执行的进程暂停执行;若此时用户进程正处于就绪状态而未执行,则该进程暂不接受调度,以便用户研究其执行情况或对程序进行修改。我们把这种静止状态称为“挂起状态”。
- 父进程的请求。有时父进程希望挂起自己的某个子进程,以便考察和修改子进程,或者协调各子进程间的活动。
- 负荷调节的需要。当实时系统中的工作负荷较重,已可能影响到对实时任务的控制时,可由系统把一些不重要的进程挂起,以保证系统能正常运行。
- 操作系统的需要。操作系统有时希望挂起某些进程,以便检查运行中的资源使用情况或进行记账。
挂起和阻塞的区别:挂起是主动行为,阻塞是被动行为。
引入挂起后,状态由3种变5总,如下图:
进程控制块(PCB)的作用
PCB 是进程存在的唯一标识。
在系统中PCB都被组织成链表或者列表。
进程控制块包含的内容
1.进程表示符
- 内部标识符
- 外部标识符
2.处理机状态
处理机在运行的时候,信息是存放于寄存器的,当被中断的时候,需要放入PCB。
3.进程调度信息
- 进程状态
- 进程优先级
- 进程调度所需要的其他信息
- 事件
4.进程控制信息
- 程序和数据的地址
- 进程通讯和同步机制
- 志愿清单
- 链接指针
PCB的组织方式
- 链接方式
- 索引方式