当程序访问映射到虚拟地址空间但未加载到物理内存中的页面时,页面错误是硬件引发的软件陷阱.(强调我的)
好的,这是有道理的.
但如果是这样的话,为什么每当Process Hacker中的流程信息刷新时,我看到大约15页的错误?

或者换句话说,为什么任何内存被分页?(我不知道它是用户还是内核内存.)我没有页面文件,RAM使用量大约是4 GB中的1.2 GB,这是在干净的重新启动之后.没有任何资源; 为什么有什么东西会被淘汰?
我正在研究组合的分页/分段系统,在我的书中有两种方法:
1.paged segmentation
2.segmented paging
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚两者之间的区别.我认为在分页分段中,分段被分成页面,在分段分页中,页面被分成段,但我不知道我是对还是错.同时在因特网上,仅使用一种方案来描述组合的寻呼/分段.我无法弄清楚为什么在我的课本中有两种方案.任何帮助将深表感谢.
paging operating-system memory-management memory-segmentation
我正在阅读有关内存架构的内容,我对分页和分段感到有些困惑.我读到现代操作系统只使用分页来管理内存访问,但是看一下反汇编的代码,我可以看到像"ds"和"fs"这样的段.这是否意味着操作系统(在Windows和Linux上看到)正在使用分段和分段,或者它只是将所有段映射到相同的页面(使段不相关)?
我是一个操作系统爱好者,我的内核运行在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个问题:
如果INVLPGISA支持,经过哪种更改可以安全地使用它而不是重新加载CR3?例如"如果一个取消映射一个页面框架(将相应的表条目设置为不存在),则可以始终使用INVLPG"?
在不触及CR3或执行的情况下,可以对表和目录进行哪些更改INVLPG?例如"如果一个页面根本没有映射(不存在),那么就可Present=1以为它编写一个PTE 而不用刷新TLB"?
即使在阅读了大量的ISA文档以及与INVLPGStack Overflow 相关的所有内容之后,我也不确定我在那里提供的任何一个例子.事实上,一篇值得注意的帖子马上说:"我不知道你何时应该使用它,什么时候不应该使用它." 因此,您可以提供任何特定的,正确的示例,最好是文档,以及您可以给出的IA32或x86-64.
Android Architecture Component 现在引入了Paging Library,这很棒。
根据官方的 demoDataSource.Factory现在支持map和mapByPage方法,这意味着我们可以将项目转换为一个DataSource。
但是DataSource并且DataSource.Factory应该在模型层,而不是Presenter/View 层。然而,很多时候我们想要在我们的 Adapter(对于 RecyclerView 或 ListView)中转换数据,很明显,这是 Presentor/View 层逻辑。现在,一个 Adapter 持有一个 的实例PagedList,但PageList不能支持这些操作,这有点尴尬。此外,有时我们还想向PagedList.
所以这是一个功能请求:
支持项目转换 PagedList
支持项目添加/删除到/从 PagedList
欢迎任何讨论。
paging android android-architecture-components android-paging
我正在尝试使用分页(即.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使用回退分页方法?
考虑具有38位虚拟字节地址,1KB页面和512 MB物理内存的虚拟内存系统.假设有效,保护,脏和使用位总共占用4位,并且所有虚拟页面都在使用中,则本机上每个进程的页表总大小是多少?(假设磁盘地址未存储在页表中.)
从软件的角度来看,内存页面弄脏的指令与内核页面条目(PTE)中核心实际标记页面脏的时间之间的延迟是多少?
换句话说,如果一条指令弄脏了一个页面,那么下一条指令是否可以读取PTE并看到脏位设置?
我不关心实际经过的周期,只有当软件可见窗口中尚未设置脏位时.我似乎无法在参考手册中找到任何保证.
我正在尝试将流(新闻订阅源)分页功能实现到我的应用程序,但它无法按预期工作.我在这里发现了许多类似的问题,但没有解决方案来解决这个问题.
我尝试了Graph API和FQL,行为类似.成功获得一到两次结果但在此之后,它无法获得结果(获取空的JSON数组).
最后,我发现这个问题取决于access_token.如果我只是更改源代码以使用Android SDK流示例应用程序ID而不是我自己的应用程序ID进行身份验证,那么它可以完美地运行.
所以,我相信facebook服务器检查应用程序ID并返回一些奇怪或限制access_token我的应用程序.
有条件获得有效access_token吗?我尝试使用Android SDK Stream示例应用程序完全相同的权限,但它无法解决问题.
我想与面临同样问题的任何人分享这些信息,并检查更改应用程序ID(以获得有效access_token)将解决您的情况.
从我读过的所有内容来看,向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) paging ×10
x86 ×3
android ×2
memory ×2
x86-64 ×2
android-architecture-components ×1
asp.net ×1
asp.net-mvc ×1
facebook-fql ×1
listview ×1
page-tables ×1
tlb ×1
vb.net ×1
windows ×1