2018.12.12 第九章虚拟内存

这章基本分为两个部分,第一部分是讲虚拟内存,第二部分讲动态内存分配,目前只看完第一部分。

david的课还是老样子,讲的一塌糊涂,助教小哥ben spinelli的recitation也还是一如以往的通透。

基本上虚拟内存就是类似于内存和磁盘之间的cach,为了让每个进程都以为自己对内存有着彻底的控制,就需要给他们每个都设置自己的虚拟地址,而页表和虚拟内存就是用来管理虚拟地址和物理地址之间的映射关系的。

当然,另外一个作用是我们需要的内存比实际拥有的内存更多,所以需要拿一些磁盘充作内存来凑数,然后通过系统技巧让cpu大部分时候处理的仍然是内存,只有少部分page fault(和cache miss是一个意思)时才需要到磁盘里load数据。

cpu操作的是虚拟地址,然后通过页表以及其他的一套办法把它翻译成物理地址,并检查它是否缓存在内存中。

具体翻译的办法是,页表检查虚拟地址的低位,然后把其高位按某种对应关系映射为相应的鼓励地址,再结合低位就成了物理地址。所以其实页表本身的储存内容,也就是页本身的大小,也就是那几个作用类似index的低位而已。

值得一提的是在真正翻译之前,一般要先检查一个tlb硬件,这个就是相当于一个小cache,有自己的index和tag,利用locality减少翻译次数的。

具体内容书上有,虽然讲的也不太明白就是了(david真的是,课讲的烂,书写的也没思路)。如果以后忘了的话就重看一下,也可以结合ben的recitation来看。

猜你喜欢

转载自www.cnblogs.com/dynasty919/p/10111995.html
今日推荐