设供用户使用的主存空间为 100K,采用可变式分区存储管理,现有五个作业 A、B、C、 D、E,具体信息如题 33 表,高级调度和低级调度均采用 SJF 算法,分别计算各作业进 入主存时间,开始运行时间,结束运行时间及周转时间。(注:采用移动技术) 作业名 进入输入井 时间(时) 需要计算 时间(分) 主存量 要求(K) A 10.1 42 15 B 10.3 30 60 C 10.5 24 50 D 10.6 24 10 E 10.7 12 20
时间: 2023-07-15 16:13:19 浏览: 65
首先,将主存空间分成大小不确定的若干个分区,每个分区分配给一个进程使用,进程执行完毕后,释放该分区。在使用过程中,由于各个进程的大小不同,因此会产生许多碎片,导致无法再分配给较大的进程使用。因此,采用了可变式分区存储管理,即在进程执行完毕后,将该分区与相邻的空闲分区合并,形成更大的空闲分区。这样可以减小碎片,提高主存利用率。
以下是作业进入主存的时间和进程运行情况的表格:
| 进程 | 进入主存时间 | 运行开始时间 | 运行结束时间 | 周转时间 |
|------|--------------|--------------|--------------|----------|
| A | 10.1 | 10.1 | 10.58 | 0.48 |
| B | 10.3 | 10.58 | 11.18 | 0.88 |
| C | 10.5 | 11.18 | 11.58 | 1.08 |
| E | 10.7 | 11.58 | 12.1 | 0.4 |
| D | 10.6 | 等待 | 等待 | 等待 |
根据作业的大小和主存空间的大小,可以得出以下分区划分情况:
1. 初始状态:100K 主存空间全部是空闲分区
2. 进程 A 进入主存,占用 15K,空闲分区变为 85K
3. 进程 B 进入主存,占用 60K,将空闲分区分为 25K 和 60K 两部分,进程 A 占用了 15K 的空闲分区,剩余空闲分区为 70K
4. 进程 C 进入主存,占用 50K,将空闲分区分为 25K、24K 和 21K 三部分,进程 A 占用了 15K 的空闲分区,进程 B 占用了 60K 的空闲分区,剩余空闲分区为 21K
5. 进程 D 进入主存,占用 10K,将空闲分区分为 25K、14K 和 7K 三部分,进程 A 占用了 15K 的空闲分区,进程 B 占用了 60K 的空闲分区,进程 C 占用了 50K 的空闲分区,剩余空闲分区为 7K
6. 进程 E 进入主存,占用 20K,将空闲分区分为 7K、12K 和 8K 三部分,进程 A 占用了 15K 的空闲分区,进程 B 占用了 60K 的空闲分区,进程 C 占用了 50K 的空闲分区,进程 D 占用了 10K 的空闲分区,剩余空闲分区为 8K
7. 进程 D 开始运行,运行完毕后释放空闲分区,将 10K 的空闲分区合并为 22K,进程 A 占用了 15K 的空闲分区,进程 B 占用了 60K 的空闲分区,进程 C 占用了 50K 的空闲分区,剩余空闲分区为 22K
8. 进程 E 开始运行,运行完毕后释放空闲分区,将 20K 的空闲分区与 22K 的空闲分区合并为 42K,进程 A 占用了 15K 的空闲分区,进程 B 占用了 60K 的空闲分区,进程 C 占用了 50K 的空闲分区,剩余空闲分区为 42K
根据 SJF 算法,计算出各个进程的开始运行时间和结束运行时间。其中进程 D 需要等待空闲分区,因此开始运行时间和结束运行时间均为等待。进程 A、B、C、E 的开始运行时间可以通过前面的分区划分情况和调度算法计算得出。
进程 A 的开始运行时间为 10.1,需要计算 42 分钟,因此结束运行时间为 10.58。周转时间为结束运行时间减去进入主存时间,即 0.48 分钟。
进程 B 的开始运行时间为 10.58,需要计算 30 分钟,因此结束运行时间为 11.18。周转时间为结束运行时间减去进入主存时间,即 0.88 分钟。
进程 C 的开始运行时间为 11.18,需要计算 24 分钟,因此结束运行时间为 11.58。周转时间为结束运行时间减去进入主存时间,即 1.08 分钟。
进程 D 需要等待空闲分区,因此开始运行时间和结束运行时间均为等待,周转时间为 0 分钟。
进程 E 的开始运行时间为 11.58,需要计算 12 分钟,因此结束运行时间为 12.1。周转时间为结束运行时间减去进入主存时间,即 0.4 分钟。