Outline 1/30/98

  • Last time: IPC ( inter process communication: message passing)

  • Admin: Revising schedule for midterm and program 2

  • Objective: [Major context switch] Introducing the topic of Memory Management.

    Issues

  • Exactly what kind of object is it that we need to load into memory for each process?
    What is an address space?

  • Multiprogramming was justified on the grounds of CPU utilization (CPU/IO overlap).
    How is the memory resource to be shared among all those processes we've created?

  • What is the memory hierarchy? What is the OS's role in managing levels of it?

  • How can one address space be protected from operations performed by other processes?

  • In the implementation of memory management, what kinds of overheads (of time, of wasted space, of the need for extra hardware support) are introduced?
    How can we fix (or hide) some of these problems?

    From Program to Executable

    The executable file resulting from compiling your source code and linking with other compiled modules contains

  • machine language instructions (as if addresses started at zero)

  • initialized data

  • how much space is required for uninitialized data

    Executable to Address Space

  • In addition to the code and initialized data that can be copied from executable file, addresses must be reserved for areas of uninitialize data and stack when the process is created

  • When and how do the real physical addresses get assigned?

    Memory Hierarchy

  • Analogy: Airport baggage Allocation to Physical Memory

    Assume contiguous allocation

    Static loading vs. relocation
    Base and limit registers as the simplest dynamic address translation scheme (hardware assist).

    Partition memory: fixed or variable (first, best fits)

    Fragmentation (external & internal)

    Compaction

    Paging

  • Non-contiguous allocation in fixed sized pages

  • Dynamic address translation through page table lookup

  • another case of indirection (as "the answer")

  • TLB to speed up lookup (another case of caching as "the answer")