标签: paging

是什么导致页面错误?

根据维基百科:

当程序访问映射到虚拟地址空间但未加载到物理内存中的页面时,页面错误是硬件引发的软件陷阱.(强调我的)

好的,这是有道理的.

但如果是这样的话,为什么每当Process Hacker中的流程信息刷新时,我看到大约15页的错误?

截图

或者换句话说,为什么任何内存被分页?(我不知道它是用户还是内核内存.)我没有页面文件,RAM使用量大约是4 GB中的1.2 GB,这是在干净的重新启动之后.没有任何资源; 为什么有什么东西会被淘汰?

windows paging x86 x86-64

25
推荐指数
2
解决办法
5万
查看次数

分段分页和分页分段之间的差异或相似之处是什么?

我正在研究组合的分页/分段系统,在我的书中有两种方法:

1.paged segmentation
2.segmented paging
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚两者之间的区别.我认为在分页分段中,分段被分成页面,在分段分页中,页面被分成段,但我不知道我是对还是错.同时在因特网上,仅使用一种方案来描述组合的寻呼/分段.我无法弄清楚为什么在我的课本中有两种方案.任何帮助将深表感谢.

paging operating-system memory-management memory-segmentation

25
推荐指数
2
解决办法
2万
查看次数

现代操作系统使用分页和分段吗?

我正在阅读有关内存架构的内容,我对分页和分段感到有些困惑.我读到现代操作系统只使用分页来管理内存访问,但是看一下反汇编的代码,我可以看到像"ds"和"fs"这样的段.这是否意味着操作系统(在Windows和Linux上看到)正在使用分段和分段,或者它只是将所有段映射到相同的页面(使段不相关)?

memory paging operating-system

25
推荐指数
2
解决办法
8289
查看次数

何时做或不做INVLPG,MOV到CR3以最小化TLB刷新

序幕

我是一个操作系统爱好者,我的内核运行在80486+,并且已经支持虚拟内存.

从80386开始,英特尔的x86处理器系列及其各种克隆通过分页支持虚拟内存.众所周知,当设置PG位时CR0,处理器使用虚拟地址转换.然后,CR3寄存器指向顶级页面目录,即用于将虚拟地址映射到物理地址的2-4级页表结构的根.

处理器不会为生成的每个虚拟地址查询这些表,而是将它们缓存在名为Translation Lookaside Buffer或TLB的结构中.但是,当对页表进行更改时,需要刷新TLB.在80386处理器上,此刷新将通过使用顶级页面目录地址或任务切换重新加载(MOV)来完成CR3.这应该无条件地刷新所有TLB条目.据我所知,虚拟内存系统在任何更改后总是重新加载CR3是完全有效的.

这是浪费,因为TLB现在会抛出完全好的条目,因此在80486处理器INVLPG中引入了指令.INVLPG将使与源操作数地址匹配的TLB条目无效.

然而,从Pentium Pro开始,我们还拥有全局页面,这些页面不会被移动到CR3任务切换; 和AMD x86-64 ISA表示某些高级页面表结构可能会被高速缓存而不会失效INVLPG.为了获得每个ISA所需内容和不需要内容的连贯图片,我们真的需要为80年代以来发布的大量ISA下载1000页的数据表来阅读其中的几页,即使这样,文档似乎也是如此对TLB失效特别模糊,如果TLB未正确无效,会发生什么.

为简单起见,可以假设我们正在讨论单处理器系统.此外,可以假设在更改页面结构后不需要任务切换.(因此INVLPG总是被认为至少是重新加载CR3寄存器的好选择).

基本假设是CR3每次更改页面表和页面目录后都需要重新加载,这样的系统是正确的.但是,如果想要避免不必要地冲刷TLB,则需要回答2个问题:

  1. 如果INVLPGISA支持,经过哪种更改可以安全地使用它而不是重新加载CR3?例如"如果一个取消映射一个页面框架(将相应的表条目设置为不存在),则可以始终使用INVLPG"?

  2. 在不触及CR3或执行的情况下,可以对表和目录进行哪些更改INVLPG?例如"如果一个页面根本没有映射(不存在),那么就可Present=1以为它编写一个PTE 而不用刷新TLB"?

即使在阅读了大量的ISA文档以及与INVLPGStack Overflow 相关的所有内容之后,我也不确定我在那里提供的任何一个例子.事实上,一篇值得注意的帖子马上说:"我不知道你何时应该使用它,什么时候不应该使用它." 因此,您可以提供任何特定的,正确的示例,最好是文档,以及您可以给出的IA32或x86-64.

paging x86 x86-64 virtual-memory tlb

23
推荐指数
2
解决办法
4279
查看次数

如何转换 PagedList 中的项目?(Android Arch 组件分页库)

Android Architecture Component 现在引入了Paging Library,这很棒。

根据官方的 demoDataSource.Factory现在支持mapmapByPage方法,这意味着我们可以将项目转换为一个DataSource

但是DataSource并且DataSource.Factory应该在模型层,而不是Presenter/View 层。然而,很多时候我们想要在我们的 Adapter(对于 RecyclerView 或 ListView)中转换数据,很明显,这是 Presentor/View 层逻辑。现在,一个 Adapter 持有一个 的实例PagedList,但PageList不能支持这些操作,这有点尴尬。此外,有时我们还想向PagedList.

所以这是一个功能请求:

  1. 支持项目转换 PagedList

  2. 支持项目添加/删除到/从 PagedList

欢迎任何讨论。

paging android android-architecture-components android-paging

22
推荐指数
1
解决办法
3860
查看次数

使用Entity Framework 7和SQL Server 2008进行分页

我正在尝试使用分页(即.Skip(...).Take(...)在Entity Framework 7中.它适用于Microsoft SQL Server 2012和2014,但在SQL Server 2008上出现以下错误失败:

System.Data.SqlClient.SqlException(0x80131904):'OFFSET'附近的语法不正确.FETCH语句中NEXT选项的使用无效.

我已经发现它是EF版本6.1.2(http://erikej.blogspot.com/2014/12/a-breaking-change-in-entity-framework.html)的重大变化.但修复方法是将EDMX文件设置ProviderManifestToken属性修改为"2008".

问题是EF7目前只支持代码优先方案,因此没有任何EDMX.问题是:如何使用Entity Framework 7配置ASP.NET 5网站,以便为早于2012的SQL Server使用回退分页方法?

asp.net-mvc paging sql-server-2008 entity-framework-core

21
推荐指数
3
解决办法
1万
查看次数

确定虚拟内存的页表大小

考虑具有38位虚拟字节地址,1KB页面和512 MB物理内存的虚拟内存系统.假设有效,保护,脏和使用位总共占用4位,并且所有虚拟页面都在使用中,则本机上每个进程的页表总大小是多少?(假设磁盘地址未存储在页表中.)

memory paging virtual-memory page-tables

20
推荐指数
2
解决办法
5万
查看次数

x86在设置页面脏位时有多快速?

从软件的角度来看,内存页面弄脏的指令与内核页面条目(PTE)中核心实际标记页面脏的时间之间的延迟是多少?

换句话说,如果一条指令弄脏了一个页面,那么下一条指令是否可以读取PTE并看到脏位设置?

我不关心实际经过的周期,只有当软件可见窗口中尚未设置脏位时.我似乎无法在参考手册中找到任何保证.

paging x86

20
推荐指数
2
解决办法
2214
查看次数

分页不起作用,也许我找到了原因

我正在尝试将流(新闻订阅源)分页功能实现到我的应用程序,但它无法按预期工作.我在这里发现了许多类似的问题,但没有解决方案来解决这个问题.

我尝试了Graph API和FQL,行为类似.成功获得一到两次结果但在此之后,它无法获得结果(获取空的JSON数组).

最后,我发现这个问题取决于access_token.如果我只是更改源代码以使用Android SDK流示例应用程序ID而不是我自己的应用程序ID进行身份验证,那么它可以完美地运行.

所以,我相信facebook服务器检查应用程序ID并返回一些奇怪或限制access_token我的应用程序.

有条件获得有效access_token吗?我尝试使用Android SDK Stream示例应用程序完全相同的权限,但它无法解决问题.

我想与面临同样问题的任何人分享这些信息,并检查更改应用程序ID(以获得有效access_token)将解决您的情况.

paging android facebook-fql facebook-graph-api

20
推荐指数
1
解决办法
1012
查看次数

ListView与DataPager无法正常工作

从我读过的所有内容来看,向ListView控件添加分页似乎应该很简单,但它对我不起作用.将ListView和DataPager控件添加到表单并将它们连接在一起后,我的行为非常奇怪.DataPager正确限制了ListView的页面大小,但单击分页按钮根本不会影响ListView.分页按钮似乎认为他们正在做他们的工作,因为当你转到最后一页等时,最后一个按钮被禁用,但ListView永远不会改变.此外,它需要在DataPager上单击两次才能让它执行任何操作,即单击"上一次"不会执行任何操作,但是再次单击它会导致DataPager作出反应,就好像现在选择了最后一页一样.

我唯一能想到的是我在运行时绑定DataSource(到LINQ对象),而不是使用LinqDataSource控件或任何东西.有没有人见过这种行为?难道我做错了什么?这是我正在使用的代码:

<asp:DataPager ID="HistoryDataPager" runat="server" PagedControlID="HistoryListView" PageSize="10">
    <Fields>
        <asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="true" ShowLastPageButton="true" />
    </Fields>
</asp:DataPager>

<asp:ListView ID="HistoryListView" runat="server">
    ...
</asp:ListView>
Run Code Online (Sandbox Code Playgroud)

在代码隐藏中:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    If Not IsPostBack Then
        HistoryListView.DataSource = From x in myContext.myTables ...
        DataBind()
    End If

End Sub
Run Code Online (Sandbox Code Playgroud)

vb.net asp.net paging listview

19
推荐指数
2
解决办法
3万
查看次数