怎么理解操作系统里的内存碎片,有什么解决办法?

内存碎片分为内部碎片和外部碎片。
内部碎片和外部碎片的最明显的区别就是内部碎片能明确指出这部分内存是属于哪个进程的,而外部碎片不属于任何进程。
内部碎片是指已经被分配给某个进程、但是该进程却使用不到的内存空间,只有当该进程运行完毕后才能释放这块内存空间给其他进程使用。
外部碎片指的是在内存分配过程当中产生的不可被利用的、已申请内存之间的内存空间。外部碎片往往数量比较多,而且每块碎片都很小。
现在的解决方法主要有以下两种:
1.段页式内存分配机制。先根据编程需求将内存分为不同的段,然后在段内再基于页框进行内存分配。
2.伙伴系统。维护11个链表,各链表存放2的整数倍的页框块,换言之,第一个链表专门将规模为1个页框的块串连起来,第二个链表专门将规模为2个页框的块串连起来,以此类推,第十一个链表专门将规模为1024个页框的块串连起来。每次进程申请内存时,就从比申请内存规模大的链表中拆出指定内存,将被拆解的块中的剩余部分再进行拆解并插入到指定链表中。

你可能感兴趣的:(软件开发,操作系统)