📅  最后修改于: 2020-12-14 09:32:33             🧑  作者: Mango
动态分区的主要关注点是跟踪所有可用分区和已分配分区。但是,操作系统为此任务使用以下数据结构。
位图是用于存储详细信息的最不著名的数据结构。在该方案中,主存储器被分为分配单元的集合。可以根据该过程的需要将一个或多个分配单元分配给该过程。但是,分配单元的大小是固定的,由操作系统定义,并且永远不会更改。尽管分区大小可能有所不同,但是分配大小是固定的。
操作系统的主要任务是跟踪分区是空闲还是已满。为此,操作系统还管理另一个称为位图的数据结构。
分配单位中的过程或漏洞由位图的标志位表示。在下面显示的图像中,为分配单元的每个位定义了一个标志位。但是,这不是一般情况,而是要取决于OS,要分配多少个分配单元的位来存储标志位。
如果在分配单元中的相邻位上存在连续的进程,则将标志位设置为1,否则将其设置为0。
位图中的0字符串表示相对分配单元中有一个空洞,而1字符串则表示相对分配单元中的过程。
1. OS还必须为位图分配一些内存,因为它存储有关分配单位的详细信息。这么多的内存无法用于加载任何进程,因此会降低多编程的程度以及吞吐量。
在上图中,
分配单位为4位,即0.5位。在此,位图的1位表示分配单位的1位。
Size of 1 allocation unit = 4 bits
Size of bitmap = 1/(4+1) = 1/5 of total main memory.
因此,在这种位图配置中,浪费了总主存储器的1/5。
2.要识别内存中的任何孔,操作系统需要在位图中搜索字符串0。这种搜索需要花费大量时间,这在一定程度上使系统效率低下。