这章基本分为两个部分,第一部分是讲虚拟内存,第二部分讲动态内存分配,目前只看完第一部分。缓存
david的课仍是老样子,讲的一塌糊涂,助教小哥ben spinelli的recitation也仍是一如以往的通透。翻译
基本上虚拟内存就是相似于内存和磁盘之间的cach,为了让每一个进程都觉得本身对内存有着完全的控制,就须要给他们每一个都设置本身的虚拟地址,而页表和虚拟内存就是用来管理虚拟地址和物理地址之间的映射关系的。进程
固然,另一个做用是咱们须要的内存比实际拥有的内存更多,因此须要拿一些磁盘充做内存来凑数,而后经过系统技巧让cpu大部分时候处理的仍然是内存,只有少部分page fault(和cache miss是一个意思)时才须要到磁盘里load数据。内存
cpu操做的是虚拟地址,而后经过页表以及其余的一套办法把它翻译成物理地址,并检查它是否缓存在内存中。ci
具体翻译的办法是,页表检查虚拟地址的低位,而后把其高位按某种对应关系映射为相应的鼓励地址,再结合低位就成了物理地址。因此其实页表自己的储存内容,也就是页自己的大小,也就是那几个做用相似index的低位而已。it
值得一提的是在真正翻译以前,通常要先检查一个tlb硬件,这个就是至关于一个小cache,有本身的index和tag,利用locality减小翻译次数的。io
具体内容书上有,虽然讲的也不太明白就是了(david真的是,课讲的烂,书写的也没思路)。若是之后忘了的话就重看一下,也能够结合ben的recitation来看。硬件