文章目录

  • 1. 操作系统
    • 1.1 操作系统简介
      • 1.1.1 操作系统的概念和功能
      • 1.1.2 操作系统的特征
        • 1.1.2.1 并发
        • 1.1.2.2 共享
        • 1.1.2.3 虚拟
        • 1.1.2.4 异步
      • 1.1.3 操作系统的发展与分类
      • 1.1.4 中断和异常
      • 1.1.5 系统调用
      • 1.1.6 操作系统的体系结构
      • 1.1.7 操作系统简介总结
    • 1.2 进程
      • 1.2.1 进程的概念,组成和特征
      • 1.2.2 进程的组织
      • 1.2.3 进程的状态与转换
      • 1.2.4 进程控制
      • 1.2.5 进程通信
    • 1.3 线程
    • 1.4 处理机调度
    • 1.5 进程调度
      • 1.5.1 进程调度的时机,切换与过程以及方式
      • 1.5.2 调度算法的评价指标
      • 1.5.3 调度算法
        • 1.5.3.1 先来先服务(FCFS)
        • 1.5.3.2 短作业优先(SJF)
        • 1.5.3.3 高响应比优先(HRRN)
        • 1.5.3.4 时间片轮转(RR)
        • 1.5.3.5 优先级调度算法
        • 1.5.3.6 多级反馈队列调度算法
    • 1.6 进程同步和互斥
      • 1.6.1 进程互斥的软件实现方法
      • 1.6.2 进程互斥的硬件实现方法
      • 1.6.3 信号量机制
      • 1.6.4 用信号量机制实现进程互斥、同步、前驱关系:
      • 1.6.5 经典的进程同步互斥问题:
    • 1.7 管程
    • 1.8 死锁
      • 1.8.1 哲学家进餐问题
      • 1.8.2 死锁的概念
      • 1.8.3 死锁的处理策略——预防死锁
      • 1.8.4 死锁的处理策略——避免死锁
        • 1.8.4.1 安全序列
        • 1.8.4.2 银行家算法
      • 1.8.5 死锁的处理策略——检测和解除
    • 1.9 内存
      • 1.9.1 内存的基础知识
      • 1.9.2 内存管理的概念
      • 1.9.3 覆盖技术与交换技术
      • 1.9.4 连续分配管理
      • 1.9.5 动态分区分配算法
      • 1.9.6 基本分页存储管理的基本概念
      • 1.9.7 基本地址变换机构
      • 1.9.8 具有快表(TLB)的地址变换机构
      • 1.9.9 两级页表
      • 1.9.10 基本分段存储管理
      • 1.9.11 段页式管理
      • 1.9.12 虚拟内存的基本概念
      • 1.9.13 请求分页管理方式
      • 1.9.14 页面置换算法
      • 1.9.15 页面分配策略
    • 1.10 文件
      • 1.10.1 初识文件管理
      • 1.10.2 文件的逻辑结构
      • 1.10.3 文件目录
      • 1.10.4 文件的物理结构
      • 1.10.5 文件存储空间管理
      • 1.10.6 文件的基本操作
      • 1.10.7 文件共享
      • 1.10.8 文件保护
      • 1.10.9 文件系统的层次结构
    • 1.11 磁盘
      • 1.11.1 磁盘的结构
      • 1.11.2 磁盘调度算法
      • 1.11.3 减少延迟时间的方法
      • 1.11.4 磁盘的管理
    • 1.12 IO设备
      • 1.12.1 IO设备的基本概念与分类
      • 1.12.2 IO控制器
      • 1.12.3 IO控制方式
      • 1.12.4 IO软件的层次
      • 1.12.5 假脱机技术
      • 1.12.6 设备的分配与回收
      • 1.12.7 缓冲区管理

1. 操作系统

1.1 操作系统简介

1.1.1 操作系统的概念和功能

计算机操作系统详解-编程知识网

计算机操作系统详解-编程知识网

1.1.2 操作系统的特征

1.1.2.1 并发

并发:指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。

常考易混概念——并行:指两个或多个事件在同一时刻同时发生。

注意(重要考点):

单核CPU同一时刻只能执行一个程序,各个程序只能并发地执行

多核CPU同一时刻可以同时执行多个程序,多个程序可以并行地执行

两者区别

  1. 概念不同
    并发:并发是指两个或多个事件在同一时间间隔发生
    并行:并行是指两个或者多个事件在同一时刻发生。
  2. 侧重点不同
    并发侧重于在同一实体上
    并行:并行侧重于在不同实体上
  3. 处理不同
    并发:并发在一台处理器上“同时”处理多个任务。
    并行:并行在多台处理器上同时处理多个任务

1.1.2.2 共享

计算机操作系统详解-编程知识网

并发和共享的关系
并发性是指系统中同时存在着多个运行的程序
共享性是指系统在的资源可供内存中多个并发执行的进程使用

如果失去了并发性,则系统在一个时间内只能运行一个程序,则共享性失去了存在的意义
如果失去了共享性,则QQ和微信不能同时访问硬盘资源,也就无法同时发送文件,导致无法实现并发

1.1.2.3 虚拟

计算机操作系统详解-编程知识网

背景知识:一个程序需要放入内存并给它分配CPU才能执行

问题:既然一个程序需要被分配CPU才能正常执行,那么为什么单核CPU

的电脑中能同时运行这么多个程序呢?

答:这是虚拟处理器技术。实际上只有一个单核CPU,在用户看来似乎有

6个CPU在同时为自己服务

1.1.2.4 异步

概念:异步是指在多道程序环境下,允许多个程序并发执行,但由于资源有限,资源给了其中的一道程序,由于有限无法再给其他的程序,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。
如果失去了并发性,系统只能串行地处理各个进程,每个进程的执行会一贯到底。只有系统拥有并发性,才可能导致异步性。
计算机操作系统详解-编程知识网

1.1.3 操作系统的发展与分类

计算机操作系统详解-编程知识网

1.1.4 中断和异常

计算机操作系统详解-编程知识网

1.1.5 系统调用

计算机操作系统详解-编程知识网

1.1.6 操作系统的体系结构

计算机操作系统详解-编程知识网

1.1.7 操作系统简介总结

计算机操作系统详解-编程知识网

1.2 进程

1.2.1 进程的概念,组成和特征

计算机操作系统详解-编程知识网

1.2.2 进程的组织

计算机操作系统详解-编程知识网

1.2.3 进程的状态与转换

计算机操作系统详解-编程知识网

1.2.4 进程控制

计算机操作系统详解-编程知识网

1.2.5 进程通信

计算机操作系统详解-编程知识网

1.3 线程

计算机操作系统详解-编程知识网

1.4 处理机调度

计算机操作系统详解-编程知识网

1.5 进程调度

1.5.1 进程调度的时机,切换与过程以及方式

计算机操作系统详解-编程知识网

1.5.2 调度算法的评价指标

计算机操作系统详解-编程知识网

1.5.3 调度算法

1.5.3.1 先来先服务(FCFS)

计算机操作系统详解-编程知识网

1.5.3.2 短作业优先(SJF)

计算机操作系统详解-编程知识网

1.5.3.3 高响应比优先(HRRN)

计算机操作系统详解-编程知识网

1.5.3.4 时间片轮转(RR)

计算机操作系统详解-编程知识网

计算机操作系统详解-编程知识网

1.5.3.5 优先级调度算法

计算机操作系统详解-编程知识网

计算机操作系统详解-编程知识网

1.5.3.6 多级反馈队列调度算法

计算机操作系统详解-编程知识网

1.6 进程同步和互斥

计算机操作系统详解-编程知识网

1.6.1 进程互斥的软件实现方法

计算机操作系统详解-编程知识网

1.6.2 进程互斥的硬件实现方法

计算机操作系统详解-编程知识网

1.6.3 信号量机制

计算机操作系统详解-编程知识网

1.6.4 用信号量机制实现进程互斥、同步、前驱关系:

计算机操作系统详解-编程知识网

1.6.5 经典的进程同步互斥问题:

  1. 生产者–消费者问题
  2. 生产者–多消费者问题
  3. 吸烟者问题
  4. 读者–写者问题
  5. 哲学家进餐问题

1.7 管程

计算机操作系统详解-编程知识网

1.8 死锁

1.8.1 哲学家进餐问题

计算机操作系统详解-编程知识网

1.8.2 死锁的概念

计算机操作系统详解-编程知识网

死锁的处理策略:

计算机操作系统详解-编程知识网

1.8.3 死锁的处理策略——预防死锁

计算机操作系统详解-编程知识网

1.8.4 死锁的处理策略——避免死锁

1.8.4.1 安全序列

  1. 所谓安全序列,就是指如果系统按照这种序列分配资源,则每个进程都能顺利完成。只要能找出一个安全序列,系统就是安全状态。当然,安全序列可能有多个

  2. 如果分配了资源之后,系统中找不出任何一个安全序列,系统就进入了不安全状态。这就意味着之后 可能所有进程都无法顺利的执行下去。当然,如果有进程ᨀ 前归还了一些资源,那系统也有可能重新回到安全状态,不过我们在分配资源之前总是要考虑到最坏的情况。

  3. 如果系统处于安全状态,就一定不会发生死锁。如果系统进入不安全状态,就可能发生死锁(系统处于不安全状态未必死锁,但死锁时一定处于不安全状态。系统处于安全状态一定不会死锁)

  4. 因此可以在资源分配之前预先判断这次分配是否会导致系统进入不安全状态,以此决定是否答应资源分配请求。这也是“银行家算法”的核心思想。

1.8.4.2 银行家算法

计算机操作系统详解-编程知识网

数据结构:

长度为 m 的一维数组 Available 表示还有多少可用资源

n*m 矩阵 Max 表示各进程对资源的最大需求数

n*m 矩阵 Allocation 表示已经给各进程分配了多少资源

Max – Allocation = Need 矩阵表示各进程最多还需要多少资源

用长度为 m 的一位数组 Request 表示进程此次申请的各种资源数

银行家算法步骤:

①检查此次申请是否超过了之前声明的最大需求数

②检查此时系统剩余的可用资源是否还能满足这次请求

③试探着分配,更改各数据结构

④用安全性算法检查此次分配是否会导致系统进入不安全状态

安全性算法步骤:

检查当前的剩余可用资源是否能满足某个进程的最大需求,如果可以,就把该进程加入安全序列,并把该进程持有的资源全部回收。

不断重复上述过程,看最终是否能让所有进程都加入安全序列。

1.8.5 死锁的处理策略——检测和解除

计算机操作系统详解-编程知识网

1.9 内存

1.9.1 内存的基础知识

计算机操作系统详解-编程知识网

1.9.2 内存管理的概念

计算机操作系统详解-编程知识网

1.9.3 覆盖技术与交换技术

计算机操作系统详解-编程知识网

1.9.4 连续分配管理

计算机操作系统详解-编程知识网

1.9.5 动态分区分配算法

计算机操作系统详解-编程知识网

1.9.6 基本分页存储管理的基本概念

计算机操作系统详解-编程知识网

1.9.7 基本地址变换机构

计算机操作系统详解-编程知识网

1.9.8 具有快表(TLB)的地址变换机构

什么是快表(TLB)?

快表,又称联想寄存器TLB, translation lookaside buffer ),是一种访问速度比内存快很多的高速缓存TLB不是内存!),用来存放最近访问的页表项的副本,可以加速地址变换的速度。与此对应,内存中的页表常称为慢表

时间局部性:如果执行了程序中的某条指令,那么不久后这条指令很有可能再次执行;如果某个数据被访问过,不久之后该数据很可能再 次被访问。(因为程序中存在大量的循环)

空间局部性:一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也很有可能被访问。(因为很多数据在内存中都是连续存放 的)

上小节介绍的基本地址变换机构中,每次要访问一个逻辑地址,都需 要查询内存中的页表。由于局部性原理,可能连续很多次查到的都是同一个页表项

计算机操作系统详解-编程知识网

1.9.9 两级页表

计算机操作系统详解-编程知识网

1.9.10 基本分段存储管理

计算机操作系统详解-编程知识网

1.9.11 段页式管理

计算机操作系统详解-编程知识网

1.9.12 虚拟内存的基本概念

计算机操作系统详解-编程知识网

1.9.13 请求分页管理方式

计算机操作系统详解-编程知识网

1.9.14 页面置换算法

计算机操作系统详解-编程知识网

1.9.15 页面分配策略

计算机操作系统详解-编程知识网

1.10 文件

1.10.1 初识文件管理

计算机操作系统详解-编程知识网

1.10.2 文件的逻辑结构

计算机操作系统详解-编程知识网

1.10.3 文件目录

计算机操作系统详解-编程知识网

1.10.4 文件的物理结构

计算机操作系统详解-编程知识网

1.10.5 文件存储空间管理

计算机操作系统详解-编程知识网

1.10.6 文件的基本操作

计算机操作系统详解-编程知识网

1.10.7 文件共享

计算机操作系统详解-编程知识网

1.10.8 文件保护

计算机操作系统详解-编程知识网

1.10.9 文件系统的层次结构

计算机操作系统详解-编程知识网

计算机操作系统详解-编程知识网

1.11 磁盘

1.11.1 磁盘的结构

计算机操作系统详解-编程知识网

1.11.2 磁盘调度算法

计算机操作系统详解-编程知识网

1.11.3 减少延迟时间的方法

计算机操作系统详解-编程知识网

1.11.4 磁盘的管理

计算机操作系统详解-编程知识网

1.12 IO设备

1.12.1 IO设备的基本概念与分类

计算机操作系统详解-编程知识网

1.12.2 IO控制器

计算机操作系统详解-编程知识网

1.12.3 IO控制方式

计算机操作系统详解-编程知识网

1.12.4 IO软件的层次

计算机操作系统详解-编程知识网

1.12.5 假脱机技术

计算机操作系统详解-编程知识网

1.12.6 设备的分配与回收

计算机操作系统详解-编程知识网

1.12.7 缓冲区管理

计算机操作系统详解-编程知识网