slab机制与伙伴算法

1. 伙伴系统(伙伴算法)

1.1 概览

伙伴系统(buddy system)或者称伙伴算法主要应用在操作系统的内存分配中。在操作系统课程中也是必提的概念。

该算法主要好处是:

搜索分配内存块较为快速,O(logN)时间复杂度

外部碎片概率较低: 按2的幂划分,可以理解为一种分层次的Best fit

1.2 分配和释放内存过程

维基百科有个例子可以参考:https://en.wikipedia.org/wiki/Buddy_memory_allocation

总体思想就是:分配内存的时候按照基本内存块大小,按照2的幂来分裂,直到best fit满足; 释放内......

MBR和GTP的区别

MBR(Master boot record)

MBR总共是512byte,其中留给分区的只有16byte,这也就导致我们平常在分区的时候发现只能有4个主分区,其他需要通过扩展分区来实现更多的分区。

缺点:

只支持2T的分区

主分区受限制4个

GTP(GUID partition table)

GTP也是EFI标准中的一项。LBA1如果没有读到数据,则认为使用的是MBR,因此这种兼容MBR模式

优点:

分区数目最多128个

备用GPT恢复

每个分区有128byte的超大空间使用来寻址

UEFI和BIOS启动方式对比

介绍

系统的启动和加载有两种方式,一种是使用legacy BIOS(传统,老旧的),另外一种是UEFI(新式的)

BIOS工作过程

加载BIOS:CPU启动,找到BIOS ROM并启动其中的一个开机程序

开机自检(post): 检查各项寄存器、DMA等

初始化(Initial): 初始化寄存器、IO端口等

系统设置(Setup): 就是进入BIOS的配置

启动常驻程序

加载OS:通过到 Master boot record(MBR)加载OS

简单来说就是:开机自检->初始化->加载os

过程图: