每天3道面试题 12/21

2016-12-21 21:58 阅读 629 次 评论 0 条

windows内存管理的方式(快式、页式、段式、段页式)

块式管理把主存分成一大块,一大块的,当所需的程序片段不在主存时就分配一块主存空间,把程序片段载入主存,就算所需的程序片段只有几个字节也只能把这一快分配给它。这样会造成很大的浪费,但是易于管理。

页式管理把主存分为一页一页的,每一页的空间要比一块一块的空间小很多,显然这种方法的空间利用率要比块式管理高很多。

段式管理把主存分成一段一段的,每一段的空间要比一页一页的空间小很多,这种方法在空间利用率上又比页式管理高很多,但是也有另外一个缺点。一个程序片段可能会被分成几十段,这样很多时间就会被浪费在计算每一段的物理地址上。

段页式管理结合了段式管理和页式管理的优点,把主存分为若干页,每一页又分成若干段。

虚拟地址、逻辑地址、线性地址、物理地址有什么区别?

虚拟地址由程序产生的由段选择符合段内偏移地址组成的地址。这两部分组成的地址并没有直接访问物理内存,而是要通过分段地址的变换处理后才会对应到相应的物理地址。

逻辑地址指由程序产生的段内偏移地址。有时直接把逻辑地址当成虚拟地址,两者并没有明确的界限。

线性地址指虚拟地址到物理地址变换之间的中间层,是处理器可寻址的内存空间(称之为线性地址空间)中的地址。程序代码会产生逻辑地址,或者说是段中的偏移地址,加上相应段基址机会生成了一个线性地址。如果启动了分页机制,那么线性地址可以再经过变换产生物理地址。若是没有采用分页机制,那么线性地址就是物理地址。

物理地址CPU外部地址总线上的寻址物理内存的地址信号,是地址变换的最终结果。

区别虚拟地址到物理地址的转换方法是与体系结构相关的,一般有分段与分页两种方式。以X86 CPU为例,分段分页是支持的。内存管理单元从虚拟地址到物理地址的转化。逻辑地址是短地址+段内偏移量的形式,MMU通过查询段表,可以把逻辑地址转换为线性地址。如果CPU没有卡其分页功能,那么线性地址就是物理地址;如果CPU开启了分页功能,MMU还需要查询页表来讲线性地址转换为物理地址:逻辑地址(段表)->线性地址(页表)->物理地址。映射是一种多对以的关系,即不同的逻辑地址可以映射到同一个线性地址上。不同的线性地址可以映射到同一个物理地址上。而且,同一个线性地址在发生换页之后,也可能被重新装载到另外一个物理地址上,所以这种多对一的映射关系也会随时间发生变化。

CPU中的缓存和操作系统中的缓存分别是什么?

操作系统中的缓存是指快表。在操作系统中,为提高系统的存取速度,在地址映射机制中增加一个小容量的联想寄存器,即快表,用来存放当前访问最频繁的少数活动页面的页号。当某用户需要存取数据时,根据数据所在的逻辑页号在快表中找到其对应的内存块号,再联系页内地址,形成物理地址。如果在快表中没有相应的逻辑页号,则地址映射仍可以通过内存中的页表进行,得到空闲块号后填入快表的空闲块中。如果快表中没有空闲块,则根据淘汰算法淘汰某一行,再填入新的页号和块号。快表查找内存块的物理地址消耗的时间大大降低了,使得系统效率得到了极大的提高。

CPU中的缓存指高速缓存。CPU的执行速度越来越快,系统架构越来越先进,而主存的结构和存取速度改进则较慢,因此,就需要高速缓存的介入。

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:每天3道面试题 12/21 | 术与道的分享
分类:剑指Offer 标签:
1024do.com导航_术与道导航平台

发表评论


表情