学习笔记之汤小丹《计算机操作系统第四版》----第二章 进程的描述与控制

  • 前趋图:起始结点,终止结点,重量(终止时间)
  • 顺序执行特征:顺序性、封闭性、可再现性
  • 程序间可并发执行,只要程序间不存在前趋关系。如

其中,s1: a = x + 2; s2: b = y + 4; s3:c = a + b; s4:d = c + b  因此,s1与s2无前趋关系,s1和s2可以并发执行

  • 并发执行的特征:间断性、失去封闭性、不可再现性

如:两个程序A,B. A:N = N + 1; B:print(N);N = 0;

情况1: N = N + 1发生在print(N)之前,则N的值变化为:N+1,N+1,0

情况2: N = N + 1发生在print(N)与N=0之间,则N的值变化为:N,N+1,0

情况3: N = N + 1发生在N=0之后,则N的值变化为:N,0,N+1

计算结果与并发程序的执行速度有关!!!

  • 进程控制块PCB(Process Control Block):描述进程的基本情况和活动过程,进而控制和管理进程
  • 进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位
  • 进程的特征:动态性、并发性(程序没有建立PCB,不能参与并发执行)、独立性、异步性(按各自独立的、不可预知的速度向前推进)
  • 进程在并发执行时共享系统资源
  • 进程的三种基本状态:
  1. 就绪状态:已分配除CPU之外的所有必要资源;就绪队列
  2. 执行状态
  3. 阻塞状态:由于一些原因阻塞进程,使得进程暂停,等待一段时间后可能引发进程调度;阻塞队列,根据阻塞原因的不同可能有多个阻塞队列
  • 三态五换:

  • 另两种常见状态:
  1. 创建状态
  2. 终止状态:进入终止状态的进程以后不能再执行
  • 引入挂起(Suspend)操作的原因
  1. 终端用户的需要
  2. 父进程的请求
  3. 负荷调节的需要
  4. 操作系统的需要
  • 挂起原语:Suspend  激活原语:Active
  • 活动就绪   -------》   静止就绪(不会再被调度执行):使用Suspend
  • 活动阻塞   -------》   静止阻塞:在阻塞状态时使用Suspend。当处于静止阻塞的进程在其所期待的事件出现后,它将从静止阻塞变为静止就绪
  • 静止就绪   -------》   活动就绪:使用Active
  • 静止阻塞   -------》   活动阻塞:使用Active
  • PCB的作用:
  1. 作为独立运行基本单位的标志
  2. 能实现间断性运行方式(PCB保留CPU现场信息)
  3. 提供进程管理所需要的信息,如该进程所需要哪些资源
  4. 提供进程调度所需要的信息
  5. 实现与其他进程的同步与通信
  • PCB的组织方式
  1. 线性方式
  2. 链接方式:具有相同状态的PCB放在一起;阻塞状态的PCB会因为其阻塞原因不同而有多个阻塞队列
  3. 索引方式
  • 处理机的执行状态:系统态(管态、内核态)、用户态(目态)
  • 操作系统三中最基本的支撑功能:中断处理、时钟管理、原语操作
  • 子进程可以继承父进程所拥有的资源。当子进程被撤销时,应将其从父进程那里获得的资源归还给父进程。进程不能拒绝其子进程的继承权
  • 在Windows中,不存在任何进程层次的概念,所有的进程都具有相同的地位。句柄;句柄可传递
  • 引起创建进程的事件
  1. 用户登录
  2. 作业调度
  3. 提供服务
  4. 应用请求
  • 进程创建的过程:
  1. 申请空白PCB
  2. 为新进程分配其运行所需的资源
  3. 初始化PCB
  4. 将新进程插入就绪队列(如果可以插入)
  • 并发进程的两种形式的制约关系
  1. 间接相互制约关系:访问临界资源
  2. 直接相互制约关系
  • 每个进程访问临界资源的代码称为临界区
while(true){
    进入区(判断是否可以进入临界区)
    临界区(对临界资源操作)
    退出区(退出临界区)
    剩余区
}
  • 同步机制应遵循的规则
  1. 空闲让进
  2. 忙则等待
  3. 有限等待:避免进程陷入死等状态
  4. 让权等待:在有限时间到后,若进程还未进入自己的临界区,应释放处理机,该进程转为就绪状态
  • 锁机制、信号量机制(不是太明白,争取之后在JAVA的学习中弄明白)
  • 信号量只能通过两个原子操作wait(s)和signal(s)来访问,俗称为P、V操作
  • 四种信号量
  1. 整型信号量
  2. 记录型信号量:整型信号量 + 进程链表指针
  3. AND型信号量:一次分配进程所需所有资源,避免死锁
  4. 信号量集:一次可申请多个资源
  • 线程:作为调度和分派的基本单位
  • 进程拥有系统资源,而线程本身并不拥有系统资源
  • 一个进程下的多个线程共享该进程所拥有的资源
  • 同一进程下的所有线程都具有相同的地址空间
  • 每个进程都拥有一个独立的地址空间和其他资源
  • 每个线程都有用户自己的一个堆栈以及一个核心栈
  • 由进程为其下的线程提供资源和运行环境
  • Java的运行环境是单进程多线程
  • 进程是一个可拥有资源的基本单位
  • 线程是独立运行的基本单位
  • 线程必须依赖于进程而存在

 

 

猜你喜欢

转载自blog.csdn.net/smart_ferry/article/details/84494829