Tuesday, November 14, 2023

Virtual Memory


Virtual Memory

Virtual memory is a technique that allows the execution of processes that are not completely in memory. One major advantage of this scheme is that programs can be larger than physical memory.

Virtual memory technique frees programmers from the concern of memory storage limitations.

Virtual memory also allows the sharing of files and memory by multiple processes, with several benefits:
  • System libraries can be shared by mapping them into the virtual address space of more than one process.
  • Processes can also share virtual memory by mapping the same block of memory to more than one process.
  • Process pages can be shared during a fork( ) system call, eliminating the need to copy all of the pages of the original ( parent ) process.

The ability to load only the portions of processes that were actually needed ( and only when they were needed ) has several benefits:

  • Programs could be written for a much larger address space ( virtual memory space ) than physically exists on the computer.
  • Because each process is only using a fraction of their total address space, there is more memory left for other programs, improving CPU utilization and system throughput.
  • Less I/O is needed for swapping processes in and out of RAM, speeding things up.

Virtual memory involves the separation of logical memory as prescribed by users from physical memory. This separation allows an extremely large virtual memory to be provided for programmers when only a smaller physical memory is available. Virtual address space of a process refers to the logical view of how a process is stored in memory. The actual physical layout is controlled by the process's page table.

A great hole in the middle of the address space is never used, unless the stack and/or the heap grow to fill the hole. Virtual address spaces that includes holes are known as Sparse address spaces.




0 comments:

Post a Comment

Data Structures with C++



NET/SET/CS PG



Operating Systems



Computer Networks



JAVA



Design and Analysis of Algorithms



Programming in C++

Top