文章目录

  • 操作系统
    • 一、引论
      • 1.1 OS的概念
      • 1.2 目标和作用:key:
      • 1.3 发展过程
      • 1.4 基本特征:key:
      • 1.5 功能:key:
    • 二、进程管理
      • 2.2 进程的特征
      • 2.3 进程的状态:key:
      • 2.4 PCB
      • 2.5 进程通信
      • 2.6 原语:key:
      • 2.7 消息队列
      • 2.8 线程
    • 三、处理机调度
      • 3.1 为什么引入
      • 3.2 处理机调度层次
      • 3.3 作业和作业调度
      • 3.4 进程调度
      • 3.5 调度算法
      • 3.6 实时调度
      • 3.7 实时调度算法
    • 四、死锁:key:
      • 4.1 死锁概念
      • 4.2 死锁的必要条件
      • 4.3 死锁预防
      • 4.4 死锁避免
      • 4.5 死锁检测
      • 4.6 死锁解除
    • 五、进程同步
      • 5.1概念
      • 5.2临界区问题:key:
      • 5.3 信号量机制
    • 六、存储器
      • 6.1 层次结构
      • 6.2 程序的装入和链接
      • 6.3 对换与覆盖
      • 6.5 分页存储管理方式
      • 6.7 段页式
      • 6.8 分页和分段的比较
    • 七、虚拟存储器
      • 7.1 概念
      • 7.2 虚拟技术的实现
      • 7.3 页面置换算法
      • 7.4 抖动与工作集
  • 7.2 虚拟技术的实现
      • 7.3 页面置换算法
      • 7.4 抖动与工作集

操作系统

一、引论

1.1 OS的概念

铺设在硬件上多层软件的集合

1.2 目标和作用

目标:方便性,有效性,可扩充性,开放性

作用:

  1. 用户与硬件系统的接口
  2. 系统资源的管理者
  3. 实现了对计算机资源的抽象

1.3 发展过程

  1. 未配置OS 的系统–>人机矛盾(cpu与io设备不匹配)–>解决:脱机系统(减少cpu空闲,提高了IO速度)
  2. 单道批处理系统–>缺点–>系统资源得不到充分利用
  3. 多道批处理系统–>最大缺点–>失去交互性,优点:资源利用率高,系统吞吐量大 硬件支持:通道和中断
  4. 分时系统(一个主机连接多个终端的系统)–>人机交互(独占全机控制),共享主机,有及时性,交互性,多路性,独立性——->经常使用时间片轮转技术–>因为一台电脑,好几个人用
  5. 实时系统–>可以及时响应外部事件的请求:可靠性
  6. 微机操作状态–>配置在微机上的OS–>x用户x任务
  7. 嵌入式操作系统–>为完成特定功能而设计–>内核小,精简
  8. 网络操作系统–>在网络下对资源进行管理
  9. 分布式操作系统–>基于软件实现的多处理机系统

1.4 基本特征

  1. 并发:多个事件同一时间间隔发生
  2. 共享:OS中的资源可供多个并发进程使用
  3. 虚拟:把物理实体变为逻辑上对应物的功能(时分复用,空分复用)
  4. 异步:进程以不可预知的速度向前推进

1.5 功能

  1. CPU管理
  2. 存储器管理
  3. 外部设备管理
  4. 文件管理

以上四种属于资源管理

  1. 用户接口管理

二、进程管理

###2.1 进程

进程是程序的执行过程,资源分配和调度的独立单位

2.2 进程的特征

  1. 动态性
  2. 并发性
  3. 独立性
  4. 异步性

2.3 进程的状态

2.4 PCB

为什么引入:为了便于系统描述和管理进程,作为独立运行基本单位的标志

进程的状态和优先级信息存放在PCB

2.5 进程通信

  • 基于共享数据结构
  • 基于共享存储区

管道通信:连接一个读进程和一个写进程的文件

消息传递机制:将格式化信息封装在消息中,利用原语实现通信

客户–服务器系统

  • 套接字:通信标志类型的数据结构
  • 远程方法调用(RPC):通信协议

2.6 原语

原语是由若干指令组成,用来完成特定功能的一个过程。(特点:不可分割性)

用户为阻止进程继续执行,应利用(阻塞)原语,若进程正在执行,应转变为(阻塞)状态;以后,若用户要恢复其运行,应利用(唤醒)原语,此时进程应转变为(就绪)状态。

在操作系统中,P、V操作是一种进程低级通信原语

2.7 消息队列

运行于同一台机器上进程间通信中,和管道类似

克服了信号承载信息量少,管道只能承载无格式信息流,缓冲区受限等缺点

2.8 线程

线程是进程中的⼀个执行单元,是CPU 调度基本单位

为什么引入:为了提高程序并发执行的程度

三、处理机调度

3.1 为什么引入

内存中进程进多,处理机少–>系统要按算法动态分配处理机

3.2 处理机调度层次

  1. 高级调度:调度对象是外存中后备队列的作业
  2. 低级调度:调度对象是进程
  3. 中级调度:存储器管理中的对换功能

3.3 作业和作业调度

作业:用户交给系统的独立工作

作业控制块:JCB(作业在系统中的标志)

3.4 进程调度

任务:

  1. 保存CPU现场
  2. 按算法选取进程
  3. CPU 分配给进程

方式:

  1. 非抢占式调度:一处理机分配给一个进程,会一直运行下去
  2. 抢占式调度

3.5 调度算法

  • FCFS(先来先服务调度算法)
  • SJF(短作业调度算法)
  • 优先级调度算法
  • RR(轮转调度算法)
  • 多级队列调度算法

3.6 实时调度

要求有截止时间

3.7 实时调度算法

最早截止时间优先算法

四、死锁

4.1 死锁概念

各进程互相等待对方手里的资源,导致各进程都阻塞,无法向前推进的现象

产生死锁的根本原因:系统资源不足

4.2 死锁的必要条件

  • 互斥:每个资源要么已经分配给了一个进程,要么就是可用的。
  • 占有和等待:已经得到了某个资源的进程可以再请求新的资源。
  • 不可抢占:已经分配给一个进程的资源不能强制性地被抢占,它只能被占有它的进程显式地释放。
  • 环路等待:有两个或者两个以上的进程组成一条环路,该环路中的每个进程都在等待下一个进程所占有的资源。

4.3 死锁预防

在程序运行之前预防发生死锁。

  1. 破坏互斥条件,例如假脱机打印机技术允许若干个进程同时输出,唯一真正请求物理打印机的进程是打印机守护进程。
  2. 破坏占有和等待条件,一种实现方式是规定所有进程在开始执行前请求所需要的全部资源。
  3. 破坏不可抢条件
  4. 破坏环路等待,给资源统一编号,进程只能按编号顺序来请求资源。

4.4 死锁避免

安全状态:系统按某种进程推进顺序,为每个进程分配资源,直到满足每个进程对资源的最大需求,从而使每个进程都可顺利完成一种系统状态


银行家算法

4.5 死锁检测

资源分配图中是否找到一个有向环型图

4.6 死锁解除

  • 利用抢占恢复
  • 利用回滚恢复
  • 通过杀死进程恢复

五、进程同步

5.1概念

进程同步指的是协调多个并发执行进程的工作先后次序

5.2临界区问题

临界资源:一个时间段内只允许一个进程使用的资源

l临界区:进程中访问临界资源的那段代码

访问临界资源需要遵循的原则:

(1) 空闲让进

临界区空闲时,可以允许一个请求进入临界区的进程立即进入临界区

(2) 忙则等待

当已有进程进入临界区时,其他试图进入临界区的进程必须等待

(3) 有限等待

对请求访问的进程,应保证能在有限时间内进入临界区 (保证不会饥饿)

(4) 让权等待

当进程不能进入临界区,应当立即释放处理机,防止进程忙等待 (不应该让他占用处理机 一直执行循环无法前进,应当得知无法进入临界区时不执行循环,直接切换进程)

5.3 信号量机制

互斥使用缓冲区的信号量只能取值0、1,一般初始值为1。

设与某资源相关联的信号量初值为3,当前值为1,若M表示该资源的可用个数,N表示等待资源的进程数,则M、N分别是( 1,3 )。

六、存储器

6.1 层次结构

对于通用计算机而言,存储层次至少应具有三级:最高层为CPU寄存器,中间为主存,最底层是辅存。

6.2 程序的装入和链接

创建进程的第一件事,就是要将程序和数据装入内存。将程序变为可执行程序要经过以下几步:
(1)编译
由编译程序将用户源代码编译成若干个目标模块。
(2)链接
由链接程序将编译后形成的目标模块以及它们所需要的库函数,链接在一起,形成一个装入模块。
(3)装入
由装入程序将装入模块装入内存。
下图给出了这样的三步过程:

6.3 对换与覆盖

对换:将一定数量的程序或数据换出内存

  • 整体对换:处理机中级调度,对换对象是进程
  • 页面(分段)对换

###6.4 连续分配方式

  • 单一连续分配
  • 固定分区分配
  • 动态分区分配(算法)
  • 动态重定位分区分配

关于动态分区分配算法:

  • 首次适应算法:地址递增:找到第一个符合条件的
  • 最佳适应算法:容量递增:找到第一个符合条件的
  • 最坏适应算法:作业装入内存,先挑选一个最大的空闲区
  • 快速适应算法:根据进程常用空间大小划分

6.5 分页存储管理方式

把进程的地址空间分为若干页,内存空间分为若干块,对应起来

地址变换机构:将逻辑地址变为物理地址

###6.6 分段存储管理方式

作业地址空间被分为很多段,每一个段都有自己的逻辑信息

面向程序员

6.7 段页式

程序的地址空间划分成多个拥有独立地址空间的段,每个段上的地址空间划分成大小相同的页。这样既拥有分段系统的共享和保护,又拥有分页系统的虚拟内存功能。

6.8 分页和分段的比较

  • 对程序员的透明性:分页透明,但是分段需要程序员显式划分每个段。
  • 地址空间的维度:分页是一维地址空间,分段是二维的。
  • 大小是否可以改变:页的大小不可变,段的大小可以动态改变。
  • 出现的原因:分页主要用于实现虚拟内存,从而获得更大的地址空间;分段主要是为了使程序和数据可以被划分为逻辑上独立的地址空间并且有助于共享和保护。

七、虚拟存储器

7.1 概念

虚拟存储器能将较大的逻辑地址映射到较小的物理地址上

7.2 虚拟技术的实现

请求分页存储管理方式:

页的大小相同,管理方便–>常用

页表组成:页号,物理块号,状态位,访问字段,修改位,外存地址

请求分段存储管理方式:以分段为单位进行换入换出

7.3 页面置换算法

最佳页面置换算法(理论算法):被淘汰的页面是最长时间不会被访问的页面

先进先出页面置换算法(FIFO):淘汰上一个进去内存的页面

最近最久未使用算法(LRU):选择最近最久的页面淘汰

Clock页面置换算法:LRU算法的近似

7.4 抖动与工作集

抖动:进程大部分时间用来换入换出,而几乎没有时间进行工作

工作集:一段时间间隔内要访问的页面集合

7.2 虚拟技术的实现

请求分页存储管理方式:

页的大小相同,管理方便–>常用

页表组成:页号,物理块号,状态位,访问字段,修改位,外存地址

请求分段存储管理方式:以分段为单位进行换入换出

7.3 页面置换算法

最佳页面置换算法(理论算法):被淘汰的页面是最长时间不会被访问的页面

先进先出页面置换算法(FIFO):淘汰上一个进去内存的页面

最近最久未使用算法(LRU):选择最近最久的页面淘汰

Clock页面置换算法:LRU算法的近似

7.4 抖动与工作集

抖动:进程大部分时间用来换入换出,而几乎没有时间进行工作

工作集:一段时间间隔内要访问的页面集合