实验内容及步骤:
1.用户输入内存大小(单位GB),系统把内存分块,每块大小由用户输入设置,单位为KB,按字节寻址(B),也就是一个地址对应一个字节的大小
2.用户输入进程大小(单位KB)
3.为进程设置一个页表(页号,块号(块号的分配由系统随机产生)(先检查块号是否已经分配出去))
4.用户输入逻辑地址,
页号=255/页面大小 取整
页内偏移量=255%页面大小 取余 KB 注意单位,KB和B
物理地址=所在块号页面大小1024 + 业内偏移量 B
代码实现
package com.os;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Random;
import java.util.Scanner;
import sun.applet.Main;
public class Test {
/*
用户输入内存大小(单位GB),系统把内存分块,每块大小由用户输入设置,单位为KB,按字节寻址(B),也就是一个地址对应一个字节的大小
用户输入进程大小(单位KB)
为进程设置一个页表(页号,块号(块号的分配由系统随机产生)(先检查块号 是否已经分配出去))
用户输入逻辑地址,
页号=255/页面大小 取整
页内偏移量=255%页面大小 取余 KB 注意单位,KB和B
物理地址=所在块号*页面大小*1024 + 业内偏移量 B
*
* */
public static void main(String[] args) {
Random random = new Random();
Scanner scanner = new Scanner(System.in);
//寻址单位为字节B
//一个内存块有4KB * 1024 个地址
//用户自定义内存大小,单位为GB
System.out.println("请输入内存大小(单位为GB):");
//memorySize:内存大小(用户输入,必须整数)
int memorySize = scanner.nextInt();
System.out.println("请设置页面大小(单位KB):");
//memoryBlockSize一个内存块大小(单位为KB)
int memoryBlockSize = scanner.nextInt();
System.out.println("系统内存块(页面)大小为" + memoryBlockSize