申请进程apply()函数完成了新开进程的功能,同时还记录了该进程需要的内存空间段数和每段的具体大小,你需要补全该函数。
补全的代码为:
void apply() {
printf("请输入进程的名字:");
scanf("%s", duanbiaos[duanbiaonum].processname);
printf("请输入该进程的段数:");
scanf("%d", &duanbiaos[duanbiaonum].num);
if (duanbiaos[duanbiaonum].num > 10) {
printf("段数太多,申请失败\n");
return;
}
int paddr = 0;
for (int j = 0; j < duanbiaos[duanbiaonum].num; j++) {
printf("进程第%d段的大小是:", j + 1);
scanf("%ld", &duanbiaos[duanbiaonum].duans[j].capacity);
duanbiaos[duanbiaonum].duans[j].addr = paddr;
paddr += duanbiaos[duanbiaonum].duans[j].capacity;
}
duanbiaos[duanbiaonum].Isdiaoyong = 0;
duanbiaos[duanbiaonum].total = paddr;
duanbiaonum++;
}
函数diaodu()的主要功能是将某进程装入内存,在装入之前需要判断剩余可用空间是否能够满足内存需求,如果满足则将其装入内存,否则调入失败。在装入内存的过程中需要注意记录虚拟地址和物理地址的对应关系。
补全的diaodu()的代码为:
void diaodu() {
printf("您要调度的进程是:p");
int n;
scanf("%d", &n);
if (n > duanbiaonum)
printf("段表不存在!\n");
else if (duanbiaos[n - 1].Isdiaoyong == 1)
printf("操作错误,该进程已经被调入内存!\n");
else if (duanbiaos[n - 1].total > neicun - zhanyong)
printf("内存空间不足,调度不成功!\n");
else {
printf("下面对进程%s进行地址转换:\n", duanbiaos[n - 1].processname);
for (int j = 0; j < duanbiaos[n - 1].num; j++) {
printf("正在进行第%d段的地址转换,请稍候......\n", j + 1);
duanbiaos[n - 1].duans[j].realaddr = duanbiaos[n - 1].duans[j].addr + zhanyong;
printf("第%d段的地址转换成功!\n", j + 1);
}
zhanyong += duanbiaos[n - 1].total;
duanbiaos[n - 1].Isdiaoyong = 1;
printf("调度后的结果是:\n");
show1(n - 1);
}
}
函数zhuanhuan()实则使用记录的虚拟地址与物理地址的关系,将你需要表示的某段段内偏移这一逻辑地址所对应的物理地址找到。现在也请你将缺失部分补全。
补全的 zhuanhuan():
void zhuanhuan() {
int n, i, j;
printf("请输入进程:p");
scanf("%d", &n);
if (n > duanbiaonum)
printf("进程不存在或没被调度!\n");
else if (duanbiaos[n - 1].Isdiaoyong == 1) {
printf("请输入段号:\n");
scanf("%d", &i);
printf("输入偏移地址:\n");
scanf("%d", &j);
if (i > duanbiaos[n - 1].num) {
printf("段号超出范围\n");
} else if (j > duanbiaos[n - 1].duans[i - 1].capacity) {
printf("段内偏移地址超出范围\n");
} else {
printf("转换后的地址为%d\n", duanbiaos[n - 1].duans[i - 1].realaddr + j);
}
} else
printf("该进程没有调入内存\n");
}
标签:duans,存储管理,操作系统,希冀,scanf,duanbiaos,printf,进程,duanbiaonum
From: https://blog.csdn.net/m0_74172897/article/details/143608906