内存管理基础 | Memory Management Basics

分页 | Paging

定义 | Definition

分页是一种内存管理技术,将物理内存分割成固定大小的块,称为页框(Page Frames),并将进程的逻辑地址空间分割成同样大小的块,称为页(Pages)。

Paging is a memory management technique that divides physical memory into fixed-size blocks called page frames and divides a process’s logical address space into blocks of the same size called pages.

工作原理 | Working Principle

  • 页表 | Page Table:页表用于映射进程的逻辑页到物理页框。 The page table maps a process’s logical pages to physical page frames.
  • 逻辑地址 | Logical Address:逻辑地址由页号(Page Number)和页内偏移量(Offset)组成。 The logical address consists of a page number and an offset within the page.
  • 物理地址 | Physical Address:页表将逻辑页号转换为物理页框号,再加上偏移量得到物理地址。 The page table converts the logical page number to a physical page frame number, which, combined with the offset, gives the physical address.

示例 | Example

逻辑地址 (Logical Address):
  Page Number (P): 4 bits
  Offset (D): 12 bits
 
物理地址 (Physical Address):
  Frame Number (F): 4 bits
  Offset (D): 12 bits
 
页表 (Page Table):
  Page 0 -> Frame 5
  Page 1 -> Frame 9
  ...
  Page n -> Frame m

优点和缺点 | Advantages and Disadvantages

  • 优点 | Advantages

    • 有效利用内存,减少碎片。
    • Efficient memory utilization, reducing fragmentation.
    • 简化内存分配和管理。
    • Simplifies memory allocation and management.
  • 缺点 | Disadvantages

    • 页表需要额外的存储开销。
    • Page tables require additional storage overhead.
    • 可能引入地址转换开销。
    • May introduce address translation overhead.

分段 | Segmentation

定义 | Definition

分段是一种内存管理技术,将进程的逻辑地址空间划分成大小不同的段,每个段代表一个逻辑单位,如代码段、数据段、堆栈段等。

Segmentation is a memory management technique that divides a process’s logical address space into segments of varying sizes, each representing a logical unit such as code, data, stack, etc.

工作原理 | Working Principle

  • 段表 | Segment Table:段表用于映射进程的逻辑段到物理内存。 The segment table maps a process’s logical segments to physical memory.
  • 逻辑地址 | Logical Address:逻辑地址由段号(Segment Number)和段内偏移量(Offset)组成。 The logical address consists of a segment number and an offset within the segment.
  • 物理地址 | Physical Address:段表将逻辑段号转换为物理内存地址,再加上偏移量得到物理地址。 The segment table converts the logical segment number to a physical memory address, which, combined with the offset, gives the physical address.

示例 | Example

逻辑地址 (Logical Address):
  Segment Number (S): 4 bits
  Offset (D): 12 bits
 
物理地址 (Physical Address):
  Base Address (B): 16 bits
  Offset (D): 12 bits
 
段表 (Segment Table):
  Segment 0 -> Base Address 0x1000
  Segment 1 -> Base Address 0x2000
  ...
  Segment n -> Base Address 0xN000

优点和缺点 | Advantages and Disadvantages

  • 优点 | Advantages

    • 符合程序的逻辑结构。
    • Matches the logical structure of programs.
    • 支持动态增长和收缩。
    • Supports dynamic growth and shrinkage.
  • 缺点 | Disadvantages

    • 可能产生外部碎片。
    • Can cause external fragmentation.
    • 需要复杂的内存管理。
    • Requires complex memory management.

在实际系统中,分段通常与分页结合使用,以克服各自的缺点,提高内存管理的效率和灵活性。

In practical systems, segmentation is often used in conjunction with paging to overcome their respective disadvantages and improve the efficiency and flexibility of memory management.

分段往往用于实现用户程序的逻辑结构,如代码段、数据段、堆栈段等,而分页则用于实现内存的物理管理,提高内存的利用率和碎片管理。

Segmentation is often used to implement the logical structure of user programs, such as code, data, and stack segments, while paging is used for physical memory management to improve memory utilization and fragmentation management.

内存分配和碎片管理 | Memory Allocation and Fragmentation Management

内存碎片 | Memory Fragmentation

  • 内部碎片 | Internal Fragmentation:分配给进程的内存块比实际需要的稍大,剩余部分未被利用。 Occurs when the memory block allocated to a process is slightly larger than required, leaving some portion unused.
  • 外部碎片 | External Fragmentation:空闲内存总量足够,但不连续,无法满足大块内存请求。 Total free memory is sufficient but not contiguous, unable to satisfy large memory requests.

内存分配算法 | Memory Allocation Algorithms

  • 首次适应 | First Fit:分配第一个足够大的空闲块。 Allocates the first free block that is large enough.
  • 最佳适应 | Best Fit:分配最小的足够大的空闲块。 Allocates the smallest free block that is large enough.
  • 最差适应 | Worst Fit:分配最大的空闲块。 Allocates the largest free block.

碎片整理 | Defragmentation

  • 压缩 | Compaction:将已分配的内存块移动到一起,将空闲空间集中。 Moving allocated memory blocks together to consolidate free space.
  • 分页和分段的作用 | Role of Paging and Segmentation: 分页减少了外部碎片,但可能增加内部碎片。 分段可能导致外部碎片,但减少了内部碎片。 Paging reduces external fragmentation but may increase internal fragmentation. Segmentation may lead to external fragmentation but reduces internal fragmentation.

内存保护 | Memory Protection

基础保护机制 | Basic Protection Mechanisms

  • 界限寄存器 | Limit Registers:存储进程的内存范围,防止越界访问。 Store the memory range of a process, preventing out-of-bounds access.
  • 保护位 | Protection Bits:指定内存段的访问权限(读/写/执行)。 Specify access permissions (read/write/execute) for memory segments.

特权级别 | Privilege Levels

  • 用户模式和内核模式 | User Mode and Kernel Mode: 限制用户程序对关键系统资源的访问。 Restrict user programs’ access to critical system resources.
  • 环形保护 | Ring Protection: 多层次的特权级别,如 Intel x86 架构中的 4 个保护环。 Multiple levels of privilege, such as the 4 protection rings in Intel x86 architecture.

总结 | Summary

内存管理是操作系统的核心功能之一,涉及多种技术和策略。分页和分段是两种基本的内存管理方法,各有优缺点。内存分配算法和碎片管理对系统性能有重要影响。内存保护机制确保了系统的安全性和稳定性。理解这些概念对于深入学习操作系统和计算机体系结构至关重要。

Memory management is a core function of operating systems, involving various techniques and strategies. Paging and segmentation are two fundamental memory management methods, each with its own advantages and disadvantages. Memory allocation algorithms and fragmentation management significantly impact system performance. Memory protection mechanisms ensure system security and stability. Understanding these concepts is crucial for in-depth learning of operating systems and computer architecture.