COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION

The basic mechanism for reading a word from memory
involves the translation of a virtual, or logical, address, consisting of page number
and offset, into a physical address, consisting of frame number and offset, using a
page table. Because the page table is of variable length, depending on the size of the
process, we cannot expect to hold it in registers. Instead, it must be in main memory
to be accessed. Figure 8.16 suggests a hardware implementation of this scheme.
When a particular process is running, a register holds the starting address of the
page table for that process. The page number of a virtual address is used to index
that table and look up the corresponding frame number. This is combined with the
offset portion of the virtual address to produce the desired real address.

In most systems, there is one page table per process. But each process can
occupy huge amounts of virtual memory. For example, in the VAX architecture,
each process can have up to 2
31
= 2 Gbytes of virtual memory. Using 2
9
= 512@byte
pages, that means that as many as 2
22
page table entries are required per process.
Clearly, the amount of memory devoted to page tables alone could be unacceptably
high. To overcome this problem, most virtual memory schemes store page tables in
virtual memory rather than real memory. This means that page tables are subject to
paging just as other pages are. When a process is running, at least a part of its page
table must be in main memory, including the page table entry of the currently execut-
ing page. Some processors make use of a two-level scheme to organize large page
tables. In this scheme, there is a page directory, in which each entry points to a page
table. Thus, if the length of the page directory is X, and if the maximum length of a
page table is Y, then a process can consist of up to X
*
Y pages. Typically, the maxi-
mum length of a page table is restricted to be equal to one page. We will see an exam-
ple of this two-level approach when we consider the Pentium II later in this chapter.

An alternative approach to the use of one- or two-level page tables is the use
of an inverted page table structure (Figure 8.17). Variations on this approach are
used on the Power PC, Ultra SPARC, and the IA-64 architecture. An implementa-
tion of the Mach OS on the RT-PC also uses this technique.

In this approach, the page number portion of a virtual address is mapped into
a hash value using a simple hashing function.
2
The hash value is a pointer to the
inverted page table, which contains the page table entries. There is one entry in the

2

A hash function maps numbers in the range 0 through M into numbers in the range 0 through N, where
M > N . The output of the hash function is used as an index into the hash table. Since more than one input
maps into the same output, it is possible for an input item to map to a hash table entry that is already
occupied. In that case, the new item must overflow into another hash table location. Typically, the new
item is placed in the first succeeding empty space, and a pointer from the original location is provided to
chain the entries together. See Appendix C for more information on hash functions.

inverted page table for each real memory page frame rather than one per virtual
page. Thus a fixed proportion of real memory is required for the tables regardless of
the number of processes or virtual pages supported. Because more than one virtual
address may map into the same hash table entry, a chaining technique is used for
managing the overflow. The hashing technique results in chains that are typically
short—between one and two entries. The page table’s structure is called inverted
because it indexes page table entries by frame number rather than by virtual page
number.

Virtual Memory PAGE TABLE STRUCTURE的更多相关文章

  1. Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system

    A processor including a virtualization system of the processor with a memory virtualization support ...

  2. System and method to prioritize large memory page allocation in virtualized systems

    The prioritization of large memory page mapping is a function of the access bits in the L1 page tabl ...

  3. Page (computer memory) Memory segmentation Page table 虚拟地址到物理地址的转换

    A page, memory page, or virtual page is a fixed-length contiguous block of virtual memory, described ...

  4. reds Virtual Memory

    Virtual Memory technical specification This document details the internals of the Redis Virtual Memo ...

  5. Linux Process Virtual Memory

    目录 . 简介 . 进程虚拟地址空间 . 内存映射的原理 . 数据结构 . 对区域的操作 . 地址空间 . 内存映射 . 反向映射 .堆的管理 . 缺页异常的处理 . 用户空间缺页异常的校正 . 内核 ...

  6. 初识virtual memory

    一.先谈几个重要的东西 virtual memory是一个抽象概念,书上的原文是"an abstraction of main memory known as virtual memory& ...

  7. Virtual Memory DEMAND PAGING - The avoidance of thrashing was a major research area in the 1970s and led to a vari- ety of complex but effective algorithms.

    COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION With the use of pagin ...

  8. Understanding Virtual Memory

    Understanding Virtual Memory by Norm Murray and Neil Horman Introduction Definitions The Life of a P ...

  9. 深入虚拟内存(Virtual Memory,VM)

    我们应该知道物理内存(Physical Memory)指的是硬件上的内存,即 RAM.它通常指的是插在主板上的内存条,给进程提供临时数据存储的设备.因为 CPU 可以直接从物理内存中读取数据和指令,所 ...

随机推荐

  1. Java Hour 60 逃不开的GC

    第一个大家都应该知道的概念就是应用程序中不断的new 分配了内存,却没有显式的代码去清理内存,而执行这个清理过程的自动垃圾回收的过程就叫做GC. 但是,JVM 说明并没有要求一定要有GC,JVM 说明 ...

  2. Lua和C之间的交互

    转自:http://blog.csdn.net/sumoyu/article/details/2592693 (一) Lua 调C函数 什么样类型的函数可以被Lua调用   typedef int ( ...

  3. JSON详解(转)

    JSON详解 JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.XML也是一种数据交换格 ...

  4. 【JUnit 报错】 method initializationerror not found:JUnit4单元测试报错问题

    今天是用JUnit测试一段代码,报错method initializationerror not found::出现如下问题: 双击这个就显示出现如下的错误: 查询网上,说是junit版本的问题: 那 ...

  5. POJ2817 WordStack(状压DP)

    题目给几个字符串,可以给它们添加前导空格,然后排列,计算每一个字符串和前一个字符串相同非空格字符相等的个数,求可能的最大个数. 状态DP: d[S][i][j]表示已经用的字符串集合S且排列的最后一个 ...

  6. List<T>的使用

    定义:List<T>类表示可通过索引访问的对象的强类型列表,提供用于对列表进行搜索.排序和操作的方法. 作用:泛型最常见的用途是泛型集合我们在创建列表类时,列表项的数据类型可能是int,s ...

  7. 详解Adorner Layer(zz)

    首先,千万不要觉得Adorner离你很远,因为最简单的WPF界面也会用到Adorner.在WPF中,下面的几个很常见的功能,都是用Adorner实现的.     1. 光标(caret)     2. ...

  8. 三十分钟掌握STL

    这是本小人书.原名是<using stl>,不知道是谁写的.不过我倒觉得很有趣,所以化了两个晚上把它翻译出来.我没有对翻译出来的内容校验过.如果你没法在三十分钟内觉得有所收获,那么赶紧扔了 ...

  9. BZOJ 1067 & Interval_Tree

    1067: [SCOI2007]降雨量 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 3099 Solved: 800 Description 我们常常 ...

  10. POJ 1523 (割点+连通分量)

    题目链接:http://poj.org/problem?id=1523 题目大意:连通图,找图中割点,并计算切除该割点后,图中的连通分量个数. 解题思路: POJ的数据很弱. Tarjan法求割点. ...