操作系统学习笔记——第二章 进程、线程与作业

文章目录

  • 第二章 进程、线程与作业
    • 多道程序设计
      • 目标
      • 单道程序设计的缺点
      • 多道程序设计的提出
    • 进程的引入
      • 定义
      • 并行和并发的区别
      • 进程状态(基本状态)
      • 状态转换
      • 进程控制块(PCB)
      • 进程的组成
      • 进程上下文切换
      • 进程的队列
      • 进程类型
      • 进程的特征
      • 进程间相互联系
      • 进程间相互作用
      • 进程的创建与撤销
      • 进程与程序的联系与差别
    • 线程与轻进程
      • 进程切换的不足和解决方案
      • 线程的概念
      • 线程和进程的区别
      • 多线程优点
      • 用户示图
      • 线程控制块(TCB)
      • 用户级别线程
      • 核心级别线程
    • 作业
      • 概念
      • 作业步(job step)
      • 作业分类
      • 作业与进程
      • 进程与线程

第二章 进程、线程与作业

多道程序设计

目标

提高吞吐率
吞 吐 量 = 作 业 道 数 全 部 处 理 时 间 吞吐量=\frac{作业道数}{全部处理时间} =

单道程序设计的缺点

  • 处理机利用率低
  • 设备利用率低
  • 内存利用率低

多道程序设计的提出

  • 增加同时运行程序的道数可以提高资源利用率,从而提高系统效率,但道数应与系统资源数量相当。
  • 道数过少,系统资源利用率低。
  • 道数过多,系统开销(system overhead)增大,程序响应速度下降。

进程的引入

多道系统中的程序:
推进,暂停,推进,暂停,…….

  • 暂停:保存现场(PSW+PC,寄存器)
  • 推进:恢复现场(寄存器,PSW+PC)
  • 暂停原因:(1) 自身原因:等待资源,启动IO
    (2) 剥夺CPU—给其它程序运行机会

定义

  • 可参与并发执行的程序称为进程。
  • 进程是具有一定独立功能的程序关于一个数据集合的一次运行活动。

定义强调两个方面:

  • 动态:执行中的程序;
  • 并发:可与其他进程同时执行。

并行和并发的区别

并发:concurrent

  • 宏观同时,“交替执行”,不要求多个CPU

并行:parallel

  • 微观同时,要求多个CPU

进程状态(基本状态)

  • 运行态(RUN): 占有CPU正在向前推进
  • 就绪态(READY): 可以运行,但未得到CPU
  • 等待态(WAIT): 等待某一事件发生

状态转换

就绪 → \rightarrow 运行:获得处理机
运行 → \rightarrow 就绪:剥夺处理机
运行 → \rightarrow 等待:申请资源未得到,启动IO
等待 → \rightarrow 就绪:得到资源,IO中断
操作系统学习笔记——第二章 进程、线程与作业_第1张图片

  • 进程状态转换由操作系统完成,对用户是透明的;
  • 进程在其生存期内经过多次状态转换,体现了进程的动态性和并发性。

进程控制块(PCB)

标志进程存在的数据结构,其中保存系统管理进程所需的全部信息

PCB内容:(不同系统不尽相同)

  • 进程标识(pid)
  • 家族联系
  • 进程状态
  • 地址信息
  • 现场信息
  • 打开文件
  • 调度参数
  • 消息指针
  • 所属用户(uid)
  • 队列指针

进程的组成

  1. 进程控制块(process control block)
    • 建立进程 → \rightarrow 建立PCB
    • 撤销PCB → \rightarrow 撤销进程
  2. 程序
    • 代码(code)
    • 数据(data)
    • 堆栈(stack+heap)
      -栈:保存返回点、参数、返回值、局部变量
      -堆:动态变量

进程上下文切换

  • 进程上下文(process context)
    进程的物理实体与支持进程运行的物理环境统称为进程上下文

    -PCB+程序
    -系统环境:地址空间,系统栈,打开文件表,…

  • 上下文切换(context switch)
    由一个进程的上下文转到另外一个进程的上下文

  • 系统开销(system overhead)
    运行操作系统程序完成系统管理工作所花费的时间和空间

进程的队列

PCB构成的队列:(不一定FIFO(先进先出),单向或双向)
操作系统学习笔记——第二章 进程、线程与作业_第2张图片

  • 就绪队列:系统一个或若干个(根据调度算法确定)
  • 等待队列:每个等待事件一个
  • 运行指示字:每个处理机一个
    操作系统学习笔记——第二章 进程、线程与作业_第3张图片

进程类型

  • 系统进程
    运行操作系统程序,完成系统管理(服务)功能.
  • 用户进程
    运行用户(应用)程序,为用户服务。

进程的特征

  • 并发性:可以与其它进程一道向前推进;
  • 动态性:动态产生、消亡,生存期内状态动态变化;
  • 独立性:一个进程是可以调度的基本单位;
  • 交往性:同时运行的进程可能发生相互作用;
  • 异步性:进程以各自独立,不可预知的速度向前推进;
  • 结构性:每个进程有一个PCB。

进程间相互联系

相关进程

  • 同一家族的进程
  • 可以共享文件,需要相互通讯,协调推进速度…
  • 父进程可以监视子进程,子进程完成父进程交给的任务。

无关进程

  • 没有逻辑关系、同时执行的进程。
  • 有资源竞争关系,互斥、死锁、饿死。

进程间相互作用

  1. 直接相互作用:发生在相关进程之间

  2. 间接相互作用:发生在任何进程之间

进程的创建与撤销

  • 进程的创建
    建立PCB,分配内存,加载程序,入就绪链
  • 进程的撤销
    去配资源,撤销PCB,通知父进程
  • 除初始进程外,其它进程由(父)进程创建,并形成进程家族。
    操作系统学习笔记——第二章 进程、线程与作业_第4张图片

进程与程序的联系与差别

进程与程序的联系

  • 进程包括一个程序
  • 进程存在的目的就是执行这个程序

进程与程序的差别

  • 程序静态,进程动态
  • 程序可长期保存,进程有生存期
  • 一个程序可对应多个进程,一个进程只能执行一个程序

线程与轻进程

进程切换的不足和解决方案

  • 上下文涉及内容多,开销大,“笨重”
  • 相关进程之间耦合关系差

解决方案

  • Multi-threading
  • 同一进程中包含多个线程
  • 上下文只涉及寄存器和用户栈,切换速度快
  • 相关线程之间通讯方便、快捷

线程的概念

进程中一个相对独立的执行流。

线程和进程的区别

  • 进程是资源分配单位
  • 线程是执行单位

多线程优点

  • 切换速度快(地址空间不变)(light weighted)
  • 系统开销小
  • 通讯容易(共享数据空间)

用户示图

多进程
操作系统学习笔记——第二章 进程、线程与作业_第5张图片
多线程
操作系统学习笔记——第二章 进程、线程与作业_第6张图片

线程控制块(TCB)

标志线程存在的数据结构,其中包含对线程管理需要的全部信息.

内容

  • 线程标识
  • 线程状态
  • 调度参数
  • 现场(通用寄存器,PC,SP)
  • 链接指针

存放位置

  • 用户级线程:目态空间(运行时系统)
  • 核心级线程:系统空间

用户级别线程

实现方法:

  • 基于library函数,系统不可见
  • 线程创建、撤销、状态转换在目态完成
  • TCB在用户空间,每个进程一个系统栈

优点:

  • 不依赖于操作系统,调度灵活
    同一进程中多线程切换速度快(不需进入操作系统)
  • 缺点:
    同一进程中多个线程不能真正并行
    一个线程进入系统受阻,进程中其它线程不能执行

核心级别线程

实现方法:

  • 基于系统调用
  • 创建、撤销、状态转换由操作系统完成

优点:

  • 同一进程内多线程可以并行执行
  • 一线程进入核心等待,其它线程仍可执行

缺点:

  • 系统开销大,同一进程内多线程切换速度慢
  • 调度算法不能灵活控制

作业

概念

用户要求计算机系统为其完成的计算任务集合。

作业步(job step)

  • 作业处理过程中一个相对独立的步骤
  • 一般一个作业步可由一个进程完成
  • 某些作业步之间可以并行

作业分类

  • 批处理作业
  • 交互式作业

作业与进程

  • 作业进入内存后变为进程
  • 一个作业通常与多个进程相对应

进程与线程

  • 一个进程一般包含多个线程,至少包含一个线程
  • 不支持多线程的系统,可视为单线程进程

你可能感兴趣的:(课内笔记)