操作系统week3

news2024/9/23 10:00:25

操作系统学习

三.内存管理

16.内存映射文件

传统的文件访问方式:

  1. open系统调用–打开文件
  2. seek系统调用–将读写指针移到某个位置
  3. read系统调用–从读写指针所指位置读入若干数据
  4. write系统调用–将内存中的指定数据,写回磁盘

内存映射文件的访问方式:

  1. open系统调用–打开文件
  2. mmap系统调用–将文件映射到进程的虚拟地址空间
    1. 以访问内存的方式访问文件数据
    2. 文件数据的读入、写出由操作系统自动完成
    3. 进程关闭文件时,操作系统自动将文件被修改的数据写回磁盘

内存映射文件的作用:方便程序员编程,优化I/O效率
多个进程可以映射同一个文件,实现共享
物理内存中,一个文件对应同一份数据,当一个进程修改文件数据时,另一个进程可以立马"看到"

四.文件管理

1.初识

文件就是一组有意义的信息/数据集合
文件有的属性:

  1. 文件名:同意目录下不允许有重名文件
  2. 标识符:一个系统内的各文件标识符唯一,对用户来说毫无可读性
  3. 类型
  4. 位置
  5. 大小
  6. 创建时间、上次修改时间、文件所有者
  7. 保护信息:对文件进行保护的访问控制信息

文件分为无结构文件(txt)和有结构文件(Excel)

向上提供的几个基本功能
创建文件(create系统调用)
删除文件(delete系统调用)
读文件(read系统调用)
写文件(write系统调用)
打开文件(open系统调用)
关闭文件(close系统调用)

2.文件的逻辑结构

逻辑结构就是在用户看来,文件内部的数据应该是如何组织起来的
物理结构是在操作系统看来,文件的数据是如何存放在外存的

无结构文件:文件内部的数据就是一系列二进制流或字符流组成。又称"流式文件"
有结构文件:由一组相似的记录组成,又称"记录式文件"。根据记录的长度是否相等分为定长记录和可变长记录

有结构文件的按逻辑结构分为顺序文件、索引文件、索引顺序文件

graph LR
A(顺序文件)-->B1(链式存储)
A-->B2(顺序存储)
B1-->C1(无论是定长还是可变长,都无法实现随机存取<br>每次只能从第一个记录开始往后查找)
B2-->C2(可变长记录)
B2-->C3(定长记录)
C2-->D2(无法实现随机存取<br>每次只能从第一个记录开始往后查找)
C3-->E1(可实现随机存取<br>记录长度为L,则第i个记录存放的相对位置是i*L)
C3-->E2(若采用串结构<br>无法快速找到某关键字对应的记录)
C3-->E3(若采用顺序结构<br>可以快速找到某关键字对应的记录)

索引文件:索引表本身是定长记录的顺序文件。所以可以快速找到第i个记录对应的索引项

索引顺序文件:同样为文件建立一张索引表,但不同的是:不是每个记录对应一个索引表项,而是一组记录对应一个索引表项,检索记录时先顺序查找索引表,再顺序查找分组
记录过多时,也可以为顺序文件建立多级索引表

3.文件目录

目录本身就是一种有结构的文件,由一条条记录组成。每条记录对应一个在放在该目录下的文件
目录文件中的一条记录就是一个文件控制块(FCB)
FCB的有序集合称为文件目录,一个FCB就是一个文件目录项

目录结构:
早期操作系统只支持建立一张目录表,每个文件占一个目录项
因为是单级目录,所以所有文件不允许重名
后来有了两级目录结构,分为主文件目录和用户文件目录,但是不能对文件进行分类
后来有了多级目录结构(树形目录结构),这时有了绝对路径和相对路径
但是树形目录不便于用户之间的文件的共享
后来有了无环图目录结构。不同用户之间可以用不同的文件名指向同一个文件,或者一个目录
无环图目录结构有一个共享计数器,当一个用户删除一个文件时,该文件的共享计数器减1,共享计数器为0时,才会删除该节点
注意:共享文件不是复制粘贴

索引结点:检索文件时只需要文件名即可,于是我们把除文件名外的所有信息装到索引结点中,加快了文件检索速度
存放在外存中的结点叫"磁盘索引结点",放入内存的称为"内存索引结点"

4.文件的物理结构(文件分配方式)

文件的物理结构
连续分配
链接分配
索引分配
隐式分配
显示分配

类似于内存分页,磁盘中的存储单元也会被分为一个个块/磁盘块/物理块
很多操作系统中,磁盘块的大小与内存块、页面的大小相同
在外存管理中,文件的逻辑地址被分为一个个文件块
于是文件的逻辑地址也可以表示为(逻辑块号, 块内地址)的形式

连续分配方式要求每个文件在磁盘上占有一组连续的块
该分配方式中,物理块号=起始块号+逻辑块号
读取某个磁盘块时,需要移动磁头。访问的两个磁盘块相隔越远,移动磁头需要的时间就越长
结论:连续分配的文件在顺序读写时速度最快;文件的拓展十分不方便;会产生磁盘碎片

链式分配–隐式分配:目录记录了文件的起始块号和结束块号,只支持顺序访问,方便文件拓展,不会有碎片
链式分配–显示分配:只有起始块号,把用于链接文件各物理块的指针显式地存放在一张表中,即文件分配表(FAT)
注意:一个磁盘仅设置一张FAT。开机时,将FAT读入内存,并常驻内存
该分配方式转换逻辑地址时不需要读磁盘操作,所以支持顺序访问,也支持随机访问
缺点:FAT占用存储空间
注意:链接分配默认隐式分配

索引分配:索引分配允许文件离散地分配在各个磁盘块中。系统为每个文件建立一个索引表,表中记录了文件的各个逻辑块对应的物理块,索引表存放的磁盘块称为索引块,文件数据存放的磁盘块称为数据块
索引分配方式可以支持随机访问,文件拓展也容易
如果索引表太大,一个索引块放不下,有三个解决方案:

  1. 链接方案:将多个索引块链接起来存放
  2. 多层索引:第一层索引块指向第二个索引块,还可有第三层、第四层。各层索引表大小不能超过一个磁盘块。k层索引表查询数据需要看k+1次磁盘I/O
  3. 混合索引:多种索引分配方式的结合。文件的索引表中,既有直接地址索引,也有一级间接索引,也有两级间接索引

5,文件存储空间管理

存储空间的划分和初始化:将物理磁盘划分为一个个文件卷(逻辑卷、逻辑盘)
文件卷C:C盘,文件卷D:D盘
每个文件卷都有目录区和文件区
超大的文件卷会有多个物理磁盘

存储空间管理:①空闲表法
空闲表法记录了空闲盘块的起始位置和长度,适用于连续分配方式
如何分配磁盘块:同样采用首次适应、最佳适应、最坏适应等算法来决定要为文件分配哪个区间

②空闲链表法:空闲盘块链和空闲盘区链
区别:空闲盘块链是空闲盘块中存储着下一个空闲盘块的指针,空闲盘区链是空闲盘区中的第一个盘块记录了盘区的长度和下一个盘区的指针
空闲盘块链中操作系统保存着链头、链尾指针
如何分配:若某文件申请k个盘块,则从链头开始依次摘下k个盘块分配,并修改空闲链的链头指针
如何回收:回收的盘块依次挂到链尾,并修改空闲链的链尾指针(适用于离散分配的物理结构)
空闲盘区链中操作系统保存着链头、链尾指针
如何分配:若某文件申请k个盘块,则采用首次适应、最佳适应等算法,从链头开始检索,最终找到复合要求的空闲盘区。若没有合适的连续空闲块,也可以将不同盘区的盘块同时分配给一个文件,注意分配后可能要修改相应的链指针、盘区大小等数据
如何回收:若回收区和某个空闲盘区相邻,则需要将回收区合并到空闲盘区中。若不相邻,将回收区作为一个单独的一个空闲盘区挂到链尾(离散分配和连续分配都适用)

③位示图:每个二进制对应一个盘块
请添加图片描述

如何分配:若某文件申请k个盘块,①顺序扫描位示图,找到k个相邻或不相邻的"0",②根据字号、位号算出对应的盘块号,将相应盘块分配给文件,③将相应的位置设置为"1"
如何回收:①根据回收的盘块号计算出对应的字号、位号,②将相应二进制为设为"0"

④成组链接法:UNIX系统中为了应对大型文件系统而采用了该方法
文件卷的目录区中专门用一个磁盘块作为"超级块",当系统启动时需要将超级块读入内存,并且要保证内存与外存中的超级块数据一致
请添加图片描述

如何分配:检索一个块数足够的空闲块,分配
如何回收:需要将超级块中的数据复制到新回收的块中,让新回收的块成为第一个分组

6.文件的基本操作

创建文件:进行Create系统调用时,需要提供几个主要参数:所需外存空间大小,文件存放路径,文件名
操作系统做的事情:在外存中找到文件所需空间,创建该文件对应的目录项

删除文件:进行Delete系统调用时,需要提供的几个参数:文件存放路径、文件名
操作系统做的事情:找到文件名对应的目录项,回收文件占用的磁盘块

打开文件:进行Open系统调用时,需要提供的几个参数:文件存放路径、文件名、要对文件的操作类型(r:只读,rw:读写)
操作系统做的事情:找到文件名对应的目录项,将目录项复制到内存中的"打开文件表"中。之后用户使用打开文件表的编号来指明要操作的文件
打开文件表:
请添加图片描述

关闭文件:操作系统做的事情:将进程的打开文件表相应表项删除,回收分配给该文件的内存空间等资源,系统打开文件表的打开计数器count减1,若count==0,则删除对应表项

读文件:进行Read系统调用时,需要提供的几个参数:文件在打开文件表中的索引号,要读入多少数据,读入的数据要存放在内存中的声明位置
操作系统做的事情:从读指针指向的外存中,将用户指定大小的数据读入用户指定的内存区域中

写文件:进行Write系统调用时,需要提供的几个参数:文件在打开文件表中的索引号,要写出多少数据,写出外存的数据要存放在内存中的声明位置
操作系统做的事情:从写指针指向的内存中,将用户指定大小的数据写回写指针指定的外存区域中

7.文件共享

共享意味着系统中只有一份文件,与复制不同
基于索引结点的共享方式(硬链接):
索引结点,是一种文件目录瘦身策略,由于检索文件只需要用到文件名,因此可以将除了文件名之外的其他信息放到索引结点中
索引结点中设置一个链接计数变量count,count的数量说明连接到本索引点上的用户目录项数
某个用户删除文件,则count-1
基于符号链的共享方式(软链接):
在一个Link型的文件中记录共享文件的存放路径(Windows快捷方式)
操作系统根据路径一层层查找目录,最终找到共享文件
若软链接指向的共享文件被删除,Link文件还会在,只是通过link文件去查找共享文件会失败
用软链接访问共享文件会有多次磁盘I/O

8.文件保护

①口令保护:为文件设置口令,用户在访问文件前须提供口令。缺点:口令保存在系统中,不安全
②加密保护:将文件加密,在访问文件时需要提供正确的密码才能正确的解密。缺点:加密/解密需要时间
③访问控制:在每个文件的FCB(或索引结点)中增加一个访问控制列表,记录了各个用户可以对该文件进行的操作。实现灵活,可以实现复杂的文件保护功能

9.文件系统的层次结构

图片消失了

10.文件系统的全局结构(布局)

原始磁盘没有分区
请添加图片描述

物理格式化:即低级格式化–划分扇区,检测坏扇区,并用备用扇区替换坏扇区
请添加图片描述

逻辑格式化:磁盘分区(分卷),完成各分区的文件系统初始化,此时就有了C盘、D盘
请添加图片描述

图片消失了

注意:逻辑格式化后,灰色部分就有实际数据了,白色部分没有

文件系统在内存中的结构:
请添加图片描述

20.虚拟文件系统

普通的文件系统:
请添加图片描述

虚拟文件系统:
请添加图片描述

VFS要求下层的文件系统必须实现某些规定的函数功能,一个新的文件系统想要在操作系统上被使用,就必须满足VFS的需求
每打开一个文件,VFS就会在主存中新建一个vnode,用统一的数据结构表示文件,无论该文集那存储在哪个文件系统,vnode的功能指针指向具体文件系统的函数功能
注意:vnode存储在主存中,而inode既会被调入主存,也会在外存中存储
inode就是i结点号,是文件的索引

文件系统挂载:即文件系统安装/装载
文件系统挂载要做的事:

  1. 在VFS中注册新挂载的文件系统。内存中的挂载表包含每个文件系统的相关信息
  2. 新挂载的文件系统,要向VFS提供一个函数地址列表
  3. 将新文件系统加到挂载点,也就是把新文件系统挂载某个父目录下

五.设备管理

1.I-O设备的概念和分类

I/O就是输入/输出
I/O设备就是可以将数据输入到计算机中,或者可以接受计算机输出数据的外部设备,属于硬件Unix系统将外部设备抽象为一种特殊的文件

I/O设备
机械部分
电子部分(I/O控制器、设备控制器)

2.I/O控制器

I/O设备的机械部分主要用来执行具体I/O操作
I/O设备的电子部分通常是一块插入主板扩充槽的印刷电路板
CPU无法直接控制I/O设备的机械部分,于是有一个电子部分作为CPU和I/O设备的中介,这个电子部分就是I/O控制器,又称设备控制器
I/O控制器的功能:
请添加图片描述

I/O控制器的组成:CPU与控制器的接口,I/O逻辑,控制器与设备的接口
请添加图片描述

注意:

  1. 一个I/O控制器可能对应多个设备
  2. 数据寄存器、控制寄存器、状态寄存器可能有多个,且这些寄存器都有相对应的地址,才能方便CPU操作。有的计算机会让这些寄存器占用内存地址的一部分,称为内存映像I/O;另一些计算机则采用I/O专用地址,即寄存器独立编址
  3. 内存映射I/O就是控制器中的寄存器与内存地址统一编址
  4. 寄存器独立编制就是控制器中的寄存器使用单独地址

3.I/O控制方式

①程序直接控制方式:

  1. CPU向控制器发出读指令,于是设备启动,并且状态寄存器设为1
  2. 轮询检查状态寄存器的状态不断地执行程序的循环,若状态位一直是1,说明设备还没准备好
  3. 输入设备准备好数据后将数据传给控制器,并报告自身状态
  4. 控制器将输入的数据放到数据寄存器中,并将状态改为0
  5. CPU发现设备已就绪,即可将数据寄存器中的内容读入CPU的寄存器中,再把CPU寄存器中的内容放入内存
  6. 若还要继续读入数据,则CPU继续发出读指令
图片消失了

缺点:CPU利用率低

②中断驱动方式:
请添加图片描述

中断驱动就是CPU检测到中断信号后,会保存当前的运行环境信息,转去其它进程
缺点:每个字在I/O设备与内存之间的传输,都需要经过CPU,而频繁的中断处理会消耗较多的CPU时间

③DMA方式(直接存储器存取):
传送单位是块,而不是字
数据的流向是从设备直接放入内存,或者从内存直接到设备,不需要CPU作为中介
DMA控制器:
请添加图片描述

缺点:CPU每发出一条I/O指令,只能读写一个或多个连续的数据块

④通道控制方式:
通道:一种硬件,可以理解是弱化版的CPU,通道可以识别并执行一系列通道指令
请添加图片描述

通道与CPU相比:通道可以执行的指令很单一,通道程序是放在主机内存中的,也就是说与CPU共享内存

几种方式的比较:
请添加图片描述

4.I/O软件层次结构

图片消失了

①用户层软件:用户层软件实现了与用户交互的借口,用户可直接使用该层提供的、与I/O操作相关的库函数对设备进行操作

②设备独立性软件:设备无关性软件。与设备的硬件特性无关的功能几乎都在这一层实现,如:数据缓冲区管理
设备独立性软件需要通过"逻辑设备表"来确定逻辑设备对应的物理设备,并找到对应的设备驱动程序
有两种方式管理逻辑设备表(LUT):

  1. 整个系统只设置一张LUT,这意味着用户不能使用相同的逻辑设备名
  2. 为每个用户设置一张LUT,系统会在用户登录时为其建立一个用户管理进程,而LUT就存放在用户管理进程的PCB中

③设备驱动程序:主要负责对硬件设备的具体控制,将上层发出的一系列指令转化为特定设备能理解的一系列操作

④中断处理程序:当I/O任务完成时,I/O控制器就会发送一个中断信号,系统会根据中断信号类型找到相应的中断处理程序并执行

⑤硬件:执行I/O操作,由机械部分、电子部分组成

5.输入输出应用程序接口和程序驱动接口

字符设备接口:get/put系统调用
快设备接口:read/write系统调用;向块设备的读写指针位置读/写多个字符
网络设备接口(网络套接字(socket)接口):socket系统调用:创建一个网络套接字,需指明网络协议。bind:将套接字绑定到某个本地端口,connect:将套接字连接到远程地址,read/write:从套接字读/写数据
请添加图片描述

阻塞I/O:应用程序发出I/O系统调用,进程需转为阻塞态等待
非阻塞I/O:应用程序发出I/O系统调用,系统调用可迅速返回,进程无需阻塞等待
设备驱动程序接口需要向上一层的设备独立性软件提供统一的接口

6.I/O核心子系统

设备独立性软件、设备驱动程序、中断处理程序属于操作系统的内核部分,即I/O系统或I/O核心子系统
I/O调度、设备保护是在设备独立性软件层面实现的功能
I/O调度:用某种算法确定一个好的顺序来处理各个I/O请求
设备保护:操作系统需要实现文件保护功能,不同的用户对各个文件有不同的访问权限

7.假脱机技术

脱机技术:脱离主机的控制进行输入/输出操作,缓解快速的CPU与慢速的I/O设备的速度矛盾
假脱机技术(SPOOLing):使用软件的方式来模拟脱机技术
SPOOLing系统的构成:
请添加图片描述

8.设备的分配与回收

设备分配时需要考虑的因素:设备的固有属性、设备分配算法、设备分配中的安全性
设备的固有属性可分为三种:独占设备、共享设备、虚拟设备
从安全性考虑,设备有两种方式:安全分配方式:为进程分配一个设备后就将其阻塞,本次I/O完成后才将其唤醒。不安全分配方式:不阻塞

静态分配和动态分配:
静态分配:进程运行前为其分配所需资源,运行结束后归还资源
动态分配:进程运行过程中动态申请设备资源

设备管理中的数据结构:
设备、控制器、通道的关系:
请添加图片描述

一个通道可以控制多个设备控制器,每个设备控制器可以控制多个设备
设备控制表(DCT):系统为每个设备配置一张DCT,用于记录设备情况
控制器控制表(COCT):每个设备控制器都会对应一张COCT。操作系统根据COCT的信息对控制器进行管理和操作
通道控制表(CHCT):每个通道都会对应一张CHCT,操作系统根据CHCT的信息对通道进行操作和管理
系统设备表(SDT):记录了系统全部设备的情况,每个设备对应一个表目

设备分配的步骤:

  1. 根据进程请求的物理设备名查找SDT
  2. 根据SDT找到DCT,若设备忙碌则将进程PCB挂到设备等待队列中,不忙碌则将设备分配
  3. 根据DCT找到COCT,若控制器忙碌则将进程PCB挂到通道等待队列中,不忙碌则将通道分配给进程
  4. 根据COCT找到CHCT,若通道忙碌则将进程PCB挂到通道等待队列中,不忙碌则将通道分配给进程

缺点:用户编程复杂
改进后的步骤:
请添加图片描述

9.缓冲区管理

缓冲区是一个存储区域,可以由专门的硬件寄存器组成,也可以利用内存作为缓冲区
硬件作为缓冲区成本较高,所以更多的是内存作为缓冲区
缓冲区的功能:缓解快速的CPU与慢速的I/O设备的速度矛盾
单缓冲:操作系统会在主存中为其分配一个缓冲区
注意:当缓冲区数据非空时,不能往缓冲区冲入数据,只能从缓冲区把胡数据传出;当缓冲区为空时,可以往缓冲区冲入数据
单缓冲平均耗时:
请添加图片描述

双缓冲:操作系统为其分配两个缓冲区
平均耗时:Max(T, C+M)

使用单/双缓冲在通信时的区别:双缓冲可以实现双向的数据传输

循环缓冲区:将多个大小相等的缓冲区链接成一个循环队列

缓冲池:由一系列缓冲区组成,缓冲区可以按使用状况分为:空缓冲队列、装满输入数据的缓冲队列(输入队列)、装满输出数据的缓冲队列(输出队列)
另外,根据一个缓冲区在实际运算中扮演的功能不同,又设置了四种工作缓冲区:用于收容输入数据的工作缓冲区(hin)、用于提取输入数据的工作缓冲区(sin)、用于收容输出数据的工作缓冲区(hout)、用于提取输出数据的工作缓冲区(sout)

10.磁盘的结构

磁盘的表面由一些磁性物质组成,可以用这些物质来记录二进制数据
磁盘的盘面被划分为一个个磁道
一个磁道又被划分为一个个扇区,每个扇区是一个磁盘块。各个扇区的数据量相同
磁头从目标扇区划过,才能读/写数据
每个盘面对应一个磁头
一个盘片可能对应两个盘面
所有磁头是连在同一个磁臂上面的
所有盘面中相对位置相同的磁道组成柱面
请添加图片描述

可用(柱面号、盘面号、扇区号)
磁盘的分类:活动头磁盘:磁头可以来回移动;固定头磁盘:每个磁道有一个磁头

11.磁盘调度算法

寻找时间=启动磁头臂的时间+移动磁头的时间
延迟时间=1/(2磁盘转速)
传输时间=读写的字节数/(磁盘转速
每个磁道上的字节数)

①先来先服务算法(FCFS):性能接近随机寻道算法

②最短寻找时间优先算法(SSTF):其实就是贪心算法的思想,只选择眼前最优,缺点:可能饥饿

③扫描算法(SCAN):只有磁头移动到最外侧磁道的时候才能往内移动,移动到最内侧磁道的时候才能往外移动,也叫电梯算法
缺点:对各个位置磁道的响应不平均

④LOOK调度算法:如果磁头在移动方向上没有别的请求,则立即改变磁头移动方向,缺点:同SCAN算法

⑤循环扫描算法(C-SCAN):磁头朝某个特定方向移动时才处理磁道访问请求,而返回时直接移动而不处理任何请求,缺点:平均寻道时间更长

⑥C-LOOK算法:磁头返回时会回到第一个磁道访问请求的位置即可

12.减少延迟时间的方法

延迟时间:将目标扇区转到磁头下面花的时间
磁头读入一个扇区数据后需要一小段时间处理,如果逻辑上相邻的扇区在物理上也相邻,则读入几个连续的逻辑扇区,延迟时间会增加

①交替编号:让逻辑上相邻的扇区在物理上有一定间隔,可以使读取连续的逻辑扇区所需要的延迟时间更小

②错位命名:0号盘面的扇区名与1号盘面的扇区名相错开
请添加图片描述

磁盘地址结构的设计:磁盘的物理地址是(柱面号、盘面号、扇区号)的意义:读取地址连续的磁盘块时,采用上述地址结构可以减少磁头移动消耗的时间

13.磁盘的管理

磁盘初始化:

  1. 进行低级格式化(物理格式化),将磁盘的各个磁道划分为扇区,一个扇区通常可分为头、数据区域、尾三个部分组成
  2. 将磁盘分区,每个分区由若干柱面组成
  3. 进行逻辑格式化,创建文件系统。包括创建根目录、初始化存储空间管理所用的数据结构

引导块:
计算机开机时需要进行一系列初始化的工作,这些工作是通过直行初始化程序完成的。
ROM中只存放很小的"自举装入程序",开机时计算机先运行"自举装入程序",通过直行该程序就可找到引导块,并将完整的"自举程序"读入内存,完成初始化
完整的"自举程序"放在磁盘的启动块(即引导块/启动分区)上,启动块位于磁盘的固定位置
拥有启动分区的磁盘成为启动磁盘或系统磁盘

坏块的管理:对于简单的磁盘,会在FAT表上标明;对于复杂的磁盘,磁盘控制器会维护一个坏块链表,会保留一些备用扇区,用于替换坏块

14.固态硬盘SSD

原理:闪存技术,属于电可擦除ROM,即EEPROM
组成:闪存翻译层、存储介质:多个闪存芯片,每个芯片包含多个块,每个块包含多个页
读写性能特性:

  1. 以页为单位读写–相当于磁盘的扇区
  2. 以块为单位擦除
  3. 支持随机访问,系统给定一个逻辑地址,闪存翻译层可通过电路迅速定位到对于的物理地址
  4. 读快、写满。要写的页如果由数据,则不能写入,需要将块内其他页全部复制到一个新的块中,再写入新的页

特点:

  1. 读写速度快
  2. 擦除的次数过多块会坏掉
  3. 无噪音

磨损均衡技术:将擦除平均到各个块上
动态磨损均衡:写入数据时,优先选择擦除次数少的新块
静态磨损均衡:SSD监测并自动进行数据分配、迁移,让老旧的闪存块承担以读为主的存储任务,让新的块承担更多的写任务

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2157257.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2.pytest框架实现一些前后置(固件,夹具)的处理,断言和allure-pytest插件生成allure测试报告

一、setup/teardowm,setup_class/teardown_class&#xff08;所有&#xff09; 为什么需要这些功能&#xff1f; 比如&#xff1a;web自动化执行用例之前&#xff0c;请问需要打开浏览器吗&#xff1f;用例执行后需要关闭浏览器吗&#xff1f; 前置后置 二、使用pytest.fixture…

KamaCoder 103. 水流问题

题目要求 N*M的矩阵&#xff0c;数值代表位置的相对高度。矩阵模拟了一个地形&#xff0c;当雨水落上时&#xff0c;会根据地形倾斜向低处流动。但是只能从较高或等高的地点流向较低或等高并且相邻的地点&#xff0c;我们的目标是确定那些单元格&#xff0c;从这些单元格出发的…

[数据结构与算法·C++] 笔记 2.1 线性表

线性结构 概念 二元组 B ( K , R ) B(K,R) B(K,R) K a 0 , a 1 , . . . , a n − 1 K{a_0,a_1,...,a_{n-1}} Ka0​,a1​,...,an−1​ ( R r R{r} Rr) 有一个唯一的开始结点&#xff0c;它没有前驱&#xff0c;有一个唯一的直接后继一个唯一的终止结点&#xff0c;它有一个…

Diffusion Models/Score-based Generative Models背后的深度学习原理(7):估计配分函数

Diffusion Models专栏文章汇总&#xff1a;入门与实战 前言&#xff1a;有不少订阅我专栏的读者问diffusion models很深奥读不懂&#xff0c;需要先看一些什么知识打下基础&#xff1f;虽然diffusion models是一个非常前沿的工作&#xff0c;但肯定不是凭空产生的&#xff0c;背…

【水文】LLM 成文测试|探索嵌入式硬件编程的奥秘:入门基础知识的全面解析

这次用的是智谱清言的&#xff0c;文字质量比百度的高一些。 但是在按要求改写的方面还是需要给出太过明确的指令&#xff0c;麻烦。 探索嵌入式硬件编程的奥秘&#xff1a;入门基础知识的全面解析 嵌入式硬件作为现代科技的核心&#xff0c;广泛应用于各种设备和系统中。对于…

【OSS安全最佳实践】对OSS内身份证图片中身份证号进行脱敏

为确保存储在私有OSS Bucket特定文件夹中包含中国内地身份证信息的PNG、JPG、JPEG、BMP或WEBP格式图片&#xff0c;在与其他用户共享时身份证信息不被泄露&#xff0c;可使用数据安全中心 DSC&#xff08;Data Security Center&#xff09;的图片脱敏功能。DSC目前仅支持对身份…

计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-22

计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-22 引言: 全球最热销的国产游戏-《黑神话: 悟空》不仅给世界各地玩家们带来愉悦&#xff0c;而且对计算机人工智能研究也带来新的思考。在本期的论文速读中&#xff0c;我们带来一篇关于视觉语言模型&#xff0…

【C++高阶】深入理解C++ I/O流:标准库中的隐藏宝石

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;C 特殊类 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀ C IO流 &#x1f4d2;1. C语言的输入…

Linux中的动静态库

目录 前言 1.库的文件名 2.库的制作 对于动态库&#xff1a; 对于静态库&#xff1a; 3.库文件的查找 4.库的加载与使用 对于动态库&#xff1a; 对于静态库&#xff1a; 可执行程序分段&#xff1a; 程序的编址于动态库&#xff1a; 总结 前言 在刚开始学习C语言…

NASA:ASTER L1A 重建未处理仪器数据 V003

ASTER L1A 重建未处理仪器数据 V003 简介 先进星载热发射和反射辐射计&#xff08;ASTER&#xff09;1A 级&#xff08;AST_L1A&#xff09;包含重建的仪器数字编号&#xff08;DN&#xff09;&#xff0c;这些数字编号来自所获取的望远镜遥测数据流&#xff1a; 可见光和近红…

综合题第一题(地址表的填写)

题目 第一题的形式大概就是这样的&#xff0c;通常IP地址和子网掩码会给我们。 地址类别 补充知识 IP地址&#xff08;Internet Protocol Address&#xff09;是分配给网络中设备的数字标签&#xff0c;用于标识设备在网络中的位置。IP地址分为IPv4和IPv6两种版本&#xff0…

用Qt 对接‌百度AI平台

很多同学想利用几大模型AI弄点东西&#xff0c;但又不知道如何去介入&#xff1f;&#xff1f;最近帮同学弄点东西&#xff0c;刚好要接入到AI平台&#xff0c;就顺便研究了一下&#xff0c;并记录下来。 首先我们选择的 AI模型是百度的&#xff0c;然后注册&#xff0c;申请密…

vue实现数据栏无缝滚动实现方式-demo

效果 方式一 通过实现两个item 进行循环 <!--* Author: Jackie* Date: 2023-08-16 21:27:42* LastEditTime: 2023-08-16 21:41:51* LastEditors: Jackie* Description: scroll 水平滚动 - 效果基本满足需求* FilePath: /vue3-swiper-demo/src/components/scroll/Scroll12.…

开始场景的制作+气泡特效的添加

3D场景或2D场景的切换 1.新建项目时选择3D项目或2D项目 2.如下图操作&#xff1a; 开始前的固有流程 按照如下步骤进行操作&#xff0c;于步骤3中更改Company Name等属性&#xff1a; 本案例分辨率可以如下设置&#xff0c;有能力者可根据需要自行调整&#xff1a; 场景制作…

python是什么语言写的

Python是一种计算机程序设计语言。是一种面向对象的动态类型语言。现今Python语言很火&#xff0c;可有人提问&#xff0c;这么火的语言它的底层又是什么语言编写的呢&#xff1f; python是C语言编写的&#xff0c;它有很多包也是用C语言写的。 所以说&#xff0c;C语言还是很…

算法.图论-并查集

文章目录 1. 并查集介绍2. 并查集的实现2.1 实现逻辑2.2 isSameSet方法2.3 union方法(小挂大优化)2.4 find方法(路径压缩优化) 3. 并查集模板4. 并查集习题4.1 情侣牵手4.2 相似字符串组 1. 并查集介绍 定义&#xff1a; 并查集是一种树型的数据结构&#xff0c;用于处理一些不…

(学习记录)使用 STM32CubeMX——配置时钟(入门)

使用STM32CubeMX配置STM32F103C8T6时钟部分 选择芯片 ①&#xff1a;选择MCU型号 ①&#xff1a;这里使用英文输入法&#xff0c;输入你想要的芯片型号&#xff0c;我这里采用STM32F103C8T6 ②&#xff1a;这里能看到搜索后出来的芯片具体型号&#xff0c;选择匹配度最高的一个…

类和对象(2)(重点)

个人主页&#xff1a;Jason_from_China-CSDN博客 所属栏目&#xff1a;C系统性学习_Jason_from_China的博客-CSDN博客 所属栏目&#xff1a;C知识点的补充_Jason_from_China的博客-CSDN博客 类的默认成员函数 概念概述 默认成员函数就是用户没有显式实现&#xff0c;编译器会自…

【CSS in Depth 2 精译_034】5.4 Grid 网格布局的显式网格与隐式网格(下)

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第一章 层叠、优先级与继承&#xff08;已完结&#xff09; 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位&#xff08;已完结&#xff09; 2.1 相对…

ACM MM24 | Hi3D: 3D生成领域再突破!新视角生成和高分辨率生成双SOTA(复旦智象等)

文章链接&#xff1a;https://arxiv.org/pdf/2409.07452 Github 链接&#xff1a;https://github.com/yanghb22-fdu/Hi3D-Official 亮点直击 本文提出了高分辨率图像到3D模型&#xff08;Hi3D&#xff09;&#xff0c;这是一种基于视频扩散的新范式&#xff0c;将单个图像重新定…