操作系统期末复习

以为会狠狠考概念,没想到没考啥概念,计算也比较简单!

introduction

操作系统是一组控制和管理计算机系统中的各种软硬件资源,合理地组织计算机系统的工作流程,方便用户使用的程序的集合

操作系统的目标和作用

  • convenience方便性:方便用户使用计算机系统;
  • efficiency有效性:提高系统资源的利用率;
  • 可扩充性、开放性;

操作系统功能

  • 从资源管理的角度
    • 处理机管理
    • 存储器管理
    • 设备管理
    • 文件管理
    • 用户接口
  • 从用户接口的角度

操作系统的分类

  • 批处理操作系统,单道,多道。
  • 分时操作系统
  • 实时操作系统,两个基本特征:及时性、可靠性
  • 通用操作系统,兼有批处理、分时处理、实时处理OS三者中的两者

如果操作系统具有很强的交互性,可同时供多个用户使用,但时间响应不太及时,则属于 分时系统 类型;如果操作系统可靠,时间响应及时但仅有简单的交互能力则属于 实时系统 类型;如果操作系统在用户提交作业后,不提供交互能力,它所追求的是计算机资源的高利用率,大吞吐量和作业流程的自动化,则属于 批处理系统 类型。

并发和并行的区别

  • 并发是指一个处理器同时处理多个任务,并行是指多个处理器或者是多核的处理器同时处理多个不同的任务。
  • 并发是逻辑上的同时发生(simultaneous),而并行是物理上的同时发生。

操作系统的特征

  • 并发性
  • 共享性,资源互斥使用(临界资源)、同时使用
  • 虚拟性,一个物理实体映射为多个逻辑实体
  • 异步性,在多道程序环境下,每道程序的推进时间与顺序受运行环境的影响,是不确定的;程序执行结果不确定

多道程序设计:在内存中同时存放多道用户作业,使它们都处于执行的开始点和结束点之间

操作系统接口

  • 作业级接口
    • 命令行
    • GUI
    • 批处理
  • 程序级接口
    • 系统调用

操作系统结构

  • 简单结构
  • 分层结构
  • 微内核结构

CPU管理

  • 进程,进程是程序的一次执行过程,是系统进行资源分配和调度的一个基本单位
  • 进程特征
    • 动态性:有生命周期
    • 并发性:并发执行
    • 独立性:独立获得资源、独立运行单位
    • 异步性:推进速度不可预知道、执行结果不确定
    • 结构性:由程序段、数据段和PCB组成
  • 进程与程序
    • 进程是程序的一次执行,是一个动态的概念;而程序是一组有序的指令,是一种静态的概念。即进程是程序执行的动态过程,而程序则是进程运行的静态文本。
    • 一个进程可以执行一个或几个程序,同一个程序也可能由几个进程同时执行。
    • 程序可长期保存,而进程是有生命周期的。
    • 进程是并发实体, 而程序则不是
  • 进程与线程:
    • 调度方面:线程作为调度分派的基本单位,而进程则是资源分配和调度的一个基本单位;
    • 并发性方面:进程之间可以并发,一个进程的多线程之间也可并发执行;
    • 拥有资源方面:进程作为拥有资源的基本单位,而线程只拥有少量必不可少的资源,但它可以访问所属进程的资源
    • 系统开销方面:进程切换要涉及到进程环境的切换,开销较大,而线程间切换只需保存和设置少量的寄存器内容,开销远小于进程切换开销。
  • 进程的组成:程序、数据、PCB
    • PCB:记录OS所需的、用于描述进程的当前情况以及控制进程运行的全部信息,是进程存在的唯一标志,常驻内存。
      • 进程标识符
      • 处理机状态(CPU现场)
      • 进程调度信息:状态、优先级、时间、事件
      • 进程控制信息:地址、通信信息、资源
  • 进程状态和控制
    image
    • 就绪态:进程已经获得除处理机以外的所有资源,只要获得处理机即可执行
    • 执行态:进程已经获得处理机,正在处理机上执行
    • 等待态:进程正在等待某一事件的发生,如等待I/O完成、等待信号量等
    • 创建态:进程正在被创建
    • 终止态:进程已经完成执行,但PCB仍然保留,以便父进程得到该进程的有关信息

进程的互斥与同步

  • 临界区和临界资源:每个进程中访问临界资源的那段程序称为临界区,临界资源是一次仅允许一个进程使用的共享资源。
  • 进程的互斥:进程在运行中争用系统资源,对于独占型资源,只能一个进程使用完,另一个进程才能使用。
  • 临界区问题要求:
    • 互斥
    • 进步,没有进程在临界区时,若有其他进程需要进入,则一定有一个进程能进入
    • 有限等待,要求从申请进入临界区到进入临界区之间,其他进程进入临界区的次数有上界
  • 进程的同步:在异步环境下,互相合作的进程按各自独立的速度向前推进,但在某些确定点上必须协调工作。即当某个进程到达这些点后,等待另一进程发来信息,否则就只能停下来等待其操作的完成,进程间的这种协同关系称为进程同步。
  • 进程互斥的实现:
    • peterson
    • 硬件同步:原子指令test_and_set
    • 互斥锁封装
  • 进程同步和互斥实现
    • 信号量PV,可以通过计数量和等待进程列表实现一个非自旋的信号量,减弱了忙等待的影响
    • 条件变量
    • 管程
  • IPC问题
    • 生产者消费者问题
    • 读者写者问题
    • 哲学家进餐问题

线程

  • 引入线程目的:提高系统效率、提高系统资源利用率、减少进程并发执行时所付出的时空开销,使OS具有更好的并发性。
  • 进程内一个可调度的实体,CPU调度的基本单位,包括ID,程序计数器寄存器组和堆栈。
  • 内核和用户线程
    • 用户线程:存在于用户空间中,其创建、撤消和切换都不需系统支持。
    • 内核支持线程:是依赖于内核的,其创建、撤消和切换都是由内核实现的。
  • 模型
    • 一对一,映射一个用户线程到一个内核线程,一个线程阻塞,其他线程可以正常继续执行。
    • 多对一,映射多个用户线程到一个内核线程,线程管理由用户程序库完成,效率高;当一个线程阻塞时,整个进程都会阻塞。无法用于多处理器核系统,因为内核一次只能调度一个线程。
    • 多对多,映射多个用户线程到数量更少或相等的内核线程,一个线程阻塞,内核可以调度另一个线程。

CPU调度

三级调度

  • 长期调度从缓存池中选择进程加载到内存,负责控制多道程序程度(内存中进程数量);执行频率低,间隔时间长
  • 中期调度选择进程从内存中取出,降低多道程序程度,之后进程可被重新调入内存并从中断处执行;
  • 短期调度从就绪队列中选择进程,分配给cpu执行;执行频率高,速度快

调度方式

  • 抢占式
  • 非抢占式

调度时机

  • 现运行进程任务完成或出现异常
  • 现运行进程因某种原因由执行变成阻塞状态
  • 时间片用完
  • 采用可剥夺调度方式时,有更高优先级进程进入就绪队列

调度算法(调度的都是就绪队列不是等待队列)

  • 先来先服务FCFS
  • 短作业优先SJF。如何获得下一个CPU执行时间?指数平均预测。
  • 基于优先级的调度算法。存在饥饿问题,解决方法,增加就绪队列中等待时间过长的进程的优先级。
  • 时间片轮转RR。
  • 多级队列调度算法,根据进程属性,如优先级,将就绪队列分成多个单独队列,每个队列使用自己的调度算法。
  • 多级反馈队列调度算法,允许进程在队列之间移动。比如进程使用了过多CPU时间,将其放入下一级队列,当进程在一个队列中等待时间过长,则将其放入上一级队列。

多处理器调度

  • 非对称多处理器ASMP:主处理器负责进程调度和IO处理,其他处理器负责执行代码
  • 对称多处理器SMP:所有进程有一个共同的就绪队列或者每个处理器有自己的就绪队列
  • 处理器亲和性
    • 软亲和性:操作系统试图保持进程运行在同一处理器上,但不保证
    • 强亲和性:允许进程运行在处理器子集上
  • 多核处理器调度
    • 设计了多线程处理器核,每个核分配2或多个硬件线程
    • 两个级别的调度:操作系统选择软件线程运行在哪个硬件线程;每个核选择运行哪个硬件线程
      实时CPU调度,应该支持抢占
  • 单调速率调度,优先级和周期成反比,即更频繁的事件有更高的优先级
  • 最早截止期限,不要求是周期或者CPU长度固定
  • 比例分享调度

死锁

  • 产生死锁的原因:

    • 系统资源不足;
    • 进程推进顺序不合适;
  • 死锁产生的必要条件

    • 互斥条件:一个资源每次只能被一个进程使用
    • 占有并等待:一个进程因请求资源而阻塞时,对已获得的资源保持不放;一个进程应该至少占有一个资源,并等待另一个资源,而该资源为其他进程占有
    • 非抢占条件:进程已获得的资源,在末使用完之前,不能强行剥夺,只能完成后主动释放
    • 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系
  • 解决死锁的策略:

    • 设计无死锁的系统:静态预防、动态避免;
    • 允许出现死锁然后排除:检测并解除
  • 预防

    • 资源的静态分配方法:进程运行前一次性申请全部资源,破坏请求和保持条件.
    • 资源的顺序分配法:系统的全部资源进行编号,只允许按编号顺序递增地申请,破除环路等待。
    • 一个已占有资源的进程,若要申请新的资源,必须先放弃已占有的资源,破坏请求保持条件。
  • 死锁避免

    • 安全状态:当多个进程动态申请资源时,系统按某一顺序逐次地为每个进程分配所需资源,使每个进程都可以在最终得到最大需求量后依次顺利完成;否则为不安全状态;让系统在动态分配资源的过程中,不要进入不安全状态。
    • 银行家算法
  • 死锁检测

    • 每种资源只有一个实例:资源分配图和等待图
    • 多个实例:类似于银行家算法
  • 死锁恢复

    • 终止进程
      • 终止所有死锁进程
      • 逐个终止死锁进程,直到死锁解除
    • 抢占资源
      • 选择牺牲进程
      • 回滚

存储器管理

逻辑地址:CPU生成的地址
物理地址:内存看到的地址,即内存地址寄存器的地址
动态加载:程序只有被需要时才会加载
动态链接时,每个库引用都会保留存根,用来指示如何定位适当的内存驻留程序,或者在程序不在内存时加载库。

swap技术
把主存中暂时不能运行的进程调出到外存(快速磁盘),以便腾出足够的内存空间,再将具备运行条件的进程调入内存;

  • 从逻辑上扩充内存空间,从而使整个系统资源利用率提高;
  • 整体对换:以进程为单位,进程对换;
  • 部分对换:页面对换,分段对换;
  • 换出时应保证进程是空闲的;如果正在等待IO操作就会发生错误,解决方法不能换出等待IO的进程或者IO使用系统缓冲区

连续内存分配

  • 固定分区:分区容量和数目固定不变,大小可不等,每个分区容纳一道作业。
  • 动态分区,作业装入内存时根据作业大小建立分区
  • 空闲分区的分配算法:
    • 首次适应:空闲区按地址递增顺序排列
    • 最佳适应:空闲区按容量递增顺序排列
    • 最坏适应:空闲区按容量递减顺序排列
  • 可重定位分区:重定位寄存器、紧凑技术

页表

  • 多级页表
  • 哈希页表
  • 倒置页表
    快表(TLB):存放被频繁访问的页面的页表项,设置快表是为了提高内存访问速度,内存访问时间的计算(与快表命中率相关);

虚拟内存

请求调页:页面在程序执行期间被请求时才加载到内存
对标记为无效的页面的访问会产生缺页错误
硬件支持

  • 一定容量的内存;
  • 较大容量的外存;
  • 缺页(段)中断机构;
  • 地址变换机构

页面置换算法

文件系统

磁盘分配

  • 连续分配。优点:简单、顺序访问速度快。缺点:外部碎片、文件大小受限、难以支持动态增长,无法实现预知文件大小。
  • 链接分配。优点:不需要知道文件大小,可以动态增长,无需合并磁盘空间。缺点:只能有效用于顺序访问,指针占据空间,难以实现随机访问、指针导致文件容易被破坏,可靠性低。使用FAT文件分配表,可以缓存FAT,改善随机访问时间。
  • 索引方法。将所有指针放在一起构成索引块。
    • 索引块的组织:链接;多级索引;组合方法。

空闲空间管理

  • 位向量
  • 链表

IO

为什么要引入缓冲区?

  • 缓和CPU和I/O设备速度不匹配的矛盾。
  • 降低对CPU的中断频率。
  • 提高CPU和I/O设备之间的并行性,从而提高系统的吞吐量和设备利用率

设备独立性:是指应用程序独立于具体使用的物理设备,它可提高设备分配的灵活性和设备的利用率。
为了实现设备独立性,用户程序不直接使用物理设备名(或设备的物理地址),而使用逻辑设备名来请求某类设备;而系统在实际执行时,将逻辑设备名转换为某个具体的物理设备名,实施I/O操作。
四种IO方式

posted @ 2023-11-18 22:32  trashwin  阅读(76)  评论(0编辑  收藏  举报