Skip to main content

What is virtual memory?


I was double checking my notes for 'Virtual Memory' and the definition in my text book is:



Process of allocating a section of secondary storage to act as part of the main memory



Where as Wikipedia says:



Virtual memory is a computer system technique which gives an application program the impression that it has contiguous working memory (an address space)



and (Wikipedia also says)



Note that "virtual memory" is more than just "using disk space to extend physical memory size"



Can anyone offer any clarification as to which is correct?



Answer



Note that "virtual memory" is more than just "using disk space to extend physical memory size"

Virtual memory is a layer of abstraction provided to each process. The computer has, say, 2GB of physical RAM, addressed from 0 to 2G. A process might see an address space of 4GB, which it has entirely to itself. The mapping from virtual addresses to physical addresses is handled by a memory management unit, which is managed by the operating system. Typically this is done in 4KB "pages".


This gives several features:



  1. A process can not see memory in other processes (unless the OS wants it to!)

  2. Memory at a given virtual address may not be located at the same physical address

  3. Memory at a virtual address can be "paged out" to disk, and then "paged in" when it is accessed again.


Your textbook defines virtual memory (incorrectly) as just #3.


Even without any swapping, you particularly need to be aware of virtual memory if you write a device driver for a device which does DMA (direct memory access). Your driver code runs on the CPU, which means its memory accesses are through the MMU (virtual). The device probably does not go through the MMU, so it sees raw physical addresses. So as a driver writer you need to ensure:



  1. Any raw memory addresses you pass to the hardware are physical, not virtual.

  2. Any large (multi page) blocks of memory you send are physically contiguous. An 8K array might be virtually contiguous (through the MMU) but two physically separate pages. If you tell the device to write 8K of data to the physical address corresponding to the start of that array, it will write the first 4K where you expect, but the second 4K will corrupt some memory somewhere. :-(


Comments

Popular Posts

keyboard - Is there any utility/method to change Windows key bindings to type rare chars to currently empty bindings?

I'm currently typing this post with my windows XP machine and (Spanish) keyboard, and I'd like to add some extra symbols to my text. I could open the "char map" windows utility, look for the desired symbols, and paste them. But I'd like something quickier. For example, when I'm using my OSX Mac at work, I can easily add a ©, ™, ® or similar symbols, just pressing some weird ALT-GR + G / H / J, key combinations. In my (Spanish) keyboard mapping, these combinations are empty, as they don't produce any char at all, which, on the other hand, is perfectly normal and desirable. So, I thought: Why couldn't I add some extra key mappings on top of my currently empty ALT-GR + G/J/H Keys in my Spanish keyboard, and thus, being able to quickly type these special symbols? So that's my question: Is there any utility/method to achieve that effect under windows? (My version is XP). I've even googled this for some time but no luck. I've been a long term Hot...

virtualization - How to select paravirtualization interface in VirtualBox?

Given a windows 8 host system (Intel Core i5) and a Linux Fedora host, I would like to determine the optimal setting for the paravirtual interface. Options are none Default Legacy minimal Hyper-V KVM This page suggest the selection is only based on the guest system: The biggest change in VirtualBox 5.0 is the introduction of paravirtualization support, bringing higher performance and time-keeping accuracy to supported guest operating systems (Hyper-V on Windows and KVM on Linux). Is that correct? Answer The VirtualBox Manual , in the section titled Paravirtualization providers explains very clearly when each should be used (emphasis added): Minimal: Announces the presence of a virtualized environment. Additionally, reports the TSC and APIC frequency to the guest operating system. This provider is mandatory for running any Mac OS X guests. KVM: Presents a Linux KVM hypervisor interface which is recognized by Linux kernels starting with version 2.6.25. VirtualBox's implementati...

macos - Visit URL in running Firefox instance from command line in OS X

I have Firefox 3.6 installed on my OS X (10.6) box. I would like to open an URL in the running Firefox instance (in a new tab or window, no matter) from the command line. I tried several ways, neither switches -new-tab , -new-window , -url , or none helped me. I always get the A copy of Firefox is already open. Only one copy of Firefox can be open at a time. error message. Answer running open http://www.superuser.com from the command line will (at least for me) open a new tab to superuser.com in firefox (which is my default browser)

How can I migrate a Windows 10 from BIOS/MBR boot to UEFI/GPT without reinstalling?

I've installed Windows 10 in BIOS mode and use MBR. How can I convert it to use UEFI and GPT without reinstalling Windows 10? Is this possible? Answer In Windows 10 v1703 (Creators Update, Build 15063), there is a tool called MBR2GPT.EXE included which does all steps . Best is to boot from a Win10 v1703 DVD/USB drive to the repair option (WinPE) and run Command prompt (cmd.exe) under repair options . Now use diskpart and list command to see all drives. X:\>diskpart Microsoft DiskPart version 10.0.15063.0 Copyright (C) Microsoft Corporation. On computer: Win10v1703 DISKPART> list disk Disk ### Status Size Free Dyn Gpt -------- ------------- ------- ------- --- --- Disk 0 Online 60 GB 0 B Now look or the disk number where your Windows is installed. This number is important for next step. Now run mbr2gpt /convert /disk:ID with the ID: X:\>mbr2gpt /convert /disk:0 MBR2GPT will now attempt to convert disk 0. If conversion is s...