ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:79.67KB ,
资源ID:21010867      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21010867.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(文件系统空闲空间管理模拟Word文档格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

文件系统空闲空间管理模拟Word文档格式.docx

1、map2map3位示图中每一位对应的相对磁盘块号如下图,磁盘块号由小到大对应于数组的低地址到高地址位上。即map0的第0位到第15位分别对应0号磁盘块到15号磁盘块的状态,map1的第0位到第15位对应16号磁盘块到31号磁盘块的状态,以此类推。313029282726252423222120191817164746454443424140393837363534333263626160595857565554535251504948如上表所示, 29号磁盘的状态存在map1中,对应于第13位, 第一行表示位号。3. 根据位示图中为1的位信息,生成一张已分配磁盘块表。柱面号磁道号物理块号 0

2、3 2. 1 7 如:map0的第1位为1, 则i=0,j=1, 其对应的相对块号block为1, 柱面号为0, 磁道号为 ,物理块号为1 计算公式如下:(1) 已知位示图中的下标i , j, 计算相对块号 Block= I * sizeof( int )+j (2)已知相对块号计算柱面、磁道、物理块号如下: 柱面号 C= 相对块号/(每柱面磁道数*每磁道物理块数) 磁道号 H= 相对块号%(每柱面磁道数*每磁道物理块数)/ 每磁道物理块数 物理块号 R= 相对块号%每磁道物理块数 4. 提出申请磁盘块或释放磁盘块的要求,根据要求完成操作。若申请盘块,则在位示图中找到为0的位,计算相对磁盘块号

3、,再计算相应具体物理设备的柱面号C、磁道号H和物理块号R,计算方法如步骤3;输出分配的CHR地址,并将位示图相应位由0变为1,输出位示图;若释放盘块,则从已分配磁盘块表中随机选择一个盘块释放,此时,已知CHR地址,计算该盘块的相对磁盘块号,再计算其相应信息在位示图中的位置( i,j)。计算过程如下:相对磁盘块号 = 柱面号*每柱面磁道数*每磁道物理块数+ 磁道号*每磁道物理块数+ 物理块号i = 相对磁盘块号/ sizeof(int)j = 相对磁盘块号% sizeof(int)四、实验报告要求1实验题目;2程序中所用的数据结构及说明;3源程序并附上必要的说明;4按照盘块的申请和释放顺序,打印

4、输出结果。源代码:/=package xiao.zhang.disk;public class DiskPartition private final int cylinderId; private final int trackId; private final int partitionId; private final int absolutelyId; public DiskPartition(int cylinderId, int trackId, int partionId, int absolutelyId) this.cylinderId = cylinderId; this.

5、trackId = trackId; this.partitionId = partionId; this.absolutelyId = absolutelyId; public int getAbsolutelyId() return this.absolutelyId; /* * (non-Javadoc) * * see java.lang.Object#toString() */ Override public String toString() return 磁盘块信息磁盘块编号: + this.cylinderId + - + this.trackId + + this.parti

6、tionId + , 磁盘块号: + this.absolutelyId + ;import java.util.ArrayList;import java.util.BitSet;import java.util.List;import java.util.Random;import java.util.Scanner;/* * 模拟磁盘存储 * author XiaoZhangpublic class Disk /* * 磁盘的柱面数量 * 磁盘的柱面编号为:0-cylinder-1 * 每个柱面的磁道数量 * 每个柱面的磁道编号为:0-track-1 * 每个磁道的磁盘块数量 * 每个磁

7、道的磁盘块编号为:0-partition-1 private List listPartition; private BitSet bitMap; * 未设置信息的磁盘 public Disk() System.out.println(创建一个未定义信息的磁盘); * 随机初始化BitMap的值 public void initalBitMap() Random random = new Random();初始化分配: for (int i = 0; i this.bitMap.length; i+) this.bitMapi = new BitSet(Integer.SIZE); for (

8、int j = 0; j Integer.SIZE; j+) this.bitMapi.set(j, random.nextBoolean(); * 初始化磁盘 * 创建BitMap对象 * 创建磁盘块状态表对象 * param cylinder * param track * param partition public Disk(int cylinder, int track, int partition) DiskPartition dp = null; this.listPartition = new ArrayList(); cylinder; track; for (int k =

9、 0; k partition; k+) dp = new DiskPartition(i, j, k, i * track * partition + j * partition + k); this.listPartition.add(dp); int partitionNumber = listPartition.size(); int length = partitionNumber % Integer.SIZE = 0 ? partitionNumber / Integer.SIZE : partitionNumber / Integer.SIZE + 1; this.bitMap

10、= new BitSetlength;Disk信息情况 柱面: + cylinder + 个, 每个柱面磁道: + track + 个, 每个磁道磁盘块: + partition + ,磁盘块号:0- + (listPartition.size() - 1) + System.out.println(); * 通过指定bitMap位置获得映射到磁盘上的磁盘块 * param i * 取值范围在0-bitMap.length-1 * param j * 取值范围在0-31 * return public void showDiskPartition(int i, int j) if (i = b

11、itMap.length | j = Integer.SIZE | (i * Integer.SIZE + j) = listPartition.size() System.out.println(请输入合法的磁盘块的bitMap位置 else int partitionId = i * Integer.SIZE + j; System.out.println(listPartition.get(partitionId).toString(); * 分配磁盘块 public void sendPatition() 再次开始分配剩余: int largeLength=listPartition.

12、size(); if(i*Integer.SIZE+j)=largeLength) return ; if (bitMapi.get(j)=false) bitMapi.set(j, true); int index = i * Integer.SIZE + j; System.out.println(listPartition.get(index).toString(); * 通过磁盘块号,修改bitMap的值 * param paratitionId * 磁盘块号 * param bvalue * 修改值 public void modifBitMap(int paratitionId,

13、boolean bvalue) int index = paratitionId / Integer.SIZE; int bitIndex = paratitionId % Integer.SIZE; if (index bitMap.length | bitIndex = 32) 请输入合法的磁盘块号 boolean before = bitMapindex.get(bitIndex); if (before = bvalue) / System.out.println(BitMap 位标识不用修改 System.out.println(BitMap 位标识不用释放 else bitMapi

14、ndex.set(bitIndex, bvalue); boolean after = bitMapindex.get(bitIndex);BitMap由: + before + 修改为: + after + ,释放成功 * 打印显示bitMap,显示磁盘块的存储情况 * return String public void showBitSet() StringBuffer sb = new StringBuffer(); bitMap.length; sb.append( if (bitMapi.get(j) sb.append(1 + else sb.append(0 + n System

15、.out.println(sb.toString(); public static void main(String args) Scanner console = new Scanner(System.in); System.out.print(请输入柱面数: int x = console.nextInt();请输入每个柱面数的道数: int y = console.nextInt();请输入每个磁道的磁盘块数: int z = console.nextInt(); Disk d = new Disk(x, y, z); d.initalBitMap(); d.showBitSet();

16、/ = / System.out.print(请输入bitMap的行:0-+(d.listPartition.size()%Integer.SIZE=0?(d.listPartition.size()/Integer.SIZE-1):(d.listPartition.size()/Integer.SIZE)+: / int i=console.nextInt();请输入bitMap的列:+(Integer.SIZE-1)+ / int j=console.nextInt(); / d.showDiskPartition(i, j); d.sendPatition();目前磁盘状态: /=请输入磁盘块的号码: int number = console.nextInt(); / Random r=new Random(); d.modifBitMap(number, false);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1