'Diff. between Logical memory and Physical memory

While understanding the concept of Paging in Memory Management, I came through the terms "logical memory" and "physical memory". Can anyone please tell me the diff. between the two ??? Does physical memory = Hard Disk and logical memory = RAM



Solution 1:[1]

There are three related concepts here:

  1. Physical -- An actual device

  2. Logical -- A translation to a physical device

  3. Virtual -- A simulation of a physical device

The term "logical memory" is rarely used because we normally use the term "virtual memory" to cover both the virtual and logical translations of memory.

In an address translation, we have a page index and a byte index into that page.

The page index to the Nth path in the process could be called a logical memory. The operating system redirects the ordinal page number into some arbitrary physical address.

The reason this is rarely called logical memory is that the page made be simulated using paging, becoming a virtual address.

Address transition is a combination of logical and virtual. The normal usage is to just call the whole thing "virtual memory."

We can imagine that in the future, as memory grows, that paging will go away entirely. Instead of having virtual memory systems we will have logical memory systems.

Solution 2:[2]

Not a lot of clarity here thus far, here goes:

Physical Memory is what the CPU addresses on its address bus. It's the lowest level software can get to. Physical memory is organized as a sequence of 8-bit bytes, each with a physical address.

Every application having to manage its memory at a physical level is obviously not feasible. So, since the early days, CPUs introduced abstractions of memory known collectively as "Memory Management." These are all optional, but ubiquitous, CPU features managed by your kernel:

Linear Memory is what user-level programs address in their code. It's seen as a contiguous addresses space, but behind the scenes each linear address maps to a physical address. This allows user-level programs to address memory in a common way and leaves the management of physical memory to the kernel.

However, it's not so simple. User-level programs address linear memory using different memory models. One you may have heard of is the segmented memory model. Under this model, programs address memory using logical addresses. Each logical address refers to a table entry which maps to a linear address space. In this way, the o/s can break up an application into different parts of memory as a security feature (details out of scope for here)

In Intel 64-bit (IA-32e, 64-bit submode), segmented memory is never used, and instead every program can address all 2^64 bytes of linear address space using a flat memory model. As the name implies, all of linear memory is available at a byte-accessible level. This is the most straightforward.

Finally we get to Virtual Memory. This is a feature of the CPU facilitated by the MMU, totally unseen to user-level programs, and managed by the kernel. It allows physical addresses to be mapped to virtual addresses, organized as tables of pages ("page tables"). When virtual memory ("paging") is enabled, tables can be loaded into the CPU, causing memory addresses referenced by a program to be translated to physical addresses transparently. Page tables are swapped in and out on the fly by the kernel when different programs are run. This allows for optimization and security in process/memory management (details out of scope for here)

Keep in mind, Linear and Virtual memory are independent features which can work in conjunction. If paging is disabled, linear addresses map one-to-one with physical addresses. When enabled, linear addresses are mapped to virtual memory.

Notes:

Solution 3:[3]

Physical memory is RAM; Actually belongs to main memory. Logical address is the address generated by CPU. In paging,logical address is mapped into physical address with the help of page tables. Logical address contains page number and an offset address.

Solution 4:[4]

An address generated by the CPU is commonly referred to as a logical address, whereas an address seen by the memory unit—that is, the one loaded into the memory-address register of the memory—is commonly referred to as a physical address

Solution 5:[5]

I'd like to add a simple answer here.

  • Physical Memory : This is the memory that is actually present and every process needs space here to execute their code.
  • Logical Memory: To a user program the memory seems contiguous,Suppose a program needs 100 MB of space in memory,To this program a virtual address space / Logical address space starts from 0 and continues to some finite number.This address is generated by CPU and then The MMU then maps this virtual address to real physical address through some page table or any other way the mapping is implemented.

Please correct me or add some more content here. Thanks !

Solution 6:[6]

The physical address is the actual address of the frame where each page will be placed, whereas the logical address is the address generated by the CPU for each page.

What exactly is a frame?

Processes are retrieved from secondary memory and stored in main memory using the paging storing technique. Processes are kept in secondary memory as non-contiguous pages, which implies they are stored in random locations. Those non-contiguous pages are retrieved into main Memory as a frame by the paging operating system. The operating system divides the memory frame size equally in main memory, and all processes retrieved from secondary memory are stored concurrently.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2
Solution 3 Assem
Solution 4 SaJeet Ali
Solution 5 Thakur Karthik
Solution 6 atif jamshed