我们知道,在没有OS的计算机或者单道批处理系统中,程序执行的方式是顺序执行。在多道批处理系统中,多道程序共享系统资源、并发执行,并发执行出现的问题也引入了进程的概念。 所以,在学习进程之前有必要先对程序的 顺序执行并发执行方式简单的了解


一、前驱图的概念

所谓前驱后继,其实也就是发生时间的先后关系。

作用: 用于描述程序执行的先后顺序。
本质: 是一个有向无循环图,可记为 DAG(Directed Acyclic Graph)(重点:有向无循环)

【OS笔记 5】前驱图、顺序执行与并发执行的特征

结点表示: 一个进程、一个程序段 或 一条语句。
有向边表示: 前驱关系。箭头所指的是后继,如图中 P2 是 P1 的后继。
Pi --> Pj: Pi 存在指向 Pj 的边,称 Pi 是 Pj 的直接前驱,Pj 是 Pi 的直接后继。表示 Pj 在执行前 Pi 必须完成。
终止节点: 没有后继的结点,如图中的 P9。


二、程序的顺序执行与并发执行

1. 顺序执行

(1)顺序执行的前驱图

就是“一条直线”,因为每个时刻都只能运行一个程序。

【OS笔记 5】前驱图、顺序执行与并发执行的特征
(2)程序顺序执行的特征

① 顺序性
指处理机严格地按照程序所规定的的顺序执行。

② 封闭性
指程序在封闭的环境下运行,即程序运行时独占全机资源(没有其它程序一起共享),资源的状态只有本机才能改变。

③ 可再现性
只要程序执行时的环境和初始条件相同,当程序重复执行时,都可获得相同的结果。


2. 并发执行

(1)并发执行的设计与前驱图

Parbegin 与 Parend 里面的部分并发执行,begin 和 end 里面的语句顺序执行。
所以图中 只有当 紫色的 Parbegin 里面的 P1 和 P2 并发执行完之后,才能执行接下来的 P4。

【OS笔记 5】前驱图、顺序执行与并发执行的特征


(2)程序并发执行时的特征(注意是“程序”,不是“进程”!!!我刚学时就搞混了)

① 间断性
也就是一个程序的整个执行过程是“走走停停”的,由于共享资源,这些并发的程序相互制约,有时需要进行等待,造成了 “执行——暂停——执行” 的间断性活动规律。

② 失去封闭性
由于并发的程序之间共享系统资源,导致其中任一程序在运行时,其环境都必然会收到其它程序的影响,所以就失去了运行环境的封闭性。

③ 不可再现性
程序在并发执行时,由于失去了封闭性,从而也失去了不可再现性。换句话说,程序在多次执行后,虽然它们执行的环境和初始条件是相同的,但得到的结果却各不相同。
比如 A 和 B 两个程序共享变量N,A 中会让 N+1 ,B 中会让 N=0 。那么 N 最后的数值肯定跟 A 和 B 执行的情况(比如执行顺序什么的)有关系。

此时还未引入进程的概念。如果每次执行的结果都不同,岂不是失去了程序的意义,因此,人们引入了“进程”的概念,并且设计了相应的进程同步机制,使得程序在并发同时也能独立地运行。对于进程的描述,在下一章【OS笔记 6】中。

相关文章:

  • 2021-09-08
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-05
  • 2022-12-23
  • 2021-06-25
  • 2022-12-23
猜你喜欢
  • 2021-05-19
  • 2022-12-23
  • 2022-12-23
  • 2022-01-27
  • 2022-12-23
  • 2022-12-23
  • 2021-07-10
相关资源
相似解决方案