操作系统 1 - 3章


lyh打钱!!!

操作系统引论

1.1 操作系统的基本内容

1.1.1 操作系统的目标和作用

操作系统的定义:操作系统是一组控制和管理计算机硬件和软件资源,合理地对各类作业进行调度,以及方便用户使用计算机的程序集合。

  1. 操作系统的目标:
  2. 方便性:使计算机系统更容易管理。(对用户)
  3. 有效性:提高计算机系统资源利用率、系统吞吐量。(对计算机系统)
  4. 可扩充性:方便地添加新的功能和模块,并能修改老的功能模块。(对操作系统本身)
  5. 开放性:遵循世界标准规范,使其与其他系统之间彼此兼容、方便地实现互联。(对其他操作系统)
  6. 操作系统的作用:
    1. 作为计算机系统资源的管理者
    2. 作为用户和计算机硬件之间的接口:命令、系统调用、图标-窗口
    3. 实现了对计算机系统资源的抽象:隐藏了对硬件操作的细节。

1.1.2 操作系统的发展过程

  1. 人工操作方式

    1. 缺点:
      1. 用户独占全机、CPU等待人工操作。
  2. 脱机IO方式

    1. 优点:
      1. 减小CPU的空闲时间。
      2. 提高IO速度。
  3. 单道批处理方式

    引入监督程序

    1. 优点:
      1. 提高系统资源利用率
      2. 增大了系统吞吐量
    2. 缺点:
      1. 资源得不到充分利用。因为系统中仅存在一道程序,每逢程序发出IO的时候,CPU便会处于等待状态。
  4. 多道批处理方式

    1. 优点:
      1. 多道程序并发执行共享计算机资源。
      2. 资源利用率提高。
      3. 系统吞吐量变大。
    2. 缺点:
      1. 平均周转时间长
      2. 没有人机交互能力
  5. 分时操作系统

    计算机以时间片为单位轮流为各个用户服务。

    1. 特点:
      1. 多路性:
      2. 独立性:
      3. 及时性:
      4. 交互性:
  6. 实时操作系统

    提高系统响应时间,对随机发生的外部事件做出及时响应。

    1. 分类:
      1. 硬实时任务:
      2. 软实时任务:
  7. 微机操作系统:

    1. 最早的微机操作系统:8位CP/M
    2. 16位单用户单任务操作系统:MS-DOS
    3. Windows 95是单用户多任务操作系统
    4. UNIX,Windows7,Windows XP是多用户多任务操作系统(Linux)

1.1.3 操作系统的基本特征和功能

  1. 操作系统的基本功能:
    1. 并发性:
    2. 共享性:
    3. 虚拟性:
    4. 异步性:
  2. 操作系统的功能:
    1. 处理机管理
      1. 进程控制:为作业创建进程、撤销进程、并控制进程在过程中的状态变化
      2. 进程同步:对进程执行次序进行协调,是进程能有条不紊地运行。
      3. 进程通信
      4. 进程调度
    2. 存储器管理
    3. 设备管理
    4. 文件管理
    5. 用户接口

1.1.4 操作系统的结构

  1. 无结构OS

    1. 缺点:
      1. 调试和维护不方便
      2. 可读性和可扩充性差
  2. 模块化结构OS

    1. 优点:
      1. 正确性高、适应性好
    2. 缺点:
      1. 模块的划分和接口的规定比较困难,OS结构不够清晰
  3. 分层式结构OS

    1. 优点:
      1. 正确性高,扩充性和维护性更好。
      2. 结构清晰
  4. 微内核结构OS

    采用客户/服务器模式和面向对象的程序设计技术。

    1. 优点:
      1. 提高了系统的可扩展性
      2. 提供对分布式系统的支持。

进程控制

1.1 进程的基本概念

  1. 程序顺序执行特点:
    1. 顺序性
    2. 封闭性
    3. 可再现性
  2. 程序并发执行特点:
    1. 间断性
    2. 失去封闭性
    3. 不可再现性
  3. 进程的定义 && 目的
    1. 定义:进程是程序的一次执行过程
    2. 目的:使程序并发,提高计算机系统资源利用率,以及系统吞吐量
    3. 线程的目的:减小并发执行的开销,提高程序执行的并发度。
  4. 进程的特点:
    1. 动态性:进程是程序的一次执行过程
    2. 并发性:多个进程实体同时存在内存中
    3. 独立性:进程能够独立运行
    4. 异步性:进程可以按照各自独立的、不可预知的速度向前推进。(os保证进程并发执行的结果是可在现的
  5. 进程的状态
    1. 就绪态
      1. 进程创建的事件:
        1. 用户登录
        2. 作业调度
        3. 提供服务
        4. 应用请求
      2. 进程终止的事件:
        1. 正常结束:
        2. 异常结束:RE
        3. 外界干预:
          1. 父进程请求
          2. 父进程终止
          3. 操作员干预
    2. 阻塞态
      1. 引起阻塞和唤醒的时间:
        1. 请求共享资源失败
        2. 等待IO操作
        3. 新数据尚未到来
        4. 等待新任务到达
    3. 执行态
  6. PCB
    1. 包含的信息:
      1. 进程标识符
      2. 进程控制信息:程序段、数据段的地址
      3. 进程调度信息:进程状态、优先级等
      4. 处理机状态:寄存器的值

1.2 进程同步

  1. 程序之间的制约关系:
    1. 间接相互制约:主要源于资源共享
    2. 直接相互制约:主要源于进程合作
  2. 使用硬件实现
    1. 中断方式
    2. TestandSet指令
    3. Swap指令
  3. 使用信号量实现
    1. 生产者和消费者问题
    2. 哲学家进餐问题
    3. 读者和写者问题

1.3 进程通信

高级通信是指用户可直接利用操作系统所提供的一组通信原语。

  1. 共享存储器系统:

    通过共享存储区的读写来交换数据

    如果使用共享数据结构来进行通信,则必须由程序员来实现、且只能进行少量的数据交换。属于低级通信方式

  2. 管道通信

    利用共享的文件

  3. 消息传递系统

    指进程之间的数据交换以格式化的消息为单位。

    1. 直接通信(消息队列)

      使用send(receiver, message), receive(sender, message)原语直接将信息发送给目标用户

      使用消息缓冲队列PCB中还要添加:

      1. mq:消息缓冲队列队首指针
      2. mutex:消息缓冲队列的互斥信号量
      3. sm:消息缓冲队列的资源信号量
    2. 间接通信

      通过某种中间实体,即信箱来实现通信。不仅能实现实时通信,还能实现非实时通信

  4. 客户机-服务器系统

    1. 套接字
    2. 远程过程调用
    3. 远程方法调用

1.4 线程

  1. 什么是线程,为什么要进入线程

    1. 为什么要引入线程

      因为一个进程可能一次性要做很多事情,增加并发度

  2. 引入线程后发生的变化

    1. 资源分配和调度
      1. 进程是资源分配的基本单位,线程是处理机调度的基本单位
    2. 并发性
      1. 线程之间能够并发执行、进程之间也能并发执行
    3. 系统开销
      1. 传统的进程间并发,需要切换进程的运行环境,系统开销大
      2. 同一进程内的线程切换不需要切换进程环境,系统开销小
  3. 线程的重要属性

    1. 线程几乎不拥有资源
  4. 线程的实现方式

    1. 用户级线程:使用线程库实现
      1. 线程的切换由线程库实现,线程管理通过应用程序负责
      2. 线程切换在用户态下实现
      3. 操作系统不能意识到线程的存在
      4. 优点:
        1. 不需要切换到核心态,线程管理的效率高,系统开销小
      5. 缺点:
        1. 当一个进程被阻塞的时候,整个进程都会阻塞,并发度不高
    2. 内核级线程:(处理及调度的基本单位)
      1. 由操作系统来管理
      2. 线程的调度和切换都需要操作系统内核负责
      3. 优点:
        1. 当一个线程被阻塞的时候,别的线程还可以继续执行,并发能力强
      4. 缺点:
        1. 线程的切换需要操作系统内核完成,因此线程的管理成本高,开销大。
  5. 多线程模型

    1. 一对一模型:
      1. 优点:
        1. 当一个线程被阻塞后,别的线程还可以执行,并发能力强。
      2. 缺点:
        1. 管理成本高,开销大
    2. 多对一模型:
      1. 优点:
        1. 管理成本低,开销小
      2. 缺点:
        1. 并发度不高
    3. 多对多模型:
      1. 优点:
        1. 并发度高
        2. 管理成本低,开销小

1.3 知识点回顾

  1. 引入进程的目的:使程序并发,提高计算机系统资源利用率,提高系统吞吐量
  2. 引入线程的目的:减少系统并发执行的开销,提高程序执行的并发程序。
  3. 引入线程的好处:提高资源利用率,增加系统吞吐量。
  4. 若应终端用户的请求而暂停执行的进程,应转变为静止状态,(如果是就绪态->静止就绪;阻塞态->静止阻塞)
  5. 处理机中:
    1. 用户态:如果有N个程序,处于就绪态的程序最多有N-1个,处于阻塞态的程序最多有N-1个。
    2. 核心态:如果有N个程序,处于就绪态的程序最多有N个,处于阻塞态的程序最多有N个。

处理机调度

1.1 基本概念

  1. 调度的层次

    1. 高级调度(作业调度)

      1. 目的:把作业调度到内存中
    2. 中级调度(内存调度)

      1. 目的:决定哪些挂起的进程调度回内存中
    3. 低级调度(进程调度)

      1. 目的:决定哪些进程上处理机运行

      2. 分类

        1. 抢占式:

          只允许进程主动放弃处理机

          1. 引起进程切换的因素:
            1. 进程主动放弃处理机
            2. 进程运行出错
            3. 进程阻塞(请求IO等)
        2. 抢占式

          可以优先处理紧急任务

          1. 进程调度的因素:
            	1. 时间片原则
            	2. 短作业优先原则(SPF,SJF)
            	3. 优先权原则
          
  2. 调度队列模型:

    1. 低级调度
    2. 高级调度+低级调度:
      1. 引入作业后备队列
    3. 高级调度+中级调度+低级调度
      1. 可以将进程挂起到外存中
    4. 不能进行进程切换的情况:
      1. 处理中断的过程中
      2. 原语
      3. 在操作系统内核程序的临界区中
  3. 调度算法的评价:

    1. CPU利用率: 有 效 时 间 总 时 间 \frac{有效时间}{总时间}

    2. 吞吐量:单位时间处理作业的数量

    3. 周转时间

      1. 周转时间:作业完成时间 - 作业提交时间

      2. 带权周转时间:

        等 待 时 间 + 运 行 时 间 运 行 时 间 \frac{等待时间+运行时间}{运行时间} +

      3. 周转时间和带权周转时间越小越好

    4. 响应时间:

      用户提交请求到系统首次响应所需要的时间。在交互式系统中,使用响应时间来衡量一个调度算法的好坏。

    5. 截至时间:

      某个作业完成的最迟开始时间

  4. 作业调度算法

    1. FCFS
      1. 用于进程调度,也用于作业调度
      2. 优先级:开始时间
      3. 特点:
        1. 有利于长作业,不利于短作业
        2. 非抢占式
        3. 不会饥饿
    2. SJF、SPJ
      1. 用于进程调度,也用于作业调度
      2. 优先级:运行时间
      3. 特点:
        1. 有利于短作业,不利于长作业
        2. 非抢占式
        3. 会饥饿
    3. HRRN
      1. 高相应比优先算法(highest response ratio next)
      2. 用于作业调度
      3. 优先级: 等 待 时 间 + 要 求 服 务 时 间 要 求 服 务 时 间 \frac{等待时间+要求服务时间}{要求服务时间} +(类似带权周转时间)
      4. 特点:
        1. 非抢占式
        2. 不会出现饥饿
        3. 等待时间相同时,SJP
        4. 要求服务时间相同时,FCFS
    4. 时间片轮转调度算法
      1. 时间片太大,退化成FCFS
      2. 时间片太小,系统开销变大
      3. 新进程在下处理机的进程的后面
      4. 特点:
        1. 非抢占式
        2. 用于进程调度
    5. 抢占式优先算法
      1. 目的:更好满足紧迫作业的要求,主要用于比较严格的实时系统
      2. 特点:
        1. 抢占式
        2. 导致低优先级饥饿
    6. 多级反馈队列调度算法
      1. 抢占式:当进程在处理 i 级的时候,出现[1 - i-1]的进程P。则P进程会抢占CPU。原进程返回 i 级队列
      2. 会出现饥饿
  5. 进程死锁

    1. 产生死锁的原因:

      1. 系统资源竞争
      2. 进程之间推进顺序不当
    2. 必要条件:

      1. 互斥条件
      2. 请求和保持条件
      3. 不可抢占条件
      4. 循环等待条件
    3. 处理死锁的基本方法

      1. 预防死锁:

        1. 破坏 请求和保持条件

          1. 进程运行前申请全部所需要的资源
          2. 优点:简单易于实现
          3. 缺点:资源利用率低
        2. 破坏 不可抢占条件

          当一个进程得不到资源的时候,就主动释放全部的资源。

          缺点:

          1. 实现复杂
          2. 可能导致前一阶段的工作失效。适用于易保存和恢复状态的资源。
        3. 破坏 循环等待条件

          1. 顺序资源分配法
            1. 给进程编号,当进程需要申请 i 号资源的时候,需要放弃大于 i 号的全部资源。
      2. 避免死锁:

        1. 使用某种方式防止系统进入不安全状态
        2. 安全状态:
          1. 存在一个序列,可以满足所有进程的需求
          2. 安全状态不会发生死锁,不安全状态可能发生死锁。
        3. 银行家算法:
          1. 步骤:
            1. 先判断是否超过 need
            2. 判断是否超过 available
            3. os试探性分配资源给进程,然后进行安全性检测
              1. 找到一个满足need < available的进程,然后把它的allocation加入available中
              2. 重复,直到全部满足
            4. 如果可以,则分配资源
      3. 死锁的检测:

        1. 死锁定理:(充分条件)(?)
      4. 死锁的解除:

        1. 资源剥夺法:suspend
        2. 撤销进程法:kill
        3. 进程回退法:回退
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值