随便看看,写得很拉

操作系统复习笔记

1、进程与线程

1.1 进程间通信

  • 同步与互斥:两种形式的制约关系:

    间接相互制约关系:进程—资源—进程、互斥关系、资源共享关系

    直接相互制约关系:进程—进程、同步关系、相互合作关系

  • 进程的三种状态:运行态就绪态、阻塞态。状态转换图如下:

image-20211210223740412

  • 信号量机制
    • 一个信号量通常对应一类临界资源
    • 必须置一次且只能置一次初值
    • 初值为整数,且不能为负数
    • 只能执行P、V操作

1.2 进程控制块PCB

  • PCB包含:进程标识符、处理机状态、进程调度信息、进程控制信息。
  • 进程标识符:内部标识符(进程序号、方便系统使用)、外部标识符(创建者提供、方便用户使用)。
  • 处理机状态:包括各种寄存器(通用寄存器、指令计数器、程序状态字、用户栈指针)。
  • 进程调度信息:进程状态、进程优先级、等待和使用CPU的时间总和、阻塞原因。
  • 进程控制信息:程序和数据的地址、进程同步和通信信息、资源清单、进程队列指针。

1.3 调度算法

1.3.1 先来先服务(FCFS)

  • First Come First Service,根据进程到达就绪队列的时间来分配中央处理机,一旦一个进程获得了中央处理机,就一直运行到结束。

  • 先来先服务是非抢占调度,实现简单,但效率较低。

1.3.2 短作业优先调度算法(SPF)

  • Short Process First,在队列中找最少用时的来运行,直接运行完。

1.3.3 时间片轮转法(RR)

  • Round Robin,从就绪队列中拿出一个任务,运行一块时间片后,重新进队列。
  • 某个时间进了新任务,先把新任务入队,然后再把上个时间片结束的任务入队。

1.3.4 多级反馈队列调度算法(FB)

  • Feedback,分为抢占式和非抢占式。
  • 对于抢占式而言,被抢占的任务需要重新进入对应级的队列,并且重新执行完对应的时间片。
  • 对于非抢占式而言,必须等到当前任务时间片执行完或者结束,才执行优先级高的任务。

2、存储系统

2.1 存储器管理

基本概念:

  • 逻辑地址(相对地址、虚地址)不能用逻辑地址在内存中读取信息。
  • 物理地址(绝对地址、实地址)内存中存储单元的地址,可直接寻址

地址重定位技术:程序在编译链接时直接生成实际存储器地址。

2.2 使用位图的存储管理

image-20211210230851918

2.3 使用链表的存储管理

image-20211210230856024

2.4 页面

2.4.1 页

  • 页(页面):把每个作业(进程)逻辑地址空间划分成若干个大小相等的片,并为各页加以编号。
  • 物理块(页帧):把内存空间划分成与页相同的片

2.4.2 页表

  • 每个进程一张页表,页表长度和首地址存放在该进程PCB中。
  • 作用:实现页号到物理块号的地址映射。
  • 页表驻留在内存中。
  • 页表寄存器PTR:包含首地址和长度
    • 进程未执行时,首地址和长度放在PCB中。
    • 调度进程后,才把首地址和长度放入页表寄存器PTR。

2.4.3 两级页表

  • 每一行包含一级页号、二级页号、偏移地址。
  • 一级页号指向某个二级页表,在二级页表中找到二级页号指向的物理块号,乘上物理块大小,再加上偏移地址即为物理地址

2.5 转换检测缓冲区TLB

页号先在TLB找,若有,直接拼出物理地址,若不在TLB中,先去页表找,有在内存的话直接出来,并且在TLB中存一份;如果内存没有,那就要高页面置换算法再找,找完在TLB中存一份。

image-20211210233603519

2.6 页面置换算法

2.6.1 最佳置换算法 OPT

从当前位置往后看,找那个次数最少,访问时间最远的给他干了。

2.6.2 最近未被使用置换算法 NRU

每个页面有两个标志位 R访问位、M修改位。0为未访问/修改、1为已访问/修改

R M
0 0
0 1
1 0
1 1

RM序号越小的,优先被置换

  • 每次中断,把所有的访问位清零
  • 访问优先级高、经常访问的不应该被删掉

2.6.3 先进先出置换算法 FIFO

搞个链表,新进来的插在尾部,这样的话最久的就在头部。

每次发生缺页中断,就把头部那个最久的给干了。

2.6.4 第二次机会置换算法

  • 在先进先出FIFO的基础上,从头遍历链表,对每个页面的R位(访问位)进行检测。

  • 如果是1的话,把它取出后插到表尾,并且改成0。

  • 如果是0的话,那就是又老又没用到,给他干了。

2.6.5 时钟页面置换算法 Clock

  • 对“第二次机会”算法的优化处理,按照FIFO原则,将链表化为环形。
  • 在“第二次机会”算法中,R位从1改为0后要插到表尾。
  • 在Clock算法中,不用插到表尾了,直接判断下一个即可(因为是环形链表,遍历一次后,还会回到这个页面)
  • 访问命中,只需修改R位(0改为1),不需要移动指针

2.6.6 最近最久未使用置换算法 LRU

从当前位置,向左(向前)查找,缓存内哪个是最久(最远)没被用到的,访问时间最旧的,给他干了。

  • 矩阵实现LRU

    在一个有n页的机器中,LRU硬件维持一个n×n的矩阵,所有位置0,访问到第k页时,先把第k行所有位置1,再把第k列所有位置0。

    在任何时刻,二进制数值最小的行就是要干掉的。

  • 软件模拟LRU

    每个页面设置一个计数器,时钟中断时,计数器右移一位,然后把当前R位加入计数器。

    淘汰就淘汰那个计数器最小的页面。

2.6.7 最近最少使用算法 LFU

从当前位置,向左(向前)记录每个页面的使用次数,把最少的给干了

2.6.8 工作集页面置换算法

  • 什么是工作集?

    工作集指在某段时间间隔T内,进程实际要访问的页面集合。

  • 工作集表示为二元函数,每次访问内存就把不存在工作集中的页面从内存中换出,淘汰不在工作集的页面。

2.7 缺页率

缺页率 = 缺页次数 / 访问串的访问次数

3、文件系统

3.1 文件控制块

文件控制块(FCB)

  • 基本信息类
    • 文件名
    • 物理位置
    • 逻辑结构
    • 物理结构
  • 存取信息控制类
    • 文件主的权限
    • 核准用户的权限
    • 一般用户的权限
  • 使用信息类
    • 文件建立时间
    • 上次修改时间
    • 当前使用信息

3.2 目录

  • 把所有的FCB组织在一起,就构成了文件目录,即文件控制块的有序集合。
  • 目录文件:为了实现对文件目录的管理,通常将文件目录以文件的形式保存在外存,这个文件就叫目录文件。
  • 目录结构的组织关系到文件系统的存取速度,关系到文件共享性和安全性,因此组织好文件的目录是设计文件系统的重要环节。

3.2.1 目录的实现

  • 将文件的FCB划分为两部分(文件名和除了文件名以外的信息)具有如下两个主要的优点:

    • 提高查找速度:将FCB分为两部分之后,一个外存块中可容纳较多的FCB,从而大大地提高了文件的检索速度。
    • 实现文件连接:所谓连接就是给文件起多个名字,这些名字都是路径名,可为不同的用户所使用。
  • 目录系统的主要功能

    • 从路径名到文件物理位置的转换
    • 文件各类属性的保存
  • 目录表与目录项

    • 目录表:保存该目录下所有文件的属性信息
    • 目录项:保存一个特定文件的相关属性信息
  • 检索目录文件的过程中,只用到了FCB中的文件名!!!

3.3 链接分配

  • 链接分配采取离散分配方式,将一个文件的信息存放在若干不连续的物理块中,各块之间通过指针连接,前一个物理块指向下一个物理块。

  • 优点

    • 提高了磁盘空间利用率
    • 不存在外部碎片问题
    • 有利于文件插入和删除
    • 有利于文件动态扩充
  • 缺点

    • 存取速度慢,不适于随机存取
    • 可靠性问题,如指针出错
    • 更多的寻道次数和寻道时间
    • 链接指针占用一定的空间
  • 隐式链接

    隐式链接指针在磁盘上,每一次都要读取磁盘。

  • 显式链接

    • 设置一张文件分配表FAT,显式存放用于链接文件各个物理块的指针。
    • 表的序号是物理盘块号,从0开始,直至N-l。其中N为磁盘盘块总数。
    • 每个表项中存放链接指针,即下一个盘块号。
    • 该表中,每个文件的第一个盘块号,作为文件地址填入相应文件FCB的“物理地址”字段中。
    • 整张FAT表都要加载进内存中。

3.4 索引分配

  • 一个文件的信息存放在若干不连续物理块中,系统为每个文件建立一个专用数据结构----索引表,并将这些块的块号存放在一个索引表中。
  • 索引表:一个文件所有记录的关键字和其地址的对照表。
  • 索引表放在一个索引盘块中,该盘块地址(即索引表地址)放在FCB中。
  • 一个索引表就是磁盘块地址数组,其中第i个条目指向文件的第i块。

3.4.1 单级索引分配

image-20211211024910402

3.4.2 多级索引分配

image-20211211025026461

3.4.3 混合索引方式

  • 单级与多级相结合(前面几个直接寻址,后面的有一次间址、二次间址、三次间址...)

image-20211211025116383

3.5 磁盘存储空间的管理

3.5.1 空闲块表法

  • 一个连续的未分配区域称为“空白文件”,系统为所有这些“空白文件”单独建立一个目录。每个空白文件,在目录中建立一个表目。表目的内容包括:第一空白物理块的地址(块号)、空白块的数目。
  • 仅当有少量的空白区时才有较好的效果。
  • 如果存取空间中有着大量的小的空白区,则其目录变得很大,因而效率大为降低。
  • 这种分配技术适用于建立连续文件。

3.5.2 空闲链表法

  • 即把所有的“空闲块”链在一起。
  • 创建文件需要一个或几个物理块时,就从链头依次取下一块或几块。
  • 回收文件时将回收物理块插入空闲链末尾。

image-20211211184714659

3.5.3 位示图法

  • 用一串二进制位反映磁盘空间中分配使用情况,每个物理块对应一位,"l"表示对应的物理块已分配,“O”表示其对应的块未分配。

  • 申请物理块时,可以在位示图中查找为0的位,返回对应物理块号。

  • 归还时,将对应位转置0。

    image-20211211181952465

    (1)顺序扫描位示图,从中找出一个或一组其值为“O”的二进制位(“O”表示空闲时)。
    (2)将所找到的一个或一组二进制位,转换成与之相应的盘块号。假定找到的其值为“O”的二进制位,位于位示的第i行、第j列(i、j从1开始编号),则其相应的盘块号应按下式计算(以上图为例):b=n(i-1)+j n代表每行的位数。
    (3)修改位示图,令map [i,j]=1。

3.5.4 成组链接法

  • 空闲盘块号栈:用来存放当前可用的一组空闲盘块的盘块号以及栈中尚有的空闲盘块号数N。
  • 文件区中的所有空闲盘块按固定大小(如每组l00块)分成若干组,并将每一组的盘块数和该组所有的盘块号记入前一组的最后一个盘块中。
  • 注意,空闲盘块栈是临界资源,对该栈的操作必须互斥进行,因此,系统为空闲盘块栈设置了一把锁,并通过上锁和解锁来实现对空闲盘块栈的互斥操作。

image-20211211210248173

4、设备管理

4.1 基本概念

  • I/O端口:I/O设备接口中有多个接口寄存器或缓冲区,每一个寄存器或缓冲区被称为一个I/O端口
  • I/O端口地址空间:实现对I/O接口寄存器/缓冲区的访问

4.2 设备控制器

  • I/O设备一般由机械和电子两部分组成,把这两部分分开处理,以提供更加模块化,更加通用的设计
  • 机械部分(物理装置)︰由模拟信号驱动的各种机械装置,即设备本身
  • 设备控制器(电子部分):在小型和微型机中,它常采用印刷电路卡插入计算机中(接口),完成设备与主机间的连接和通讯

4.3 I/O控制方式

4.3.1 程序控制I/O(轮询或忙等待模式)

  • CPU直接与I/O设备进行通信,负责将用户数据传送到I/O端口
  • 用户程序通过系统调用来使用I/O设备
  • CPU需要不断查询I/O设备的端口状态,性能较低
  • (一直查IO设备)

4.3.2 中断控制I/O

  • CPU设定I/O设备的初始值,然后不再忙等待,运行其他进程,当前进程阻塞
  • I/O设备完成对当前数据的处理后,向CPU发出中断,IO中断处理程序将负责传送剩余数据
  • 中断控制模式依然造成CPU时间的浪费,而且效率不高
  • (输入一个字中断一次)

4.3.3 DMA控制I/O

  • 使用独立的DMA控制器代替CPU的工作,I/O设备与DMA通信,DMA在传输完成一个数据缓冲区之后再向CPU发中断
  • DMA模式减少了中断次数,同时又集成了程序控制和中断控制的优点
  • (输入一个数据块中断一次)

4.3.4 I/O通道机制

  • 为了进一步提高与CPU并行效率,专门增加了I/O处理机,专门负责I/O设备的控制和操作,与CPU并行工作
  • (输入一组数据块中断一次)

4.4 磁盘管理

4.4.1 磁盘访问时间

  • 寻道时间:把磁臂(磁头)移动到指定磁道上所经历的时间。
  • 旋转延迟时间:指定扇区移动到磁头下面所经历的时间。
  • 传输时间:把数据从磁盘读出或向磁盘写入数据所经历的时间。
  • 为了减少移动臂进行移动花费的时间,每个文件的信息不是按盘面上的磁道顺序存放满一个盘面后,再放到下一个盘面上。而是按柱面存放,同一柱面上的各磁道被放满信息后,再放到下一个柱面上。所以各磁盘的编号按柱面顺序(从0号柱面开始),每个柱面按磁道顺序,每个磁道又按扇区顺序进行排序。

4.4.2 磁盘调度算法

  • 先来先服务(FCFS)
    • 这是一种最简单的磁盘调度算法。它根据进程请求访问磁盘的先后次序进行调度。此算法的优点是公平、简单,且每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况。但此算法由于未对寻道进行优化,致使平均寻道时间可能较长。
    • (按顺序找)
  • 最短寻道时间优先(SSTF)
    • 该算法总是为那些与当前磁头所在的磁道距离最近请求服务,也就是执行寻道时间最短的那个/O请求。
    • 这种调度算法有较好的平均寻道时间。SSTF较之FCFS有较好的寻道性能,故曾被广泛采用。
    • (在当前位置,找最近的)
  • 扫描算法(SCAN,电梯算法)
    • 该算法不仅考虑到欲访问的磁道与当前磁道的距离,更优先考虑的是磁头的当前移动方向。即当磁头正在自里向外运动时,SCAN算法要选择的下一个访问对象是其欲访问的磁道在当前磁道之外,又是距离最近的。直至再无更外的磁道需要访问时,才将磁臂换向,自外向里运动。从而避免了饥饿现象的出现。
    • (循环往复,来回)
  • 循环扫描算法(CSCAN)
    • 这是SCAN算法的一种变种算法,是为了提供更均匀的等待时间而设计的。CSCAN算法规定磁头只能单向运动(自里向外),当磁头运动到最外面的被访问磁道时,磁头立即返回到最里面的磁道,即将最小磁道号紧接着最大磁道号构成循环,进行扫描。
    • (单向,到达尽头之后,从头开始走)

5、死锁

5.1 死锁的定义

  • 所谓死锁,是指多个进程因竞争资源而造成的一种僵局(永久阻塞状态),若无外力作用,这些进程都将不能再向前推进。

5.2 产生死锁的原因

  • 竞争资源(不可剥夺性、临时性)

    当系统中供多个进程共享的资源不足时,将引起进程对资源的竞争而产生死锁。

  • 进程推进顺序不合理

    进程在运行过程中具有异步性特征,如果它们之间的请求和释放资源的顺序不当,也同样会导致进程产生死锁。

5.3 产生死锁的必要条件

  • 互斥条件:涉及的资源是非共享的。
  • 请求和保持条件:进程在等待一新资源时继续占有已分配的资源。
  • 不剥夺条件:不能强行剥夺进程拥有的资源。
  • 环路等待条件:存在一种进程的循环等待链,链中的每一个进程已获得的资源同时被链中的下一个进程所请求。
  • 以上四个条件须同时具备。

5.4 处理死锁的基本方法

  • 忽略该问题。
  • 测试死锁并恢复。让死锁发生,检测,一旦检测到,采取行动解决问题。
  • 仔细对资源进行分配,动态避免死锁。
  • 通过破坏四个死锁条件之一,防止死锁的产生。

5.5 安全状态和不安全状态

  • 安全状态:如果存在一个由系统中所有进程构成的安全序列{P1,...,Pn},则系统处于安全状态。
  • 不安全状态:不存在一个安全序列,则系统处于不安全状态。

5.6 银行家算法

  • E = (E1,E2...Em)每种资源的总量
  • A = (A1,A2...Am)每种资源的剩余量
  • C:当前分配矩阵。
  • R:请求矩阵。
  • 查找R矩阵中是否有一行,其需要的资源数小于或等于A。如果不存在这样的行,那么系统将会死锁,因为任何进程都无法运行结束
  • 假若找到这样一行,那么可以假设它获得所需资源并运行结束,将该进程标记为终止,并将其资源加到向量A上。
  • 重复以上两步,直到所有进程都标记为终止,则其初始状态是安全的,否则,状态是不安全的。
posted @   Doooong  阅读(332)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示