Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

like image 779
Rajat Saxena Avatar asked Nov 12 '14 16:11

Rajat Saxena


People also ask

What is the difference between physical and logical memory?

The logical address does not exist physically in the memory whereas physical address is a location in the memory that can be accessed physically. Identical logical addresses are generated by Compile-time and Load time address binding methods whereas they differs from each other in run-time address binding method.

What is the difference between logical and physical?

Difference between Logical Address and Physical Address in Operating System. Logical and physical addresses are important terms. The logical address is rendered by CPU while a program is executed, whereas the physical address directs to a location in the memory unit.

What is a logical memory?

Logical memory is the address space, assigned to a logical partition, that the operating system perceives as its main storage.

What is the difference between physical virtual and logical memory?

The logical address is generated by the CPU whereas physical address is computed by the MMU. The logical address does not exist physically in the memory hence it is sometimes known as virtual address whereas the physical address is a location in the memory unit.


2 Answers

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.

like image 54
user3344003 Avatar answered Oct 05 '22 22:10

user3344003


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:

  • This is all linux/x86 specific but the same concepts apply almost everywhere.
  • There are a ton of details I glossed over
  • If you want to know more, read The Intel® 64 and IA-32 Architectures Software Developer Manual, from where I plagiarized most of this
like image 28
John M Naglick Avatar answered Oct 05 '22 20:10

John M Naglick