操作系统 动态分区的位图
动态分区的主要关注点是跟踪所有空闲和分配的分区。然而,操作系统使用以下数据结构来完成这个任务。
- 位图
- 链表
位图是用来存储详细信息的最不出名的数据结构。在这个方案中,主内存被划分为分配单元的集合。根据进程的需要,可以将一个或多个分配单元分配给一个进程。然而,分配单元的大小是固定的,由操作系统定义,不会改变。尽管分区的大小可能有所变化,但分配的大小是固定的。
操作系统的主要任务是跟踪分区是否空闲。为此,操作系统还管理另一种称为位图的数据结构。
分配单元中的进程或空闲空间由位图的标志位表示。在下面的图像中,为每个分配单元的每个位定义了一个标志位。然而,这不是普遍的情况,它取决于操作系统,对于分配单元的多少位,它希望存储标志位。
如果在分配单元的相邻位有连续存在的进程,则将标志位设置为1,否则设置为0。
位图中的一串0表示相对分配单元中有一个空闲空间,而一串1表示相对分配单元中有一个进程。
使用位图的缺点
1. 操作系统必须分配一些内存来存储位图的分配单元详情。那么多的内存不能用于加载任何进程,因此它减少了多程序的程度和吞吐量。
在上面的图像中,
分配单元为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的字符串。这种搜索需要很长时间,使得系统在某种程度上变得低效。