当前位置:首页 » 文件传输 » 进程访问的页面不在主存中
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

进程访问的页面不在主存中

发布时间: 2022-06-10 03:11:48

㈠ 几种页面置换算法的基本原理及实现方法

收藏推荐 在多道程序的正常运行过程中,属于不同进程的页面被分散存放在主存页框中,当正在运行的进程所访问的页面不在内存时,系统会发生缺页中断,在缺页中断服务程序中会将所缺的页面调入内存,如内存已无空闲页框,缺页中断服务程序就会调用页面置换算法,页面置换算法的目的就是选出一个被淘汰的页面.把内存和外存统一管理的真正目的是把那些被访问概率非常高的页存放在内存中.因此,置换算法应该置换那些被访问概率最低的页,将它们移出内存.1最佳置换算法基本原理:淘汰以后不再需要的或最远的将来才会用到的页面.这是1966年Belady提出的理想算法,但无法实现,主要用于评价其他置换算法.例:分配给某进程的内存页面数是3页,页面地址流如下:7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,其内存动态分配过程如下:7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 17 7 7 2 2 2 2 2 2 2 2 2 2 2 2 2 20 0 0 0 0 0 4 4 4 0 0 0 0 0 0 01 1 1 3 3 3 3 3 3 3 3 1 1 1 12先进先出置换......(本文共计2页) 如何获取本文>>

㈡ 进程内存管理方法

Linux系统提供了复杂的存储管理系统,使得进程所能访问的内存达到4GB。在Linux系统中,进程的4GB内存空间被分为两个部分——用户空间与内核空间。用户空间的地址一般分布为0~3GB(即PAGE_OFFSET,在Ox86中它等于OxC0000000),这样,剩下的3~4GB为内核空间,用户进程通常只能访问用户空间的虚拟地址,不能访问内核空间的虚拟地址。用户进程只有通过系统调用(代表用户进程在内核态执行)等方式才可以访问到内核空间。每个进程的用户空间都是完全独立、互不相干的,用户进程各自有不同的页表。而内核空间是由内核负责映射,它并不会跟着进程改变,是固定的。内核空间的虚拟地址到物理地址映射是被所有进程共享的,内核的虚拟空间独立于其他程序。Linux中1GB的内核地址空间又被划分为物理内存映射区、虚拟内存分配区、高端页面映射区、专用页面映射区和系统保留映射区这几个区域。
对于x86系统而言,一般情况下,物理内存映射区最大长度为896MB,系统的物理内存被顺序映射在内核空间的这个区域中。当系统物理内存大于896MB时,超过物理内存映射区的那部分内存称为高端内存(而未超过物理内存映射区的内存通常被称为常规内存),内核在存取高端内存时必须将它们映射到高端页面映射区。Linux保留内核空间最顶部FIXADDR_TOP~4GB的区域作为保留区。当系统物理内存超过4GB时,必须使用CPU的扩展分页(PAE)模式所提供的64位页目录项才能存取到4GB以上的物理内存,这需要CPU的支持。加入了PAE功能的Intel Pentium Pro及以后的CPU允许内存最大可配置到64GB,它们具备36位物理地址空间寻址能力。由此可见,对于32位的x86而言,在3~4GB之间的内核空间中,从低地址到高地址依次为:物理内存映射区隔离带vmalloc虚拟内存分配器区隔离带高端内存映射区专用页面映射区保留区。

㈢ 操作系统 进程页表

答:对于一级页表,进行地址变换的步骤如下:
(1)虚地址计算出页号和页内偏移量。
(2)根据页号和进程的页表首址,找到对应的页表项,取出帧号. (3)(帧号*页面大小)+页内偏移 形成物理地址。
B答:p=INT(A/L) d=[A]mod L (A为虚地址,L为页面大小,p为页号,d为页内偏移)
(i) p=INT(1052/1024)=1 d=28
根据页号查页表得桢号为4,则该页帧的物理起始地址为: 4*1024=4096,再加页内偏移量28得物理地址为:4096+28=4124
(ii) p=INT(2221/1024)=2 d=173 该页不在内存中,将产生缺页中断。 (iii) p=INT(5499/1024)=5 d=379
根据页号查页表得桢号为0,则该页帧的物理起始地址为: 0*1024=0,再加页内偏移量379得物理地址为:0+379=379

㈣ 有一个虚拟存储系统,分配给某个进程3 页内存(假设开始时内存为空),页面访问序列是2, 3, 2, 1, 5, 2, 4, 5,

根据LRU算法,需要替换上次使用距现在最远的页面。
首先2,3,2这三页进入内存(进程只分配到3个页面,切顺序为由内到外,第二个2进入时不缺页,所以共缺页2次),1进入时,内存不满且内存中没有1这个页面即第1个进入内存,所以顺序是2,3,1(缺页1次);下一个进入的是5,替换3(缺页1次),得到2,1,5;下一个进入的是2,内存中有2号页面,进行下一个页面;下一个进入4,4替换1,得到2,5,4(缺页1次);下一个进入5,内存中有5号页面,进行下一个页面;下一个进入3,3替换2,得到3,5,4(缺页1次);下一次进入2,2替换4,得到3,5,2(缺页1次);后面2号和5号内存中均存在,则不需要替换。所以一共发生了7次缺页.

㈤ 关于虚拟内存中页目录与页表在物理内存中加载的问题

我对Linux操作系统的具体情况不是很熟,回答仅供参考。

首先,物理内存无所谓内核区用户区,所有地址都一样。虚拟的地址空间才分内核区用户区。
处理器通过查看页目录和页表,把虚拟地址换算成物理地址。用户区与内核区的两个不同的虚拟地址对应同一个物理地址也不要紧。
内核区与用户区的真正区别在于普通进程能不能访问该区域中的地址。
在正常情况下,操作系统肯定会把页目录和页表保护起来,可以把它们看作存放在内核区的东西。

编写操作系统时,页目录确实可以放在物理内存中的任何地方(当然偏移必须是1000h的倍数),只要把偏移量填进CR3的高20位就可以了。
Linux内核的页目录放在物理地址0h处,页表紧随其后。0.11版Linux中,所有用户进程和内核用的都是这张页目录。切换进程时,改改页目录项就行了。新版的Linux内核我不太了解,抱歉……
每个页目录项有4字节,高20位储存页表的物理地址,低12位储存页表的属性。

一张页表4KB,这4KB必须是连续的。但是各张页表之间不必连续。Linux创建新进程时,仅仅调用了get_free_page找到一页空内存,把进程页表塞进去而已。
页表不能被普通进程直接访问。访问用户区虚拟地址是看不到进程页表的。
内核的页表前面提到过。它就在内核页目录的后面,物理地址为1000h,虚拟地址为C0001000h。访问用户区的虚拟地址不会看到它。

个人不大擅长表述,恐怕解释得不是很清楚。欢迎追问。

㈥ WINDOWS进程里的"页面错误"这一项是什么作用啊

这和windows系统管理内存的机制有关.页面是操作系统管理内存的单位,通常是4KB,或者更高,整个物理内存被分为页面进行管理。现代计算机普遍支持称为"虚拟内存"的内存管理技术,用以给进程提供超过物理内存限制的存储空间。这种技术允许操作系统把不常用的内存页面上的数据换出到硬盘上,等需要时再读近来,或者说是把磁盘当内存用。假如某程序长期不用某个页面上的数据,操作系统就可能把它换出到磁盘上,而把物理内存分配给别的更需要它的进程。当那个进程再次需要读取该页面的数据时,因为该页面并不在物理内存中,而是在磁盘上,所以读取内存的操作就会出错,也就是页面错误。操作系统在捕获页面错误时,就从磁盘中把上次换出的数据重新读入内存,并重新执行出错的那条指令。因为这时数据已经在内存中,程序就得以继续正常运行。Windows进程的页面错误项就是用来记录页面错误的次数。如果物理内存越少,进程所需的内存越多,那么页面错误也就越多。值得注意的是系统创建进程的时候,甚至不需要把程序从硬盘上读入内存,而只是建立起内存地址和磁盘数据间的映射。这样CPU读取第一条指令的时候就会出一个页面错误。这样的好处就是系统能根据程序实际执行的情况来读取数据,用多少读多少。

㈦ 如何监控Java应用程序的Windows内存使用情况

应用程序很高兴对所有这些活动一无所知。它只知道自己的虚拟地址空间。但是,如果当前在主存中的页面集(称为 驻留集)少于实际要使用的页面集(称为 工作集),应用程序的性能很快就会显着降低。(不幸的是,本文中您将看到,我们要讨论的工具常常交换使用这两个术语,尽管它们指的是完全不同的事物。)
Task Manager 和 PerfMon
我们首先考察两种最常见的工具:Task Manager 和 PerfMon。这两个工具都随 Windows 一起提供,因此由此起步比较容易。
Task Manager
Task Manager 是一种非常见的 Windows 进程监控程序。您可以通过熟悉的 Ctrl-Alt-Delete 组合键来启动它,或者右击任务栏。Processes 选项卡显示了最详细的信息,如图 2 所示。
图 2. Task Manager 进程选项卡
图 2 中显示的列已经通过选择 View --> Select Columns 作了调整。有些列标题非常含糊,但可以在 Task Manager 帮助中找到各列的定义。和进程内存使用情况关系最密切的计数器包括:
Mem Usage(内存使用):在线帮助将其称为进程的工作集(尽管很多人称之为驻留集)——当前在主存中的页面集。但是这个数值包含能够和其他进程共享的页面,因此要注意避免重复计算。比方说,如果要计算共享同一个 DLL 的两个进程的总内存占用情况,不能简单地把“内存使用”值相加。
Peak Mem Usage(内存使用高峰值):进程启动以来 Mem Usage(内存使用)字段的最大值。
Page Faults(页面错误):进程启动以来要访问的页面不在主存中的总次数。
VM Size(虚拟内存大小):联机帮助将其称为“分配给进程私有虚拟内存总数。”更确切地说,这是进程所 提交的内存。如果进程保留内存而没有提交,那么该值就与总地址空间的大小有很大的差别。
虽然 Windows 文档将 Mem Usage(内存使用)称为工作集,但在该上下文中,它实际上指的是很多人所说的驻留集(resident set),明白这一点很重要。您可以在 Memory Management Reference 术语表(请参阅 参考资料)中找到这些术语的定义。 工作集 更通常的含义指的是一个逻辑概念,即在某一点上为了避免分页操作,进程需要驻留在内存中的那些页面。
PerfMon
随 Windows 一起提供的另一种 Microsoft 工具是 PerfMon,它监控各种各样的计数器,从打印队列到电话。PerfMon 通常在系统路径中,因此可以在命令行中输入 perfmon 来启动它。这个工具的优点是以图形化的方式显示计数器,很容易看到计数器随时间的变化情况。
请在 PerfMon 窗口上方的工具栏中单击 + 按钮,这样会打开一个对话框让您选择要监控的计数器,如图 3a 所示。计数器按照 性能对象分成不同的类别。与内存使用关系最密切的两个类是 Memory 和 Process。选中计数器然后单击 Explain 按钮,就可以看到计数器的定义。说明出现在主对话框下方弹出的单独的窗口中。

㈧ 请问任务管理器中每一列的含义是什么

用户名运行该进程的用户帐户。会话标识标识进程所有者的编号。当多个用户登录时,每个用户都有一个唯一的会话标识。CPU 的使用自上次更新以来,进程使用 CPU 的时间百分比(列标题中列为“CPU”)。CPU 时间进程自其启动以来使用的总处理时间(以秒为单位)。内存- 工作集私人工作集中的内存数量与进程正在使用且可以由其他进程共享的内存数量的总和。内存- 峰值工作集进程所使用的工作集内存的最大数量。内存- 工作集增量进程所使用的工作集内存中的更改量。内存- 私人工作集工作集的子集,它专门描述了某个进程正在使用且无法与其他进程共享的内存数量。内存- 提交大小为某进程使用而保留的虚拟内存的数量。内存- 页面缓冲池由内核或驱动程序代表进程分配的可分页内核内存的数量。可分页内存是可写入其他存储媒体(例如硬盘)的内存。内存- 非页面缓冲池由内核或驱动程序代表进程分配的不可分页的内核内存的数量。不可分页的内存是不能写入其他存储媒体的内存。页面错误自某进程启动后该进程生成的页面错误数。进程访问当前不在工作集的内存页面时会出现页面错误。某些页面错误要求从磁盘中检索页面内容;其他的页面错误可在不访问磁盘的情况下解决。页面错误增量自上次更新以来页面错误数量的变化。基本优先级优先排名,它确定了所计划进程的线程顺序。句柄进程的对象表中的对象句柄数。线程数进程中运行的线程数。USER 对象当前由进程使用的 USER 对象数。USER 对象是来自 Window 管理器的对象,它包含窗口、菜单、光标、图标、挂接、加速器、监视器、键盘布局及其他内部对象。GDI 对象图形输出设备应用程序编程接口 (API) 的图形设备接口 (GDI) 库中的对象数量。I/O 读取由进程(包括文件、网络和设备 I/O)生成的读取输入/输出操作的数量。无法计算定向到 CONSOLE(控制台输入对象)句柄的 I/O 读取数量。I/O 写入由进程(包括文件、网络和设备 I/O)生成的写入输入/输出操作的数量。无法计算定向到 CONSOLE(控制台输入对象)句柄的 I/O 写入数量。I/O 其他由既非读取又非写入的进程(包括文件、网络和设备 I/O)生成的输入/输出操作的数量。此类操作的示例是控制功能。无法计算定向到 CONSOLE(控制台输入对象)句柄的 I/O 其他操作数量。I/O 读取字节数由进程(包括文件、网络和设备 I/O)生成的输入/输出操作所读取的字节数。无法计算定向到 CONSOLE(控制台输入对象)句柄的 I/O 读取字节数。I/O 写入字节数由进程(包括文件、网络和设备 I/O)生成的输入/输出操作所写入的字节数。无法计算定向到 CONSOLE(控制台输入对象)句柄的 I/O 写入字节数。I/O 其他字节数由既非读取又非写入的进程(包括文件、网络和设备 I/O)生成的输入/输出操作所传输的字节数。此类操作的示例是控制功能。无法计算定向到 CONSOLE(控制台输入对象)句柄的 I/O 其他字节数。映像路径名称硬盘上的进程位置。命令行指定为创建进程的完整命令行。用户帐户控制(UAC)虚拟化确定为此进程启用、禁用还是不允许使用用户帐户控制 (UAC) 虚拟化。UAC 虚拟化将文件和注册表写入错误重定向到每用户位置。描述进程的描述。数据执行保护是否为此进程启用或禁用数据执行保护。有关详细信息,请参阅 什么是数据执行保护?。

㈨ 为什么在资源管理器进程中不能直接看到程序所占的内存

可以直接看的啊。在每个进程的右边,有“内存使用”这一列内容。如果没有这一列,先看“任务管理器”下面,有一行“文件”,“选项”,“查看”这几个菜单。单机“查看”,找到“选择列……”这一个菜单,单击打开。从那里找到“内存使用”这个选项在前面打上勾,再按“确定”退出即可。

㈩ 操作系统页式存储管理的问题

存储管理的基本原理内存管理方法 内存管理主要包括内存分配和回收、地址变换、内存扩充、内存共享和保护等功能。 下面主要介绍连续分配存储管理、覆盖与交换技术以及页式与段式存储管理等基本概念和原理。 1. 连续分配存储管理方式 连续分配是操作系统页式存储管理的问题