> 文章列表 > 1675_MIT 6.828 使用虚拟存储的讲义整理分析

1675_MIT 6.828 使用虚拟存储的讲义整理分析

1675_MIT 6.828 使用虚拟存储的讲义整理分析

         全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com)

         看了一份虚拟存储使用的讲义,算是复习加学习一起进行了。

         这里提到的这几个功能尝试我已经做过了,看得出来现在OS的设计在效率上可谓是斤斤计较,只是为了能够有一点改善。

         虚拟存储使用的初级目标是隔离,让每一个集成有自己独立的内存映射空间。

         这个是对之前延时分配的一个说明,这里提到了trap类型中有一个页错误的类型,这个之前在做xv6的代码调试的时候已经看过了,也做了这样的尝试。

         从这里还能够看到一点,那就是exceptions由想内核传递的方式来进行控制。

         这一段代码之前我已经自己分析过了,这个是一个较为常规的trap发生的时候的堆栈处理模型。

         这里说了一下,这里的向量代码实现其实是通过perl脚本生成的。这是很好的技巧,而这样的技巧其实是我工作了很长时间之后才掌握的。

         这一段代码也是很熟悉的,之前做系统调用的分析的时候分析过这一段代码的实现以及作用。

         前面我做了这个尝试,没想到这里居然有答案!

         相比我自己的实现,这里增加了一个进程信息的检查,设计的确是更加完善的。

         这两页信息应该一起看,看到第一页的时候我其实是有过疑问的。既然用不到,做一个映射干什么?映射也是一种资源的浪费!其实,看到后面的信息就基本有所理解了。这里的映射其实是为了应对读取的情况。

         每一个页表都有相同的内核映射。可以通过共享的方式,减少这方面的资源消耗。

         堆栈空间其实很小,很容易用完导致异常。可以实现一个较为弹性的设计。

         Fork的效率也有优化的空间,可以通过使用的时候才分配的方式避免分页浪费且提升效率。

         程序的设计也可以考虑边加载边执行,还可以做到部分加载。这样,就可以节省很多程序加载的内存浪费。

         RAM比较宝贵,RAM不够磁盘来凑。这应该就是镜像交换文件了。

         虚拟存储的机制还可以实现创建看似完全隔离的存储区域,实现一块物理设备虚拟出来多个设备空间的虚拟化功能。

         以上就是这一份讲义中比较值得去总结、复习的地方,的确也是有一点收获。