Memory Management

  • handles or manages primary memory. It moves processes back and forth between the main memory and the disk during execution.

  • keeps track of each and every memory location, regardless of whether it is allocated to some process or free.

  • It checks how much memory is to be allocated to processes.

  • It decides which process will get memory at what time.

  • it tracks whenever memory gets freed up or unallocated, and correspondingly updates the status.

  • The process address space is the set of logical addresses that a process references in its code.

    • For example, when 32-bit addressing is in use, addresses can range from 0 to 0x7fffffff; that is, ²³¹ possible numbers, for a total theoretical size of 2 gigabytes.

  • The operating system takes care of mapping the logical addresses to physical addresses at the time of memory allocation to the program. There are three types of addresses used in a program before and after memory is allocated:

    • Symbolic addresses:

      • The addresses used in a source code.

      • The variable names, constants, and instruction labels are the basic elements of the symbolic address space.

    • Relative addresses:

      • At the time of compilation, a compiler converts symbolic addresses into relative addresses.

    • Physical addresses:

      • The loader generates these addresses at the time when a program is loaded into main memory.

  • Virtual and physical addresses are the same in compile-time and load-time address binding schemes.

  • Virtual and physical addresses differ in execution-time address-binding schemes.

  • The set of all logical addresses generated by a program is referred to as a logical address space.

  • The set of all physical addresses corresponding to these logical addresses is referred to as a physical address space.

Last updated