前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【愚公系列】软考高级-架构设计师 019-存储管理(快表、段式存储、段页存储)

【愚公系列】软考高级-架构设计师 019-存储管理(快表、段式存储、段页存储)

原创
作者头像
愚公搬代码
发布2024-06-10 16:08:55
14604
代码可运行
发布2024-06-10 16:08:55
举报
文章被收录于专栏:愚公系列-考试考证
运行总次数:4
代码可运行

🏆 作者简介,愚公搬代码 🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。 🏆《近期荣誉》:2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。

🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。

🏆🎉欢迎 👍点赞✍评论⭐收藏

🚀前言

存储管理是操作系统中一个非常关键的组成部分,涉及到数据的存储、检索和管理。操作系统需要有效地管理不同类型的存储资源,包括主存(RAM)、辅助存储(如硬盘驱动器和固态硬盘)以及在某些情况下的网络存储。这一过程确保系统的高效运行和资源的最优利用。

主要目标和功能

存储管理的主要目标包括:

  1. 抽象化:为程序员提供简单且一致的视图来隐藏底层的硬件复杂性。
  2. 保护:确保一个进程的数据不会被其他进程非法访问。
  3. 共享:允许多个进程安全地共享存储资源。
  4. 虚拟化:提供比物理内存更大的地址空间,允许程序使用比实际可用内存更多的存储空间。
  5. 持久性:确保数据在电源关闭后仍然存在。

存储管理的主要技术

存储管理使用多种技术来实现其目标,包括:

  1. 内存管理
    • 连续内存分配:早期操作系统使用,如固定分区、可变分区。
    • 分页(Paging):将内存分割为固定大小的页,内存管理单元(MMU)将虚拟地址转换为物理地址。
    • 分段(Segmentation):将程序的不同部分分割为逻辑上的段,每个段都可以独立地被放置和保护。
  2. 虚拟内存
    • 通过使用磁盘作为额外的存储空间来扩展物理内存。
    • 使用页面置换算法,如最近最少使用(LRU)、先进先出(FIFO)等,来管理哪些数据应保留在内存中,哪些应被移至磁盘。
  3. 辅助存储管理
    • 管理硬盘和其他非易失性存储设备的数据。
    • 包括格式化、分区、文件系统实现等。
  4. 文件系统
    • 提供一个组织存储数据的方法,包括文件的创建、删除、读取和写入。
    • 实现文件的安全和保护,确保文件系统的完整性和可靠性。

实例:内存管理

考虑一个简单的分页系统,操作系统将程序的虚拟内存分成多个页面,这些页面可以独立地加载到物理内存的任何可用页面帧中。虚拟内存使得每个程序都认为自己在使用一个连续的内存块,而实际上它的各个部分可能散布在物理内存的不同位置。这种方法简化了内存管理,提高了内存的利用率,并允许使用更多的虚拟内存空间。

存储管理是确保操作系统稳定、高效运行的关键。随着技术的发展,存储管理的方法和技术也在不断进步,例如,现代系统中广泛使用的固态驱动器(SSD)提供了比传统硬盘更快的数据访问速度,这对存储管理策略产生了重大影响。操作系统必须不断地更新其存储管理技术,以充分利用这些新硬件的潜力。

🚀一、快表

快表是一块小容量的相联存储器,由快速存储器组成,按内容访问,速度快,并且可以从硬件上保证按内容并行查找,一般用来存放当前访问最频繁的少数活动页面的页号(可以看成是页表的频繁访问数据的副本)。

代码语言:python
代码运行次数:4
复制
快表是将页表存于Cache中
慢表是将页表存于内存中

因此慢表需要访问两次内存才能取出数据,而快表是访问一次Cache和一次内存,因此更快。

在这里插入图片描述
在这里插入图片描述

🔎1.快表(TLB)

快表,或称为转址旁路缓冲器(Translation Lookaside Buffer, TLB),是一种特殊的缓存,用于加速虚拟地址到物理地址的转换过程。在分页内存管理系统中,虚拟地址通常需要通过访问页表来转换成物理地址。页表可能非常大,通常存放在内存中,因此每次地址转换可能都需要访问内存,这会显著降低系统的效率。

快表作为页表的一个小型缓存副本,存放在CPU中,可以快速地进行地址转换,因为它仅存放最近或最频繁访问的页表项。当进行地址转换时,CPU首先检查快表:

  • 如果在快表中找到对应项(快表命中),则直接使用快表中的信息进行地址转换,不需要访问内存。
  • 如果未找到(快表未命中),则需要访问内存中的页表(慢表),将结果放入快表中,这个过程可能涉及到替换已有的快表项。

🔎2.慢表

慢表即存放在内存中的页表。由于内存的访问速度虽然比硬盘快很多,但与CPU速度相比仍然较慢,因此直接从内存中访问页表会较慢。在快表未命中的情况下,CPU必须访问这个慢表来获取所需的页表项,然后进行地址转换。

🔎3.访问过程

  1. 使用快表:首先查找TLB,如果找到(命中),直接进行地址转换,这是最快的路径。
  2. 访问慢表:如果TLB未命中,那么CPU需要访问内存中的页表来查找所需的映射,然后更新TLB,这需要更多时间因为涉及到两次内存访问(一次查页表,一次访问数据)。

🔎4.性能优化

使用快表的目的是减少访问内存的次数,因为即使是现代的内存访问也比缓存慢得多。快表能显著提高系统的性能,特别是在内存访问模式呈现局部性特征时(即程序倾向于重复访问相同的数据或相近的存储位置)。这使得TLB能够高效地缓存这些访问最频繁的页表项,从而减少对慢表的访问需求。

🚀二、段式存储

段式存储管理是一种内存管理方式,它将程序的不同部分划分为有逻辑意义的单元,称为“段”(Segment)。每个段可以代表程序的某一部分,如代码、数据、堆栈等。与分页存储管理相比,分段存储管理更强调逻辑划分和保护,更符合程序的结构和组织方式。

🔎1.段的特点

  1. 逻辑单位:段是根据程序的逻辑结构来划分的,例如代码段、数据段、堆栈段等,每个段都有明确的含义和作用。
  2. 动态大小:每个段的大小不是固定的,而是根据实际需要确定的。这与分页系统中的固定大小页不同。
  3. 独立的地址空间:每个段在内存中有其独立的地址空间,程序内部对内存的引用通常是通过段名和段内偏移来实现的。

🔎2.段的寻址和管理

在段式存储管理中,地址通常由两部分组成:段号和段内偏移。CPU使用这两部分信息来确定数据在物理内存中的实际位置:

  • 段号(Segment number)用来索引一个段表,从中获取段的基址。
  • 段内偏移(Offset within the segment)用来从该基址开始计算实际的物理内存地址。

段表

操作系统为每个进程维护一个段表,用于存储各个段的信息,包括:

  • 段基址(Base):段在物理内存中的起始地址。
  • 段长度(Limit):段的长度。
  • 保护位:指示段的访问权限,如读/写/执行。

当程序尝试访问某个内存地址时,操作系统首先检查段号是否有效,然后使用段表中的基址和限制来确定访问是否合法(即段内偏移是否超出了段的长度)。如果访问越界或违反了访问权限,操作系统会产生一个异常。

🔎3.优点和缺点

优点

  • 保护和安全性:由于每个段都可以有独立的保护属性,这提高了程序的安全性。
  • 灵活性:段的大小可以根据需要动态调整,不受固定分页大小的限制。
  • 适应性:分段非常适合程序的自然结构,易于程序的组织和管理。

缺点

  • 外部碎片:由于每个段的大小不同,内存中可能出现难以利用的小空间,称为外部碎片。
  • 管理复杂性:分段系统的管理通常比分页系统更复杂,需要更多的硬件和软件支持。

段式存储管理提供了一种符合程序逻辑结构的内存管理方式,虽然在内存利用率和管理上可能存在一些挑战,但它的适应性和保护特性使其在某些应用场景中非常有用。

在这里插入图片描述
在这里插入图片描述

🔎4.练习

在这里插入图片描述
在这里插入图片描述

🚀三、段页存储

段页存储管理是一种先进的内存管理技术,它结合了分段(Segmentation)和分页(Paging)两种方法的优点,以提供更灵活、高效的内存使用方式。这种技术旨在同时处理两个主要问题:内存保护和内存分配的灵活性。

🔎1.段页存储管理

段页存储结合了上述两种技术。在这种系统中,程序首先被分为多个段,每个段提供了逻辑上的划分;然后,每个段内部又被进一步细分为多个页,这样做的好处是:

  1. 灵活性和保护:分段提供逻辑上的分组和保护(不同的段可以有不同的访问权限),而分页则提供了对物理内存的有效管理。
  2. 地址转换:地址转换包括两个层次,首先是段表将逻辑地址中的段号转换成物理段的起始地址,然后通过页表将段内偏移转换成物理页框号。
  3. 减少内部碎片:由于每个段都是独立分页的,所以可以更精细地控制内存分配,减少了内部碎片。

这种结合方法的地址结构通常包括段号(用于查找段表)、页号(段内页表的索引)和页内偏移。

在这里插入图片描述
在这里插入图片描述

🔎2.优缺点

优点:空间浪费小、存储共享容易、能动态连接。

缺点:由于管理软件的增加,复杂性和开销也增加,执行速度下降

🔎3.应用

段页存储管理在现代操作系统中非常普遍,特别是在那些需要同时提供高度内存保护和灵活内存管理的环境中,如多用户、多任务的操作系统中。这种方法不仅提高了内存的使用效率,还加强了程序间的隔离,提高了系统的安全性。


我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 🚀前言
  • 🚀一、快表
    • 🔎1.快表(TLB)
      • 🔎2.慢表
        • 🔎3.访问过程
          • 🔎4.性能优化
          • 🚀二、段式存储
            • 🔎1.段的特点
              • 🔎2.段的寻址和管理
                • 🔎3.优点和缺点
                  • 🔎4.练习
                  • 🚀三、段页存储
                    • 🔎1.段页存储管理
                      • 🔎2.优缺点
                        • 🔎3.应用
                        相关产品与服务
                        文件存储
                        文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档