操作系统笔记

第一章:概述

1.1、基本概念

**概念:**控制和管理计算机软件和硬件资源

特征:

  • 并发:两个或多个时间在同一时间间隔内发生。
    • 并发:一段时间内,宏观上同时发生,微观上交替执行。
    • 并行:同一时刻下完成两种或两种以上工作。
  • 共享:系统中的资源可供内存中多个并发进行的进程使用。
  • 虚拟:一个物理实体变为若干逻辑上的对应物。
  • 异步:进程的执行,不是一贯到底,而是走走停停,以不可预知的速度向前推进。

操作系统的目标和功能:

  • 管理功能
    • 处理机管理
    • 存储器管理
    • 文件管理
    • 设备管理
  • 接口功能
    • 命令接口:联机、脱机
    • 程序接口:系统调用

1.2、操作系统发展与分类

手工操作阶段

  • 存在人机矛盾,CPU等待手工操作,资源利用率低

单道批处理阶段

  • 一定程度上缓解了人机矛盾,但内存中仅有一道程序执行,高速CPU仍要等待低速的I/O操作,资源利用率不高

多道批处理阶段

  • 多个独立的程序能同时运行,宏观并行,微观串行。资源利用率提高。
  • 但没有人机交互功能。

分时操作系统

  • 提供人机交互功能,处理器划分时间片,按时间片轮流把处理器分配给不同作业。
  • 但不能处理一些紧急事务。

实时操作系统

  • 接收信号后能及时处理,并在严格时间内处理完接收的事件。

分布式计算机

  • 系统中任一计算机构成子系统,共享资源,并行工作,协同完成任务。

1.3、运行环境

CPU状态:

  • 内核态:
  • 用户态:

**中断:**为了进行核心态和用户态两种状态的切换,引入中断机制。

  • 内中断(异常、例外)
    • 陷入
    • 故障
    • 终止
  • 外中断(中断)
    • 时钟中断
    • I/O中断请求

中断处理过程:

  • 关中断
  • 保存断点
  • 中断服务程序寻址
  • 保存现场和屏蔽字
  • 开中断
  • 执行中断服务程序
  • 关中断
  • 恢复现场和屏蔽字
  • 开中断
  • 中断返回

系统调用:

  • 是操作系统向用户程序提供的接口,用户在程序中调用操作系统的一些子功能。

系统调用与库函数的区别?

  • 系统调用是内核提供给用户程序的接口,运行在内核空间,许多库函数会使用系统调用来完成自己的功能,没有系统调用的库函数,效率更高,因为不需要上下文的切换。

大内核与微内核:

  • 大内核:主要功能模块都运行在核心态
    • 高性能,但结构混乱,难以维护
  • 微内核:只将最基本的功能保留在内核
    • 结构清晰,方便维护,可靠稳定;但降低了系统性能

第二章:进程管理

2.1、进程与线程

进程:

  • 进程是程序的一次执行过程,是资源分配的基本单位

进程的状态和转换:

  • 创建态
  • 就绪态:仅缺少处理机
  • 运行态:
  • 阻塞态:等待态,等待某一事件
  • 结束态

阻塞是一种自主行为,请求资源失败,或等待某种操作的完成,进程会自我阻塞。

唤醒是被动行为,被相互联系的其他进程唤醒。

进程的通信:

  • 共享存储:通信进程之间存在一块共享空间,通过对共享空间的读写实现进程之间的信息交换。
  • 消息传递:数据交换以格式化的消息为单位,进程通过系统提供的发送消息和接收消息两个原语进行数据交换。
  • 管道通信:发送进程将数据写入管道,接收方从管道中接收数据。管道半双工通信,不能同时读和写。

线程:

  • 为了减小程序在并发执行时所付出的时空开销,提高操作系统的并发性能,引入了线程。

线程特征:

  • 同一进程的线程共享该进程的全部资源。

进程和线程的比较:

  • 传统中进程是资源和处理机调度的基本单位。
  • 引入线程后,进程是资源分配的基本单位,线程是处理机调度的基本单位。
  • 引入线程后,进程可以并发执行,多个线程之间也可以并发执行。

用户级线程和内核级线程:

多线程模型:

  • 多对一:多个用户级线程映射到一个内核级线程。
    • 效率高,但一个线程阻塞全部线程都会阻塞。
  • 一对一:单个用户级线程映射到单个内核级线程。
    • 并发能力强,但创建线程开销大。
  • 多对多:多个用户级线程映射到多个内核级线程。
    • 既可以提高并发性,又适当降低了开销。

2.2、处理机调度

概念:对处理机进行分配,即从就绪队列中按一定算法选择一个进程并将处理机分配给他。

调度的层次:

  • 作业调度(高级调度):从辅存中选择作业送入内存。
  • 内存调度(中级调度):将暂时不能运行的进程调至外存,使其进入挂起态。(进程映像调至外存,PCB形成挂起队列)
  • 进程调度(低级调度):从就绪队列中选取一个进程,将处理机分配给他。

作业调度次数最少,进程调度频率最高。

典型的调度算法:

  • 先来先服务算法:
    • 从就绪队列中选择最先进入该队列的进程将处理机分配给他
    • 对长作业有利,不利于短作业。
  • 短作业优先算法:
    • 优先选择运行时间最短的进程
    • 对短作业有利,但容易造成饥饿现象
  • 优先级调度算法:
    • 每次从就绪队列中选择优先级高的作业分配处理机。
    • 可能会产生饥饿现象。
  • 高响应比算法:
    • 计算就绪队列中每个作业的响应比,选出响应比最高的。 (响应比 = (等待时间+要求服务时间)/ 要求服务时间 )
    • 不会导致饥饿。
  • 时间片轮转算法:
    • 分时系统,进程按到达次序排队,依次在时间片内占用处理机,时间片到达就释放。
    • 不会导致饥饿。
  • 多级反馈队列调度算法:
    • 实现思想:
      • 设置多个就绪队列,为每个队列设置不同的优先级,优先级依次递减;
      • 每个队列时间片各不相同,时间片依次递增
      • 每个队列按照先来先服务算法排队,规定时间片内没有完成 则进程放入下一级队列。
      • 高级队列为空,低级队列才开始调度。

2.3、进程同步

**同步:**直接制约关系,为了完成某任务而建立的多个进程,相互合作。

**互斥:**间接制约关系,当一个进程访问临界资源的时候,其他进程不能访问。

实现临界区互斥的方法

  • 软件方法:
    • 单标志法
    • 双标志先检查法
    • 双标志后检查法
    • 皮特森算法
  • 硬件方法:
    • 中断屏蔽法
    • 硬件指令法

—>均未满足“让权等待”

记录型信号量PV操作,满足让全等待。

利用信号量实现同步:

  • 设置同步信号量,初始值设为0
  • 前V后P

利用信号量实现互斥:

  • 设置互斥信号量,初始值设为1
  • 先P后V

管程:

  • 信号量机制中,每个要访问临界资源的进程都要自备同步的PV操作,大量PV操作给系统管理带来麻烦,同时不当的PV操作会导致系统死锁。
  • JAVA中类似管程的 操作,关键字 "Synchoronized"描述一个函数,则该函数同一时间段内只能被一个线程调用。

2.4、死锁

多个进程因为竞争同一种资源而全部无法向前继续推进。

产生原因:

  • 系统资源的竞争
  • 进程推进顺序非法
  • 死锁产生的条件:互斥条件、不可剥夺条件、请求并保持条件、循环等待条件

死锁预防:

  • 破环死锁产生的条件

死锁避免:

  • 在资源动态分配中,用某种方法防止系统进入不安全状态

  • 银行家算法

死锁的检测和解除:

  • 死锁定理:

死锁、饥饿、死循环的区别?

  • 死锁:各进程互相等待对方手里的资源,导致各进程都阻塞,无法向前推进。
  • 饥饿:长期得不到想要的资源,进程无法向前推进
  • 死循环:某进程执行过程中一直跳不出某个循环。

第三章:内存管理

3.1、内存管理的功能

1、内存空间的分配与回收
  • 连续分配管理方式

    • 单一连续分配:系统区和用户区,有内部碎片

    • 固定分区分配:划分若干固定大小的区域,有内部碎片

    • 动态分区分配:根据进程大小动态分配分区,有外部碎片(“紧凑”解决外部碎片 )

      • 首次适应算法:空闲分区按地址递增分配
      • 最佳适应算法:空闲分区按大小递增分配
      • 最坏适应算法:空闲分区按大小递减分配
      • 临近适应算法:分配内存时从上次查找结束的位置开始继续查找
  • 非连续分配管理方式

    • 基本分页存储管理
      • 把主存空间划分为大小相等且固定的块,每个进程以块为单位申请空间
      • 块的大小相对分区要小很多;进程只会在为最后一个不完整的块申请一个主存块空间时,才产很小的内部碎片
    • 基本分段存储管理
      • 按照用户进程的自然段划分逻辑空间,段内要求连续,段间不要求连续。
    • 段页式管理
      • 地址空间首先被分为若干逻辑段,每个段非为若干大小固定的页。

单级页表 ----》两级页表 --------》 虚拟存储技术

  • 单级页表的问题:

    **1、**页表必须连续存放,因此页表很大时需要占用多个连续的页框。

  • ====》两级页表

    • 在原有页表结构上再加一层存储页表的页表

    **2、**没有必要让整个页表常驻内存,因为进程一段时间内只需要访问某几个特定页面。

  • ====》 虚拟存储技术: 需要访问时才把页表调入内存。

分页和分段?

  • 分页是从计算机角度考虑设计的,对用户不可见;为了提高内存的利用率。
  • 分段是从用户和程序员的角度,对用户可见;为了方便编程,信息保护和共享。
2、地址转换

编译:将高级语言变为机器语言,将用户源码编译成若干模块

**链接:**将编译后的模块连接在一起,形成完整的装入模块,(在这一步,形成完整的逻辑地址)

  • 静态链接:程序运行前
  • 装入时动态链接:装入内存时
  • 运行时动态链接:程序执行中

**装入:**将装入模块放入内存运行,完成地址转换

  • 绝对装入:装入时按实际内存地址
  • 可重定位装入:地址变换在装入时完成
  • 动态运行时装入:程序运行时才转换
3、内存空间的扩充

1、覆盖:

  • 程序运行时一段时间内只需要访问若干页面,不需要访问全部数据。
  • 将用户空间分为一个固定区和若干覆盖区,活跃的部分放在固定区,其余部分需要时调入覆盖区。
  • 按照自身逻辑结构,让那些不可能同时被访问的程序段共享一个覆盖区。

2、交换:

  • 对换区文件区,对换区追求换入换出的速度,文件区追求存储空间的利用率。
  • 内存空间紧张时,系统将某些进程调出内存 ,把外存中谋刺蛾已经具备运行条件的进程换入内存。

3、虚拟存储:

  • 传统存储方式的特征
    • 一次性:作业一次性装入内存
    • 驻留性:作业装入内存后,一直驻留在内存

=====》虚拟内存管理

  • 基于局部性原理,程序的一部分装入内存,一部分驻留在外存,需要的时候将外存内容调入内存。

    • 调入内存:请求调页

      • 请求分页
      • 请求分段
      • 请求段页
    • 换到外村:页面置换

      • 最佳置换算法:最长时间内部再访问的页面进行淘汰
      • 先进先出页面置换算法:淘汰最早进入内存的页面,Belady异常:增大分配的块数,却页数不减反增。
      • 最近最久未使用置换算法:淘汰最长时间内没有被访问的页面。
      • CLOCK置换算法:访问位
        • 改进型CLOCK置换算法:访问位、修改位
4、存储保护

**上下限寄存器:**存放用户作业在主存的上限和下限地址,每当访问一个地址时,分别和两个寄存器的数据比较,判断是否越界。

**基址寄存器和限长寄存器:**基址寄存器是最小物理地址值,限长寄存器是逻辑地址最大值。将逻辑地址与限长寄存器比较。

第四章:文件管理

4.1、基础

文件的逻辑结构:
  • 无结构文件:

    • 将数据按照顺序记录并保存,以字节为单位;比如:”记事本“
  • 有结构文件:

    • 顺序文件
    • 索引文件:
      • 定长记录文件:A = i * L
      • 变长记录文件:建立索引表
    • 顺序索引文件
      • 将顺序记录文件分为若干组;建立索引表啊,为每组的第一个记录建立一个索引项
    • 直接文件或散列文件
      • 给定记录的键值 或 通过散列函数转换的键值直接决定记录的物理地址。
文件的物理结构:
  • 对非空闲块的管理

    • 连续分配:每个文件在磁盘上占有一组连续的块。 文件名 | 起始块号 | 长度
      • 随机存取,但文件长度不宜动态增加,会产生外部碎片
    • 链接分配:
      • 隐式链接:磁盘块分散,除最后一个盘块,每个盘块都有一个指针指向下一个盘块
        • 不支持直接访问 ========》显式链接、、索引分配
      • 显式链接:把用于指向盘块的指针提取出来,显示的存放在内存中的一张文件分配表FAT
    • 索引分配:把每个文件所有盘块集中在一起,形成索引块(表)。每个文件都有一个索引块,索引块第i项指向文件第i个块
      • 多层索引
      • 混合索引
  • 对空闲块的管理

    • 空闲表法:为空闲区建立一张空闲盘块表。 序号 | 第一个空闲盘块号 | 空闲盘块数
    • 空闲链表法:
      • 空闲盘块链:将所有空闲空间以盘块为单位拉成一条链
      • 空闲盘区链:将所有空闲盘区拉成一条链,空闲盘区第一个盘块记录盘区长度、下一个盘区指针
    • 位示图法:磁盘上所有盘块都有一个二进制位表示该盘块的使用情况
    • 成组链接法:UNIX系统
      • 结合了空闲表和空闲链表的特点
      • 目录区中用一个盘块作为超级块,第一个表项存储下一组的空闲盘块数,后面表项是空闲盘块号。
目录结构

文件控制块(FCB)

  • 一个FCB就是一个文件目录项
  • 文件名 | 文件物理位置 | …

索引节点:

  • 文件名 | 索引节点指针
  • 索引节点指针指向索引节点,除了文件名之外的所有信息都存放在索引结点。

目录结构分类:

  • 单级目录结构:一张目录表,每个文件占一个目录项
  • 两级目录结构:主目录和用户目录,主目录记录用户名,用户目录项记录文件
  • 多级目录结构:树形目录结构,不利于实现文件共享
  • 无环图目录结构:在树形目录结构的基础上增加指向同一节点的有向边,成为一个有向无环图,利于文件共享
文件共享

硬链接

  • 多个指针指向同一个索引结点,同时索引节点中设置链接计数count
  • 只要还有一个指针指向索引节点,索引节点就不能删除
  • 查找速度快

软链接(类似快捷方式)

  • 共享的是文件的路径
  • 因为是按照文件路径名查找文件,因此会增加时间开销及启动磁盘的频率
文件保护

**口令保护:**口令存储在系统内部(不安全),用户请求访问时要提供相应的口令。

**加密保护:**用户对文件进行加密,访问时需要密钥进行解密

**访问控制:**根据用户身份,进行控制,为每个文件增加一个访问控制列表,规定每个用户允许访问的类型。

类似:RBAC基于角色的访问控制。

文件系统层次结构
  • 用户调用接口
  • 文件目录系统 ======》查找目录找到文件的索引信息
  • 存取控制验证 ======》通过查看FCB上的信息查看用户是否有对应权限
  • 逻辑文件系统与文件信息缓冲区 ======》开始寻址,首先找到逻辑地址
  • 物理文件系统 ======》逻辑地址转换为物理地址
  • 辅助分配模块 ======》寻址完成后,管理空间
  • 设置管理程序模块

4.2、磁盘组织与管理

磁盘结构:

  • 磁道
  • 盘块
  • 扇面号–柱面号–盘区号

磁盘调度算法:

  • 读写时间:寻道时间、延迟时间、传输时间
  • 算法:
    • 先来先服务算法:按照进程请求访问磁盘的先后顺序调度
    • 最短寻道时间优先算法:选择距当前刺到最近的请求调度
    • SCAN算法:磁头移动到一侧,才能向另一侧移动 ====》LOOK
    • C-SCAN算法:磁头单向移动,回返时直接回到起始端 ======》C-LOOK

磁盘管理:

磁盘初始化

  • 低级格式化:物理分区
  • 逻辑格式化:创建文件系统

引导块:

存放自举程序,计算机启动时运行自举程序,启动操作系统

第五章:I/O管理

5.1、I/O控制方式

程序直接控制方式:

  • 从外部设备读取数据到存储器,每读一个字,对于读入的每一个字,CPU都要对外设状态进行循环检查,直到确定改字已经在I/O设备控制器的数据存储器中。
  • 优点:容易实现,操作简单
  • 缺点:降低了CPU利用率

中断驱动方式:

  • 允许I/O设备注主动打断CPU的运行并请求服务,进而解放CPU,使其向IO控制器发送读命令后可以继续做其他有用的工作
  • 读写单位:一个字
  • 缺点:数据传输仍要经过CPU,消耗CPU时间

DMA方式:

  • CPU收到DMA请求时,发送命令给IO控制器,启动DMA控制器,由DMA控制器与存储器进行数据传输,传输完成,给处理器发送中断信号。
  • 读写单位:数据块
  • 提高了CPU利用率

通道控制方式

  • 通道就是一个专门负责输入输出的处理机,数据块的读写由通道控制。
  • 读写单位:数据块
  • 提高了资源利用率,但实现较为复杂

DMA与通道方式的区别?

  • DMA只负责传输数据块,而数据块大小、传输位置等信息由CPU控制;在通道方式中,这些信息由通道控制
  • DMA控制器对应一台设备与内存传递数据;通道可以控制多台设备与内存的数据交换。

5.2、IO子系统层次结构

用户层IO软件 库函数接口

设备独立性软件 实现用户程序与设备驱动器的接口

设备驱动程序 实现系统对设备发出命令

中断处理程序 处理中断

硬件设备 包括一个机械部件和一个设备控制器(CPU和IO设备机械部件之间的中介)

SPOOLING技术:

  • 为了缓解CPU与IO设备的速度差异矛盾,,利用专门的外围控制机,将低速IO设备上的数据传送到高速磁盘上,或者相反
  • 将独占设备改造成虚拟上的共享设备,供多个进程同时使用,提高了独占设备的利用率。

高速缓存与缓冲区的区别:

相同:

  • 都介于高速设备和低速设备之间

不同:

  • 存放的数据:高速缓存存放的是低速设备上的复制数据,缓冲区存放的是低速设备传递给高速设备的数据.
  • 目的:高速缓存是为了提高磁盘的IO速度;缓冲区是为了缓解高速设备和低速设备之间的速度差异矛盾。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值