Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1920439
  • 博文数量: 261
  • 博客积分: 8073
  • 博客等级: 中将
  • 技术积分: 2363
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-10 15:23
文章分类

全部博文(261)

文章存档

2013年(1)

2012年(1)

2011年(50)

2010年(34)

2009年(4)

2008年(17)

2007年(55)

2006年(99)

分类:

2008-09-20 13:33:42

计算机虚拟内存系统中,页,物理页,虚拟页指一块连续的主存空间,无论是从物理地址空间还是从虚拟地址空间来看都是连续的。页是操作系统执行程序时分配的最小内存单元,并且在主存和辅存之间进行转移。

虚拟内存系统允许未在主存中的页被寻址和使用。如果程序试图存储不在主存中的页时,会产生page fault异常。硬件或OS会从辅存中加载该页到主存。因此,系统可以轻易的允许程序使用大于实际物理内存的地址空间。

页的大小

一般来说,也得大小是由处理器的体系结构决定的。例如在i38632位系统结构中,page的大小是4K

页大小与页表大小的关系

如果系统中page的大小比较小,那么意味着系统中会有更多的页。反之,如果系统中page的大小比较大,那么意味着系统中会有较少的页。即页大小与页表大小成反比。比如32位系统中,假设页大小为4K212),那么页表具有(232-12 = 220)个页表入口。假设页大小为32K215),那么页表具有(232-15 = 217)个页表入口。

页大小与TLB大小

处理器需要维护一个TLB Cache,用于缓存某个虚拟地址到为物理地址的映射,每次内存存取时都会检查该TLBTLB的大小是有限制的,如果发生TLB丢失(即内存存取请求的虚拟地址到物理地址的映射关系不在TLB中),那么就必须对页表进行搜索并更正映射关系,这时一个相对耗时较长的过程。如果系统中页大小较大,那么相同大小的TLB cache可以跟踪更多的内存,避免TLB丢失。

页大小与磁盘存取

当从磁盘进行传输时,磁盘定位会产生延迟。因此,大规模的、次数少的、连续磁盘传输比小规模的、次数多的、非连续的磁盘传输效率高。如果页大小较大,页在磁盘和内存之间的传输相对较快。

程序运行中决定系统的页大小

操作系统允许程序在运行中决定页大小,这样可以帮助程序合理的使用内存、组织数据结构从而更有效的使用内存。

UNIX和基于POSIX的操作系统

 

#include 
#include     // sysconf(3)
 
int main()
{
        printf("The page size for this system is %ld bytes\n", sysconf(_SC_PAGESIZE)); //_SC_PAGE_SIZE is OK too.
        return 0;
}

Windows操作系统

#include 
#include 
 
int main()
{
        SYSTEM_INFO si;
 
        GetSystemInfo(&si);
        printf("The page size for this system is %u bytes\n", si.dwPageSize);
 
        return 0;
}

 

阅读(1215) | 评论(0) | 转发(0) |
0

上一篇:交换空间

下一篇:TLB

给主人留下些什么吧!~~