| grub007 回复于:2003-07-18 09:17:04 |
| 是页面的内容 |
| flightbird 回复于:2003-07-18 09:31:32 |
| 从下面的叙述看,应该是指针: 当一页的数据从内存映射文件中读出,例如当 demand paging 时需要放到内存中的时候,此页通过 page cache 中读出。如果此页在缓存中,就返回一个指向 mem_map_t 数据结构的指针给 page fault 的处理代码。否则,此页必须从存放此文件的文件系统中加载到内存中。 Linux 分配物理内存并从磁盘文件中读出该页。如果可能, Linux 会启动对文件下一页的读。这种单页的超前读意味着如果进程从文件中顺序读数据的话,下一页数据将会在内存中等待。 |
| qjlemon 回复于:2003-07-18 09:37:41 |
| 此cache非彼cache,对CPU而言的page cache存放的是页的内容,至于OS自己的cache那就不能一概而论了 |
| flightbird 回复于:2003-07-18 09:54:13 |
| 对cup而言的page cache指的是什么? 在cpu内部? 否则应该只有os自己的page cache吧. |
| qjlemon 回复于:2003-07-18 09:57:55 |
| 现在买CPU不都能看到一个指标是缓存有多大吗?就是CPU里面的cache。 其实CPU里的cache并不只有这一种,还有诸如页表缓存之类,存放的就是最新的页表项。。。 |
| flightbird 回复于:2003-07-18 10:22:17 |
| [quote:86d68444db="qjlemon"]现在买CPU不都能看到一个指标是缓存有多大吗?就是CPU里面的cache。 其实CPU里的cache并不只有这一种,还有诸如页表缓存之类,存放的就是最新的页表项。。。[/quote:86d68444db] ft.. |
| qjlemon 回复于:2003-07-18 10:31:48 |
| [quote:fba879b396="flightbird"] ft..[/quote:fba879b396] :twisted: :twisted: :twisted: |
| flightbird 回复于:2003-07-18 13:36:10 |
| 页表放在cpu里面的cache里? |
| qjlemon 回复于:2003-07-18 14:50:41 |
| 每次更新段寄存器的内容时CPU都会把相应的页表项读到一个专门的cache里,每个段寄存器都有一个对应的cache 要不然每次访问一块"内存",都要到"内存"里查一遍页表,那还不慢死了! |
| flightbird 回复于:2003-07-18 16:14:22 |
| 我想你指的是cpu里的tlb吧? 页表是存在物理内存中的. tlb里只是一部分页表的拷贝. |
| qjlemon 回复于:2003-07-18 16:19:15 |
| 就是这个意思 |
| qjlemon 回复于:2003-07-18 16:31:09 |
| [quote:ca2427c4e0="flightbird"]tlb里只是一部分页表的拷贝.[/quote:ca2427c4e0]如果是全部页表的拷贝,就不叫cache了 |
| flightbird 回复于:2003-07-18 16:42:25 |
| 我想问的是page cache里存的是内容还是数据.如你所述,tlb是页表的部分拷贝,而页表存的不是数据(页数据).这里的page cache不是你所说的cpu里面的cache,而是os里面的page cache. |
| blsword 回复于:2004-04-14 14:24:43 |
| 晕,讨论半天到底page cache里寸的是什么啊?如果page cache是占用的物理内存,那再从page cache里读页到物理内存中,岂不是在物理内存中有两份拷贝? |