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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

用位示图管理磁盘空间的分配与回收.docx

1、用位示图管理磁盘空间的分配与回收课 程 设 计 报 告( 2016-2017年度第二学期)课程名称: 操作系统实验 课设题目: 用位示图管理磁盘空间的分配与回收 院 系: 控制与计算机工程学院 班 级: 信安1401 * * * * * 设计周数: 一周 成 绩: 2015年7月9 日一、需求分析要求打印或显示程序运行前和运行后的位示图,以及分配和回收磁盘的物理地址过程。(1)假定现有一个磁盘组,共40个柱面。每个柱面4个磁道,每个磁道又划分成4个物理记录。磁盘的空间使用情况用位示图表示。位示图用若干个字构成,每一位对应一个磁盘块。1表示占用,0表示空闲。为了简单,假定字长为16位,其位示图如

2、图91所示。系统设一个变量S,记录磁盘的空闲块个数。位0123456789101112131415字0111111010011111012. . .39图91 位示图(2)申请一个磁盘块时,由磁盘块分配程序查位示图,找出一个为0的位,并计算磁盘的物理地址(即求出柱面号、磁道号(也即磁头号)和扇区号)。由位示图计算磁盘的相对块号的公式如下:相对块号一字号16+位号之后再将相对块号转换成磁盘的物理地址:由于一个柱面包含的扇区数每柱面的磁道数每磁道的扇区数4416,故柱面号相对块号16的商,即柱面号字号磁道号(相对块号16的余数)4的商,即(位号4)的商物理块号(相对块号16的余数)4的余数,即(位

3、号4)的余数(3)当释放一个相对物理块时,运行回收程序,计算该块在位示图中的位置,再把相应位置0。计算公式如下:先由磁盘地址计算相对块号:相对块号柱面号16+磁道号4+物理块号再计算字号和位号:字号相对块号16的商,也即字号柱面号位号磁道号物理块数每磁道+物理块号 (4)按照用户要求,申请分配一系列磁盘块,运行分配程序,完成分配。然后将分配的相对块号返回用户,并将相对块号转换成磁盘绝对地址,再显示系统各表和用户已分配的情况。(5)设计一个回收算法,将上述已分配给用户的各盘块释放。并显示系统各表。回收算法框图如图5所示。二、整体功能及设计程序整体主要有四个功能模块,分别是:初始化、分配、单独回收

4、以及全部回收。当点击相应按钮时实现其功能。程序设计了三个方法,分别是初始化init、分配算法dist、单独回收rec、全部回收allrec。磁盘空间分配框图如图1所示, 磁盘空间回收框图如图2所示. 图1 磁盘空间分配框图 图2 磁盘空间回收框图三、编程实现import java.awt.*;import java.awt.event.*;import javax.swing.*;public class bitmap extends JFrame implements ActionListener JTable table; JScrollPane sp1,sp2; JTextArea ta

5、; JLabel l1,l2,l3,l4,l5; JTextField tf1,tf2,tf3; JButton b1,b2,b3,b4; JPanel p1,p2,p3,p4,p5,p6,p7; String data ; String colum; int sp;/存放(相对)可用块 int used;/存放(相对)已用块数 int A,H;/S为可用块数,T为已用块数 bitmap() super(“位示图管理磁盘空间的分配与回收”系统模拟); data = new String4016; colum = new String16; sp = new int640; used = new

6、 int640; A = 0; H = 0; for(int i=0; i16; i+) columi=+i; table = new JTable(data,colum); sp1 = new JScrollPane(table); tf1 = new JTextField(6); tf2 = new JTextField(6); tf3 = new JTextField(6); ta = new JTextArea(10,20); sp2 = new JScrollPane(ta); p1 = new JPanel(new BorderLayout(); p2 = new JPanel(n

7、ew FlowLayout(); p3 = new JPanel(new BorderLayout(); p4 = new JPanel(new FlowLayout(); p5 = new JPanel(new FlowLayout(); p6 = new JPanel(new BorderLayout(); p7 = new JPanel(new FlowLayout(); l1 = new JLabel(位示图如下:); b1 = new JButton(位示图初始化); b1.addActionListener(this); b2 = new JButton(回收全部磁盘块); b2.

8、addActionListener(this); p2.add(b1);p2.add(b2); p1.add(l1,North); p1.add(sp1,Center); p1.add(p2,South); l2 = new JLabel(运行状况: ); l5 = new JLabel(空闲块数量:); p7.add(l5);p7.add(tf3); p3.add(l2,North); p3.add(p7,South); p3.add(sp2,Center); l3 = new JLabel(请输入需要分配的块数:); l4 = new JLabel(请输入要回收的盘块号:); b3 = n

9、ew JButton(确认分配); b3.addActionListener(this); b4 = new JButton(确认回收); b4.addActionListener(this); p4.add(l3);p4.add(tf1);p4.add(b3); p5.add(l4);p5.add(tf2);p5.add(b4); p6.add(p4,North);p6.add(p5,Center); this.setLayout(new BorderLayout(); this.add(p1,West); this.add(p3,Center); this.add(p6,South); t

10、his.pack(); this.setVisible(true); public void init()/功能:初始化 int k; for(int i=0;i40;i+) for(int j=0;j16;j+) k = (int)(Math.random()*2);/0与1两数中进行随机 dataij=+k; table.setValueAt(+k,i,j); public void getavail()/功能:得出可用块号与不可用块号的集合 int a; int b=0,c=0; A = 0; H = 0; for(int i=0;i40;i+) for(int j=0;j16;j+)

11、if(dataij.equals(0) a = i*16+j;/得到相对块号 spb = a;/写入可用块号集合 A+; b+; else a = i*16+j;/得到相对块号 usedc = a; H+; c+;/写入不可用块号集合 public void allrec()/全部回收 ta.setText(); String str=回收结果: n; for(int i=0;iH;i+) int a = usedi/16; int b = usedi%16/4; int c = usedi%16%4; dataa4*b+c=0; table.setValueAt(0,a,4*b+c);/位示

12、图相应位置置零 str+=柱面+a+磁道+b+扇区+c+盘块号:+usedi+n; usedi=0;/位示图相应位置置零 for(int i=0;i40;i+) for(int j=0;j16;j+) table.setValueAt(0,i,j); H=0; getavail(); ta.append(str); public static void main(String args) new bitmap(); public void actionPerformed(ActionEvent e) if(e.getSource()=b1) init(); getavail(); String

13、 str6=+A; ta.append(初始化完成!n); tf3.setText(str6); if(e.getSource()=b2) if(A=640) ta.setText(); String str7=没有资源可回收; ta.append(str7); else allrec(); String str8=+A; tf3.setText(str8); if(e.getSource()=b3) int n; System.out.println(tf1.getText(); n=Integer.parseInt(tf1.getText(); tf1.setText(); if(An)

14、ta.setText(); String str1=空闲块不足n; /ta.append(str1); JOptionPane.showMessageDialog(null,空闲块不足,提示,JOptionPane.PLAIN_MESSAGE); return; else int j,k; ta.setText(); String str=分配结果 n; int x=H; for(int i=0;in;i+) j = spi/16; k = spi-j*16; usedx+i=spi;/可用块相对地址转为已用块相对地址 datajk=1; table.setValueAt(1,j,k);/将位

15、示图对应位置写1 str+=柱面+spi/16+ 磁道+(spi%16)/4+ 扇区+(spi%16)%4+盘块号:+spi+ n; A-; H+; for(int t=0;tA;t+) spt=spt+n;/删除可用块中的已用块 ta.append(str); String str2=+A; tf3.setText(str2); tf1.setText(); if(e.getSource()=b4) int num; num=Integer.parseInt(tf2.getText(); ta.setText(); String str=; int j,k = 0; int a=num/16

16、;/柱面 int b=num%16/4;/磁道 int c=num%16%4; /扇区 if(dataa4*b+c.equals(0) JOptionPane.showMessageDialog(null,不可回收空闲块,提示,JOptionPane.PLAIN_MESSAGE); /tf2.setText( ); return; else dataa4*b+c=0; table.setValueAt(0,a,4*b+c); str+=柱面+a+磁道+b+扇区+c+盘快号:+num+n; A+; H-; for(int i=0;iH;i+) if(usedi=num) k=i; break;

17、for( j=k;jH;j+) usedj=usedj+1;/将回收的块号从“已用”中删除 ta.append(回收结果: n); ta.append(str); getavail(); String str5=+A; tf3.setText(str5); tf2.setText(); 四、使用说明程序运行后的运行界面如图3所示: 图3程序运行界面单击“初始化”按扭初使化程序。初使化后位示图分配情况图如图4所示。图4初使化后位示图分配情况图输入所需分配的块数并单击“确认分配”按钮,系统从第一个盘块到最后一个盘块,寻找第一个不为1的盘块,并为用户连续分配相应个数盘块,并显示分配情况和位示图情况,如图5所示(以分配量20为例)。 图5点击分配按钮后信息输入回收的盘块号,单击“确认回收”按钮,系统回收已分配给用户的盘块,如图6所示图6回收的提示信息 当空闲块不足时,会弹出提示信息,如图7所示。 图7提示信息单击“全部回收”按钮,所有盘块在位示图上位置置“0”,表示已经回收,如图8所示单击“确认回收”,若该块已经处于回收状态,则弹出对话框进行提醒,如图9所示五、结果分析基本满足要求,位示图初始化、单个分配、单个回收、全部回收等功能均可实现。

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

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