请教Cache和MMU的问题
时间:10-02
整理:3721RD
点击:
本人初学Cache和MMU的设计,有个问题一直没有想通,想请教各位大侠。在一个有MMU的系统中,内核给Cache的地址是虚地址(VA),那么就是说Cache是按照虚地址来判断是否命中的吗?
如果是这样,那么对于操作系统来说,不同的进程可能有相同的虚地址,那么Cache怎样来判断此虚地址是对于哪个进程的呢?如果不判断的话,有可能会出现:Cache中本身存放的是进程1的数据,但此时是进程2占用内核,并发来相同的地址,这时Cache会判断为命中吗?
不知道我的理解是否正确?
如果是这样,那么对于操作系统来说,不同的进程可能有相同的虚地址,那么Cache怎样来判断此虚地址是对于哪个进程的呢?如果不判断的话,有可能会出现:Cache中本身存放的是进程1的数据,但此时是进程2占用内核,并发来相同的地址,这时Cache会判断为命中吗?
不知道我的理解是否正确?
有没有人能帮帮忙啊
好像是不同的进程都会附带的在给出虚拟地址的同时给出进程ID号,以此来区分不同进程下相同的虚拟地址。
还有就是你这个是用虚拟地址来在Cache中索引Tag,所以需要进程ID号,
我知道还有一种是先由MMU转换成物理地址,然后再用物理地址所以tag的,这种就不需要进程ID号啦,当然这种方式速度比较慢
哦,那如果用给出进程号那种方式,进程号怎用专门的输入口输给Cache吗?还是其他什么方式?
一般给出虚拟地址的同时就要同时给出进程ID号。可以将此ID号扩展到虚拟地址中去
Cache 的状态标识位再增加一个进程ID标志位,就可以啦
谢谢你~
