首页 > 其他分享 >希冀 操作系统 实验四 段式存储管理

希冀 操作系统 实验四 段式存储管理

时间:2024-11-08 20:15:17浏览次数:3  
标签:duans 存储管理 操作系统 希冀 scanf duanbiaos printf 进程 duanbiaonum

申请进程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

相关文章

  • C:\Windows\System32\spp\store 文件夹是 Windows 操作系统中与激活和许可证管理
    C:\Windows\System32\spp\store文件夹是Windows操作系统中与激活和许可证管理相关的一个重要文件夹。该文件夹存储了与Windows激活过程相关的信息、许可证密钥、许可证的状态等数据。具体来说,它主要涉及SoftwareProtectionPlatform(SPP),即软件保护平台。1. 什么是SPP......
  • 轻松掌握如何使用 Ventoy 创建多启动 USB 驱动器,并有效管理操作系统镜像文件。深入理
    Ventoy初级使用教程的大纲。Ventoy是一个非常实用的开源工具,能够让用户轻松地在USB驱动器上创建多启动(multi-boot)系统,支持多种操作系统镜像(ISO文件)的直接启动,而无需重新格式化或安装启动加载器。Ventoy初级使用教程大纲1.Ventoy简介什么是Ventoy?开源的多启动工......
  • .msc 是 Microsoft Management Console (MMC) 的管理单元文件扩展名,它通常用于存储管
    .msc是MicrosoftManagementConsole(MMC)的管理单元文件扩展名,它通常用于存储管理工具的配置和界面信息。MSC文件本质上是一个预设的管理工具,它包含了一些可以用来管理和配置Windows操作系统、网络、硬件等资源的界面和功能。简单来说,.msc文件是Windows系统中的管理工......
  • 学习openeuler操作系统的记录本
    1.下载以及配置openeuler在官网里面下载openeuler操作系统,在官网的文档里面里面查看相对应的注意事项,(一定要会阅读官方文档),在官网查看下载的对应操作系统需要的最小cpu,以及磁盘大小等分配合适的虚拟硬盘,配置的过程要一步一步来,防止出现分配不合理,而导致的操作系统无法正常运行的......
  • ndis.sys 是 Windows 操作系统中的一个关键系统文件,属于 网络驱动接口规范(NDIS,Network
    ndis.sys是Windows操作系统中的一个关键系统文件,属于网络驱动接口规范(NDIS,NetworkDriverInterfaceSpecification)的一部分。它是一个用于管理网络驱动程序和网络接口卡(NIC)之间通信的核心组件,主要负责网络设备驱动与操作系统的接口。具体来说,ndis.sys充当了操作系统与网络......
  • 操作系统的运行机制
    操作系统的运行机制‍​​‍一、内核程序与应用程序​​‍二、特权指令与非特权指令特权指令,如内存清零指令等。非特权指令,如加法指令、减法指令等。CPU设计和生产的时候就划分了特权指令和非特权指令,因此CPU执行一条指令前就能判断出其类型。‍三、内核态与用户......
  • 操作系统的运行机制
    操作系统的运行机制‍​​‍一、内核程序与应用程序​​‍二、特权指令与非特权指令特权指令,如内存清零指令等。非特权指令,如加法指令、减法指令等。CPU设计和生产的时候就划分了特权指令和非特权指令,因此CPU执行一条指令前就能判断出其类型。‍三、内核态与用户......
  • winring0.sys 是一个系统驱动程序文件,它通常与第三方工具或软件一起使用,主要用于访问
    winring0.sys是一个系统驱动程序文件,它通常与第三方工具或软件一起使用,主要用于访问系统硬件信息和提供低级别硬件控制。这些工具或软件可能需要与操作系统的内核进行交互,或者获取系统的底层信息,而winring0.sys驱动程序就起到了桥梁的作用,允许这些程序进行底层硬件操作。下面是......
  • **BMP(Bitmap)**是一种图像文件格式,通常用于存储位图图像。它是最早期的图像格式之一,最
    **BMP(Bitmap)**是一种图像文件格式,通常用于存储位图图像。它是最早期的图像格式之一,最早由微软在Windows操作系统中引入。BMP格式的文件扩展名通常为.bmp,它用于表示由像素网格组成的图像,像素数据存储在文件中,通常没有压缩,因此能够保存原始的图像数据。1. BMP图片格式是什么?......
  • runas 是 Windows 操作系统中的一个命令,用于以不同的用户身份运行程序或命令。这意味
    runas是Windows操作系统中的一个命令,用于以不同的用户身份运行程序或命令。这意味着你可以用管理员账户或其他用户的身份来启动程序,而不需要注销当前账户或切换用户。这个命令在需要进行权限提升或在多个用户身份下进行操作时非常有用。什么是 runas 命令?runas命令允许你......