操作系统 知识结构导图

在这里插入图片描述

操作系统

进程管理

进程:是程序的一次执行,

进程动态(程序静态)

  • 特征

    • 动态性
    • 并发性
    • 独立性
    • 异步性
    • 结构性
  • 状态

    • 运行态
    • 就绪态:已获所需资源,一旦有处理机即刻调度
    • 阻塞态(等待态):进程需要其他资源或等某事件
    • 创建态
    • 结束态
  • 控制

      1. 创建
      • (1)为进程分配一个唯一的进程标识号,并申请一个空白的PCB(PCB是有限的,如果申请失败,创建亦失败)
      • (2)为进程分配资源(在PCB体现,而如果资源不足,处于阻塞态,等待资源)
      • (3)初始化PCB(主要包括初始化标志信息、处理机状态信息、处理机控制信息、设置进程优先级)
      • (4)插入 就绪队列,等待调度
      1. 终止
      • 正常结束
      • 异常结束
      • 外界干预
      1. 阻塞
      • (1)找到将要被阻塞进程的标识号 对应的PCB
      • (2)若进程处于运行态,保护现场,将状态转为阻塞态,停止运行
      • (3)把该PCB插入相应事件的等待队列,将此处理机资源调度给其他进程
      1. 唤醒
      • (1)在该事件的等待队列中找到相应进程PCB
      • (2)将其从等待队列中移除,并将状态转为就绪态
      • (3)把该PCB插入就绪队列,等待调度
      1. 切换
      • (1)保存处理机上下文(包括PC和其它寄存器)
      • (2)更新PCB
      • (3)把进程PCB移入相应队列(就绪/阻塞队列)
      • (4)选择另一个进程执行,并更新PCB
      • (5)共享内存管理的数据结构
      • (6)恢复处理机上下文
  • 组织

      1. PCB(进程控制块)【核心】
      • 进程描述信息

        • 进程标识符
        • 用户标识符
      • 进程控制信息

        • 进程当前状态
        • 进程优先级
        • 代码运行入口地址
        • 程序外存地址
        • 处理机占用空间
        • 信号量使用
      • 资源分配清单

        • 代码段指针
        • 数据段指针
        • 堆栈指针
        • 文件描述符
        • 键盘
        • 鼠标
      • 处理机信息

        • 通用寄存器值
        • 地址寄存器值
        • 控制寄存器值
        • 标志寄存器值
        • 状态字
      1. 程序段
      1. 数据段
  • IPC(进程间通信)

      1. 共享存储
      • 低级:基于数据结构
      • 高级:基于存储区
      1. 消息传递
      • 直接通信方式:发送进程 直接将 消息Message 挂在消息缓冲队列,接收进程 从队列上取消息
      • 间接通信方式(信箱通信方式):发送进程 将消息 发送到 中间实体(信箱),接收进程从 中间实体取消息。eg. 电子邮件系统
      1. 管道通信:通过共享文件(pipe),发送进程(写进程)写入,接收进程(读进程)读出

线程:【轻量级进程】,一个最基本的CPU执行单元,程序执行流的最小单元,系统独立调度和分派的基本单元。由 线程ID、PC、寄存器集合、堆栈 组成,不拥有资源。

  • 属性

      1. 轻型实体,不拥有资源,有唯一标识的标识符和线程控制块
      1. 不同线程可执行相同程序(一个被不同用户所调用,OS 为此创建多个 线程)
      1. 同一个进程的各个线程共享该进程所拥有的资源
      1. 线程是处理机的独立调度单位,多个线程可并发执行
      1. 线程 同 进程一样有生命周期,各种状态
  • 实现方式

    • 用户级线程:创建、撤销、切换都在应用程序上
    • 内核级线程:所有工作由内核完成
  • 多线程模型

    • 多对一
      优点:效率高(线程管理在用户空间运行)
      缺点:一个线程在使用内核服务被阻塞,整个进程都会被阻塞;多线程不能并行运行在多处理机上
    • 一对一
      优点:当一个线程被阻塞,允许另一线程继续执行,并发能力强
      缺点:每创建一个用户级线程都需要创建一个内核级线程
    • 多对多:将n个用户级线程映射到m个内核级线程(m =< n)
      集前二者优点

处理机调度

  • 层次

      1. 作业调度(高级调度,多道批处理需要,其他系统不需要):从外存上挑选一个处于后备状态的作业分配资源
      1. 内存调度(中级调度):提高内存利用率和系统吞吐量。暂时不用的进程调至外存(挂起态),用时再调入
      1. 进程调度(低级调度):从就绪队列中选取一个进程分配处理机
  • 方式

    • 非剥夺(非抢占):正在执行态的进程进入阻塞态或完成,另一个的进程才能执行
    • 剥夺(抢占):一个优先级更高,更紧急的进程可以替换 一个正在执行态的进程
  • 指标

    • CPU利用率
    • 系统吞吐量
    • 周转时间
    • 等待时间:进程处于等待处理机状态之和
    • 响应时间:从用户提交请求 到 系统首次响应 所用时间
  • 算法

    • FCFS(先来先服务):不可剥夺算法,或结合在优先级调度算法相同优先级的使用。
      简单,但效率低;
      有利于长作业、CPU繁忙型作业,(相对SJF和高响应比)不利于短作业、I/O繁忙型作业;

    • SJF(短作业优先):平均等待时间、平均周转时间最短
      对长作业不利,未考虑作业急迫性;

    • 优先级调度算法

      - 非剥夺式优先级调度算法
      - 剥夺式优先级调度算法
      
      • 高响应比优先

作业等待时间相同时,要求服务时间越短,响应比越高,有利于短作业;
要求服务时间相同时,作业的响应比由其等待时间决定,等待时间越长,其响应比越高(FCFS);
对于长作业,作业的响应比可随等待时间增加而提高,等待时间足够长时,其响应比便可升到很高,从而也可获得处理机(克服饥饿状态,兼顾长作业)
- 时间片轮转调度算法
时间片过大,退化为FIFS,过小,进程频繁切换,系统性能下降、处理机开销大
- 多级反馈队列调度算法
终端型作业:短作业优先
短批处理作业用户 :周转时间较短
长批处理作业用户 :经过前面结构队列调度部分执行,保护长期等待

	- (1) 设置多个不同优先级的就绪队列,第1级队列优先级最高
	- (2)对每个队列赋予不同时间片大小,优先级高时间片小
	- (3)当一个新进程进入内存后,首先放入第1队级队尾,按FCFS等待调用,若时间片内完成,撤销;若未完成,进入第2级队列队尾,按FCFS等待调用....
	- (4)仅当上级队列为空,可调度下一级(不为空)队列的进程允许

同步 与 互斥

  • 临界资源

      1. 进入区:进入临界区前进行检查,若可以进入,则设置 正在访问临界区资源 标志,以阻止其他访问
      1. 临界区(临界段):每个进程中访问临界资源的一段代码
      1. 退出区:将 正在访问临界区资源 标志清除
      1. 剩余区:代码其余部分
  • 同步(直接制约关系)
    协调进程间工作和等待次序,eg. A完成后,B跟进工作

    • 【生产-消费者 问题】
      对缓冲区互斥访问,生产后才能消费同步关系
      mutex = 1; full = 0; empty = n; // 互斥信号量、满信号量、空信号量
      producer(){
      while(1) { start to Product; P(empty); P(mutex); add to Buffer; V(mutex); V(full); }
      }
      consumer(){
      while(1) { P(full); P(mutex); remove from Buffer; V(mutex); V(empty); strat to Consume; }
      }
    • 【读者-写者 问题】
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值