动态分区的主要关注点是跟踪所有可用分区和已分配分区。但是, 操作系统为此任务使用以下数据结构。
- 位图
- 链表
位图是用于存储详细信息的最不著名的数据结构。在该方案中, 主存储器被分为分配单元的集合。可以根据该线程的需要将一个或多个分配单元分配给该线程。但是, 分配单元的大小是固定的, 由操作系统定义, 并且永远不会更改。尽管分区大小可能有所不同, 但是分配大小是固定的。
操作系统的主要任务是跟踪分区是空闲还是已满。为此, 操作系统还管理另一个称为位图的数据结构。
分配单位中的线程或漏洞由位图的标志位表示。在下面显示的图像中, 为分配单元的每个位定义了一个标志位。但是, 这不是一般情况, 而是要取决于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。这种搜索需要花费大量时间, 这在一定程度上使系统效率低下。
评论前必须登录!
注册