首页 百科知识 类型的内存页面

类型的内存页面

时间:2022-10-09 百科知识 版权反馈
【摘要】:此结构包含一个指向vm_area的链表指针,vm_area是为每个共享此虚拟内存区域设计的结构,它们之间通过vm_next_shared和vm_prev_shared指针来连接。两个索引可以协助它完成这项工作,其一是一组shmid_ds数据结构的索引,另一个是系统V共享内存区域的页表入口链表的索引。由于对于给定的系统V共享虚拟内存的物理页面框号被保存在所有共享此虚拟内存区域进程的页表中,核心交换后台进程必须同时修改所有的页表以表示页面不再在内存而在交换文件中。

4.9.2 换出System V类型的内存页面

系统V共享内存是一种用来在进程之间通过共享虚拟内存来实现进程通信的机制。系统V共享内存通过数据结构shm_segs和shmid_ds来表示。此结构包含一个指向vm_area的链表指针,vm_area是为每个共享此虚拟内存区域设计的结构,它们之间通过vm_next_shared和vm_prev_shared指针来连接。每个shmid_ds数据结构包含一个页表入口,每个入口描叙物理页面与共享虚拟页面之间的映射关系。

核心交换后台进程同样使用clock算法来将系统V共享内存页面交换出去。每次运行时,它要记得哪个共享虚拟内存区域的哪个页面是最后一个被交换出去的。两个索引可以协助它完成这项工作,其一是一组shmid_ds数据结构的索引,另一个是系统V共享内存区域的页表入口链表的索引。这能够保证对系统V共享内存区域作出公平的选择。

由于对于给定的系统V共享虚拟内存的物理页面框号被保存在所有共享此虚拟内存区域进程的页表中,核心交换后台进程必须同时修改所有的页表以表示页面不再在内存而在交换文件中。对于每个要交换出去的共享页面,核心交换后台进程可以在每个共享进程的页表中的页表入口中找到它们(通过vm_area_struct数据结构)。如果对应此系统V共享内存的页面的进程页表入口是有效的,它可以将其转变成无效,这样换出页表入口和共享页面的用户数将减一。换出系统V共享页表入口的格式中包含一个对应于一组shmid_ds数据结构的索引以及一个对系统V共享内存区域的页表入口索引。

如果所有共享进程的页表都被修改后此页面的记数为0则共享页面可以被写到交换文件中。同样指向此系统V共享内存区域的shmid_ds数据结构链表中的页表入口也被换出页表入口代替。换出页表入口虽然无效但是它包含一组打开的交换文件的索引,同时还能找到换出页面在文件中的偏移。当页面重新被带入物理内存时,这些信息十分有用。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈