操作系统笔记
FreeL00P

OS笔记

一、操作系统引论

1.1 操作系统的目标和作用

1.1.1 操作系统的目标
  • 方便性

  • 有效性

    1. 提高系统资源利用率
    2. 提高系统吞吐量
  • 可扩充性

  • 开放性

1.1.2 操作系统的作用
  • 作为用户与计算机硬件系统之间的接口
  • 作为计算机系统资源的管理者
  • 实现了对计算机资源的抽象
1.1.3 操作系统的功能
  1. 处理器管理

    1. 进程控制
    2. 进程同步
    3. 进程通信
    4. 调度
  2. 存储器管理

    1. 内存分配
    2. 内存保护
    3. 地址映射
    4. 内存扩充

  3. I/O设备管理

    1. 缓存管理
    2. 设备分配
    3. 设备处理
  4. 文件管理

    1. 文件存储空间的管理
    2. 目录管理
    3. 文件的读写管理和保护
1.1.4 操作系统发展的主要动力
  • 不断提高计算机资源利用率
1.1.5 操作系统的特征
  1. 并发性

    • 同一时间间隔内执行和调度多个程序的能力
  2. 并行性

    • 同一时刻执行的事件
  3. 共享性

    • 系统中的资源供多个并发执行的应用程序同时使用
      • 同时共享
      • 独占共享
  4. 虚拟

    • 时分复用

      • 虚拟处理器 四核八线程
    • 空分复用

      • 虚拟磁盘 (分区)
  5. 异步

    • 多道环境下,允许多个程序并发执行
    • 单处理环境下,允许多个程序分时交替执行

1.2 操作系统的发展过程

1.2.1 未配置操作系统的计算机系统
  • 人工操作方式

  • 脱机输入/输出方式

1.2.2 单道批处理系统
  1. 单道批处理系统执行流程

image

  1. 文字描述

    先把一批作业以脱机方式输入到磁带上,并在系统中配上监督(Monitor),在它的控制下,使这批作业能一个接一个地连续处理。其处理过程是:首先由监督程序将磁带上的第一个作业装入内存,并把运行控制权交给该作业;当该作业处理完成时,又把控制权交还给监督程序,再由监督程序把磁带上的第二个作业调入内存

  2. 单道批处理系统的缺点

  • 单道批处理系统最主要的缺点是,系统中的资源得不到充分的利用。
1.2.3 多道批处理系统
  1. 多道批程序设计的基本概念

    用户所提交的作业先存在外存上,并排成一个队列,成为后备队列。然后由作业系统调度程序按照一定的算法,从后备队列中选择若干个作业调入内存,使它们共享CPU和系统的各种资源。

  2. 多道批处理系统的优缺点

    1. 资源利用率高
    2. 系统吞吐量大
    3. 平均周转时间长
    4. 无交互能力
  3. 需要解决的问题

    1. 处理机争用问题
    2. 内存分配和保护问题
    3. IO设备分配问题
    4. 文件的组织和管理问题
    5. 作业管理问题
    6. 用户与系统的接口问题
操作系统的概念
  • 操作系统是一组能有效的组织和管理计算机硬件和软件资源,合理的对各类作业进行调度,以方便用户使用的程序集合。
1.2.4 分时系统(Time Sharing System)

1. 分时系统的引入

  • 推动分时系统形成和发展的主要动力是用户对人机交互的需求。

  • 用户需求的具体体现

    1. 人机交互

    2. 共享主机

  • 分时系统是什么?

  • 分时系统是指在一台主机上连接了多个配有显示器和键盘的终端并由此所组成的系统,该系统允许多个用户通过自己的终端,以交互方式使用计算机,共享主机中的资源。

2. 实时操作系统

  • 与分时系统比较

    1. 多路性
    2. 独立性
    3. 及时性
    4. 交互性
    5. 可靠性:多级容错,保障系统安全

1.3 操作系统体系结构

1.3.1 操作系统的运行机制

image

  1. 时钟管理

    1. 计时–>提供系统时间
    2. 时钟中断–>进程切换
  2. 中断机制

    1. 提到多道程序的CPU利用率

    2. 外中断:中断信号来源于–>外部设备

    3. 内中断:中断信号来源于–>当前指令

    4. 中断机制处理

      image

  3. 原语

    1. 由若干条指令组成
    2. 用来完成某个特定功能
    3. 执行过程不会被中断–>原子性
  4. 系统数据结构

    1. 进程管理:作业控制块、进程控制块
    2. 存储器管理:存储器分配与回收
    3. 设备管理:缓冲区、设备控制块
  5. 系统调用

    1. 由操作系统实现,给应用程序调用
    2. 是一套接口的集合
    3. 应用程序访问内核的方式

1.4 操作系统的体系结构

  1. 无结构OS
  2. 模块化OS
  3. 分层式结构OS
  4. 微内核OS

二、进程管理

2.1 什么是进程

  1. 进程是一个具用特定功能的查询关于某个数据集合的一次运行活动,是系统进行资源分配和调度的一个独立单位。

    • 进程是程序的一次执行
    • 进程是一个程序在处理机上顺序执行时所发生的活动
    • 进程是程序在一个数据集合上运行的过程
    • 进程是系统进行资源分配和调度的一个独立单位

    系统会为每一个进程分配一定的内存空间,该内存空间为该进程私享

2.1.1 进程的结构

image

  • 控制块 PCB
    • 一个进程对应一个PCB,处理机通过PCB对进程进行管理。
  • 数据段
  • 程序段
2.1.2 进程的特征
  1. 动态性:由创建而生,由撤销而亡。
  2. 并发性:多个进程同时运行
  3. 独立性:独立资源分配
    • 每个进程都有自己的独立内存空间,进程内的线程都公共享用。
  4. 异步性:相互独立、互不干扰
    • 当一个进程阻塞时,并不影响其他进程的运行。

2.2 线程的概念

  1. Thread j进程的轻型实体,是一系列活动按事先设定好的顺序依次执行的过程,是一系列的集合。
  2. 是一条执行路径不能单独存在,必须包含在进程中
  3. 线程是OS中运算调度的最小单位
2.2.1 线程的属性
  • 轻型实体
  • 独立调度和分配资源的基本单位
  • 可并发执行
  • 共享进程资源
2.2.2 线程的实现方式
  1. 用户级线程

    1. 线程间的切换由进程进行管理,不需要访问内核,
      • 线程同属于一个进程,同属于一块内存空间,在进程内就能完成切换
  2. 内核级线程

    1. 线程切换的开销比较大,但运行效率高

      • 因为每次切换线程都需要访问到内核对应的进程,

        在访问目标切换到的线程对应的内核,在访问到目标线程进行·切换

      • 操作是在内核完成的,所有执行效率较高

image

2.3 进程与线程比较

  • 一句话 :  线程相对于进程,大大的降低创建、撤销和切换可执行实体的成本和难度

  • 调度 调度的基本单位是线程

  • 拥有资源 线程不拥有资源,而是从进程中获取,只有使用权

  • 并发性 引入进程和线程都是为了提高并发性

  • 系统开销 创建和撤销进程以及进程切换的开销较高,而线程相对于小很多

  • 地址空间和其他资源 进程相互独立,线程共享进程的内存空间,线程中的寄存器资源是独立的

  • 通信 线程可以直接进行通信

2.4 进程的基本形态

  • 就绪(Ready)

    • 此时该进程以获取的需要的资源,等待进程调度执行
  • 执行(Running)

  • 阻塞 (Blocked)

image

进程得到允许后进入就绪状态,就绪底层数据结构是队列,先进先出,当进程得到调度进入运行状态,执行完毕后释放资源,如果运行中有IO处理等其他业务,会进入阻塞状态(同样,阻塞底层数据结构也是队列)等待数据处理完毕,在继续运行。如果中间出现异常,执行异常处理,异常无法抛出,进程终止。

2.5 进程控制

2.5.1 进程控制的方法
  • OS通过原语对进程进行控制

    • 原语由一些指令组成,这些指令一般是执行效率非常高。
    • 通过这些指令对进程进行创建,撤销,挂起,阻塞,挂起,唤醒,进程切换的操作。
      • 原语具有原子性的特点,即原语中的操作,要么全做要么全不做,不会被中断。
    • 原语控制进程的函数
    • image
2.5.2 进程控制:挂起与激活
  • 目的:为了系统和用户观察和分析进程
  • image
  • 挂起原语:suspend
    • 静止就绪:放外存,不调度,原因:进程一直没有得到调度。
    • 静止阻塞:等待事件 某个进程长期处于阻塞队列,会占用内存资源,所以要挂起进入静止阻塞状态。
    • Tips:在运行状态不能执行挂机原语,在进程进入阻塞状态,或处于就绪状态,才可以挂起,进入阻塞状态的线程被挂起,将数据放在外存,被激活后重新将数据恢复到内存
  • 激活原语:active
2.5.3 处理机调度
  • 根据算法和原则将处理机资源进行重新分配

  • 前提:进程数远大于处理机数

  • 目的:提高资源利用率,减少处理机空闲时间

  • 调度的层次

  • 高级调度/作业调度

    • 把后备作业调入内存

    • 只调入一次,调出一次

      • 人话:将磁盘安装的应用程序打开,转换为内存中进程
    • 中级调度/内存调度

  • ​ 将进程调至外存,条件合适在调入内存
    ​ - 人话:此时进程在内存中,由于IO等原因,长时间处于阻塞状态,通过内存调度转换为静态阻塞,将进程调入到外存。可以执行多次调度。

    • 在内外存对换区进行进程交换
  • 低级调度/进程调度

    • 从就绪队列选取分配给处理机
      • 按照某种算法将就绪队列进程分配给处理机
      • 最基本的调度,频率非常高
  • 调度方式

  • 剥夺式/抢占式调度

    • 立即暂停当前进程
      • 直接暂停正在执行的进,将处理机资源按照原则交给另一个。
    • 分配处理机给另一个进程
    • 原则:优先权/短进程优先/时间片原则
    • 非剥夺/非抢占式调度
      • 若有进程请求执行
      • 等待直到当前进程完成或阻塞
      • 缺点:适用于批处理系统,不适用于分时/实时系统
  • 调度时机

    • 进程运行完毕
    • 进程时间片用完
    • 进程要求IO操作
    • 进程执行某种原语
    • 高优先级进程申请运行(剥夺式调度)
2.5.4 调度算法
  • 进程调度:**先来先服务(FCFS,First Come First Served)**

    • 算法内容:调度作业/就绪队列里的进程最先入队者,等待操作完成或阻塞。
      • 阻塞后会进入阻塞队列,同样的也需要等待处理机调度。
    • 算法原则:按进程入队顺序执行
    • 调度方式:非抢占式调度
    • 适用场景:作业/进程调度
    • 优缺点
      • 有利于CPU繁忙作业,充分利用CPU资源
        • 处理需要大量计算的数据,需要充分利用CPU资源以快速得到运算结果。
      • 不利于IO繁忙型作业,操作耗时。
        • 如果当前进程一直在进行IO操作,会导致后面的进程一直处于等待状态,一直得不到处理机调度。
  • 短作业优先(SJF,Shortest Job First)

    • 算法内容:所需服务时间最短的作业/进程优先执行

      • 从就绪队列·中取出剩余时间最短的进程执行
      • Tips:就绪队列中优先检查曾经阻塞过,被恢复到就绪队列,这时进程已经运行过一段时间,所以是按照最短剩余时间来优先执行
    • 算法原则:最求最少的平均(带权)周转时间,

      • 什么是带权周转时间?

        • 作业周转时间与系统为作业提供的服务时间的比值

          这个比值就是带权周转时间,带权周转时间越大作业越短。

    • 调度方式: SJF/SPF非抢占式

    • 使用场景:作业/进程调度

    • 优缺点:

      • 平均等待/周转时间最少
      • 长作业时间会增加或饥饿
        • 耗时较长的进程一直得不到调度
      • 估计时间不准确,不能保证紧迫任务及时处理
  • 高响应比优先调度(Highest Response Ratio Next, HRRN)

    • 算法内容:结合FCFS和SFJ,综合考虑等待时间和服务时间计算响应比,高的优先调度
    • 算法原则:综合考虑作业/进程的等待时间和服务时间
    • 调度方式:非抢占式
    • 适用场景:作业/进程调度
    • 响应比计算:
      • 响应比=(等待时间+服务时间)/服务时间>=1
      • 只有当前进程放弃执行权(完成或者阻塞时),重新计算所有进程响应比
      • 长作业等待越久响应比越高,更容易获得处理机
  • 优先级调度(Highest Priority First,HPF)

    • 算法内容:按作业/进程的优先级进行调度
    • 算法原则:优先级最高(紧迫程度)的作业/进程先调度
    • 调度方式:抢占/非抢占式(并不能获得及时执行)
    • 适用场景:作业/进程调度
    • 优先级设置规则:
      • 静态/动态优先级
      • 系统>用户,交互型/非交互型;IO型>计算型
      • 低优先级进程可能会产生饥饿
  • 时间片轮转调度(Round Robin, RR)

    • 算法内容:按进程到达就绪队列的顺序,轮流分配一个时间片去执行,时间用完则剥夺。
    • 算法原则:公平轮流为每一个进程服务,进程在一定时间内得到响应
    • 调度放式:抢占式,由时钟中断确定时间到
    • 使用场景:进程调度
    • 优缺点:
      • 公平,响应快,适用于分时系统
      • 时间片决定因素,系统响应时间,就绪队列进程数量,系统处理能力
      • 时间片太大,相当于FCFS,太小,处理机切换频繁,开销增大。
  • 多级反馈队列调度(Multilevel Feedback Queue)

    • image
    • 算法内容
      • 设置多个优先级排序的就绪队列优先级从高到低,时间片从小到大新进程采用队列降级法
        • 第一级队列中按照FCFS分时间片,没有执行完毕的进程移入第二级,只有前一队列中的进程全部执行完或阻塞,才开始执行第二及队列。
        • 第一及队列中的进程阻塞,加入到第二及队列尾部。
    • 算法原则:集合前几种算法,相当于PSA+RR
    • 调度方式:抢占式
    • 适用场景:进程调度
    • 优缺点:
      • 对各类型相对公平;快速响应
      • 终端作业用户:短作业优先
      • 批处理作业用户:周转时间短
      • 长处理作业用户:在前几个队列部分执行