Chapter 7. Memory Management

  • 7.1 Memory Management in the Early Days

  • 7.2 Hardware Support for Virtual Memory

    • 7.2.1 Forward-Mapped Page Tables

    • 7.2.2 Linear Page Tables

    • 7.2.3 Hashed Page Tables

    • 7.2.4 Translation Lookaside Buffers

    • 7.2.5 64-Bit Issues

    • 7.2.6 Virtualization

  • 7.3 Operating-System Issues

    • 7.3.1 General Concerns

    • 7.3.2 Representative Systems

      • Linux

      • Windows

    • 7.3.3 Copy on Write and Fork

    • 7.3.4 Backing Store Issues

  • 7.4 Conclusions

  • 7.5 Exercises

  • 7.6 References

In Chapter 5, we discussed the processor resource; in this chapter we discuss the memory resource. Gaining an understanding of memory management takes us deeply into the shared realm of hardware architecture and software architecture. To make sense of the hardware architecture, we need to understand the software requirements. Similarly, to figure out how an operating system manages memory, we need to understand the underlying hardware.

Memory management is much more than dynamic storage allocation. It involves providing an appropriate memory abstraction and making it work on the available physical resources, usually considered to consist of a high-speed cache, moderate-speed primary storage, and low-speed secondary storage. We begin with a brief history of memory management, introducing some of the more important memory management issues and how they were handled early on. We then focus on the concept of virtual memory, covering its basic architectural features and requirements. We look at the operating-system issues of virtual ...

Get Operating Systems in Depth now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.