用于动态分区的位图
精华
小牛编辑
136浏览
2023-03-14
动态分区的主要关注点是跟踪所有空闲和分配的分区。 但是,操作系统为此任务使用以下数据结构。
- 位图
- 链表
位图是存储细节最少见的数据结构。 在这个方案中,主存储器被分成分配单元的集合。 根据该过程的需要,可以将一个或多个分配单元分配给过程。 但是,分配单元的大小是由操作系统定义的,并且从不更改。 虽然分区大小可能会有所不同,但分配大小是固定的。
操作系统的主要任务是跟踪分区是空闲的还是空闲的。 为此,操作系统还管理另一个称为位图的数据结构。
分配单元中的进程或空洞由位图的标志位表示。 在下面显示的图像中,为分配单元的每一位定义了一个标志位。 但是,这并不是一般情况,它取决于操作系统,对于多少位分配单元,它想要存储标志位。
如果在分配单元中的相邻位上存在连续存在的过程,则将标志位设置为1
,否则将其设置为0
。
位图中的一串0表示相对分配单元中有一个孔,而1
的字符串表示相对分配单元中的过程。
使用位图的缺点
OS必须为位图分配一些内存,因为它存储了有关分配单元的详细信息。 大量的内存不能用于加载任何进程,因此降低了多进程的程度以及吞吐量。在上图中,分配单位是4位,即
0.5
位。 这里,位图的1位表示1位的分配单位。1个分配单元的大小= 4位 位图大小= 1 /(4 + 1)=总内存的1/5。
因此,在这个位图配置中,总内存的1/5被浪费了。
要识别内存中的任何空洞,操作系统需要在位图中搜索
0
字符串。 这种搜索花费了大量的时间,这使得系统在一定程度上效率低下。