我与Linux的爱恋:磁盘的存储管理


外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

🔥个人主页guoguoqiang. 🔥专栏Linux的学习

Alt

文章目录

  • 磁盘的存储管理

磁盘的存储管理

在我们日常生活中,我们要打开很多文件(要打开这个文件需要先找到这个文件->要在磁盘中先找到->通过文件路径+文件名),但是被打开的文件只是少量的,那么没被打开的文件在哪里呢?
没被打开的文件在磁盘中存放。
文件=内容+属性=都是数据==都是二进制数据
由于一个磁盘中包含了大量的扇区,为了方便管理,我们对磁盘进行了分区,其中每个分区又进一步划分为多个块组(Block Group),每个块组中包含该块组的数据存储情况以及具体的数据
在这里插入图片描述
由于每个分区的存储空间依然很大,每个分区进一步分为不同的块组(Block Group)

Boot Block(引导块)
磁盘引导块
定义与位置:在磁盘存储结构中,引导块是磁盘开头的一个特殊区域。例如在硬盘中,它位于最开始的扇区。对于传统的 MBR(Master Boot Record)分区方式的磁盘,MBR 本身就包含了引导程序,这部分可以看作是一种引导块。它占据磁盘的特定位置,通常为磁盘的第一个扇区(512 字节),其中包含了磁盘分区表和一小段引导代码。

作用:当计算机启动时,BIOS(基本输入输出系统)会将磁盘引导块中的代码加载到内存中执行。这段代码负责进一步加载操作系统的核心部分或者引导加载程序(如 GRUB 等)。它是启动过程中从硬件到操作系统的关键衔接部分,告诉计算机磁盘上的操作系统在哪里以及如何加载。如果引导块损坏,计算机可能无法正常启动操作系统,会出现诸如 “找不到操作系统” 之类的错误提示。
内容:
引导加载程序(Boot Loader):例如,Linux系统的GRUB或GRUB2,Windows系统的NTLDR或BOOTMGR。
分区表:磁盘分区的信息,通常在主引导记录(MBR)或全局唯一标识分区表(GPT)中。
引导块与块组的关系

独立性:引导块是独立于文件系统的块组结构的。它不包含在任何一个块组内,因为它需要在文件系统被识别和挂载之前就被执行。
顺序:在启动过程中,计算机的BIOS或UEFI固件首先读取引导块中的代码,然后根据引导加载程序的指示,加载操作系统的其他部分。
保护:由于引导块对于启动过程至关重要,通常会有一些措施来保护它不被意外覆盖或损坏。

引导块与MBR

在传统的MBR(Master Boot Record)分区方案中,引导块通常就是MBR本身,它包含引导加载程序的前446字节和分区表的后64字节,以及一个2字节的结束标志。
在GPT(GUID Partition Table)分区方案中,引导块是独立的,GPT分区表位于磁盘的其它位置。

为什么需要引导块?

启动过程:引导块是启动过程的起点,没有它,计算机无法知道如何加载操作系统。
系统恢复:在系统崩溃或其他问题时,引导块中的代码可以用来恢复系统或进入救援模式。
多系统启动:多引导加载程序(如GRUB)可以驻留在引导块中,允许用户选择要启动的操作系统。

每个块组又包含着Block BitMap、Inode BitMap、Inode Table、Data Block、Group Descriper Table还有可能包含Super Block(超级块);接下来我们一个一个介绍
Super Block(超级快)
在大多数文件系统中,super block 通常位于存储设备(如硬盘分区)的特定位置。例如,在 ext2、ext3、ext4 等 Linux 常用的文件系统中,super block 在文件系统分区的开头部分。它是文件系统元数据的重要组成部分,存储着整个文件系统的关键信息。

文件系统初始化和挂载:当操作系统挂载一个文件系统时,首先会读取 super block 中的信息,以此来了解文件系统的结构和状态,确定如何正确地访问和管理文件系统中的数据。如果 super block 损坏,文件系统可能无法正常挂载,系统会提示错误信息。

空间管理和分配:通过 super block 中关于块的使用情况信息,文件系统可以有效地管理空闲块,为新文件分配存储空间。例如,当创建一个新文件时,文件系统根据 super block 中的空闲块信息找到合适的块来存储文件数据。

维护文件系统的一致性:super block 中的信息用于检测和修复文件系统可能出现的问题。在文件系统检查工具(如 Linux 下的 fsck)运行时,会参考 super block 的信息来验证文件系统的完整性,确保 inode 和数据块的映射关系正确,以及块的使用情况与记录一致。
Group Descriptor Table(组描述符表)
在类Unix文件系统中,组描述符表(Group Descriptor Table)是一个数据结构,它包含了文件系统中每个块组(Block Group)的元数据。组描述符表中的每个条目都对应一个块组,并提供了该块组的管理信息。

组描述符表是文件系统内部结构的一个重要组成部分,它帮助操作系统高效地管理磁盘空间和文件系统元数据。在处理文件系统操作时,组描述符表会被频繁地访问和更新。
组描述符的内容:

块组ID:块组的唯一标识符。
块位图的位置:指向块组中块位图(Block Bitmap)的指针,块位图用于跟踪哪些块是空闲的,哪些是已分配的。
inode位图的位置:指向块组中inode位图(Inode Bitmap)的指针,inode位图用于跟踪哪些inode是空闲的,哪些是已分配的。
inode表的位置:指向块组中inode表的指针,inode表包含了块组中所有inode的列表。
空闲块计数:块组中空闲块的数量。
空闲inode计数:块组中空闲inode的数量。
目录数量:块组中包含的目录数量。
未使用的数据块数量:块组中未使用的数据块数量。
未使用的inode数量:块组中未使用的inode数量。

组描述符的作用:

文件系统结构管理:组描述符表帮助文件系统管理器了解每个块组的结构和状态。
空间分配:在分配新的文件或目录时,文件系统使用组描述符表来确定哪个块组有足够的空闲空间。
文件系统检查:在文件系统检查(如fsck)期间,组描述符表用于验证文件系统的完整性。

组描述符与超级块之间的关系
包含与细化:超级块包含文件系统整体信息,是总纲。组描述符是对超级块信息在每个块组层面的细化,描述块组详细信息,如 inode 表位置等。
相互依存:超级块依赖组描述符管理文件系统,其空闲资源等信息汇总自组描述符;组描述符的正确性依赖超级块定义的规则,两者相互影响。
存储位置关联:超级块在磁盘分区特定位置(如开头),组描述符在每个块组开头,便于依据超级块找到块组及其中的组描述符来管理文件系统。
组描述符的备份:

为了提高可靠性,组描述符表通常也会在文件系统中备份。在EXT文件系统中,每个块组都可以包含一个组描述符表的副本。

Inode Table(Inode 表、I节点表)
在类Unix文件系统中,inode表(Inode Table)是一个核心的数据结构,它存储了文件系统中的inode(索引节点)列表。每个inode代表了文件系统中的一个文件或目录,并包含关于该文件或目录的元数据。
inode表的内容:简单来说就是存放文件属性的地方

inode编号:每个inode都有一个唯一的编号,用于在文件系统中标识它。
文件类型:指示该inode代表的是文件、目录、符号链接等。
模式(权限):定义了文件或目录的访问权限,如读、写、执行权限。
文件大小:文件的数据大小,以字节为单位。
时间戳:包括创建时间、最后访问时间、最后修改时间。
链接计数:指向该inode的硬链接数量。
文件所有者ID:拥有该文件的用户ID。
文件组ID:拥有该文件的组ID。
数据块指针:指向文件数据块的指针列表。对于小文件,这些指针直接指向数据块;对于大文件,可能包含间接指针和双重间接指针。
inode 表具有以下重要作用:
唯一标识文件:每个文件在文件系统中有唯一的 inode 编号,通过 inode 表中的信息可以将文件与其他文件区分开来。就像每个人都有唯一的身份证号码一样,inode 编号是文件在文件系统中的 “身份证”。

存储文件属性:它保存了文件的关键属性。如文件类型(是普通文件、目录、链接文件等),权限(规定了文件所有者、所属组和其他用户的读、写、执行权限),时间戳(创建时间、修改时间、访问时间)以及文件大小等信息,让操作系统可以快速获取文件的这些属性数据。

定位文件数据:inode 表中的磁盘块指针用于指向文件内容存储在磁盘上的数据块。当需要读取或写入文件内容时,操作系统根据这些指针找到文件数据在磁盘中的位置,从而实现对文件内容的访问和操作。

支持文件系统结构:对于目录来说,目录的 inode 表信息中包含了其下文件和子目录的 inode 编号与文件名的对应关系,这有助于构建和维护文件系统的层次结构,使得文件的查找和组织更加有序。

目录维护:目录实际上也是文件,它们的inode包含指向构成目录条目的数据块的指针。

inode表与块组的关系:

在像EXT2、EXT3、EXT4这样的文件系统中,每个块组都有自己的inode表,它包含了该块组中所有文件和目录的inode。
inode表的大小取决于文件系统在创建时设置的inode数量。

inode表的特点:

固定大小:每个inode的大小通常是固定的,这取决于文件系统的设计。
有限数量:文件系统在格式化时就会决定最大inode数量,这个数量通常是固定的。
Inode BitMap(Inode 位图)
Inode BitMap用于跟踪文件系统中的inode(索引节点)的使用情况。inode位图与块位图(Block Bitmap)类似,但它们跟踪的是inode而不是数据块

inode位图的内容:

位图:inode位图是一个由位组成的数组,其中每个位对应文件系统中的一个inode。
位的状态:
0(或未设置):表示对应的inode是空闲的,尚未分配给任何文件或目录。
1(或已设置):表示对应的inode已被分配,正在被文件或目录使用。

inode位图的作用:

inode分配:当创建新文件或目录时,文件系统会查看inode位图,找到第一个设置为0的位,然后将该位设置为1,并将对应的inode分配给新文件或目录。
inode释放:当文件或目录被删除时,文件系统会将对应的inode位图中的位设置为0,释放该inode,使其可以再次被分配。
文件系统检查:在文件系统检查(如fsck)期间,inode位图用于验证inode的使用情况,确保文件系统的完整性。

inode位图的特点:

紧凑:由于每个inode只由一个位表示,inode位图在磁盘上占用的空间相对较小。
快速访问:文件系统可以快速扫描inode位图,以找到空闲的inode或检查特定inode的状态。

Data Blocks(数据块)
在文件系统中,数据块(Data Blocks)是用于存储文件实际数据的基本单元。每个文件或目录由一个或多个数据块组成,这些块可以是连续的,也可以是分散的。
特点
物理存储单元:是磁盘上存储数据的实际物理单元,具有固定大小,不同文件系统数据块大小不同,如 ext4 文件系统默认数据块大小通常为 4KB,这决定了文件存储的粒度。
内容独立性:每个数据块存储的内容相对独立,可被不同文件使用或在文件不同部分使用。例如,一个数据块可能存储了某个文件中间的一段数据,而另一个数据块可能存储另一个文件的开头部分。
作用
存储文件内容:是文件内容的承载者,无论是文本文件中的字符、图像文件中的像素数据还是程序文件中的指令,都存储在数据块中。
提高读写效率:以数据块为单位进行读写操作,相较于按字节读写,可减少磁盘 I/O 次数。例如,读取一个连续存储在几个数据块中的文件时,可一次读取一个数据块,而不是逐个字节读取。
管理
位图标记:文件系统通常使用位图来管理数据块的使用情况。位图中的每个位对应一个数据块,0 表示空闲,1 表示已使用。通过位图,文件系统能快速查询和分配数据块。
与 inode 协作:inode 记录了文件所使用数据块的指针信息,通过 inode 可以找到文件内容存储的数据块。同时,文件系统利用 inode 和数据块之间的映射关系来维护文件的完整性和正确性。
分配策略
首次适应分配:从空闲数据块列表开头开始搜索,找到第一个足够大的空闲数据块进行分配。这种策略简单,但可能导致磁盘空间碎片化。例如,随着文件的不断创建和删除,磁盘上会出现许多小的空闲数据块,分散在不同位置。
最佳适应分配:在所有空闲数据块中查找大小最接近文件所需大小的空闲数据块进行分配。它能减少空间浪费,但查找空闲数据块的时间成本较高。
连续分配:为文件分配连续的数据块,有利于提高文件读写速度,尤其是对顺序访问要求高的文件。但随着文件的动态变化,容易产生磁盘碎片,而且连续的大空间可能难以满足。
优化
碎片整理:定期对磁盘进行碎片整理,将分散的空闲数据块合并成较大的连续空闲区域,减少碎片对性能的影响。通过移动数据块的位置,使文件的数据尽可能连续存储。
调整数据块大小:根据文件系统中文件的平均大小来合理调整数据块大小。如果文件普遍较小,可以适当减小数据块大小以减少空间浪费;如果文件较大且磁盘 I/O 性能是关键,可以增大数据块大小以减少 I/O 次数。
预分配策略:对于一些预计会增长的文件,如日志文件,提前分配一定数量的数据块,避免文件增长过程中频繁分配数据块带来的性能开销。
Block BitMap
块位图(Block Bitmap)用于记录数据块的使用情况
概念
Bitmap(位图)在文件系统中是一种用于表示数据或对象状态的数据结构。它通过使用二进制位(0 和 1)来表示特定元素的两种不同状态,通常用于快速查询和管理资源的使用情况。例如,在文件系统中,可以用位图来表示磁盘块或 inode 的空闲或使用状态。
组成
位序列:由一系列的二进制位组成。每个二进制位都有特定的含义,其位置和值代表了被管理对象的相应状态。例如,若用位图管理磁盘块,位图中的第 n 个位可能对应第 n 个磁盘块的状态。
字节或字对齐:在计算机存储中,位图通常以字节或字为单位进行存储和组织。多个二进制位组成一个字节(8 位)或一个字(通常是特定计算机体系结构下的固定位数,如 32 位或 64 位),以便于存储和访问。
功能
资源状态标记:在文件系统里,主要用于标记磁盘块、inode 等资源是空闲还是已被使用。比如,对于磁盘块位图,如果某一位为 0,则表示对应的磁盘块是空闲的,可以分配给新的文件存储数据;若为 1,则表示该磁盘块已被某个文件占用。
快速查询:由于其简单的结构,通过直接访问特定位置的位,可以快速判断资源的状态。相比其他复杂的数据结构,位图在查询速度上有很大优势,特别是当需要查询大量资源状态时。例如,在一个拥有大量磁盘块的文件系统中,通过位图可以迅速确定是否有足够的连续空闲磁盘块来存储一个大文件。
空间管理辅助:帮助文件系统进行有效的空间管理。当文件被删除时,相应资源在位图中的位可以被快速修改为空闲状态;当创建新文件时,可根据位图找到合适的空闲资源进行分配。

块位图在文件系统中的位置:

块组内:在许多文件系统(如EXT系列)中,每个块组都有自己的块位图,只管理该块组内的数据块。
存储位置:块位图通常位于块组的开始部分,紧随超级块和组描述符表之后。

块位图的特点:

空间效率:由于每个数据块只由一个位表示,块位图占用的磁盘空间非常小。
访问速度:文件系统可以快速扫描块位图,以确定数据块的状态。

一个文件只有一个独立的Inode,Inode的设置是以分区为单位的,不能跨分区;Inode存储文件的属性,文件名不是Inode的属性!我们平常找文件使用的是文件名,并不是Inode,文件名与Inode有什么关联呢?我们可以通过ls -li查看当前目录下所有文件的Inode

在这里插入图片描述
也可以通过 stat [文件名]查看某个文件的Inode
在这里插入图片描述
在Linux中一切皆文件,目录也有自己的inode,因为目录也有自己的属性
目录也有自己的存储内容,
1.文件内容与inode编号映射(目录存储了其下包含的文件名以及对应的 inode 编号。这是目录最关键的存储信息,通过这种映射关系,文件系统可以根据文件名在目录中查找到相应文件的 inode 编号,进而通过 inode 获取文件的属性和数据块位置等信息。例如,在一个名为 “documents” 的目录中,有文件 “report.txt”,目录中就记录了 “report.txt” 这个文件名和它所对应的 inode 编号。)
层次结构构建:这种映射在整个文件系统的层次结构中层层传递。对于子目录,目录同样存储子目录的名称和其 inode 编号,以此类推,形成了文件系统的树形结构。
2. 目录属性信息
权限信息:和普通文件一样,目录有自己的权限设置,这些权限信息存储在目录的 inode 中,但从目录内容的角度来看,它决定了哪些用户可以对该目录进行读取、写入和执行操作。例如,只有具有写权限的用户才能在目录中创建、删除或重命名文件和子目录;读权限则允许用户查看目录中的内容(文件名和子目录名);执行权限对于进入目录以及访问其中的文件和子目录是必需的。
时间戳:目录也有创建时间、最后修改时间和最后访问时间等时间戳信息。目录内容的修改,如添加或删除文件、子目录,会更新修改时间;用户查看目录内容会更新访问时间。
3. 特殊目录项(. 和…)
当前目录(.):每个目录都有一个名为 “.” 的特殊目录项,它指向目录本身的 inode 编号。这使得在操作文件系统时,可以方便地表示当前目录的位置。例如,当在一个目录中执行相对路径操作时,“.” 可用于指代当前目录的相关信息。
上级目录(…):名为 “…” 的特殊目录项指向目录的父目录的 inode 编号。它是实现目录层次结构导航的重要机制,通过 “…” 可以向上一级目录移动,对于遍历文件系统的目录树非常关键。

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

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

相关文章

git原理与上传

言: git是一个软件,gitee/github是一个网站,这里有什么联系吗?我们身为一个程序员不可能不知道github,但是毕竟这是外国的网站,我们不翻墙的情况下,是无法访问的(或者就是太慢了,或…

Python基础学习_01

目录 1、注释 2、数字和数学计算 3、变量 4、字符串 5、打印 6、本节总结 1、注释 • 什么是注释? 1)注释就是用自然语言向代码阅读者说明代码的功能和意义 • 注释 1)单行注释使用 # 为开头;并且不能换行…

操作系统学习笔记-3.2虚拟内存

文章目录 虚拟内存请求分页管理方式页面置换算法最佳置换算法工作原理OPT 算法的示例最佳置换算法的优点和缺点 先进先出置换算法最近最久未使用时钟置换算法时钟置换算法的工作原理:算法的步骤: 改进型时钟置换算法改进型时钟置换算法的特点&#xff1a…

vue3 封装aixos

1. Vue3 封装 aixos 并且 使用 aixos 请求数据 npm install axios # 或者 yarn add axios 2. Vue3 封装 aixos 并且 使用 aixos 请求数据 封装 axios可以帮助我们更好地管理 HTTP 请求,例如添加统一的基础URL、请求头、拦截器等功能。 下面是封装 axios的一个示…

量子计算机能解决哪些问题?

经典与量子难度对比 在深入示例之前,我们首先讨论一下如何研究和分类各种问题的难度。有些问题可以在经典计算机上轻松解决,我们不需要量子计算机来解决它们。另一方面,有些问题非常困难,需要量子计算机来解决。一个著名的例子是寻…

中电金信:院长寄语|关于源启AI+行动的思考

中国电子首席科学家 中电金信研究院院长 况文川 自2022年8月19日发布以来,源启已经走上了她第三年的征途。今天,源启已经成为公司战略的支点,中电金信正致力于用“源启底座”“源启咨询”“源启应用重构”三位一体的方式来赋能千行百业数智化…

海康私有化视频平台EasyCVR视频分析设备平台流媒体协议RTMP、HTTP-FLV、HLS的简单对比

在当今的数字化世界中,视频流协议的选择对于确保流畅、高效的视频传输至关重要。随着互联网技术的快速发展,直播和视频点播服务已经成为人们日常生活中不可或缺的一部分。无论是安防监控、在线教育、远程会议还是娱乐直播,用户对于视频流的实…

详解使用python读写csv,以及将csv数据写入数据库

csv文件 csv介绍 CSV,也即Comma-Separated Values,是一种用于存储表格数据的纯文本文件格式,其中每一行代表一条记录,记录中的各个字段由逗号分隔。 姓名,年龄,性别 张三,25,男 李四,28,男 王五,22,男 六六,29,女 子柒,28,女 对…

OpenMVS OpenMVG 笔记

OpenMVS & OpenMVG 笔记 OpenMVS 和 OpenMVG 都是计算机视觉中用于三维重建的开源库。两者都可以实现从图像集合中计算出相机位姿和三维点云,但它们的重点略有不同。 OpenMVG 主要关注于从输入图像集合中提取稠密的特征匹配,通过这些匹配计算相机的…

Golang--文件操作

1、文件 文件:文件用于保存数据,是数据源的一种 os包下的File结构体封装了对文件的操作(记得包os包) 2、File结构体--打开文件和关闭文件 2.1 打开文件 打开文件,用于读取(函数): 传…

dcdc3节锂电池串联9-12V升压32V 3A/5A 音响供电恒压芯片 SL4010

SL4010:高效能9-12V至32V升压解决方案,为高端音响系统注入澎湃动力 在追求极致音质与持久续航的音频世界里,SL4010 DC-DC升压转换器以其卓越的性能和可靠性,成为高端音响系统的理想供电伙伴。专为3节锂电池串联(9-12V…

onnx-web + yolov8n 在视频流里做推理

顺着我上一篇文章 使用onnxruntime-web 运行yolov8-nano推理 继续说,有朋友在问能不能接入 视频流动,实时去识别物品。 首先使用 getUserMedia 获取摄像头视频流 getUserMedia API 可以访问设备的摄像头和麦克风。你可以使用这个 API 获取视频流&#…

力扣题库——136.只出现一次的数字

代码实现&#xff1a; class Solution { public:int singleNumber(vector<int>& nums) {int result0;for(int num:nums){result^num;}return result;} }; 结果&#xff1a; 思路&#xff1a;这里让0和数组元素不断异或&#xff0c;因为0与一个数异或的结果是它本身…

EasyPOI使用详解

EasyPOI 简介 easypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板 语言(熟悉的表达式语法),完成以前复杂的写法 文档&#xff1a;http://easypoi.mydoc.io/#categor…

JAVA设计模式之【建造者模式】

1 定义 建造者模式&#xff08;Builder Pattern&#xff09;使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式&#xff0c;它提供了一种创建对象的最佳方式。 2 类图 产品类&#xff08;Product&#xff09;&#xff1a;表示被创建的复杂…

智能化健身房管理:Spring Boot与Vue的创新解决方案

作者介绍&#xff1a;✌️大厂全栈码农|毕设实战开发&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 &#x1f345;获取源码联系方式请查看文末&#x1f345; 推荐订阅精彩专栏 &#x1f447;&#x1f3fb; 避免错过下次更新 Springboot项目精选实战案例 更多项目…

如何修改WordPress经典编辑器的默认高度?

boke112百科有一个使用WordPress搭建的小网站&#xff0c;文章内容就是几个字不到一行&#xff0c;但是每次使用经典编辑器编辑文章时&#xff0c;都觉得编辑器默认高度太高了&#xff0c;影响了我添加文章摘要和其他属性&#xff0c;有没有办法修改WordPress经典编辑器的默认高…

C#属性 Property

属性Property不是变量。 它们是由名为访问器方法来实现的一种方法。 实例属性表示的是实例的某个数据&#xff0c;通过这个数据反映实例当前的状态 静态属性表示的是类型的某个数据&#xff0c;通过这个数据反映类型当前的状态 意义&#xff1a; 防止恶意赋值(通过属性间接访问…

【力扣热题100】[Java版] 刷题笔记-121. 买卖股票的最佳时机

题目&#xff1a;121. 买卖股票的最佳时机 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。…

Wi-Fi7 puncturing技术增强与应用

原文关注公众号 - 无线技术栈,及时查看网络/Wi-Fi更多知识 “本文图片没有一一列出,感兴趣可以关注公众号 - 无线技术栈” “本文图片没有一一列出,感兴趣可以关注公众号 - 无线技术栈” Puncturing是一种有效的编码技术,广泛应用于无线通信中,用于在保持信号的可靠性的同…