内存管理(操作系统)
操作系统内存管理将物理内存分配给进程,实现分页和分段,选择哪些页面驻留内存,并回收内存,从而在程序需求和有限的物理RAM之间进行协调。
用 PaperMind 寻找选题即将推出Find papers & topics
Tools & resources
Learn & explore
视频即将推出
Definition
操作系统内存管理是操作系统将物理内存分配给进程、通过分页或分段组织其地址空间,并决定哪些数据保留在内存中而哪些数据保留在后备存储器中的策略和机制的集合。
Scope
本主题涵盖操作系统在管理主内存方面的作用:地址空间布局、连续分配和碎片、分页和分段、页面置换算法(FIFO、LRU、时钟、最优)、帧分配以及防止颠簸的策略。它补充了虚拟内存的硬件视图,侧重于操作系统策略。它不包括硬件转换结构(虚拟内存和分页)和磁盘文件存储(文件系统)。
Core questions
- 操作系统如何将物理内存分配给进程并限制碎片?
- 分页和分段如何组织地址空间?
- 哪种页面置换算法最能近似逐出最不可能很快被使用的页面?
- 如何在进程之间分配帧以保持工作集驻留并避免颠簸?
Key concepts
- 地址空间布局
- 连续分配和碎片
- 分页和分段
- 页面置换算法(FIFO、LRU、时钟、最优)
- 帧分配
- 按需分页
- 颠簸和工作集
- 内存回收
Key theories
- 页面置换和局部性
- 由于逐出未来最不可能使用的页面的理想策略是无法实现的,因此实际算法(LRU、时钟)使用最近使用信息来近似它;它们的有效性取决于工作集模型捕获的局部性。
Mechanisms
操作系统跟踪空闲和已分配内存,并通过通常将内存划分为固定大小的帧的分页机制来映射每个进程的地址空间。当发生页面错误时,它会调入所需的页面,并根据时钟或LRU等置换算法选择一个驻留页面进行逐出。它在进程之间分配帧以保持其工作集驻留;当需求超出容量时,工作集和页面错误频率策略会减少多道程序设计以防止颠簸。
Clinical relevance
有效的内存管理使许多程序能够平稳地共享有限的RAM,对系统吞吐量和响应能力至关重要。糟糕的置换策略或过度承诺会导致颠簸和严重的减速,而内存过量使用、压缩和写时复制等功能则支撑着现代服务器、容器和虚拟机的效率。
History
内存管理从简单的连续分配和覆盖发展到分页和分段,随着虚拟内存技术在20世纪60年代和70年代的成熟而不断演进。丹宁的工作集理论阐明了如何分配帧和避免颠簸,而时钟近似算法等置换算法成为生产操作系统中的标准。
Key figures
- Peter J. Denning
- Abraham Silberschatz
- Andrew S. Tanenbaum
Related topics
Seminal works
- silberschatz2018
- denning1968
- tanenbaum2014os
Frequently asked questions
- 分页和分段有什么区别?
- 分页将内存划分为固定大小的页面和帧,简化了分配并消除了外部碎片。分段将地址空间划分为可变大小的、逻辑上有意义的段(例如代码、堆栈、堆)。有些系统将它们结合起来,在段内进行分页。
- 为什么操作系统不能总是使用最优页面置换策略?
- 最优策略会逐出在最长时间内不会被使用的页面,这需要预知未来。由于操作系统无法预知未来的引用,它会使用近似算法,例如最近最少使用或时钟算法,这些算法通过最近的过去使用情况来推断可能的未来使用情况。