windows操作系统内存管理方式综述

合集下载

Windows核心编程-内存管理

Windows核心编程-内存管理

使用虚拟内存



虚拟内存,最适合用来管理大型对象或 结构数组。 内存映射文件,最适合用来管理大型数 据流(通常来自文件)以及在单个计算 机上运行的多个进程之间共享数据。 内存堆栈,最适合用来管理大量的小对 象。
使用虚拟内存-VirtualAlloc
通过调用Vi r t u a l A l l o c函数,可以在进程的地址空间 中保留一个区域: LPVOID VirtualAlloc(
内存管理

当一个进程中的线程试图将数据写入一个共享内存块 时,系统就会进行干预,并执行下列操作步骤:



1) 系统查找R A M中的一个空闲内存页面。注意,当该模块 初次被映射到进程的地址空间时,该空闲页面将被页文件 中已分配的页面之一所映射。当该模块初次被映射时,由 于系统要分配所有可能需要的页文件,因此这一步不可能 运行失败。 2) 系统将试图被修改的页面内容拷贝到第一步中找到的页 面。该空闲页面将被赋予PA G E _ R E A D W R I T E或 PA G E _ E X E C U T E _ R E A D W R I T E保护属性。 原始页面的保护属性和数据不发生任何变化。 3) 然后系统更新进程的页面表,使得被访问的虚拟地址被 转换成新的R A M页面。
使用虚拟内存-提交


始终设法进行物理存储器的提交。每次调用Vi r t u a l A l l o c函数的时候,不要查看物理存储器是否已经映 射到地址空间区域的一个部分,而是让你的程序设法 进行内存的提交。系统首先查看内存是否已经被提交, 如果已经提交,那么就不要提交更多的物理存储器。 这种方法最容易操作,但是它的缺点是每次改变C E L L D ATA结构时要多进行一次函数的调用,这会使程 序运行得比较慢。 使用Vi r t u a l Q u e r y函数确定物理存储器是否已经 提交给包含C E L L D ATA结构的地址空间。如果已经 提交了,那么就不要进行任何别的操作。如果尚未提 交,则可以调用Vi r t u a l A l l o c函数以便提交内存。 这种方法实际上比第一种方法差,它既会增加代码的 长度,又会降低程序运行的速度(因为增加了对Vi r t u a l A l l o c函数的调用)。

计算机操作系统中的内存管理和虚拟化技术

计算机操作系统中的内存管理和虚拟化技术

计算机操作系统中的内存管理和虚拟化技术计算机操作系统是现代计算机体系结构中不可分割的组成部分。

内存管理和虚拟化技术是计算机操作系统的重要功能之一,它们在保证计算机系统性能和安全性方面发挥着重要作用。

一、内存管理技术内存管理技术是操作系统中实现内存资源的高效利用和保护的重要手段。

计算机系统中的内存被划分为多个逻辑单元,各个逻辑单元之间进行切换和管理,以实现多个进程或任务的并发执行。

1. 内存的划分内存划分是内存管理的第一步。

一般情况下,计算机系统将内存划分为操作系统区域和用户区域。

操作系统区域用于存放操作系统内核和相关数据结构,而用户区域用于存放用户程序和数据。

2. 内存映射内存映射是将逻辑地址转换为物理地址的过程。

操作系统通过地址映射表或页表,将逻辑地址映射到实际的物理地址,以实现程序的正确执行和内存的动态管理。

3. 内存分配与回收内存分配与回收是内存管理的核心功能。

操作系统通过内存分配算法,为进程分配内存空间。

而当进程终止或释放内存时,操作系统需要回收这些空间以供其他进程使用。

4. 内存保护内存保护是防止进程之间互相干扰的重要手段。

通过设定访问权限和限制资源的使用,操作系统可以确保每个进程仅能访问自己被分配到的内存空间,从而保护进程的安全性和稳定性。

二、虚拟化技术虚拟化技术是一种将物理资源抽象为逻辑资源,并为不同的用户或应用程序提供独立的逻辑环境的技术。

在计算机操作系统中,虚拟化技术主要包括虚拟内存和虚拟机技术。

1. 虚拟内存虚拟内存是一种将主存和辅助存储器组合使用的技术。

它通过将物理内存的一部分作为虚拟内存空间,将进程的一部分内容从内存转移到硬盘上,以提高内存的利用率和系统的吞吐量。

2. 虚拟机虚拟机技术是将一个物理计算机虚拟为多个逻辑计算机的技术。

通过虚拟化软件的支持,可以在一台物理机上同时运行多个操作系统和应用程序,实现资源的共享和隔离,提高计算机系统的利用率和灵活性。

虚拟化技术在云计算和服务器虚拟化中得到了广泛应用,它极大地提升了计算机系统的效率和灵活性,降低了资源的成本和能源消耗。

windows操作系统原理

windows操作系统原理

windows操作系统原理Windows操作系统原理是指Windows操作系统设计与实现的基本原理和机制。

Windows操作系统是由微软公司开发的一种面向个人计算机的操作系统。

Windows操作系统的原理包括以下几个方面:1. 多任务管理:Windows操作系统采用了抢占式的多任务处理机制,通过任务调度器来管理多个任务的执行。

每个任务独立运行在自己的进程中,操作系统根据进程的优先级和时间片来进行任务调度。

2. 内存管理:Windows操作系统使用虚拟内存管理机制,将物理内存划分为多个页框,每个进程有自己的虚拟地址空间。

操作系统通过分页机制将虚拟内存映射到物理内存中,以便实现进程间的隔离和保护。

3. 文件系统:Windows操作系统使用NTFS文件系统作为默认的文件系统。

NTFS文件系统支持文件和目录的权限控制、文件压缩和加密等功能。

4. 设备管理:Windows操作系统通过设备驱动程序来管理硬件设备。

每个设备驱动程序负责与特定设备的通信,并提供统一的接口供应用程序调用。

5. 网络通信:Windows操作系统支持TCP/IP协议栈,并提供了各种网络通信服务,如网络协议栈、网络接口、套接字接口等,以实现应用程序之间的网络通信。

6. 用户界面:Windows操作系统提供了图形用户界面(GUI),包括窗口管理、菜单、对话框等,使得用户可以通过鼠标、键盘等输入设备与计算机进行交互。

7. 安全性:Windows操作系统通过用户账户和权限管理来保护系统和用户数据的安全性。

每个用户都有自己的账户,并且可以通过权限控制来限制对文件和系统资源的访问。

这些原理和机制共同构成了Windows操作系统的核心。

通过合理地设计和实现,Windows操作系统能够提供稳定、安全、高效的计算环境,满足用户的各种需求。

操作系统的内存分配算法

操作系统的内存分配算法

操作系统的内存分配算法操作系统的内存管理是计算机系统中一个重要的组成部分。

内存分配算法决定了如何合理地利用系统的内存资源,以达到高效、安全、稳定的运行。

本文将介绍几种常见的内存分配算法,包括首次适应算法、循环首次适应算法、最佳适应算法以及快速适应算法。

首次适应算法(First Fit Algorithm)首次适应算法是一种简单而常见的内存分配算法。

它从内存空闲列表的头部开始寻找第一个适合分配的内存块。

当找到满足要求的内存块后,将该块划分为两部分,一部分用于分配给请求的程序,另一部分保留为剩余空闲块。

这种算法的优点是分配速度较快,缺点是可能会导致内存碎片的产生。

循环首次适应算法(Next Fit Algorithm)循环首次适应算法是首次适应算法的一种改进版本。

与首次适应算法不同的是,循环首次适应算法从上一次分配的位置开始搜索空闲块,直到找到一个满足要求的内存块为止。

这样可以避免每次都从头开始搜索,提高了查找的效率。

同样,这种算法也可能导致内存碎片的产生。

最佳适应算法(Best Fit Algorithm)最佳适应算法是为了解决内存碎片问题而提出的一种分配算法。

该算法会在内存空闲列表中查找最小且能满足要求的空闲块,并将该块分配给请求的程序。

这样可以尽量充分利用内存资源,减少内存碎片的产生。

但是,最佳适应算法的缺点是分配速度相对较慢,因为需要遍历整个内存空闲列表。

快速适应算法(Quick Fit Algorithm)快速适应算法是一种综合了首次适应算法和最佳适应算法的策略。

它将内存空闲列表分成了多个不同大小的链表,每个链表分别存储相应大小的空闲块。

当有程序请求内存时,快速适应算法会直接从对应大小的链表中查找可用的空闲块进行分配,以提高分配的速度。

这个算法在时间效率和空间效率上都较为出色,但是需要付出额外的存储开销。

总结不同的内存分配算法各有优缺点,选择合适的算法取决于具体的应用场景和系统需求。

首次适应算法和循环首次适应算法适用于内存分配需求频繁变化的场景。

操作系统中内存管理的重要性和实现方法

操作系统中内存管理的重要性和实现方法

操作系统中内存管理的重要性和实现方法操作系统中内存管理是系统内核的核心功能之一,它负责管理计算机的内存资源,以提供可靠、高效的运行环境。

内存管理的目标是合理分配和管理内存空间,同时确保进程之间的隔离和保护,提高系统的性能和可靠性。

本文将介绍操作系统中内存管理的重要性以及几种常见的实现方法。

一、内存管理的重要性1. 资源分配:计算机内存是有限的资源,而运行在计算机上的应用程序需要占用一定的内存空间。

内存管理的任务是根据应用程序的需要,合理地分配内存资源,以确保每个应用程序都有足够的内存可用,避免出现内存不足的情况。

2. 提高性能:优化内存的使用可以提高系统的性能。

内存管理中的页面置换策略和内存映射等技术可以使应用程序能够更高效地利用内存资源,减少内存碎片和访问延迟,提升系统的运行效率。

3. 进程隔离与保护:内存管理通过为每个进程分配独立的内存空间,实现了进程之间的隔离和保护。

这样,即使一个进程出现错误或崩溃,也不会对其他进程产生影响,提高了系统的可靠性和稳定性。

二、内存管理的实现方法1. 地址空间分配:操作系统通过将逻辑地址空间映射到物理地址空间来管理内存。

逻辑地址空间是应用程序所看到的地址空间,而物理地址空间是实际的硬件地址空间。

地址空间分配可以通过固定分区、可变分区或虚拟存储器等方式实现。

- 固定分区:将内存空间划分为若干个固定大小的分区,每个分区分配给一个进程。

这种分区方式简单,但不够灵活,容易导致内存碎片问题。

- 可变分区:灵活地分配内存空间,根据进程的需求动态划分分区。

这种分区方式可以减少内存碎片,但需要更复杂的算法和数据结构来管理分区。

- 虚拟存储器:使用虚拟地址空间来访问物理内存。

操作系统将物理内存划分为一系列固定大小的页面,并将页面映射到进程的虚拟地址空间。

这种方式可以提供更大的地址空间和更好的内存利用率。

2. 页面置换:当内存空间不足时,操作系统需要将部分页面从内存中换出,为新的页面腾出空间。

优化windows系统内存教给你九大秘招(精)

优化windows系统内存教给你九大秘招(精)

如何优化内存的管理, 提高内存的使用效率, 尽可能地提高运行速度, 是我们所关心的问题。

下面介绍在 Windows 操作系统中,提高内存的使用效率和优化内存管理的几种方法。

1、改变页面文件的位置其目的主要是为了保持虚拟内存的连续性。

因为硬盘读取数据是靠磁头在磁性物质上读取,页面文件放在磁盘上的不同区域,磁头就要跳来跳去,自然不利于提高效率。

而且系统盘文件众多, 虚拟内存肯定不连续, 因此要将其放到其他盘上。

改变页面文件位置的方法是:用鼠标右键点击“ 我的电脑” ,选择“ 属性→ 高级→ 性能设置→ 高级→ 更改虚拟内存” , 在驱动器栏里选择想要改变到的位置即可。

值得注意的是, 当移动好页面文件后, 要将原来的文件删除 (系统不会自动删除。

2、改变页面文件的大小改变了页面文件的位置后, 我们还可以对它的大小进行一些调整。

调整时我们需要注意, 不要将最大、最小页面文件设为等值。

因为通常内存不会真正“ 塞满” , 它会在内存储量到达一定程度时, 自动将一部分暂时不用的数据放到硬盘中。

最小页面文件越大, 所占比例就低, 执行的速度也就越慢。

最大页面文件是极限值, 有时打开很多程序, 内存和最小页面文件都已“ 塞满” ,就会自动溢出到最大页面文件。

所以将两者设为等值是不合理的。

一般情况下, 最小页面文件设得小些, 这样能在内存中尽可能存储更多数据, 效率就越高。

最大页面文件设得大些,以免出现“ 满员” 的情况。

3、禁用页面文件当拥有了 512MB 以上的内存时, 页面文件的作用将不再明显, 因此我们可以将其禁用。

方法是:依次进入注册表编辑器“HKEY_LOCAL_MACHINESystemCurrentControlSetCon trolSessionMa-nager MemoryManagement” 下, 在“DisablePa -ging Executive”(禁用页面文件选项中将其值设为“1” 即可。

Windows的系统管理

Windows的系统管理

Windows的系统管理对于大多数使用电脑的人来说,Windows 操作系统是再熟悉不过的了。

然而,要想让Windows 系统稳定、高效地运行,充分发挥其性能,进行有效的系统管理是至关重要的。

首先,我们来谈谈 Windows 系统的硬件管理。

了解自己电脑的硬件配置是第一步。

在“设备管理器”中,我们可以查看电脑的处理器、显卡、声卡、网卡等硬件设备的信息。

如果某个硬件设备出现了问题,比如驱动程序丢失或者不兼容,系统可能会出现卡顿、死机甚至无法正常启动的情况。

这时候,我们就需要及时更新驱动程序。

通常,我们可以通过设备制造商的官方网站或者 Windows 的自动更新功能来获取最新的驱动程序。

内存管理也是不容忽视的一部分。

如果电脑的内存不足,运行多个程序时就会变得非常缓慢。

我们可以通过任务管理器查看当前内存的使用情况。

如果发现内存占用过高,可以关闭一些不必要的程序或者进程来释放内存。

另外,对于一些老旧的电脑,如果内存容量较小,考虑增加内存条也是一个不错的提升性能的方法。

接下来是磁盘管理。

磁盘空间不足会导致系统无法正常安装更新,也会影响文件的存储和读取速度。

定期清理磁盘垃圾文件、删除不再需要的软件和文件是很有必要的。

Windows 系统自带了磁盘清理工具,可以帮助我们快速清理一些临时文件和系统垃圾。

同时,对于重要的文件和数据,我们要做好备份,防止磁盘出现故障导致数据丢失。

Windows 系统的电源管理也对系统的性能和电池续航有一定的影响。

在使用笔记本电脑时,根据不同的使用场景选择合适的电源计划。

比如,在外出使用电池时,可以选择节能模式来延长电池续航时间;而在连接电源时,可以选择高性能模式以获得更好的性能。

再来说说 Windows 系统的软件管理。

安装软件时,要注意选择正规的渠道下载,避免从一些不可信的网站下载来路不明的软件,以免感染病毒或者恶意软件。

安装过程中,要仔细阅读安装向导的提示,注意是否有捆绑的其他软件,避免不必要的软件被安装到电脑上。

操作系统中内存管理的碎片整理与优化

操作系统中内存管理的碎片整理与优化

操作系统中内存管理的碎片整理与优化在操作系统中,内存管理是一个重要且复杂的任务。

随着程序的运行和内存分配的不断变化,内存中会产生碎片。

碎片化的内存不仅会降低内存利用率,还可能导致内存分配错误和性能下降。

因此,对内存中的碎片进行整理与优化是提高系统性能和稳定性的关键。

一、碎片的类型和影响内存碎片分为两种类型:内部碎片和外部碎片。

1. 内部碎片:指的是已分配给进程的内存空间中有一部分被浪费掉,无法再被其他进程利用。

这种碎片产生的原因是为了适应某个进程内存需求的不规则性,并采用固定大小的内存块分配策略。

2. 外部碎片:是指已释放的内存空间分布在内存中的不连续空闲区域,但是大小不够满足当前进程的申请需求。

当存在很多小的空闲内存块时,由于大小不够,无法分配给大块内存需求的进程。

这种情况下,系统可能需要进行碎片整理和优化。

内存碎片的存在会对系统性能产生多方面的影响:1. 内存利用率降低:碎片化的内存导致大量的内存空间浪费,降低了内存的利用率。

2. 内存分配错误:当存在较多的外部碎片时,系统可能无法为大内存需求的进程分配所需空间,导致内存分配错误或进程无法启动。

3. 性能下降:碎片化的内存会增加内存分配的时间和负担,降低系统的整体性能。

二、内存碎片整理方法为了降低内存碎片对系统性能的负面影响,操作系统采用了多种内存碎片整理方法。

1. 连续内存分配算法连续内存分配算法通过整理内部碎片,将多个空闲的内存块合并成一个大的连续块,以满足大内存需求的进程。

常见的连续内存分配算法有首次适应、最佳适应和最坏适应算法。

它们根据空闲内存块的大小和位置选择合适的内存块进行分配,以减少内部碎片的产生。

2. 非连续内存分配算法非连续内存分配算法通过重新分配内存中的进程位置,来优化系统中的外部碎片。

常见的非连续内存分配算法有紧凑算法和换页算法。

紧凑算法通过将内存中的进程重新整理,使空闲内存块合并为更大的块,从而减少外部碎片。

这种方法会涉及到进程的移动,可能导致系统性能下降,但能够有效减少外部碎片。

如何调整电脑系统内存的分配

如何调整电脑系统内存的分配

如何调整电脑系统内存的分配在如今信息爆炸的时代,电脑已经成为了我们生活中不可或缺的一部分。

无论是工作、学习还是娱乐,我们都离不开电脑。

然而,有时候我们可能会遇到电脑运行速度慢、卡顿等问题。

这些问题很大程度上与电脑系统内存的分配有关。

本文将探讨如何调整电脑系统内存的分配,以提升电脑的运行速度和性能。

首先,我们需要了解电脑系统内存的基本概念。

系统内存,也称为随机存取存储器(RAM),是电脑用于暂时存储数据的地方。

当我们打开一个程序或文件时,电脑会将相关数据加载到内存中,以便快速访问和处理。

然而,如果内存不足以容纳所有需要加载的数据,电脑就会变得缓慢,甚至崩溃。

为了调整电脑系统内存的分配,我们可以采取以下几个步骤:1. 清理冗余程序和进程:在使用电脑的过程中,我们可能会同时打开多个程序,但并不是所有的程序都是必须的。

通过关闭那些不需要的程序,我们可以释放一部分内存空间。

此外,还可以通过任务管理器结束一些不必要的进程,以减少内存占用。

2. 增加物理内存:如果我们的电脑内存不足以满足我们的需求,我们可以考虑增加物理内存。

物理内存是指电脑上实际安装的内存条,通过增加内存条的容量,我们可以提升电脑的内存空间,从而提升电脑的运行速度和性能。

3. 调整虚拟内存:虚拟内存是指电脑硬盘上的一部分空间,用于存储暂时不需要使用的数据。

当内存不足时,电脑会将一部分数据转移到虚拟内存中。

通过调整虚拟内存的大小,我们可以增加或减少电脑使用虚拟内存的程度。

一般来说,虚拟内存的大小应该设置为物理内存的1.5倍到2倍。

4. 使用内存优化工具:除了上述方法外,我们还可以使用一些内存优化工具来帮助我们调整电脑系统内存的分配。

这些工具可以帮助我们自动清理内存中的垃圾数据,释放内存空间,从而提升电脑的运行速度和性能。

然而,我们在选择使用这些工具时需要慎重,确保其来源可靠,并避免下载安装一些不必要的附加软件。

总结起来,调整电脑系统内存的分配是提升电脑性能的重要一环。

windows allocatedbasesize单位 -回复

windows allocatedbasesize单位 -回复

windows allocatedbasesize单位-回复Windows AllocatedBaseSize(Windows 分配的基址大小单位)Windows AllocatedBaseSize 是用来衡量Windows 操作系统中分配内存的基址大小的单位。

在操作系统中,内存是一种重要的资源,用于存储程序和数据。

内存的分配是指将物理内存分配给进程或应用程序,以供其执行。

Windows 操作系统使用一种称为“分段”的内存管理机制。

在分段中,内存被分为许多段,每个段都有一个基址和一个大小。

基址是段在内存中的起始位置,而大小则表示段占用的内存空间大小。

Windows AllocatedBaseSize 单位用于表示分配给每个段的内存大小。

在Windows 操作系统中,段的基址和大小是以一种单位为参考的。

这个单位就是Windows AllocatedBaseSize 单位,通常用字节(Byte)来表示。

一个Windows AllocatedBaseSize 单位等于一个字节。

在内存管理中,以字节为单位是很常见的,因为内存地址是以字节为基本单位进行编址的。

为什么要使用Windows AllocatedBaseSize 单位来衡量基址大小呢?这是因为基址的大小直接决定了一个段所能够使用的内存空间的大小。

虽然可以使用较小的单位来衡量内存大小,如比特(bit)、字(Word)等,但这会增加内存管理的复杂性。

使用较大的单位如千字节(KB)或兆字节(MB)来表示基址大小,则会使内存的粒度变得太大,导致内存的浪费。

通过使用Windows AllocatedBaseSize 单位,Windows 操作系统可以更灵活地管理内存。

它可以根据实际需要分配内存,并将其分配给进程和应用程序,以充分利用系统资源。

根据需求,Windows AllocatedBaseSize 单位可以灵活地进行换算,从字节到KB、MB、GB 等。

第7章 Win2000内存管理(2)

第7章  Win2000内存管理(2)

有关虚拟内存管理的性能计数器
性能计数器
Memory:Available Bytes Memory:Committed Bytes Memory:Committed Limit
描述
当前可用的存储空间的大小 提交的私有地址空间数量(一些在 物理内存,一些在页文件中) 不增页文件的大小情况下,可提交 的内存字节数
用户空间内存分配方式

以页面为单位的虚拟内存分配方法
适用于管理大型对象或数据结构,分两个阶段: 保留内存:为线程将来使用所保留的一块虚拟地 址 提交内存:向保留的地址空间提交物理页面 由VirtualAllo和VirtualFree实现。
内存管理API函数

VirtualAlloc:在调用进程的虚拟地址中保留或提
WIN WIN32 WIN WIN32 NT加 应用程 WIN32 应用程 NT加 序 载空 载空 用户进 序 间 间 程空间
DLL(动态 链接库)和 其它共享组 件 低层内存管理、 文件系统、驱动 程序(VxD)程 序
基本 基本 MS基本 MSDOS MSDOS DOS 程序 程序 程序
Байду номын сангаас
64KB
2GB-192KB 0X10000~0X7FFEFFF

虚拟地址空间示例
进程A进驻主存
提交页 (committed) VirtualAllo
A进程的 物理空间
保留页 (reserved) 空闲页 (free)
VirtualFree
系统内存分配



非分页合并内存(Nonpaged PoolSize):包含必 须驻留在内存的内核模式操作的等必须保留在 内存中才能有效工作的占用代码和数据。它们 不能被交换到磁盘上。 分页合并内存(paged PoolSize) :存储迟早需 要的代码和数据内存部分。可交换到磁盘上, 但将其到磁盘上之前,Windows会将交换其他进 程 可在注册表中改变它们的大小 。

windows的内存管理机制

windows的内存管理机制

windows的内存管理机制Windows的内存管理机制在计算机系统中,内存管理是一个非常重要的方面,它负责管理计算机系统中的内存资源,确保程序能够正常运行。

Windows作为一种常见的操作系统,也有自己独特的内存管理机制。

一、虚拟内存管理Windows采用了虚拟内存管理机制,将物理内存和虚拟地址空间进行映射,使得每个进程都拥有独立的地址空间。

这样可以提高内存利用率,同时也增加了系统的稳定性和安全性。

Windows的虚拟内存管理机制通过将虚拟地址空间划分为固定大小的页面,将页面映射到物理内存或磁盘上的页面文件。

当程序需要访问某个虚拟地址时,系统会根据页表的映射关系将对应的页面加载到物理内存中,如果物理内存不足,系统会将不常用的页面置换到磁盘上的页面文件中。

二、内存分页Windows将内存分为固定大小的页,一般为4KB。

这样的页大小既能够满足大部分程序的内存需求,又不会造成过多的内存浪费。

内存分页的好处是可以更灵活地管理内存资源。

系统可以按需分配和回收页面,提高内存利用率。

同时,内存分页也增加了内存的安全性,不同的进程之间无法直接访问对方的内存空间,避免了数据的混乱和安全风险。

三、内存保护Windows的内存管理机制还包括内存保护机制,可以确保不同进程之间的内存空间不会相互干扰。

每个进程都有自己的地址空间,内存保护机制可以防止一个进程访问其他进程的内存空间,增强了系统的稳定性和安全性。

四、内存回收Windows的内存管理机制还包括内存回收机制,当一个进程不再需要某个页面时,系统会将该页面回收,释放给其他进程使用。

内存回收可以提高内存的利用率,避免内存的浪费。

五、内存压缩Windows还引入了内存压缩的机制,当系统内存不足时,会将一部分内存压缩,从而释放出更多的内存空间。

内存压缩可以减少对磁盘页面文件的频繁访问,提高系统的响应速度。

六、内存分配Windows的内存管理机制还包括内存分配机制,用于分配和回收内存资源。

操作系统内存管理常用的数据结构

操作系统内存管理常用的数据结构

操作系统内存管理常用的数据结构操作系统内存管理是操作系统的核心部分之一,其中使用了许多数据结构来管理系统中的内存。

以下是一些常用的操作系统内存管理数据结构:## 页表页表是操作系统中最常用的数据结构之一,在虚拟内存中起着至关重要的作用。

页表是将虚拟地址映射到物理地址的数据结构,它将虚拟地址划分成固定大小的页面,并将每个页面映射到物理内存中的一个页面帧。

操作系统使用页表来实现虚拟内存管理,使得程序可以使用比物理内存更大的地址空间。

## 位图位图是一种简单而有效的数据结构,用于跟踪内存中的空闲和已使用的页面。

在位图中,每个页面都用一个二进制位来表示其状态,0表示空闲,1表示已使用。

当系统需要分配页面时,它会在位图中查找空闲页面。

当页面被释放时,该位会被设置为0,表示该页面现在是空闲的。

## 链表链表是一种常用的数据结构,用于管理内存块的分配和释放。

链表中的每个元素都代表一个内存块,并且包含指向下一个元素的指针。

当系统需要分配内存块时,它会查找链表中第一个空闲块,并将其分配给请求者。

当内存块被释放时,它将被添加到链表的开头,以便在下一次分配时使用。

## 树树是一种更高级的数据结构,用于管理虚拟地址空间的映射。

在树中,每个节点代表一个虚拟地址空间的一部分,并包含指向子节点的指针。

操作系统使用树来管理虚拟地址空间的映射,以便可以快速地查找给定虚拟地址对应的物理地址。

## 总结这些数据结构是操作系统内存管理中最常用的数据结构之一。

每种数据结构都有自己的优点和缺点,在不同的场景下使用不同的数据结构可以提高操作系统的内存管理效率。

windows系统内存计数器解析

windows系统内存计数器解析

windows系统内存计数器解析Windows系统内存计数器理解解析文章分类:操作系统序言内存的使用情况是系统性能中重要的因素之一,频繁的页交换及内存泄露都会影响到系统的性能。

本文主要是描述内存的一些概念、计数器含义,以及可能存在的性能瓶颈。

一些概念① “页交换”是使用称为“页面”的单位,将固定大小的代码和数据块从 RAM 移动到磁盘的过程,其目的是为了释放内存空间。

② 每个Windows进程都拥有4G的虚拟地址空间,在多任务环境下,所有进程使用的内存总和可以超过物理内存。

③ 进程的一部分可能会从物理内存中删除而被暂存在硬盘的文件里(pagefile)。

当进程试图访问这些被交换到pagefile里的内存的时候,系统会产生一个缺页中断(page fault),这时候Windows内存管理器会负责把对应的内存页重新从硬盘调入物理内存。

④ 用于描述物理内存中虚拟页面子集的术语称为一个工作集(Working Set),也叫驻留集。

一共有三种工作集:进程工作集、系统工作集、会话工作集。

(具体概念看后面的计数器)⑤ 非换页池:它是由一些“可保证总是驻留在物理内存中”的虚拟地址范围构成的,由于这些地址范围总是驻留在内存中,因此任何时候都可以访问它们,而不会招致页面错误。

⑥ 换页池:系统空间中的一段虚拟内存区域,它可以被换入和换出系统。

这两种内存池都位于系统地址空间部分,并且被映射到每个进程的虚拟地址空间中。

⑦ 共享内存:对于多个进程可见的内存,或者出现在多个进程虚拟地址空间中的内存。

例如:如果两个进程使用了同样的DLL,那么只需将引用该DLL的代码页面加载到物理内存一次,然后所有映射了该DLL的进程之间共享这些页面。

⑧ MDL(Memory Descrīptor List)是一个结构体,用于描述一片内存区域中的所有物理内存页。

可能存在的性能问题1、Memory\\Page Reads/sec过高,持续大于5。

操作系统之内存分配与回收

操作系统之内存分配与回收

操作系统之内存分配与回收在计算机的世界里,操作系统就像是一个有条不紊的大管家,负责协调和管理各种资源,以确保计算机系统能够高效、稳定地运行。

其中,内存的分配与回收是操作系统中至关重要的任务之一。

想象一下,内存就像是一个大仓库,里面有许多大小不一的房间。

当程序需要运行时,操作系统要给它分配一个合适的房间来存放数据和指令;当程序结束运行后,操作系统又要把这个房间收回来,以便给其他程序使用。

这个过程听起来简单,但实际上涉及到许多复杂的策略和算法。

首先,我们来谈谈内存分配。

当一个程序被启动时,操作系统需要为它分配一定的内存空间。

这可不是随便找个地方就行,而是要根据程序的需求和系统的当前状况来进行精心安排。

一种常见的内存分配方式是连续分配。

这就好比在仓库里划出一块连续的区域给程序使用。

比如,程序 A 需要 100MB 的内存,操作系统就在内存中找到一段连续的100MB 空间分配给它。

这种方式简单直观,但是容易产生内存碎片。

就像仓库里被划分了很多块区域后,剩下一些小块的、不连续的空间,很难再被利用起来。

为了解决连续分配的问题,又出现了分页式和分段式的内存分配方法。

分页式就像是把内存切成固定大小的页面,程序被分成同样大小的页,然后根据需要将这些页分配到内存中。

这样可以更灵活地利用内存,减少碎片的产生。

分段式则是根据程序的逻辑结构,将其分成不同的段,如代码段、数据段等,然后分别进行分配。

除了这些基本的分配方式,还有一些更高级的策略,比如伙伴系统。

它把内存分成大小不同的块,通过特定的算法来进行分配和合并,以提高内存的利用率。

接下来,我们再看看内存回收。

当一个程序结束运行或者不再需要某些内存时,操作系统就要把之前分配给它的内存回收回来。

这可不是简单地把标记清除就行,还需要处理一些复杂的情况。

比如,如果回收的内存与相邻的空闲内存可以合并成更大的连续空闲区域,那么操作系统就会进行合并操作,以方便后续的分配。

这就像整理仓库,把相邻的空闲空间整合在一起,能放下更大的东西。

windows操作系统原理

windows操作系统原理

windows操作系统原理Windows操作系统是一种广泛应用于个人电脑和企业服务器的操作系统。

它的原理涉及了许多方面,包括文件管理、内存管理、进程调度等。

本文将通过对这些原理的详细讲解,帮助读者深入了解Windows操作系统的工作原理。

一、文件管理Windows操作系统通过文件管理功能来管理计算机中的各种文件。

它使用了分层的文件系统结构,最顶层是文件夹,文件夹可以包含多个文件和子文件夹。

每个文件都有一个唯一的文件名和扩展名。

Windows操作系统通过文件系统提供的API(应用程序接口),实现了对文件的创建、读取、写入和删除等操作。

此外,Windows还支持文件的属性设置,比如文件的只读属性、隐藏属性等。

二、内存管理内存管理是操作系统的一个重要功能,Windows通过虚拟内存管理来实现对内存的有效利用。

虚拟内存是将计算机的硬盘空间作为辅助存储器,当物理内存不足时,可以将部分内存中的数据转移到硬盘上。

Windows通过分页机制将内存划分为等大小的页,并将物理内存和虚拟内存之间进行映射。

内存中的每个页都有一个页表,用来记录该页在物理内存或硬盘中的位置。

当程序需要访问某个页时,Windows会根据页表将其加载到物理内存或从硬盘上取出。

三、进程调度进程是计算机中正在运行的程序的实例,进程调度是操作系统对各个进程进行分配CPU时间的过程。

Windows操作系统使用了多任务调度的方式,即同时运行多个进程并共享CPU资源。

Windows通过任务管理器来监控和管理进程,任务管理器可以显示当前运行的进程列表,并提供了结束进程和优先级调整等功能。

Windows操作系统通过时间片轮转和优先级调度算法来决定进程的执行顺序,并保证每个进程都能获得公平的CPU时间。

四、设备管理Windows操作系统支持多种硬件设备的管理和驱动程序的加载。

设备管理涉及到设备的初始化、配置和控制等功能。

Windows通过设备管理器来管理和监控各个硬件设备,设备管理器可以显示计算机中安装的设备,并提供了设备的属性设置、驱动程序的升级等功能。

windows存储空间的管理方法

windows存储空间的管理方法

windows存储空间的管理方法
Windows操作系统有多种管理存储空间的方法。

以下是一些
常见的管理方法:
1. 使用磁盘清理工具:Windows自带了一个磁盘清理工具,
可以帮助用户删除临时文件、浏览器缓存、回收站中的文件等,从而释放存储空间。

用户可以在文件资源管理器中右键点击硬盘驱动器,选择“属性”,然后点击“磁盘清理”按钮来运行该工具。

2. 卸载无用的程序:从控制面板中的“程序和功能”选项可以查看并卸载不再需要的程序。

这样可以释放掉这些程序占用的存储空间。

3. 移动文件到另一个驱动器或外部存储设备:可以将一些不常用的文件或文件夹(如大型媒体文件、旧的文档等)移动到其他驱动器或外部存储设备上。

这样可以释放主要驱动器的存储空间。

4. 使用云存储服务:可以将部分文件、照片、视频等上传至云存储服务,如OneDrive、Google云端硬盘等。

这样可以将文
件存储在云端,释放本地存储空间。

5. 清理系统备份和恢复点:Windows会定期创建系统备份以
及恢复点,这些文件可以占用大量的存储空间。

可以使用系统的“备份和恢复”功能来删除旧的备份和恢复点,从而释放存储空间。

6. 压缩文件和文件夹:Windows操作系统中有一个压缩功能,可以将文件或文件夹压缩成更小的文件大小,从而节省存储空间。

用户可以右键点击文件或文件夹,选择“属性”,然后在“高级”选项卡中勾选“压缩内容以节省磁盘空间”。

总之,通过以上这些方法,用户可以有效地管理和释放Windows操作系统中的存储空间。

内存管理有哪几种方式

内存管理有哪几种方式

内存管理有哪⼏种⽅式内存管理有块式管理,页式管理,段式和段页式管理。

现在常⽤段页式管理。

块式管理:把主存分为⼀⼤块、⼀⼤块的,当所需的程序⽚断不在主存时就分配⼀块主存空间,把程序⽚断load⼊主存,就算所需的程序⽚度只有⼏个字节也只能把这⼀块分配给它。

这样会造成很⼤的浪费,平均浪费了50%的内存空间,但是易于管理。

页式管理:把主存分为⼀页⼀页的,每⼀页的空间要⽐⼀块⼀块的空间⼩很多,显然这种⽅法的空间利⽤率要⽐块式管理⾼很多。

段式管理:把主存分为⼀段⼀段的,每⼀段的空间⼜要⽐⼀页⼀页的空间⼩很多,这种⽅法在空间利⽤率上⼜⽐页式管理⾼很多,但是也有另外⼀个缺点。

⼀个程序⽚断可能会被分为⼏⼗段,这样很多时间就会被浪费在计算每⼀段的物理地址上。

段页式管理:结合了段式管理和页式管理的优点。

将程序分成若⼲段,每个段分成若⼲页。

段页式管理每取⼀数据,要访问3次内存。

分页和分段有什么区别(内存管理)段式存储管理是⼀种符合⽤户视⾓的内存分配管理⽅案。

在段式存储管理中,将程序的地址空间划分为若⼲段(segment),如代码段,数据段,堆栈段;这样每个进程有⼀个⼆维地址空间,相互独⽴,互不⼲扰。

段式管理的优点是: 没有内碎⽚(因为段⼤⼩可变,改变段⼤⼩来消除内碎⽚)。

但段换⼊换出时,会产⽣外碎⽚(⽐如4k的段换5k的段,会产⽣1k的外碎⽚)页式存储管理⽅案是⼀种⽤户视⾓内存与物理内存相分离的内存分配管理⽅案。

在页式存储管理中,将程序的逻辑地址划分为固定⼤⼩的页(page),⽽物理内存划分为同样⼤⼩的帧,程序加载时,可以将任意⼀页放⼊内存中任意⼀个帧,这些帧不必连续,从⽽实现了离散分配。

页式存储管理的优点是:没有外碎⽚(因为页的⼤⼩固定),但会产⽣内碎⽚(⼀个页可能填充不满)。

两者的不同点:⽬的不同:分页是由于系统管理的需要⽽不是⽤户的需要,它是信息的物理单位;分段的⽬的是为了能更好地满⾜⽤户的需要,它是信息的逻辑单位,它含有⼀组其意义相对完整的信息;⼤⼩不同:页的⼤⼩固定且由系统决定,⽽段的长度却不固定,由其所完成的功能决定;地址空间不同:段向⽤户提供⼆维地址空间;页向⽤户提供的是⼀维地址空间;信息共享:段是信息的逻辑单位,便于存储保护和信息的共享,页的保护和共享受到限制;内存碎⽚:页式存储管理的优点是没有外碎⽚(因为页的⼤⼩固定),但会产⽣内碎⽚(⼀个页可能填充不满); ⽽段式管理的优点是没有内碎⽚(因为段⼤⼩可变,改变段⼤⼩来消除内碎⽚)。

windows中memory page概念

windows中memory page概念

windows中memory page概念
在Windows操作系统中,内存页面(memory page)是内存管理的基本单位。

内存页面的大小通常是4KB,但在某些操作系统中也可以是其他大小。

当应用程序需要加载到内存中时,操作系统将分配一定数量的内存页面来存储该程序的代码和数据。

程序访问内存时,实际上是访问这些内存页面。

内存页面也与虚拟内存机制密切相关。

虚拟内存是一种管理物理内存和磁盘存储之间交换数据的技术。

当物理内存不足以容纳所有需要执行的程序和数据时,操作系统会将部分内容写入磁盘,然后从磁盘中读取其他程序和数据到物理内存中。

这些被写入磁盘的内存页面称为页面交换(paging),而被从磁盘读入内存的页面称为页面换入(page in)。

内存页面的使用还涉及到内存保护和权限管理。

操作系统可以为不同的内存页面设置不同的访问权限,以保护敏感数据。

此外,操作系统还可以使用页面表(page table)来跟踪每个页面的物理存储位置和访问权限信息。

总之,内存页面在Windows中是内存管理的基本单元,用于存储程序和数据,并与虚拟内存机制、内存保护和权限管理等方面紧密相关。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一页式管理1 页式管理的基本原理将各进程的虚拟空间划分成若干个长度相等的页(page),页式管理把内存空间按页的大小划分成片或者页面(page frame),然后把页式虚拟地址与内存地址建立一一对应页表,并用相应的硬件地址变换机构,来解决离散地址变换问题。

页式管理采用请求调页或预调页技术实现了内外存存储器的统一管理。

它分为1 静态页式管理。

静态分页管理的第一步是为要求内存的作业或进程分配足够的页面。

系统通过存储页面表、请求表以及页表来完成内存的分配工作。

静态页式管理解决了分区管理时的碎片问题。

但是,由于静态页式管理要求进程或作业在执行前全部装入内存,如果可用页面数小于用户要求时,该作业或进程只好等待。

而且作业和进程的大小仍受内存可用页面数的限制。

2 动态页式管理。

动态页式管理是在静态页式管理的基础上发展起来的。

它分为请求页式管理和预调入页式管理。

优点:没有外碎片,每个内碎片不超过页大小。

一个程序不必连续存放。

便于改变程序占用空间的大小(主要指随着程序运行而动态生成的数据增多,要求地址空间相应增长,通常由系统调用完成而不是操作系统自动完成)。

缺点:程序全部装入内存。

要求有相应的硬件支持。

例如地址变换机构,缺页中断的产生和选择淘汰页面等都要求有相应的硬件支持。

这增加了机器成本。

增加了系统开销,例如缺页中断处理机,请求调页的算法如选择不当,有可能产生抖动现象。

虽然消除了碎片,但每个作业或进程的最后一页内总有一部分空间得不到利用果页面较大,则这一部分的损失仍然较大。

二段式管理的基本思想把程序按内容或过程(函数)关系分成段,每段有自己的名字。

一个用户作业或进程所包含的段对应一个二维线形虚拟空间,也就是一个二维虚拟存储器。

段式管理程序以段为单位分配内存,然后通过地址影射机构把段式虚拟地址转换为实际内存物理地址。

程序通过分段(segmentation)划分为多个模块,如代码段、数据段、共享段。

其优点是:可以分别编写和编译。

可以针对不同类型的段采取不同的保护。

可以按段为单位来进行共享,包括通过动态链接进行代码共享。

三段页式管理的实现原理1 虚地址的构成一个进程中所包含的具有独立逻辑功能的程序或数据仍被划分为段,并有各自的段号s。

这反映相继承了段式管理的特征。

其次,对于段s中的程序或数据,则按照一定的大小将其划分为不同的页。

和页式系统一样,最后不足一页的部分仍占一页。

这反映了段页式管理中的页式特征。

从而,段页式管理时的进程的虚拟地址空间中的虚拟地址由三部分组成:即段号s,页号P和页内相对地址d。

虚拟空间的最小单位是页而不是段,从而内存可用区也就被划分成为着干个大小相等的页面,且每段所拥有的程序和数据在内存中可以分开存放。

分段的大小也不再受内存可用区的限制。

2 段表和页表为了实现段页式管理,系统必须为每个作业或进程建立一张段表以管理内存分配与释放、缺段处理、存储保护相地址变换等。

另外,由于一个段又被划分成了若干页,每个段又必须建立一张页表以把段中的虚页变换成内存中的实际页面。

显然,与页式管理时相同,页表中也要有相应的实现缺页中断处理和页面保护等功能的表项。

另外,由于在段页式管理中,页表不再是属于进程而是属于某个段,因此,段表中应有专项指出该段所对应页表的页表始址和页表长度。

3 动态地址变换过程在一般使用段页式存储管理方式的计算机系统中,都在内存中辟出一块固定的区域存放进程的段表和页表。

因此,在段页式管理系统中,要对内存中指令或数据进行一次存取的话,至少需要访问三次以上的内存:第一次是由段表地址寄存器得段表始址后访问段表,由此取出对应段的页表在内存中的地址。

第二次则是访问页表得到所要访问的物理地址。

第三次才能访问真正需要访问的物理单元。

显然,这将使CPU的执行指令速度大大降低。

为了提高地址转换速度,设置快速联想寄存器就显得比段式管理或页式管理时更加需要。

在快速联想寄存器中,存放当前最常用的段号s、页号p和对应的内存页面与其它控制用栏目。

当要访问内存空间某一单元时,可在通过段表、页表进行内存地址查找的同时,根据快速联想寄存器查找其段号和页号。

如果所要访问的段或页在快速联想寄存器中,则系统不再访问内存中的段表、页表而直接把快速联想寄存器中的值与页内相对地址d拼接起来得到内存地址。

总之,因为段页式管理是段式管理的页式管理方案结合而成的,所以具有它们二者的优点。

但反过来说,由于管理软件的增加,复杂性和开销也就随之增加了。

另外,需要的硬件以及占用的内存也有所增加。

更重要的是,如果不采用联想寄存器的方式提高CPU的访内速度,将会使得执行速度大大下降。

内存管理器是Windows 2000/XP执行体的一部分,位于Ntoskrnl.exe文件中。

在硬件抽象层(HAL)中没有内存管理器的任何部分。

它由以下几个部分组成:·一组执行体系统服务程序,用于虚拟内存的分配、回收和管理。

大多数这些服务都是以Win32API或核心态的设备驱动程序接口形式出现。

·一个转换无效和访问错误陷阱处理程序,用于解决硬件检测到的内存管理异常,并代表进程将虚拟页面装入内存。

·运行在六个不同的核心态系统线程上下文中的几个关键组件:工作集管理器(working setmanager)(优先级为16) 平衡集管理器(内核创建的系统线程)每秒钟调用它一次。

当空闲内存低于某一界限时,便启动所有的内存管理策略,如工作集的修整、老化和已修改页面的写入等。

进程/堆栈交换程序(process/stackswapper)(优先级为23) 完成进程和内核线程堆栈的换入和换出操作。

当需要进行换人和换出操作时,平衡集管理器和内核中的线程调度代码将唤醒该线程。

已修改页面写入器(modifiedpagewriter)(优先级为17) 将修改链表上的“脏”页写回到适当的页文件。

需要减小修改链表的大小时,此线程将被唤醒。

映射页面写入器(mappedpagewriter)(优先级为17) 将映射文件中脏页写回磁盘。

需要减小修改链表的大小,或映射文件中某些页面在修改链表中超过了5分钟时,它将被唤醒。

废弃段线程(dereference segmentthread)(优先级为18) 负责系统高速缓存和页面文件的扩大和缩小。

(例如,如果没有虚拟地址空间满足分页缓冲池的增加,该线程将减小系统高速缓存的大小。

零页线程(zeropagethread)(优先级为0》将空闲链表中的页面清零,以便有足够的零页面满足将来的零页需求。

正如其他所有的Windows:2000/XP.执行程序组件一样;内存管理器是完全可重人的,它支持多进程并发执行。

为了实现可重入,内存管理器使用了几个不同的内部同-步机制来控制它自身数据结构的访问,如旋转锁和执行程序资源。

下面将分别介绍Windows 2000/XP内存管理系统,包括进程虚存空间的布局、基于Intel x86体系结构的地址变换过程、分配和回收虚拟内存的系统服务、工作集机制和物理内存的管理,着重描述内存管理机构的组件、关键的数据结构以及相应的算法。

最后+还介绍了内存保护、写时复制以及地址窗口扩展等技术。

每个进程理论上都有4G的虚拟空间(其实只有< 2G,顶部是系统内核区映射地址空间)。

进程实际使用的空间当然远远不到2G,系统给每个进程一个内存映射分配表(以页为计量单位,一页4K),装入一个程序(EXE)的时候,将数据段代码段都从硬盘装入,同时填写内存映射表(物理内存-》虚拟线性内存),所以程序执行的时候看似都是0~4G的访问,但实际上每次访问都有查表隐射到物理内存的过程)。

——这点是由当前的CPU架构决定的,跟操作系统没关系,当然有实模式虚模式分。

物理内存的大小跟虚拟地址空间无关,因为运行时候都是虚拟线性地址空间。

即使当前系统所有进程的数据程序等要求空间超出物理内存大小,系统也有硬盘上的虚拟内存——这个可以非常大,足够空间需求。

系统将当前运行进程的页面放入物理内存,将很久不运行的进程相关数据给倒腾到硬盘上去。

所以如果内存小的时候系统打开很多程序就很慢,这就是内存-硬盘来回折腾花费时间。

* 5.3.3 使用全局和局部函数分配和释放内存**************************************//* 头文件*/#include <windows.h>#include <stdio.h>/************************************** int main(void)* 功能演示Global*函数的使用** 参数无***************************************/int main(void){LPVOID lpMem; //内存地址HGLOBAL hMem; //内存句柄SIZE_T sizeMem; //内存大小UINT uFlags; //属性//分配内存lpMem = (LPVOID)GlobalAlloc(GPTR,1000);//将数据复制到内存中lstrcpy(lpMem,"this is a string");//获得内存属性,打印uFlags = GlobalFlags(lpMem);printf("内存中的内容:\"%s\",内存地址:0x%.8x,内存属性:%u\n", lpMem,lpMem,uFlags);//释放GlobalFree(lpMem);//分配内存,获取信息hMem = GlobalAlloc(GMEM_MOVEABLE,1000);sizeMem = GlobalSize(hMem);uFlags = GlobalFlags(hMem);//打印信息printf("内存大小:%d,内存句柄:0x%.8x,内存属性:%u\n", sizeMem,hMem,uFlags);//锁定lpMem = GlobalLock(hMem);//释放GlobalFree(hMem);return 0;}**************************************//* 头文件*/#include <windows.h>#include <stdio.h>/* 全局变量*/HANDLE hHeap;/* 函数申明*/DWORD WINAPI ThreadProc(LPVOID lpParameter);/************************************** int main(int argc, PCHAR argv[])* 功能演示堆的使用** 参数argv[1]如果为“-s”那么使用进程堆* argv[1]如果为“-a”那么创建一个可变大小的堆* argv[1]如果为其他,那么创建有最大大小的堆。

相关文档
最新文档