《操作系统》——进程管理(上)

《操作系统》——进程管理(上)

一、进程与线程

  • 为什么要引入进程?
    在多道程序环境下,允许多个程序并发执行,此时他们将失去封闭性,并具有间断性和不可再现性的特征,为此引入进程的概念,以便更好的描述和控制程序的并发执行,实现操作系统的并发型和共享性。
  • 什么是进程?进程由什么组成?
    进程是具有独立功能的程序在一个数据集合上运行的过程,是系统进行资源分配和调度的一个独立单位
    PCB、程序段、数据段
  • 进程是如何解决问题的?

(一)进程的概念和特征

1、进程和程序的区别?
  • 程序:静态的,存储在磁盘里的可执行文件,指令集合
  • 进程:动态的,是程序的一次执行过程
2、多个进程如何区分?——引入数据结构PCB(进程控制块)

PCB用于描述进程的基本情况和运行状态,进行控制和管理进程:

  • 实现区分各个进程:PID、UID
  • 实现资源管理:进程分配了哪些资源(内存、I/O、文件)
  • 实现对进程的控制调度:进程的运行情况(cpu使用时间、磁盘使用情况、网络流量使用情况)

PCB是进程存在的唯一标识

3、进程实体及其组成

进程实体(进程映像):进程在某一时刻的快照(状态)
组成:

  • PCB
  • 程序段
  • 数据段

注意:

  • PCB是给操作系统用的,程序段和数据段是给进程自己用的
  • 进程映像是静态的,进程是动态的
4、程序是如何运行的?
  • 程序编译链接形成可执行文件存储在硬盘
  • 程序运行前把程序放入内存
  • 程序开始运行前,操作系统创建对应的进程,建立PCB
  • 指令序列读入内存——程序段
  • 内存中存放运行中产生的数据——数据段
  • CPU从内存中取出指令开始运行
5、进程的定义?
  • 进程是程序的一次执行过程
  • 进程是一个程序及其数据在处理机上顺序执行时所发生的活动
  • 进程是具有独立功能的程序在一个数据集合上运行的过程,是系统进行资源分配和调度的一个独立单位
  • 进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位
6、名词理解

资源分配:对CPU、内存、I/O在时间上的分配,即时间片
调度:操作系统决定让这个进程上CPU运行

7、进程的特征
  • 动态性——最基本
  • 并发性——多个进程并发
  • 独立性——是系统进行资源分配和调度的一个独立单位
    引入线程后,线程是独立接受调度的基本单位,进程仍是独立获得资源的基本单位
  • 异步性——由并发导致,为避免异步的混乱结果,从而引出“进程同步”
  • 结构性——PCB+程序段+数据段

(二)进程的状态、进程的组织

1、进程的状态
  • 创建态——系统完成创建进程的一系列工作

  • 就绪态——万事俱备,只欠处理机
    进程被调度——>运行态

  • 运行态——万事俱备,也拥有处理机
    1、进程用系统调用的方式申请某种系统资源,或请求等待某个事件发生——>阻塞态(主动行为)
    2、进程运行结束,或运行中遇到不可修复的错误——>终止态
    3、时间片到,或处理机被抢占——>就绪态

  • 阻塞态——万事无,处理机无
    申请的资源被分配,或等待的事情发生(不包括对处理机的期待)——>就绪态(被动行为)

  • 终止态——进程结束,释放资源

在这里插入图片描述

“丁字裤”模型
在这里插入图片描述

2、进程的组织
  • 链接方式
    按照进程状态将PCB分为多个队列
    操作系统持有指向各个队列的指针
    -索引方式
    根据进程状态不同,建立几张索引表
    操作系统持有指向各个索引表的指针

(三)进程控制

1、概念
1)什么是进程控制?

进程控制就是要实现进程状态转换——讨论进程转换过程中操作系统做一些什么事情?

2)如何实现进程控制?

原语实现“一气呵成”地转换状态

3)为什么进程控制(状态转换)的过程要“一气呵成”?

当PCB要从阻塞态转换到就绪态时,负责进程控制的内核程序至少要做两件事:
1、将PCB的state设置为1(state是在PCB中的一个标识进程当前所处状态的变量,state=1标识就绪态,state=2标识阻塞态)
2、将PCB从阻塞队列放到就绪队列
如果完成第一步后收到中断信号,转换过程被打断,会出现这种情况:PCB的state=1,但却在阻塞队列里

4)如何实现原语的原子性?

用“关中断指令”和“开中断指令”两个特权指令实现原子性(只能让内核使用,而不能让用户使用)

2、进程控制相关原语
  • 进程的创建在这里插入图片描述

  • 进程的终止
    在这里插入图片描述

  • 进程的阻塞和唤醒
    被什么阻塞,就要被什么唤醒——唤醒原语和阻塞原语成对出现
    在这里插入图片描述

  • 进程切换
    保护运行环境:在进程下处理机之前,将PSW、PC、通用寄存器里的内容存入PCB
    恢复运行环境:根据PCB恢复进程所需运行环境
    (运行环境也叫进程上下文context)
    在这里插入图片描述

3、总结

进程控制原语的三件事情:

  • 更新PCB中的信息(修改进程状态state/保存/恢复运行环境)
  • 将PCB插入合适的队列
  • 分配/回收资源(在创建和终止原语中)
4、区分
  • 进程切换:进程环境信息要改变
  • 处理机模式切换:操作系统进入内核态前后的进程不变,只需要保存进入内核态之前的CPU环境,回到用户态后恢复环境
    ——————————
  • 调度:决定资源分配给哪一个进程的行为,决策
  • 切换:实际分配的行为,执行
  • 先有决策才有切换

(四)进程通信

1、什么是进程通信?

进程通信指进程之间的信息交换
进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立
为了保证安全,一个进程不能直接的访问另一个进程的地址空间,但进程间信息交换必须实现,所以操作系统提供了一些方法:

2、进程通信的方法
  • 共享存储(大布袋)
  • 管道通信(读进程最多只能有1个,数据一旦被读取,就从管道中被抛弃)
  • 消息传递(写信)
    在这里插入图片描述

(五)线程的概念和多线程模型

1、什么是线程?为什么要引入线程?

传统进程是程序执行流的最小单位,但有的进程可能需要同时做很多事情,二传统的进程只能串行的执行一系列程序,为此,引入了线程来增加并发度
EG、传统进程下,qq和微信是两个进程,能够实现并发执行,但qq内部的视频、文字只能串行执行,增加线程后,qq内部继续将视频、文字划分为线程,线程可以并发执行。

2、引入线程机制后,有什么变化?

引入线程后,线程成为了程序执行流的最小单位,每个进程可以有多个线程
但资源分配的最小单位仍然是进程,即,打印机分配给qq,而不是分配给qq内的文件线程
在这里插入图片描述

3、线程有哪些重要属性

在这里插入图片描述

3、线程的实现方式
  • 用户级线程
    早期的操作系统只支持进程,不支持线程,当时的线程是由线程库实现的
    线程的管理工作由线程库来实现,而不是操作系统
    线程的切换同上
    操作系统意识不到用户级线程的存在
    优点:不涉及用户态和内核态的切换,开销小
    缺点:如图
    在这里插入图片描述

  • 内核级线程
    由操作系统支持的线程
    在这里插入图片描述

  • 组合方式

操作系统能看见内核级线程,只有内核级线程才是处理机分配的单位,所以,内核级线程是可以并发的,用户级线程只能在由内核级线程的情况下才能运行

4、多线程模型(用户级线程和内核级线程的连接方式)

在这里插入图片描述
在这里插入图片描述
多对一:一个线程阻塞,操作系统操作系统只看得见内核级线程,所以默认这个线程阻塞,用户层面的所有线程也被阻塞
在这里插入图片描述
在这里插入图片描述

二、处理机调度

  • 为什么要进行处理机调度?

  • 调度算法有哪几种?结合第一章学习的分时操作系统和实时操作系统,思考那种调度算法比较适合这两种操作系统?

(一)调度的概念、层次

1、调度的基本概念

当有一堆任务要处理,由于资源有限,这些事情没法同时处理,这就需要确定某种规则来决定处理这些任务的顺序,这就是调度研究的问题

2、三个层次
  • 高级调度(作业调度)
    1、作业:一个具体的任务
    用户向系统提交一个作业=用户让操作系统启动一个程序来处理一个具体任务
    2、高级调度:因为内存空间有限,不能将用户提交的作业全部放入内存,当外存的作业后备队列中有好几个作业需要启动,先把哪个作业调入内存,就将相应的作业从外存的作业后备队列中选中调入内存,并创建进程(PCB),每个作业只调入一次,调出一次。作业调入时会建立PCB,调出时才撤销PCB。作业进入内存后变成进程。
  • 低级调度(进程/处理机调度)
    因为内存中会存在很多进程处于就绪队列中,而处理机只能允许分配给一个进程,当就绪队列中有多个进程,应该先给哪一个进程分配处理机资源
  • 中级调度(内存调度)
    因为内存资源有限,当内存中就绪队列中的进程过多时,可以将某些进程的数据调出到外存,等内存空闲或者需要运行时再重新调入内存。进程调出到外存仍是进程。处于挂起状态,组成挂起队列。中级调度:决定将哪个处于挂起状态的进程重新调入内存。
3、三层调度的联系、对比

在这里插入图片描述

4、补充知识
  • 进程的挂起状态和七状态模型
    挂起态进一步分为就绪挂起和阻塞挂起
    1、就绪挂起:进程从就绪队列被调到外存的挂起队列
    (也能从运行态运行完毕调入外存,从创建态创建完毕被调入外存)
    2、阻塞挂起:进程从阻塞队列被调到外存的挂起队列

  • 激活——挂起
    互为逆过程,但阻塞挂起可以直接到就绪挂起,所以阻塞挂起激活后能直接到就绪态

  • 阻塞态——挂起态
    都是暂时不能获得CPU服务,但挂起态是将进程调到外存,而阻塞态仍在内存中
    在这里插入图片描述

(二)进程调度(低级调度)的时机、切换与过程、进程调度方式

1、进程调度的时机

在这里插入图片描述
区分两个概念
内核程序临界区VS普通的临界区
在这里插入图片描述

2、进程调度VS进程切换、进程切换过程

在这里插入图片描述
进程切换是有代价的

3、进程调度方式

根据是否允许进程被动的放弃处理机分为:
在这里插入图片描述

(三)调度算法的评价指标

1、CPU利用率

CPU忙碌的时间占总时间的比例
有时也会计算某种设备的利用率
在这里插入图片描述

2、系统吞吐量

单位时间完成作业的数量
在这里插入图片描述

3、周转时间

指作业从被提交给系统开始,到作业完成为止的时间间隔
包括四个部分:

  • 作业在后备队列上等待作业调度的时间(仅一次)
  • 进程再就绪队列上等待进程调度的时间(多次)
  • 进程再CPU上执行的时间(多次)
  • 进程等待I/O操作完成的时间(多次)
周转时间=作业完成时间-作业提交时间

——————————————————————————
操作系统更关系整体表现:

平均周转时间=各作业周转时间之和/作业数

——————————————————————————
让不同执行时间的用户有相同的体验:

带权周转时间=作业周转时间/作业实际运行的时间=(作业完成时间-作业提交时间)/作业实际运行时间
  • 带权周转时间必然>=1
  • 带权周转时间周转时间都是越小越好:
    1、对周转时间相同的两个作业,实际运行时间长的作业再相同时间内被服务的时间更多,带权周转时间更小,用户满意度更高
    2、对实际运行时间相同的两个作业,周转时间短的带权周转时间更小,用户满意度更高

——————————————————————————

平均带权周转时间=各作业带权周转时间之和/作业数
4、等待时间

指进程/作业处于等待处理机状态的时间之和,等待时间越长,用户满意度越低

  • 对进程来说,等待时间指进程建立后等待被服务的时间之和,在等待I/O完成的期间其实也是被服务的,不算入等待时间
  • 对作业来说,作业在外存后备队列等待时间+建立进程后等待的时间

一般服务时间都是确定不变的,调度算法只会影响等待时间。
也有平均等待时间来评价整体性能

5、响应时间

指用户提交请求到首次产生响应所用的时间

在这里插入图片描述

(四)调度算法

1、学习思路
  • 算法思想
  • 算法规则
  • 用于作业调度还是进程调度
  • 抢占式?非抢占式?
  • 优点和缺点
  • 是否会导致饥饿(某进程/作业长期得不到服务)
2、先来先服务FCFS

在这里插入图片描述
在这里插入图片描述

3、短作业优先SJF

在这里插入图片描述
在这里插入图片描述
抢占式:除了在当前进程主动放弃处理机时要发生调度,每当就绪队列发生改变时,也需要检查是否会发生抢占,调度新的进程
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、HRRN

在这里插入图片描述
在这里插入图片描述
——————————————————
在这里插入图片描述

5、时间片轮转RR——用于分时操作系统,关心响应时间

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6、优先级——实时操作系统

通过不同的方法确定优先级
静态优先级
动态优先级(EG最高响应比)
根据优先级排序进行调度(分为抢占式/非抢占式)
在这里插入图片描述
非抢占式:
在这里插入图片描述
抢占式:
在这里插入图片描述
在这里插入图片描述

7、多级反馈队列

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值