操作系统概念 -第七版-重要概念的理解-(64-84)

64.操作系统的驻留位置可以为高地址或低地址,由中断向量的位置决定,通常为低地址。


65.进程的内存空间的分配通常为连续地址分配,连续地址分配由基地址和界地址决定。


66.重定位地址寄存器可以保护操作系统的内存,还可以动态的调整操作系统的占用内存大小的情况下不改动进程内存的地址便宜(有了重定位地址寄存器后,进程的内存地址就是逻辑地址了,逻辑地址是相对的)。


67.操作系统在加载进程的时候会进行内存分配,此时有一个程序输入队列和一个内存分区表,操作系统按照分配方案把程序输入队列中的程序加载在合适的内存分区中,然后开始运行进程。


68.内存分配方案分为“固定多分区方法”和“动态存储分配方法”,“固定分区”是古老的方法,他将内存分成固定大小的内存块。


69.现在主要使用的是“动态存储分配方法”,他的分配原则是如果没有合适的就不分配,用完就还回去。


70.“动态内存分配”寻找分区有3种方法:首次适应、最佳适应、最差适应。首次适应块,最佳适应省空间,最差适应剩余空间多。


71.首次适应和最佳适应都存在碎片问题。


72.由于分配分区给程序不是按照“需要多少就分配多少”,所以往往分配的空间总是多于需要的空间,那么多出的部分被称为内部碎片,这个随便无法被输入队列使用,只能等使用者用完后再回收。


73.与内部碎片相对的就是“外部碎片”,外部碎片是可以被利用的,只不过由于碎片不连续,需要进行重组成块再加以使用,而处理外部碎片的方法就是“内存的分页技术和分段技术”。


74.分页和分段技术是互补的,可以同时使用。


75.分页技术是一种复杂的重定位地址技术(重定位地址寄存器也是一种重定位地址技术,只不过重定位地址寄存器只是简单的给地址加了一个固定的偏移量,而分页技术则是加一个不固定的偏移量,这个偏移量由页表决定),分页技术的重定位实现了多个地址在逻辑上连续,而在物理上实现不连续。多个地址在逻辑上实现连续,那么就可以在逻辑上实现动态存储分配技术同时,可以通过调整页表的映射关系实现碎片回收(页表是一张哈希表)。


76.分页技术的页其实就是物理内存的帧,页和帧的大小一样大,在存储设备上的区块大小也是和物理内存的帧一样大小。


77.分页技术中同一页的内存在物理内存上也是连续的。


78.页码连续的内存,在物理内存却不是连续的。


79.分页技术可以减少外部碎片的产生,但是却使得内部碎片变得更大,内存碎片最大为N个页的大小。但是这个代价是能接受的。因为分页技术使得外部碎片可以被重整使用。


80.分页的大小是一个优化点,现在大部分的操作系统都有多种分页大小去适应各种大小的进程。


81.大部分的进程的页表都非常大(1百万个条目),因此页表存放在内存中,CPU通过页表基地址寄存器访问内存中的页表,再将基地寄存器指向的页表块加载到硬件的页表寄存器中实现页表映射。因此页表的访问是一个复杂的过程。


82.CPU对内存的访问过程为:1.获取逻辑地址,2.页表访问,3.映射为物理地址,4.物理地址访问.


83.这种页表访问的需要访问2次内存,导致地址访问速度降低一半,所以需要使用TLB转换表缓冲区(这是一个昂贵的硬件设备)去辅助。


84.分段技术的思想更适合用户视角,分段的做法和分页一样,只不过分段是按照程序结构去分,而页则是按照帧大小去分。 我们可以推论,大部分情况下段大小会比也大很多,或者说一个段包含很多个页。

你可能感兴趣的:(操作系统)