操作系统(三)进程线程模型

  1. 并发环境与多道程序设计
  2. 进程的基本概念,进程控制块
  3. 进程状态以及状态转换
  4. 进程控制:创建,撤销,阻塞,唤醒,fork()的使用
  5. 线程基本概念,线程的实现机制
  6. 处理机调度

 
 
 

一:并发环境与多道程序设计

1.程序的顺序执行
程序:指令或者语句序列,体现了某种算法,所有程序是顺序的。
顺序环境:在计算机系统中只有一个程序在运行,这个程序独占系统中所有资源,其执行不受外界影响。
顺序执行的特征:

  1. 顺序性
  2. 封闭性
  3. 程序执行结果的确定性
  4. 程序结果的可再现性
     
     
     

2.多道程序系统
计算机能够同时处理多个具有独立功能的程序,以增强系统的处理能力和提高机器的利用率
多道程序的特点:独立性 随机性 资源共享性

多道程序设计是指在一台处理机上并发运行多个程序

引入多道程序设计技术的主要目的在于:** 充分利用处理机,减少处理机空闲时间 **

3.程序的并发执行
并发环境:在一定时间内物理机器上有两个或者两个以上的程序同处于开始运行但尚未结束的状态,并且次序不是事先确定的。
并发的特征并发的程序在执行期间具有相互制约关系 程序与计算不再一一对应 并发程序执行结果不可再现

 
 
 
二:进程模型

1.进程的概念
进程是正在执行的程序,从操作系统角度可分为系统进程用户进程
进程与程序既有区别又有联系

2.进程的特性
并发性 动态性 独立性 交往性 异步性

3.进程的基本状态及其转换
进程的基本状态:不同系统设置的进程状态数目不同。有三状态进程模型,五状态进程模型,七状态进程模型。

进程的三种基本状态
就绪状态:当进程已经分配到除了CPU以外的所有必要资源以后,只要再获得处理器就可以执行的状态称为就绪状态。在一个系统里,可以有多个进程同时处于就绪状态,通常把这些就绪状态进程排成一个或者多个队列,称为就绪队列。
运行状态:处于就绪状态的进程一旦获得了处理器,就可以运行,进程状态也就处于执行状态,在单处理器系统中,只能有一个进程处于执行状态。在多处理器系统中可能有多个进程处于运行状态。
等待状态:正在执行的进程因为发生某些事件(如请求输入/输出,申请额外空间等)而暂停运行。这种受阻暂停的状态称为阻塞状态,也可以称为等待状态。通常将处于阻塞状态的进程排成一个队列,称为阻塞队列。在有些系统中,也会按照阻塞原因的不同将处于阻塞状态的进程排成多个队列。

补充四种:
创建状态:当一个新进程刚刚建立,还未将其放入就绪队列时的状态,称为创建状态。
结束状态:当一个进程已经正常结束或者异常结束,操作系统已经将其从系统队列中移出,但是,尚未撤销,这时称为结束状态。
挂起状态:把一个进程从内存转到外存,使进程处于挂起状态。
激活状态:把一个进程从外存转到内存,使进程在获得所需的资源后能够运行。

进程状态之间的切换
新状态——>就绪状态:当就绪队列能够接纳新的进程时,操作系统会把处于新状态的进程移入就绪队列,此时进程就从新状态转变为就绪状态。
就绪状态——>执行状态:处于就绪状态的进程,当进程调度程序按照一定的算法为之分配了处理器之后,该进程就可以获得执行,从而使得进程状态由就绪状态变为执行状态。处于执行状态的进程也称之为当前进程。
执行状态——>阻塞状态:正在执行的进程因为自身需求发生某种事件(如I/O请求或者等待某一资源等等)而无法继续执行时,只要暂停执行,此时进程就由执行状态变为阻塞状态。
执行状态——>就绪状态。正在执行的进程,如果因系统分配的时间片结束或者优先权较低,而暂停执行时,该进程就会从执行状态转变为就绪状态。
阻塞状态——>就绪状态:处于阻塞队列中的进程,如果需要的资源得到满足或者完成输入输出响应,就会变为就绪状态,进入就绪队列,等待下一次调度。
执行状态——>终止状态。当一个进程正常结束或出现异常错误结束时,进程将由执行状态转变为终止状态。

当一个进程释放一种资源的时候,有可能会导致一个或者几个进程由阻塞变就绪
当一个进程处于正等待合作进程的一个消息状态时,称其为等待(阻塞)状态。

4.进程控制块(PCB)的内容
分为调度信息和现场信息。
调度信息供进程调度的时候使用,描述进程当前所处的状态。
现场信息刻画了进程的运行情况。

进程的组成:由程序数据进程控制块(PCB)组成。
进程控制块保存进程的地址信息,通过进程控制块能够找到进程。PCB是灵魂,程序和数据是进程的“躯体”。

在操作系统中,进程的最基本的特征是动态性和并发性

5.PCB表的组织方式

  1. 线性方式
  2. 索引方式
  3. 链接方式

进程的队列

  1. 就绪队列
  2. 等待队列
  3. 运行队列

6.进程控制
进程的创建撤销以及完成进程各个状态之间的转换,由具有特定功能的原语完成。
创建原语
撤销原语
阻塞原语
唤醒原语

Unix的fork()函数
父进程通过fork()函数创建子进程。
特点:只被执行一次,返回两次结果,一次是在调用进程中,一次是在创建的子进程中,父进程返回的是子进程的PID,子进程中fork()返回0。

7.1进程的创建
创建PCB
赋予一个统一进程标识符
为进程映像分配空间
初始化进程控制块
设置相应的链接(如把新进程加到就绪队列的链表中)

7.2进程的撤销
引起进程撤销的事件。有三类:
进程正常结束。
在进程运行期间,由于出现某种错误和故障而使得进程被迫中止。
进程应外界的请求而终止运行。

7.3进程的阻塞和进程唤醒
阻塞:引起进程阻塞的事件一共四类:
请求系统服务
启动某种操作
新数据尚未到达
无新工作可做

唤醒:引起进程唤醒的事件一共四类:
请求系统服务得到满足
启动某种操作完成
新数据已经到达
有新工作可做

8.线程的引入

进程作为系统中的一个基本单位,具有两个属性:一是资源分配和拥有的基本单位。二是一个可以独立调度和执行的基本单位
而在进程操作过程中,因为进程是一个资源的拥有者,所以系统要不断地进行资源的分配和回收,现场的保存与恢复等工作。系统要为此付出巨大的时间和空间的开销。此外,在系统中所设置的进程数目不能过多,进程切换的频率也不能过高,这就限制了系统并发程度的进一步提高。

如何能使进程更好地并发执行,同时又能尽量减少系统开销呢?
将进程的两个属性分开,操作系统分别处理,即只作为资源分配与拥有的单位,不再是调度和执行的基本单位,使之轻装前进;而对资源分配与拥有的基本单位,不进行频繁的切换处理,以减少系统开销。正是因为这种思想,产生了一个新的概念——线程。

9.线程的概念
线程是进程中的一个实体,是被系统独立调度和执行的基本单位
线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(例如程序计数器,一组寄存器和栈),但是它可以与同属于一个进程的其他线程共享进程所拥有的全部资源。
一个线程可以创建和撤销另一个线程,统一进程中的多个线程之间可以并发执行。线程之间也会相互制约,使其在运行中呈现异步性。因此,线程同样具有就绪、执行、阻塞三种基本状态。

线程和进程的比较
(1)调度:传统操作系统中,进程是作为资源分配和独立调度的基本单位。在引入线程的操作系统中,则把线程作为调度和分派的基本单位,把进程作为资源拥有的基本单位
(2)并发性:引入线程的操作系统中,不仅进程之间可以并发操作,而且在一个进程中的多个线程之间也可以并发执行
(3)拥有资源:无论哪种操作系统,进程都是拥有资源的一个独立单位,一般情况,线程自己不拥有系统资源,但是线程可以访问属于进程的资源。
(4)系统开销:进程的创建和撤销都需要 分配或回收资源,因此操作系统所付出的开销显著大于创建和撤销线程时的开销。
同样,进程切换的开销也远大于线程切换的开销。
简而言之,一个程序至少有一个进程,一个进程至少有一个线程。

10.线程的实现机制
(1)用户级线程。用户级线程是由用户控制的,对于线程的创建,撤销与切换,都与系统控制无关,完全由用户自己管理。简单来说就是系统并不知道有用户级线程的存在,在系统中各种控制仍然是基于进程的。
(2)内核级线程。内核级线程是依赖于内核,即无论是用户进程中的线程,还是系统进程中的线程,它们的创建,撤销与切换都是由内核实现的。在系统中保留了一张线程控制块,系统根据该线程控制块来感知线程的存在,并对线程进行控制。
(3)混合实现方式。同时实现用户级和内核级线程。这是主流实现方式。

进程是资源的分配单位,线程调度和分配的单位
不管系统中是否有线程,进程都是拥有资源的独立单位

进程可以由程序、数据和进程控制块描述

11.Pthread线程包
Pthread是一套用户级线程库,定义了线程标准,大部分的UNIX系统都支持该标准。

12.进程调度概述
调度分层次的,可以分为高级调度,中级调度,低级调度。
高级调度:它用于确定把后备队列上的哪些作业调入内存。
一般在大型批处理系统中配有作业调度,其他操作系统。通常不配置。
低级调度(进程调度):指在多道程序环境下,内核按照一定的调度算法,从就绪队列中选出一进程,把处理机分配给他。
中级调度:核心按照一定的调度算法,将内存中处于等待状态的某些进程调至外存兑换去,来腾空这部分内存。

作业调度的关键在于选择恰当的作业调度算法

进程调度的时机
正在执行的进程运行完毕
正在执行的进程调用阻塞原语将自己阻塞进入等待状态
调用激活原语激活等待资源的进程
时间片用完
就绪队列中的某个进程的优先级高于当前运行进程的优先级

13.调度算法设计原则
(1)面向用户的原则:周转时间短
(2)面向系统的原则:系统吞吐量高

14.进程(线程调度算法)

先来先服务调度算法(FCFS):这种调度算法的裁决模式是非抢占式的,优先权函数=花费在系统中的实际时间,仲裁规则是随机的。这种调度算法有利于长进程,而不利于短进程。

最短作业优先调度算法(SPF):这种调度算法的裁决模式是非抢占式的,优先权函数=运行时间,仲裁规则是按照时间先后或者随机方式。这种调度算法照顾到了系统中的短进程,有效地降低了进程的平均等待时间,提高了系统的吞吐量,但是对长进程不利。

最短剩余时间优先调度算法(SRT):这种调度算法的裁决模式是抢占式的,优先权函数是动态的,随着进程运行和完成时间的减少而增加,仲裁规则是按照时间先后顺序或者随机方式。这种调度算法充分照顾到了剩余时间短的进程。

时间片轮转调度算法(RR)
时间片轮转调度算法的裁决模式是面向时间片的,所有就绪进程的优先权函数值相同,仲裁规则是轮转规则。这种调度算法适用于交互进程的调度。

最高优先级调度算法
为了照顾紧迫型进程获得优先处理,引入了优先权调度算法,也称为外部优先权调度算法。它是从就绪队列中选择一个优先权最高的进程,获得处理器并执行。
优先权调度算法的裁决模式是抢占式的或者是非抢占式的,优先权函数是用户或系统赋予它们的优先权,仲裁规则是随机的或者是先进先出的。
对于优先权调度算法,其关键是采用静态优先权,还是动态优先权,以及如何确定进程的优先权。

多级反馈队列调度算法(MLF)
前面所说的各种进程调度算法,都存在一定的局限性。如短进程优先调度算法,不利于长进程,而且如果没有有效地表明进程的长度,其算法将无法正常使用。而多级反馈队列调度算法,则不必事先知道各个进程所需的执行时间,可以满足各种类型进程的需要,是目前一种较好的进程调度算法。

多级反馈队列调度算法的裁决模式是抢占式的或者是非抢占式的,优先权函数是从最大值开始每执行一次递减1,仲裁规则是轮转的或者按照时间先后次序
这种调度算法具有较好的性能,能满足各种类型用户的需求。

实时系统调度算法
速率单调调度算法
最早最终时限优先调度。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旺旺的碎冰冰~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值