用于动态分区的位图

动态分区的主要关注点是跟踪所有空闲和分配的分区。 但是,操作系统为此任务使用以下数据结构。

  • 位图
  • 链表

位图是存储细节最少见的数据结构。 在这个方案中,主存储器被分成分配单元的集合。 根据该过程的需要,可以将一个或多个分配单元分配给过程。 但是,分配单元的大小是由操作系统定义的,并且从不更改。 虽然分区大小可能会有所不同,但分配大小是固定的。

操作系统的主要任务是跟踪分区是空闲的还是空闲的。 为此,操作系统还管理另一个称为位图的数据结构。

分配单元中的进程或空洞由位图的标志位表示。 在下面显示的图像中,为分配单元的每一位定义了一个标志位。 但是,这并不是一般情况,它取决于操作系统,对于多少位分配单元,它想要存储标志位。

如果在分配单元中的相邻位上存在连续存在的过程,则将标志位设置为1,否则将其设置为0

位图中的一串0表示相对分配单元中有一个孔,而1的字符串表示相对分配单元中的过程。

使用位图的缺点

  1. OS必须为位图分配一些内存,因为它存储了有关分配单元的详细信息。 大量的内存不能用于加载任何进程,因此降低了多进程的程度以及吞吐量。在上图中,分配单位是4位,即0.5位。 这里,位图的1位表示1位的分配单位。

    1个分配单元的大小= 4位
    位图大小= 1 /(4 + 1)=总内存的1/5。
    

    因此,在这个位图配置中,总内存的1/5被浪费了。

  2. 要识别内存中的任何空洞,操作系统需要在位图中搜索0字符串。 这种搜索花费了大量的时间,这使得系统在一定程度上效率低下。


上一篇:压缩(碎片整理)

下一篇:链表动态分区

关注微信小程序
程序员编程王-随时随地学编程

扫描二维码
程序员编程王

扫一扫关注最新编程教程