OS review 01

the summary of OS

Posted by Leo on June 6, 2022

Chapter 1 计算机系统概述

1.1 操作系统的基本概念

1.1.1 操作系统的概念

  操作系统管理各种计算机硬件,为应用程序提供基础,是计算机和用户的中介。再从软件和硬件来看,硬件提供资源,软件使用资源解决用户需求,OS就控制协调APP对硬件的分配和使用,便为用户提供接口

1.1.2 操作系统的特征

  1. 并发(Concurrence) 多个事情统一时间间隔发生,针对操作系统来说,指的是多个程序可以同时存在并运行,并且还可以调度他们。而此外,OS还有引入了进程, 用于使程序能够并发执行。 注意并发并行,并发 -> 同一时间间隔,并行 -> 同一时间。并发依靠分时,即尽管看上去这个时间有很多程序执行,但这个时间有很多的时间间隔组成,从微观的时间间隔来看只有一个,靠着是时间的调度,分时轮转。并行就是同时进行运算和操作了。 著名图片: 20220506230444

  2. 共享(Sharing)

    即资源共享,可以被多个并发进行使用

    • 互斥共享

    一次只能一个进程访问,其余想访问的只能等着,等那个资源被释放出去。这种资源就叫临界资源

    • 同时访问

    允许多个进程“同时”访问,加引号是因为这是宏观上感觉的,实际上是时间段交替访问的。

    并发和共享是操作系统两个最基本的特征,两者之间互为存在的条件:①资源共享是以程序的并发为条件的,若系统不允许程序并发执行,则自然不存在资源共享问题:②若系统不能对资源共享实施有效的管理,测必将影响到程序的并发执行,甚至根本无法并发执行。

  3. 虚拟(Virtual)

    并不是常说的VR,AR那些。而是一种将具象的物理变成逻辑上对应物的方法。如虚处理器, 就是把一个物理上的CPU虚拟为多个逻辑上的CPU。类似地,相对应的就有了虚存(一个物理页面可以对应多个进程空间的VA),等等。

  4. 异步

    多道程序环境允许多个程序并发执行,但由于资源有限,进程的执行是走走停停的,以不可预知的速度。有时,会导致进程产生与时间有关的错误,但,当运行环境相同时,OS就必须保证多次运行进程都能获得相同的结果。

1.1.3 操作系统的目标和功能

 OS应具有处理机管理、存储器管理、设备管理和文件管理。为了方便用户使用操作系统,还必须向用户提供接口。同时,OS可扩充机器,提供更好的服务,更高的资源利用率。

  • 当操作系统作为管理者时
    1. 处理机 可能以进程or线程当做处理机分配和运行的基本单元。所以其本质上也是进程的管理,包括了创建、撤销、避免冲突、避免死锁、进程通信等

    2. 存储器

      包括内存分配与 回收、地址映射、内存保护与共享等

    3. 文件

      信息都是以文件形式存在,负责部分也称为文件系统,包括了存储空间管理、目录管理、读写管理等

    4. 设备

      I/O请求之类,保罗了缓冲管理、设备分配等

  • 作为硬件和用户的接口

    操作系统提供的接口主要分为两类:一类是命令接口,用户利用这些操作命令来组织和控制作业的执行:另一类是程序接口,编程人员可以使用它们来请求操作系统服务。

    1. 命令接口

      又可以再细分为联机和脱机(按照控制方式不同区分)。 联机也称为交互式,自然用于实时or分时的系统。类似我们用的bash,用户控制台或终端输入command,每写好一条,OS就执行命令解释程序, 再将command执行。 老板说一句话,我做一件事 脱机也称为批处理,.bat文件,由一组作业控制命令执行,执行时用户不能直接干预,需要事先写一份作业操作说明书老板把工作写在清单上,我挨个完成

    2. 程序接口

      由一组系统调用(广义指令)组成,用户依靠在程序中使用来为OS提供服务。通过系统调用请求OS服务。GUI就是依靠调用程序接口实现的。

  • 作为计算机资源扩充

     没有任何软件支持的计算机称为裸机,而实际呈现在用户面前的计算机系统是经过若干层软件改造的计算机。裸机在最里层,其外面是操作系统。操作系统所提供的资源管理功能和方便用户的各种服务功能,将裸机改造成功能更强、使用更方便的机器:因此,我们通常把覆盖了软件的机器称为扩充机器或虚拟机。

PS

  • OS不只管理硬件,还管理软件资源,笼统地,可称为计算机资源
  • 系统调用只能通过用户程序间接使用

1.2 操作系统发展历程

如下图所示

image.png

PS

  • 多道程序的运行环境比单道程序的运行环境更加复杂。引入多道程序后,程序的执行就失去了封闭性和顺序性。程序执行因为共享资源及相互协同的原因产生了竞争,相互制约。 考虑到竞争的公平性,程序的执行是断续的, 其不具备制约行。

  • 操作系统主要可分为批处理操作系统, 分时操作系统和实时操作系统.

  • 实时操作系统通常采用抢占式的优先级高者优先进行进程调度,(处理加急的事情),此时也允许浪费一些资源;而分时操作系统采用优先级+非抢占式调度改善响应时间,既可让重要的作业/进程通过高优先级尽快获得系统响应,又可保证次要的作用/进程在非抢占式调度下不会迟迟得不到系统响应.

  • 分时操作系统的追求目标是比较快速的响应客户

1.3 操作系统运行环境

1.3.1 处理器运行模式

CPU执行两种不同程序,一是OS内核程序,一是应用程序(用编程语言写的).对于OS来说,前者是后者的管理者,所以他们有些特殊的指令。

  • 特权指令

    只有内核可以用,如I/O,置中断等

  • 非特权指令

    用户可以用,它为了防止APP对系统造成破环,用户只能访问用户的地址空间(kusg),不能直接访问软硬件资源。

因此CPU的运行模式划分为了核心态和用户态,模式切换的指令也是特权指令。显然OS在核心态,其主要包括了时钟管理、中断机制、原语、系统控制的数据结构及处理功能。

  1. 时钟管理

 OS除了需要向用户提供标准的系统时间之外,还需要通过中断的管理,实现进程的切换。(分时时间片轮转调度,实时操作系统按截止时间控制运行,批处理系统通过时钟管理来衡量一个作业的运行程度)

  1. 中断机制

 键鼠信号输入、进程管理调度、系统功能调度、设备驱动、文件访问等都依赖中断机制,但中断机制中只有很小一部分功能属于内核,负责保护和回复中断线程的信息,转移控制权到相关的处理程序。

  1. 原语

 按层次设计的OS,底层为可被调用的公用小程序,特点如下

  • 处于底层,靠近硬件

  • 具有原子性,操作只能一气呵成

  • 运行时间短,调用频繁

定义原语的直接方法是关闭中断,让动作不可分割的完成后再打开中断,一般只会内核态的指令成为原语

  1. 系统控制的数据结构及处理功能

 泛指用来登记状态信息的数据结构,如FCB,PCB,各类链表等。常见的基本管理操作有

  1. 进程管理:状态的管理,调度、分派、创建、撤销等
  2. 存储器管理:存储器的空间分配和回收等
  3. 设备管理:缓冲区管理,设备分配等

核心态(内赫梯哎)指令实际上包括系统调用类指令和一些针对时钟、中断和原语的操作指令。

1.3.2 中断和异常

 通过中断或异常,实现内核态和用户态的切换,保证操作系统和用户程序的协同。(主要是为了让用户态的程序使用核心态的功能),用一个特殊的寄存器CP0,来表示CPU所处的工作状态。中断可以使得在未使用某些资源时,及时把对他的占有权释放,提高资源利用率。

中断和异常定义

 中断(Interruption),外中断,来自CPU执行指令外部的事件,一般是主动的行为,通常用于信息输入和输出,还有时间中断,来明确一个固定的时间片。  异常(Exception),内中断,来自CPU执行指令内部的时间,如程序的非法操作码,地址越界,溢出,缺页等。异常不能被屏蔽,一经出现,立即处理。  按以上表述,有的时候会将异常和中断统称为中断(宏观上的中断)

异常中断的分类和联系

中断

其中INTR和NMI指的是线的名称,而INTR线可以通过改变屏蔽字实现多重中断,从而使得中断处理更加灵活。异常也是不可屏蔽的 Fault是由指令引起的异常,如非法的操作码,缺页故障,除数为0,运算溢出等,Trap是事先安排的,用于在用户态调用内核程序。Abort是出现了使得CPU无法继续执行的硬件故障,如控制器出错等。 软件中断也可以称为程序性异常

中断和异常的处理过程

第i条指令(此时的指令地址称为epc)检测到中断或者异常,则CPU打断当前程序,切换到异常处理程序(exception handler)。若能解决,回到被打断的第i条或第i+1条;若中断或异常不可恢复的致命错误,则终止用户程序。具体处理一般由操作系统(和驱动程序)完成。

1.3.3 系统调用

 操作系统提供的一些子功能,可以看成特殊的公共子程序。(syscall),一般凡是与资源有关的操作(内存资源、文件资源等),执行特权指令,都需要经过系统调用,大致可以分成以下几类:

  • 设备管理

  • 文件管理

  • 进程控制

  • 进程通信

  • 内存管理

从用户态的用户程序切换称内核态的系统调用,就需要执行陷入指令(trap,也可以称为访管中断),把CPU的使用权主动交给操作系统内核程序,处理完成后再回到用户态。  这样设计的目的是,用户程序不能直接执行对系统影响非常大的操作,必须通过系统调用的方式请求操作系统代为执行,以便保证系统的稳定性和安全性,防止用户程序随意更改或访问重要的系统资源,影响其他进程的运行。

syscall_survey

PS

  • trap不是特权指令,因为它是在用户态用的且仅在用户态用。(已经在内核态了没必要再切换)
  • 批处理操作的主要缺点是缺少交互性
  • 输入/输出指令必须在核心态执行(其需要中断)
  • OS采用多道程序设计技术是为了提高系统利用率和吞吐量
  • 通道技术是硬件技术(特殊的处理器)
  • 中断处理是操作系统必须提供的功能
  • 用户态到核心态的转换是由硬件中断机制完成的
  • 系统调用指令也可以称为广义指令
  • 读时钟、取数、寄存器清零都可以在用户态完成
  • 外部中断处理过程,PC 值由中断隐指令自动保存(也就是由硬件,即程序计数器PC),而通用寄存器内容由操作系统保存
  • 初始化中断向量表是由操作系统完成的

1.4 操作系统结构

1.4.1 分层法

定义

分为若干层,最底层(层0)为硬件,最高层(层N)为用户接口,每层只能调用紧邻它的低层的功能和服务(单向依赖

优点

  1. 便于系统的调试和验证 (简化了结构),可以从低到高,一层层调试,确定错误的层数
  2. 易扩充和维护。做修改时,改变相应层间的接口,不会影响其他层

缺点

  1. 定义好层级意味着依赖关系确定,不够灵活,也导致了合理定义各层比较难
  2. 效率差,执行一个功能需要自上而下的穿越多层,各层之间的通信机制也会增加开销

1.4.2 模块化

定义

下图就是模块化的一个例子

module

按功能进行一定程度的划分成独立的模块,每个模块都有某方面的管理功能,并为每个模块规定好接口,方便通信,因此也称为“模块-接口法” 模块划分也要按照一定的标准,其不能划分过小,导致其联系过多造成的系统混乱,也不能划分过大增加模块本身复杂性,其要保证模块的独立性(降低耦合度,提高内聚性),要考虑以下方面

  • 内聚性:模块内部各部分联系紧密程度(模块中还有子模块)
  • 耦合度:模块间相互影响,相互联系的程度 其特点在于
  • 足够小的内核
  • 基于C/S模式
  • 机制和策略分离。(机制指的是实现某一功能的具体执行机构)
  • 采用面向对象技术

优点

  1. 提高设计的正确性、可理解性、可维护性
  2. 增强可适应性
  3. 加速开发过程

缺点

  1. 接口规定很难满足对接口的实际需求
  2. 设计时各个模块并行,无法在上一个已验证正确决定的基础上做出新的决定

1.4.3 宏内核

也称单内核或大内核。是指将系统的主要功能模块都作为一个紧密联系的整体运行在内核态。起初,操作系统是按这样的设计模式,Windows,iOS,maxOS都是这样。但随着发展,OS提供的服务越来越多,内核一定越来越庞大,造成了一些不便,于是发展了微内核,具体待会讲,现在的OS也借鉴了微内核的优势,讲一些非核心功能移动到用户空间

1.4.4 微内核

基本概念

将内核最基本的功能留在内核,其余转移到用户态,降低内核设计的复杂性.其增加了一些服务器,将OS绝大部分功能都放在一组服务器(本质是进程来实现),客户进程和这些服务器消息传递,完成功能 这样处理除了降低内核复杂度,还可以提高可靠性.因为其他服务模块都是在用户态,崩溃了重启就好了,不影响系统 它是基于客户/服务模式的(C/S模式)

微内核基本功能

  1. 进程(线程)管理

    OS中最基本的就是进程(线程)的通信,还可以处理进程切换,调度类的, 放在内核,分类进程,设置优先级等属于策略的就放在服务器.

  2. 低级存储器管理

    低级,就是简单的内容.如逻辑地址和用户地址变换机制等,有关页面置换,分配等策略就放在服务器了

  3. 中断和陷入

    包括了捕捉,和中断处理

由此可以看出,微内核救赎处理一些简单东西,更底层,更硬件更像是一个打手,策略类的就都给服务器了

优点

  • 扩展性和灵活性,毕竟已经将许多功能抽离出来了
  • 可靠性和安全性
  • 可移植性:内核有着CPU和I/O相关的服务,服务器与硬件与硬件平台无关,移植的代价较小
  • 分布式计算

缺点

性能问题,其需要频繁的通信和切换内核态和用户态 因此其不够高效

1.5 操作系统引导

 操作系统毕竟也是程序,而程序就会以数据的形式放在硬盘中,硬盘又有很多分区。操作系统引导就是指计算机利用CPU、运行特定程序,通过程序识别硬盘,识别硬盘分区,进而识别分区上的操作系统。最后再通过程序启动操作系统的过程 常见的引导过程如下:

  1. 激活CPU,CPU读取ROM中的boot程序,将指令寄存器置为BIOS的第一条指令(就越是执行BIOS的指令),等级BIOS中断例程入口地址
  2. 硬件自检。启动后,检查硬件是否出现故障,如果故障就会有不同含义的蜂鸣声
  3. 加载带有操作系统的硬盘。BIOS读取Boot Sequence(CMOS里保存的启动顺序),把控制权交给启动顺序第一位的存储设备,然后CPU将该存储设备引导扇区的内容加载进内存
  4. 加载主引导记录MBR,硬盘以特定的标识符区分引导硬盘和非引导硬盘。MBR作用就是告诉CPU去哪个分区找OS
  5. 扫描分区表并加载活动分区,将控制权交给活动分区。MBR包含硬盘分区表,会用特定的标识符区分活动分区和非活动分区
  6. 加载分区引导记录(PBR)。活动分区的第一个扇区,其作用是寻找并激活分区根目录下用于引导操作系统的程序
  7. 加载启动管理器
  8. 加载操作系统

PS

  • 计算机的引导程序在ROM中,开机后自启动,计算机操作系统的引导程序在硬盘里(活动分区的引导扇区)
  • 虚拟机用软硬件都可以实现