操作系统复习 三、四章

操作系统复习 三、四章

文章目录

  • 操作系统复习 三、四章
    • 第三章 进程描述和控制
      • 基本概念
      • 进程的特征
      • 进程的状态及状态之间的转换条件
      • 进程控制
      • 进程的描述
      • 进程的通信
    • 第四章 线程
      • 线程的基本概念
      • 线程与进程的比较
      • 线程属性
      • 线程的实现方式
      • 多线程模型

第三章 进程描述和控制

基本概念

  • 为了更好地描述和控制程序的并发执行,实现操作系统的并发性和共享性
  • 进程控制块(PCB):为了更好的描述进程的基本情况和运行状态,进而控制和管理进程 PCB是进程存在的唯一标志
  • 典型定义:
    • 进程是程序一次执行过程
    • 进程是一次程序及其数据在处理机上顺序执行时所发生的活动
    • 进程是具有独立功能的程序在一个数据集合上运行的过程,是资源分配和调度的独立单位(没有引入线程)

进程的特征

动态性:动态性是进程最基本特征,进程有着创建、活动、哲停、终止等过程,具有生命周期

并发性:多个进程实体同时存在内存中,引入进程的目的就是为了程序与其他程序并发执行

独立性:进程实体是一个能独立运行、独立获得资源和独立接受调度的基本单
没有建立PCB的程序,都不能作为一个独立单位参与运行

异步性:进程相互制约,进程以不可预知的速度向前推进 所以操作系统中一定要配置响应的进程同步机制

结构性:每个进程都配置一个PCB对其进行描述

PCB

  • 程序段
  • 数据段
  • 进程控制段
  • 叫做进程实体

进程的状态及状态之间的转换条件

状态

  • 运行态:进程在处理机上运行
  • 就绪态:进程已处于准备运行状态
  • 阻塞态:又称等待态,进程正在等待某个时间而暂停运行
  • 创建态:进程正在被创建,尚未进入就绪态
  • 结束态:进程正在从系统中消失(包括正常结束或者异常终止)

相互转换

  • 就绪态一一>运行态:处于就绪态的进程获得处理机进入运行态
  • 运行态一一>就绪态:处于运行态的进程时间片用完后,让出处理机进入就绪态
  • 运行态一一>阻塞态:进程请求除处理机外的其他资源,此时运行态进入阻塞态(系统调用请求操作系统提供服务,这是一种特殊的、由运行用户态程序调用操作系统内核过程的形式)
  • 阻塞态一一>就绪态:进程等待其他资源的获得,如O资源、或者中断结束

进程控制

进程的创建

  • 分配金册灰姑娘标识号,申请PCB(PCB 是有限的)
  • 为进程分配资源,微程序和数据以及用户栈 分配必要的内存空间
  • 初始化PCB,包括初始化标志信息、初始化处理机状态信息、初始化处理机控制信息、色湖之进程的优先级
  • 若进程就绪队列可以接纳新进程,进程就进入就绪态

进程的终止

  • 结束分类
    • 正常结束:进程的任务已经完成,并且准备退出运行
    • 异常结束:进程正在运行,出现了某些异常事件,导致程序无法继续运行(存储区越界、非法指令、特权指令错误、IO故障)
    • 外界干预:进程应外界请求终止运行
  • 结束过程
    • 根据被终止进程的标识符,检索PCB,读取进程状态
    • 若进程处于运行态,终止运行,剥夺处理机
    • 终止进程之下的子进程
    • 该进程拥有的全部资源还给父进程
    • 将PCB从队列中删除

进程的阻塞和唤醒

  • 阻塞原语执行过程
    • 找到要被阻塞进程标识号对应的PCB
    • 若该进程处于运行态,保护其现场,将其状态转换为阻塞态,停止运行,阻塞是一种自主行为,自我阻塞
    • 将PCB插入相应的等待队列
  • 唤醒原语的执行过程
    • 找到等待队列中进程相应的PCB
    • 将其从等待队列中移出,置其状态为就绪态
    • 将PCB插入就绪队列,等待调度程序调度
    • 唤醒是被相互有联系的其他进程进行唤醒

进程切换

  • 进程切换时在内核态下完成的
  • 过程
    • 保存处理机上下文,包括程序计数器和其他寄存器
    • 更新PCB 信息
    • 把进程的 PCB移入相应的队列,如就绪、在某时间阻塞等队列
    • 选择另一个进程执行,更新其PCB
    • 更新内存管理的数据结构
    • 恢复处理机上下文

进程的描述

进程是一个独立的运行的那位,也是操作系统进行资源分配和调度基本单位,由一下三部分构成

  • 进程控制块
    • 进程描述信息
      • 进程标识符:标志进程
      • 用户标识符:进程归属的用户,主要为共享和保护服务
    • 进程控制和管理信息
      • 进程当前状态:描述进程状态信息
      • 进程优先级:描述进程抢占处理机优先级
      • 代码运行入口地址
      • 程序的外存地址
      • 进入内存时间
      • 处理机占用时间
      • 信号量使用
    • 资源分配清单
      • 用以说明有段内存地址空间或者虚拟地址空间状况,所打开的文件的列表和所使用的输入输出设备信息
      • 代码段指针、数据段指针、堆栈段指针、文件描述符、键盘、鼠标
    • 处理相关信息
      • 处理集中个寄存器的值
      • 通用寄存器、地址寄存器值、控制寄存器值、标志寄存器值、状态字
  • 程序段
    • 能被进程调度程序调度到CPU执行的程序代码段
  • 数据段
    • 进程对应的程序加工处理的原始数据或者程序执行时产生的中间或者最终结果

进程的组织方式

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

进程的通信

共享存储

  • 通信进程之间存在一块可以被直接访问的共享空间
  • 低级方式:基于数据结构共享
  • 高级方式:基于存储区共享
  • 操作系统只负责为通信进程提供可共享使用的存储空间和同步互斥工具,数据交换则由用户自己安排读/写指令完成

消息传递

  • 进程间的数据交换是以格式化的消息为单位的,进程通过系统提供的发送消息和接收消息的两个原语进行数据交换
  • 直接通信方式:发送进程直接发送消息给接收进程,并将它挂在接收进程的消息缓冲队列上,接收进程从消息缓冲队列中取得消息
  • 间接通信方式:发送进程把消息发送给某个中间实体,接收进程从中间实体中获得消息 例如电子邮件系统

管道通信

  • 发送进程以字符流形式将大量数据送入写管道,接收进程从管道中接受数据
    • 当管道写满时,写进程的write()指令江别阻塞,等待读进程将数据取走
    • 当读进程将数据全部取走后,管道变空,此时都进程的read()系统调用将被阻塞
  • 功能:互斥、同步、确定对方存在
  • 半双工通信,不可以同时读和写
  • 限制管道的大小
  • 管道变空的时候阻塞读进程
  • 管道中的数据被读取后会马上被丢弃

第四章 线程

线程的基本概念

减小程序在并发执行时所付出的时空开销,提高操作系统的并发性能

引入线程后,进程只作为系统资源的分配单元,线程作为处理机的分配单元

线程与进程的比较

  • 调度

    • 传统中进程是是独立调度的基本单位,线程是资源的基本单位
    • 引入线程后,进程是独立调度的基本但那位,线程是资源的基本单位,不同的进程的线程切换会引起进程的切换
  • 拥有资源

    • 进程是资源分配的基本单位
  • 并发性

    • 引入线程后,进程可以并发执行,多个线程之间也可以并发执行,提高了系统的吞吐量
  • 系统开销

    • 同一进程的线程切换要比进程切换开销小的多
  • 地址空间和其他资源

    • 进程的地址空间之间相互独立,同一进程的各线程之间共享进程资源,某进程的线程对其他进程不可见
  • 通信方面

    • 进程间通信需要进程同步和互斥手段的辅助,保证数据的一致性
    • 线程间可以直接读/写进程程序段来进行通讯

线程属性

  • 不拥有系统资源,拥有唯一标识符和线程控制块

  • 不同的线程可以执行相同的程序,同一个服务程序被不同用户调用时,操作系统将其创建为不同线程

  • 统一进程的线程共享该进程拥有的全部资源

  • 线程是处理机的独立调度单位

  • 线程也有生命周期,阻塞,就绪,运行等状态

  • 多CPU计算机中,各个线程可占用不同的CPU

  • 每个线程都有一个线程ID、线程控制块(TCB)

  • 切换同进程内的线程,系统开销很小

  • 切换进程,系统开销较大

  • 由于共享内存地址空间,同一进程中的线程间通信甚至无需系统干预

线程的实现方式

  • 用户级线程
    • 有关线程管理的所有工作都由应用程序完成,内核意识不到线程的存在
  • 内核级线程
    • 线程的管理工作全部由内核完成

多线程模型

  • 多对一
    • 经多个用户级线程映射到一个内核级线程,线程管理在用户空间完成,用户级线程对操作系统不可见
    • 优点:线程管理是在用户控件进行的,效率比较高
    • 缺点:一个线程阻塞全部线程都会阻塞,多个线程不能并行运行在多处理机上
  • 一对一
    • 每个用户级线程映射到一个内核级线程上
    • 优点:并发能力强
    • 缺点:创建线程开销大,影响应用程序的性能
  • 多对多
    • 多个线程映射到多个内核线程上
    • 结合上述两种,既可以提高并发性,又适当的降低了开销

大家好,我是xwhking,一名技术爱好者,目前正在全力学习 Java,前端也会一点,如果你有任何疑问请你评论,或者可以加我QQ(2837468248)说明来意!希望能够与你共同进步

你可能感兴趣的:(操作系统)