操作系统快速复习(进程和线程)

先来个思维导图,喜欢文字的读者可以看博客,也对思维导图进行了一些补充,结合起来可以快速复习操作系统概述这一章节。
在这里插入图片描述

一、进程【动态的】

1.1 概念

  • 进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位

1.2 程序顺序执行的特征

  • 封闭性
    程序在封闭的环境下运行,即程序运行时独占全机资源,资源的状态(除初始状态外)只有本程序才能改变它,程序一旦开始执行,其执行结果不受外界因素影响

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

  • 可再现性
    程序运行环境和初始条件相同,不论怎样,可获得相同的结果

1.3 程序并发执行的特征

  • 间断性
    • 共享系统资源,执行过程为 ”执行——暂停——执行“
  • 失去封闭性
    • 其运行环境会受到其他程序的影响,执行结果与执行速度有关
  • 不可再现性

1.4 进程的组织

【进程是一个独立的运行单位,是OS进行资源分配和调度的基本单位】

  1. 进程映像(进程实体)【静态的】
    PCB【进程存在的唯一标志】进程的管理者(OS)所需要的数据都在PCB中即系统唯有通过进程的PCB才能感知到该进程的存在。PCB主要包括进程描述信息、进程控制和调度信息、资源分配清单、处理机相关信息。

    • 进程描述信息:包括进程标识符【PID】、用户标识符【UID】

    • 进程控制和调度信息:包括进程当前状态和进程优先级。

    • 资源分配清单:用于说明有关内存地址空间或虚拟空间的状况,
      所打开文件的列表和所使用的输入输出设备信息

    • 处理机相关信息: 主要指处理机中个寄存器的值。

  2. PCB的组织方式

    • 线性方式
    • 链接方式
    • 索引方式
  3. 程序段【程序可被多个进程共享】:包含程序代码(指令序列)

  4. 相关数据段:运行过程中产生的各种数据(如程序中定义的变量)

1.5 进程的特征

  • 动态性
  • 并发性
  • 独立性
    • 进程是能独立运行、独立获得资源、独立接受调度的基本单位
  • 异步性
    • 各进程以不可预知的速度向前推进,可能导致结果的不确定性
  • 结构性

1.6 进程的状态

三种基本状态:运行态、就绪态和阻塞态/等待态。

  • 运行态:占有CPU,并在CPU上运行,具有CPU和其他所有资源

  • 就绪态:已具有运行条件,但无空闲CPU,暂时不能运行

  • 阻塞态/等待态:因等待某一事件暂时不能运行,无CPU,也无其他所需资源

  • 另外两种状态
    创建态:进程正在被创建,OS为进程分配系统资源、初始化PCB
    终止态:进程正在从系统中撤销,OS回收进程拥有的资源,撤销PCB

  • 进程状态间的转换
    在这里插入图片描述

    • 就绪态 —>运行态: 进程被调度
    • 运行态—>就绪态: 时间片到 or CPU被其他进程抢占
    • 运行态—>阻塞态: 等待系统资源分配 or 等待某事件发生(主动行为)
    • 阻塞态—>运行态:资源分配到位,等待的事件发生(被动行为)
    • 创建态—>就绪态:系统完成创建进程相关的工作
    • 运行态—>终止态:进程运行结束 or 运行过程中遇到不可修复的错误

1.7 进程控制

进程控制就是要实现进程状态的转换,进程控制用原语实现

  1. 原语用关/开中断实现
  2. 原语是一种特殊的程序
  3. 原语的执行必须一气呵成,不可中断

相关原语

  1. 进程的创建(创建原语)
    分配标识号、申请空白PCB
    分配资源
    初始化PCB
    将新进程插入就绪队列

    引起进程创建的事件:
      用户登陆
      作业调度
      提供服务
      应用请求

  2. 进程的终止(撤销原语)

    • 根据标识符,从PCB集合中找到终止进程的PCB
    • 若进程正在运行,立即终止该进程的执行,将CPU分配给其他进程
    • 终止其所有子进程
    • 将进程拥有的全部资源归还给其父资源或OS
    • 将PCB删除
      引起进程终止的事件
        正常结束
        自己请求终止(exit系统调用)
        异常结束
        非法使用特权指令、非法指令、算术运算错(整数除以零)、储区越界、保护错、I/O故障、等待超时、I/O故障、运行超时
        外界干预
        用户选择杀掉进程、父进程请求、父进程终止
  3. 进程的唤醒(唤醒原语)

    • 在事件等待队列找到PCB
    • 将PCB从等待队列移出,设置其为就绪态
    • 将PCB插入就绪队列
      引起进程唤醒的事件
        等待的事件发生
        因何事阻塞就应由何事唤醒
  4. 进程的阻塞(阻塞原语)

    • 找到要被阻塞的进程标识号对应的PCB
    • 保护进程现场(若为运行态),将其状态转换为阻塞态,停止运行
    • 将PCB插入相应事件的等待队列
      引起进程阻塞的事件
        需要等待系统分配某种资源
        需要等待互相合作的进程完成其他工作
  5. 进程的切换(切换原语)
    先有资源的调度,才有进程的切换

    • 保存运行环境信息(进程上下文,包括程序计数器和其他寄存器)
    • 更新PCB信息
    • 将PCB移入相应队列
    • 选择另一个程序执行,更新其PCB
    • 更新内存管理的数据结构
    • 根据PCB恢复到进程所需的运行环境
      引起进程切换的事件
        当前进程时间片到
        有更高优先级的进程到达
        当前进程主动阻塞
        当前进程终止

1.8 进程通信

  • 低级通信方式

    • PV操作
  • 高级通信方式

    • 共享存储
      在这里插入图片描述

      • 设置一个共享空间,通过对其进行读/写操作实现信息交换

      • 要互斥地访问共享空间

      • 两种方式

        • 基于数据结构(低级)
        • 基于存储区(高级)
    • 管道通信
      在这里插入图片描述

      • 设置一个特殊的共享文件(管道),其实就是一个缓冲区
      • 一个管道只能实现半双工通信
      • 实现双向同时通信要建立两个管道
      • 各进程要互斥访问管道
      • 写满时,不能再写,读空时,不能再读
      • 没写满时,不能读,没读空时,不能写
    • 消息传递
      在这里插入图片描述

      • 传递结构化消息(消息头/消息体)

      • 系统提供“发送/接受原语”

      • 两种方式

        • 直接通信方式

          • 消息直接挂到接受方地消息队列里
        • 间接(信箱)通信方式

          • 消息先发到信箱

二、线程

2.1 概念

  • 引入线程后,进程只作为除CPU外的系统资源的分配单位,线程则作为处理机的分配单元

2.2 线程的重要特点

  • 进程是资源分配的单位,线程是处理机调度的单位
  • 进程是拥有资源的基本单位,线程是独立调度的基本单位
  • 同一个进程中的多个线程可以并发执行
  • 同一进程的个线程共享进程拥有的资源
  • 同一进程内的线程切换不会导致进程切换

2.3 多线程模型

在这里插入图片描述

  • 一对一模型

    • 一个用户级线程映射到一个内核级线程
    • 优点:一个线程阻塞后,允许另一个线程继续执行,并发能力强
    • 缺点:每个用户级线程都需要创建一个内核级线程与之对应,开销大,影响应用程序性能
  • 多对一模型

    • 多个用户级线程映射到一个内核级线程
    • 优点:线程管理在用户空间进行,开销小,效率高。
    • 缺点:一个线程在使用内核服务被阻塞会导致整个进程阻塞,多个线程不能并行地运行在处理机上
  • 多对多模型

    • n个用户级线程映射到m个内核级线程(n>=m)
    • 集两者之所长

2.4 线程的实现方式

在这里插入图片描述

  • 用户级线程

    • 从用户视角能看到线程,由线程库实现
  • 内核级线程

    • 从OS视角能看到线程,由操作系统实现,内核级线程才是处理机分配的单位
  • 组合方式

    • 两种方式组合
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值