type
status
date
slug
summary
tags
category
icon
password

1.0 本章概念

  • 操作系统定义:操作系统是一组控制和管理计算机软硬件资源、合理地对各类作业进行调度以及方便用户使用的程序集合。说人话版本:是计算机硬件和应用之间的一层软件,他需要管理硬件并向用户提供软件接口
  • POSIX是指:Portable Operating System Interface of Unix
  • 裸机:完全无软件的计算机系统
  • 扩充机器:通常把覆盖了软件的机器称为扩充机器或虚机器
  • 单道批处理系统:在单道批处理系统中,系统对作业的处理都是成批进行的,且在内存中始终仅存一道作业运行(与多道批处理的本质区别),运行结束或出错,才自动调另一道作业运行。
  • 多道批处理系统:在内存中存放多道作业运行,运行结束或出错,自动调度内存中的另一道作业运行、
  • 实时系统:实时系统是指计算机及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时设备和实时任务协调一致的运行
  • 临界资源:把在一段时间内只允许一个进程访问的资源,称为临界资源。如打印机、栈、表格等

1.1 操作系统的目标和作用

1.1.1 操作系统的目标

  • 方便性:操作系统使计算机更易于使用(因为操作系统向用户提供了友好的接口)
  • 有效性:操作系统允许以更有效的方式使用计算机系统资源。
  • 提高系统资源利用率(能用更多的硬件)
  • 提高系表统的吞吐量(能更好地使用硬件)
  • 可扩展性:在操作系统中,允许有效地开发,测试和引进新的系统功能。(操作系统总是要更新的吧。现在很多操作系统也是,过一段时间发现问题了就继续更新,如Windows就经常更新)
  • 开放性:实现应用程序的可移植性和互操作性,要求具有统一的开放的环境。(能够使不同的应用跑在同一个操作系统上)

1.1.2 OS的作用

  • OS作为用户与计算机硬件系统之间的接口。也就是说操作系统应隐藏复杂的、困难的、丑陋的、特殊的硬件细节,呈现给程序(程序员)良好、清晰、优雅、一致的抽象(抽象实际上就是接口)。更直白的说,操作系统的任务就是创建好的抽象,并实现和管理它所创建的抽象。这个是自顶向下的观点,也就是面向用户的观点
    • OS需要提供的接口有:
      • 计算机用户需要的用户命令(面向用户)。用户命令构成的集合被称为用户接口
      • 应用软件需要的System Call(系统调用)(面向其他软件)。系统调用构成的集合被称为API
      • Q:如何实现系统调用——将内核程序和用户程序隔离,也就是分为内核态和用户态
  • OS作为计算机系统资源的管理者(软硬件资源)。也就是说操作系统应在相互竞争的程序之间有序地控制对硬件设备的分配。这个是自底向上的观点,也就是从硬件资源角度来说的
    • 资源管理的内容——操作系统需要管理哪些资源?
      • OS需要管理处理机(运算器、控制器),用于分配和控制处理机——进程管理
      • OS需要管理存储器,主要负责内存的分配和回收——内存管理
      • OS需要管理文件,负责文件的存取、共享和保护——文件系统
      • OS需要管理IO设备,负责I/O设备的分配与操纵——IO系统
      • 对于多用户系统,需要管理共享资源,避免发生冲突
    • 资源管理实现多路复用(共享)的方法
      • 在时间上复用:当一种资源在时间上复用时,不同的程序“轮流”实用它;例如CPU、打印机等。(想想时间片轮转)
      • 在空间上复用:每个客户都得到资源的一部分;例如内存、磁盘等
  • OS用作扩充机器(也就是裸机上的一台虚拟机)
    • 操作系统用作扩充机器功能,使其便于使用
    • 在裸机上覆盖管理软件,实现对设备的操作,并向上提供一组操作命令。(也就是自顶向下、面向用户的观点)
    • 隐藏对设备操作的具体细节,实现对硬件操作的多个层次的抽象。(也就是自底向上、面向硬件资源的观点)

1.2 操作系统的发展过程

无操作系统

  • 人工操作方式:一台计算机的所有资源由用户独占,降低了计算机资源利用率,人操作慢,出现了严重的人机矛盾
    • 输入输出方式:穿孔卡片
    • 主要矛盾:人机矛盾,也就是CPU和I/O设备速度不匹配
    • 提高效率的途径:脱机I/O、批处理
  • 脱机输入输出方式
    • 输入输出方式:在外围计算机的控制下,实现输入输出。如下图:
      • notion image
        有点像存储器的分层结构,速度不匹配就在中间加一层
    • 主要解决了CPU与设备之间不匹配的矛盾提高了I/O速度

单道批处理操作系统

  • 单道批处理系统主要特征:
    • 自动性:因为当当前内存内的进程退出时,会自动调度另一个进程
    • 顺序性:所有进程都是顺序执行的
    • 单道性:任何一个时刻,内存中都只有一个进程
  • 单道批处理系统主要优点:减少人工操作,解决了作业的自动接续。
  • 单道批处理系统主要缺点:平均周转时间长(一个进程从被创建到执行可能要等很久),没有交互能力(没有交互能力是因为没有办法及时处理用户的输入,因为处理用户输入的这个进程也是需要排队的,这就导致系统也无法及时返回给用户信息。说白了就是因为单道批处理系统是非抢占式的)

多道批处理操作系统

  • 多道批处理系统主要特征:多道性、无序性、调度性(进程调度和作业调度)。只要结合单道批处理系统的主要特征理解即可
  • 多道批处理系统的优点
    • 提高CPU的利用率。(在单道批处理系统中如果当前处理的进程偏IO,这个时候仍然需要等待进程结束。这个时候CPU是空闲的,利用率就低了)
    • 提高内存和I/O设备利用率(跟提高CPU利用率是一个道理。)
    • 增加系统吞吐量(以上两点将使得并发处理的进程数量变多,进而使得系统的吞吐量)
  • 多道批处理的主要缺点:平均周转时间长(单道批处理系统中的进程可能是要在外存等很久,但是多道批处理系统不仅可能是要在外存等,进入内存也不一定马上被调度),没有交互能力(与单道批处理系统相同)
  • 多道批处理系统需要解决的5个问题(实际上也就是因为共享所带来的问题。在单道批处理系统中因为只有一个进程在内存中,他就会占有机器的所有资源;但是现在有多个进程在内存中,他们需要共享处理机的资源)
    • 处理机管理:分配和控制CPU(启动调度时哪些进程需要占用哪些CPU)
    • 存储器管理:内存分配与回收(需要给正在运行的进程分别分配哪些空间)
    • I/O设备管理:I/O设备的分配与操纵(哪些进程需要占用哪些IO设备)
    • 文件管理:文件的存取、共享和保护(进程能读写哪些文件,能否同时读写)
    • 作业管理:如何组织作业运行(如何调度进程)
  • 单道批处理系统和多道批处理系统的异同:本质上就是当前内存中有几个进程正在执行(实际上在内存中的进程就是在执行的进程了)
    • 单道批处理系统
      • notion image
        也就是所有的进程之间都是串行的(是有顺序性的)
    • 多道批处理系统(不抢占)
      • notion image
        在多道批处理系统中存在一个调度程序,能使得多个进程并发执行
  • PS:单道批处理系统和多道批处理系统都是非抢占式的(这里讲的都是单核的处理器),因为进程只有当运行结束(需要等待IO等)或者出错的时候才会进行重新调度。也就是说当前的进程只能主动释放CPU,其他的进程是没有办法抢占CPU的

分时操作系统

  • 分时系统的产生:是因为用户要求人机交互、共享主机、便于用户上机(因为分时所以用户的请求相较于单道和多道能够较快的被响应)
  • 分时系统实现中的关键问题:
    • 及时接收:实现多个用户的信息及时接收。
    • 及时处理:及时控制作业的运行。
  • 分时系统实现的方法
    • 简单分时系统
    • 简单分时系统如下:
      • notion image
        此时在操作系统内部就好像是一个单道系统,因为每一个时刻内存中都只有一个进程,当时间片到达的时候,就需要去外存中取另一个进程
    • 具有“前台”和“后台”的分时系统
    • 前台后台分时系统如下
      • notion image
        可以理解为前台服务执行了之后才会执行后台的任务。这个时候操作系统内部就会有两个进程,并且这两个进程的优先级规定很明确(也就是一定要先执行前台然后再执行后台)
    • 多道分时系统
      • notion image
        多道分时就是在某一个时刻内存中可能有多个进程。不难发现,从上到下的区别就是,内存中某时刻应该有几个进程,进程的优先级是否严格规定
  • 分时系统的特点
    • 多路性:一个主机与多个终端相连(分时服务)
    • 独立性:彼此独立操作,互不干扰(这是一个操作系统最基本的要求吧)
    • 及时性:系统能在很短的时间得到回答
    • 交互性:能实现人机对话(区别于批处理系统)

实时操作系统

  • 实时系统的特点:
    • 多路性:能对多个对象进行控制。
    • 独立性:独立运行,不混淆,不破坏。
    • 交互性:仅限于访问系统中某些特定的专用服务程序。
    • 可靠性:高可靠性,应具有多级容错防护能力。
    • 及时性:不同的系统要求不一样,控制对象必须在截止时间内完成
  • 实时任务的分类:
    • 按照任务执行周期性划分:非周期性任务、周期性任务
    • 按照任务截止时间划分:软实时任务、硬实时任务

1.3 操作系统的基本特征

  • 并发性(是两个基本特征之一):并发是最重要的特征,其它特征都以并发为前提
    • 并行性和并发性
      • 并行性:是指两个或多个事件在同一时刻发生。 (同时执行)
      • 并发性:是指两个或多个事件在同一时间间隔内发生。(交替执行)
      • 任务共行
        • 从宏观上看,任务共行是指系统中有多个任务同时运行
        • 从微观上看,任务共行是指单处理机系统中的任务并发(Task Concurrency:即多个任务在单个处理机上交替运行)或多处理机系统中的任务并行(Task Parallelism:即多个任务在多个处理机上同时运行)。
      • 说白了就是任务在一起执行,任务之间可以是并行(多核可能并行,然后对多核中的每一个核上的任务都是并发的),也可以是并发(单核就一定是并发了)
    • 引入进程
    • 程序与进程的区别
      • 程序:静态实体
      • 进程:系统中能独立运行(需要注意的是线程也能独立运行,但是线程是独立运行的基本单位)并作为资源分配的基本单位,由一组机器指令(也就是程序)、数据和堆栈等(还包括了PCB)组成的独立运行的活动实体
    • 引入线程
    • 进程与线程的区别
      • 进程作为资源分配的基本单位
      • 线程作为独立运行和调度的基本单位(线程的资源是从进程上获取的,同一个进程下的线程是在共享进程的资源)
  • 共享性(是两个基本特征之二):是指系统中的资源可供内存中多个并发执行的进程共同使用
    • 互斥共享方式:
      • 系统中的临界资源可以提供给多个进程使用,但一段时间内仅允许一个进程使用,称为互斥共享方式。
    • 同时访问方式:
      • 从宏观上看,资源共享是指多个任务可以同时使用系统中的软硬件资源。
      • 从微观上看,多个进程交替互斥地使用系统中的某个资源。(说白了这个同时访问就是上面的互斥共享)
  • 并发和共享是操作系统的两个最基本的特征,它们又是互为存在的条件(不共享就没办法实现并发,不并发就没必要共享)
  • 虚拟性:是指通过某种技术把一个物理实体变为(映射为)若干个逻辑上的对应物
    • 时分复用技术
      • 虚拟处理机:分时实现(也就是一个时间片执行主机上的任务,下一个时间片执行虚拟机上的任务)
      • 虚拟设备:SPOOLING技术
    • 空分复用技术
      • 虚拟磁盘技术:逻辑分区
      • 虚拟存储器:虚拟存储管理实现
      • (这俩有什么区别吗...虚存不就是将硬盘,或者说外存上的一段进行分区然后映射成主存来扩展了内存吗)
  • 异步性
    • 执行结果不确定,程序不可再现。(因为程序的执行顺序不确定,是异步的,所以结果才会不确定)
    • 异步性:多道程序环境下程序(进程)以异步的方式执行,每道程序在何时执行、各自执行的顺序、完成时间都是不确定的,也是不可预知的。(也就是说如果不去给进程加限制的话,进程之间的执行就是异步的。所以为了使结果确定,并且让程序正常执行,需要给一些进程加上必要的限制,也就是进程同步
  • 所以说异步性是牺牲了程序的顺序这些来换取了性能,我们在这个基础上为了保证程序执行结果是我们想要的,就要加上同步。即在进行进程同步的时候需要最大限度保证异步性,这样性能才是最高的

1.4 操作系统的主要功能

实际上也就是操作系统的作用——管理硬件资源、提供接口、做扩充机
操作系统的功能:
  • 处理机管理(CPU)
  • 存储器管理
  • 设备管理
  • 文件管理
  • 方便用户使用的用户接口。
其中1-4是管理硬件资源,最后一点是提供接口

1.5 操作系统的结构设计

这玩意应该不考,稍微看一下就好了
  • 传统操作系统结构
    • 第一代的OS是无结构的;
      • 无结构OS简介:在早期开发操作系统时,设计者只是把他的注意力放在功能的实现和获得高效率上,缺乏首尾一致的设计思想。那时的OS是为数众多的一组过程的集合,各过程之间可以相互调用,在操作系统内部不存在任何结构,因此,有人把它称为整体系统结构
      • 无结构OS缺陷:
        • 设计出的操作系统既庞大又杂乱,缺乏清晰的程序结构。
        • 编制出的程序错误很多,给调试工作带来很多困难;增加了维护人员的负担。
    • 第二代OS采用了模块式结构;
      • 模块式结构简介:使用分块结构的系统包含若干module(模块);其中,每一块实现一组基本概念以及与其相关的基本属性。
        • 块与块之间的相互关系:所有各块的实现均可以任意引用其它各块所提供的概念及属性。
      • 模块式结构如下图:
        • notion image
      • 模块式OS的优点:
        • 提高了OS设计的正确性、可理解性可维护性
        • 增强了OS的可适应性。
        • 加速了OS的开发过程。(因为便于管理了)
      • 模块式OS的缺点:
        • 对模块的划分及对接口的规定要精确描述很困难。
        • 从功能观点来划分模块时,未能将共享资源和独占资源加以区别。
    • 第三代是层次式结构
      • 层次式结构简介:▪使用分层系统结构包含若干layer(层);其中,每一层实现一组基本概念以及与其相关的基本属性。
        • 层与层之间的相互关系:
          • 所有各层的实现不依赖其以上各层所提供的概念及其属性,只依赖其直接下层(注意是直接下层)所提供的概念及属性;
          • 每一层均对其上各层隐藏其下各层的存在。
      • 层次的设置时应考虑的几个因素(稍微看看)
        • 程序嵌套。通常OS的每个功能的实现,并非是只用一个程序便能完成的,而是要经由若干个软件层才有可能完成,因此在考虑实现OS时,每个功能可能形成的程序嵌套。
        • 运行频率。将那些经常活跃的模块放在最接近硬件的层 。
        • 公用模块。把供多种资源管理程序调用的公用模块,设置在最低层, 以便调用。
        • 用户接口。命令接口、程序接口以及图形用户接口。这些接口应设置在OS的最高层,直接提供给用户使用
      • 有一些OS也是模块+层次结构:
        • notion image
    • 现代OS结构是微内核结构
      • 微内核结构简介:所谓微内核技术,是指精心设计的、能实现现代OS核心功能的小型内核,它与一般的OS(程序)不同, 它更小更精炼,它不仅运行在核心态,而且开机后常驻内存, 它不会因内存紧张而被换出内存(当进程需要东西的时候,传统操作系统中的一部分长时间无用的部分会被换出内存。这种情况感觉在虚存中的情况比较多。对机器而言,它只知道在内存中的才能执行,通过虚存可以让机器认为一部分外存也是内。这个时候机器的一个在存储器上的数据移动指令就有可能将进程,甚至是操作系统部分移出真正的内存)
      • 微内核结构的特点
        • 足够小的内核(因为要常驻内存,原有操作系统的大部分都被移动到用户空间)
        • 基于客户/服务器模式(客户发出系统调用就相当于是发出请求,然后系统需要进行模式的切换,内核处理后再将结果返回;用户模块间的通信也是使用消息传递。这不就是纯纯客户端服务器吗)
        • 应用“机制与策略分离”原理(从字面上来理解,机制是不能改的,但是策略是我们自己指定的。在微内核中最基本的操作系统功能就是机制,这些被写在微内核中;而策略就是比较高级的操作系统功能,这些被转移到了用户的空间。所以是机制和策略分离)
        • 采用面向对象技术
      • 微内核结构的优点:灵活/安全…
      • 微内核结构的缺点:性能(客户端服务器模式OS的通病)
  • 客户服务器模式OS
  • 客户服务器OS如下图:
    • notion image
      这里就相当于用户的进程是一个“客户”,而操作系统就相当于是一个服务器去服务一个个客户,也就是去执行一个个进程,但是这之间的执行关系是需要有类似web中的发送请求应答机制,所以这种模式被称为客户服务器模式
    • 客户服务器模式OS优点
      • 提高了系统的可扩展性(想要增加操作系统功能的时候就直接再搭一台“服务器”就好了)
      • 增强了系统的可靠性(通过应答机制来实现进程调度就更可靠)
      • 可移植性好
      • 提供了对分布式系统的支持(可以让不同的“服务器”在不同的物理机器上)
    • 客户服务器模式OS缺点
      • 运行效率有所降低:消息传递开销+模式切换开销
  • 面向对象的程序设计技术(这玩意PPT上甚至没有提到操作系统,感觉没啥用。可能意思是在设计操作系统的时候使用面向对象的程序技术吧)
    • 面向对象技术的基本概念:所谓对象,是指在现实世界中具有相同属性、服从相同规则的一系列事物的抽象。其中的具体事物称为对象的实例。OS中的各类实体如进程、线程、消息、存储器等,都使用了对象这一概念,相应地,便有进程对象、 线程对象、 存储器对象等。
    • 面向对象技术的优点
      • 可修改性和可扩充性。由于隐蔽了表示实体的数据和操作,因而可以改变对象的表示而不会影响其它部分, 从而可以方便地改变老的对象和增加新的对象
      • 继承性。继承性是面向对象技术所具有的重要特性。继承性是指子对象可以继承父对象的属性,这样,在创建一个新的对象时, 便可减少大量的时空开销
      • 正确性和可靠性。由于对象是构成操作系统的基本单元,可以独立地对它进行测试,这样,比较易于保证其正确性和可靠性,从而比较容易保证整个系统的正确性和可靠性

1.6 习题

  • 练习一
    • 问题:
      • notion image
    • 答案:
      • notion image
  • 练习二
    • 问题:
      • notion image
    • 答案:在单道批处理系统中,至少执行40min;在多道批处理系统中,至少执行24min。多道批处理系统中的两种可能执行情况(也就是谁先谁后。这里由于题目中没有优先级的概念,所以都是非抢占的)如下:
      • notion image
PS:如果是第一章的这种甘特图的题,就不考虑抢占了
Paper2PX4
Loading...
Noah
Noah
永远年轻,永远热泪盈眶
公告
❗❗复习笔记问题❗❗
由于兼容性问题
导入md文件可能导致了一些格式错误
🌹如发现格式错误,请联系我~🌹
🌹如博客内容有误也欢迎指出~🌹