50427

Two Processes in Virtual Memory

Question:

I have read about virtual memory . I have a doubt .Suppose there are two processes P and Q . Both will have same virtual memory addressing . They both have their page tables . There will be a system wide page table .then how are these two processes distinguished on RAM if we use a system wide page table ?

Answer1:

Each process has a virtual address space which has a mapping to physical memory but then can also be virtualized to, typically, disk.

Answer2:

It is because virtual address is split into user and kernel space. After boot process is started, paging unit is enabled which suddenly jumps into kernel space virtual address and finally it passes the control to user space. System wide page table is for kernel and each process has its own page table.

When it runs into kernel it uses kernel page table and when switched back to user, it uses user process page table.

Each process has its own page table and thus it differentiate the two process

Answer3:

If there is a system wide pagetable in use all the time, then that cannot work, as there would be only one virtual mapping and the 2 processes would step on each others memory.

*nix systems however, keep one page table per process(simply speaking) and switches between those when the kernel schedules a process to run. That way each process can have the same virtual addresses mapped to different physical addresses, and there's no problem.

Recommend

  • how to install Android virtual appliances (ova files) downloaded from Genymotion into VirtualBox on
  • How to get (programatically) the location of a Windows UAC virtualized file?
  • Is there any way, that I can make Android Emulator run on Azure Virtual Machine?
  • scala.MatchError: java.lang.StackOverflowError (of class java.lang.StackOverflowError)
  • SQL Service Broker: Collecting data from distributed sources.
  • Restrict access to public service many times
  • Why don't we register broadcast receiver for BOOT_COMPLETED events
  • Eclipse won't start
  • How to access Environment Variable from AWS in my spring boot application
  • Could not find goal '' in plugin org.springframework.boot:spring-boot-maven-plugin:1.1.4.R
  • spring-boot disable HTTP methods
  • How to automate user interactive command in chef recipe
  • Module parameter permission
  • Grails 3 - How to publish to Artifactory
  • How to intall Tomcat as a daemon on OS X?
  • Linux over commit heuristic
  • Program crashes when run outside IDE
  • How do I change the kernel/python version for iPython?
  • triggering user space with kernel
  • Android onKey w/ virtual keyboard
  • Django model inheritance, filtering models
  • Scala multiline string placeholder
  • How can I sort a a table with VBA with given text condition?
  • Meteor: Do Something On Email Verification Confirmation
  • Cannot resolve symbol 'MyApi'
  • How to delay loading a property with linq to sql external mapping?
  • How to get address from latitude and longitude android google map v2 [duplicate]
  • Android screen density dpi vs ppi
  • Jenkins: How To Build multiple projects from a TFS repository?
  • Splitting given String into two variables - php
  • JavaScriptCore crash on iOS9
  • 0x202A in filename: Why?
  • using HTMLImports.whenReady not working in chrome
  • Trying to get generic when generic is not available
  • Understanding cpu registers
  • How do I configure my settings file to work with unit tests?
  • How does Linux kernel interrupt the application?
  • Python/Django TangoWithDjango Models and Databases
  • Net Present Value in Excel for Grouped Recurring CF
  • How do I use LINQ to get all the Items that have a particular SubItem?