操作系统课程设计——0、分析

操作系统课程设计——0、分析

本次的课程设计采取分组进行完成。

根据我们组的分配情况,本次我负责的部分为文件管理和用户接口,主要需要写这一部分的方法和数据调用以给与我配合制作界面的同学进行使用。

本次使用的编程语言为Java。

分析部分

1、文件管理和用户接口

文件管理和用户接口部分实现的主要是单用户的磁盘文件管理部分,
包括文件的逻辑结构、物理结构、目录、磁盘分配回收、文件的保护和用户接口的实现。

(1) 文件的逻辑结构

文件的逻辑结构采用流式结构;文件均采用文本文件。
假设系统中只有两种文件,一种是存放任意字符的普通文本文件,一种是可执行文件。可执行文件的程序内容手工输入,事先创建约 10
个可执行文件,将来用这些可执行文件进行后续的进程创建、内存分配、进程执行/调度和设备分配。 这里,“可执行文件”中的“指令”只有 5
种,包括:

  • x=? 给 x 赋值
  • x++ x 加1 (设 x 值总是小于等于 255、大于等于 0)。
  • x-- x 减 1。
  • !? ? !是“特殊命令(I/O)的前缀”,第一个?为 A,B,C 中的某 个设备,第二个?为一位整数,表示使用设备的时间(例如假定一个数,这个数随着系统时间增加而递减(时间单位自定,例如:秒) 。 减到 0 时,认为设备工作完成) 。
  • end 表示“可执行文件”结束。

每个可执行文件中可以包含多条同一类指令,假设每条指令在文 件中占 1 字节(自己思考如何把前述 5 种指令用一个字节表示并存储 在后述的disk 磁盘块里,其实这是一个“汇编/编译”的模拟过程) 。 如果可执行文件中的指令超过 64 条,就再多分配一个磁盘块,以此类推。
假设每种指令都是原子性的(即不考虑各指令的汇编实现细节, 每种指令都是原子执行的),且执行时间都是一个时间单位,后面进 程调度的时间片是 n个时间单位,例如 n=6,就表示本进程执行 6 条 指令之后将发生进程调度。

由题意可知,本次模拟系统中只有两种文件,一种是文本文件,另一种是我们创造的可执行文件。
由题意可知一条指令占模拟系统中的一个“字节”——我这里使用连续8个数字来表示一个字节,就像做计算机组成原理的实验时候一样。由于这5条指令功能都不尽相同,因此编码规则如下:

  • 前三位用作指令编码。
  • 规定:第一位为1表示需要读取下一个字节,当第一位xor第二位==1时,后五位代表x所在的内存地址(这里需要跟负责内存的同学商量一下才能确定规则)

  • 000xxxxx——为end指令
  • 001xxxxx——为x++
  • 010xxxxx——为x–
  • 100xxxxx——为控制设备,其中后五位代表外部设备的编号,而下一个“字节”表示设备执行的时间。
  • 110xxxxx——为给x赋值,下一个“字节”表示赋值的大小,由于是一个字节,所以范围是0-255。

(2) 磁盘模拟

用一个文件 disk 模拟磁盘,设磁盘的每个盘块 64 字节,模拟磁 盘共有 256 块。第 0、1 块存放文件分配表,第 2 块存放根目录,其 余存放子目录和文件。(所以你创建的目录和流式文件不能太大太多, 但至少要包含 5 个目录和 15个文件。注意:文件对磁盘块是独占的, 即每个文件至少占据一个磁盘块,不会让两个文件共栖于同一磁盘块。)

对于磁盘的模拟,我目前的想法是在 真·操作系统下 用文本文件记录,根据题意可知一共有256行,每行64个字符串,每个串记录一个字节,在 模拟操作系统 开始运行的时候就把这个文件读进数组中,而此数组为二维数组,大小是256*(64*8) = 128KB,真·JVM内存兄 轻轻松松就能塞得下。

(3) 目录结构

目录结构采用树型目录结构。

  1. 目录项内容: 每个目录项 8 个字节,其中: 目录名或文件名:3 个字节; 扩展名: 1个字节(可执行文件扩展名为 e,目录没有扩展名) ; 目录属性、文件属性:1 字节; 起始盘号:1 字节; 文件长度:2 字节。
  2. 根目录 根目录位置固定,为磁盘第 2块,大小固定,共可包含 8 个 目录项,占用模拟磁盘第 2 块;
  3. 子目录 位置不固定,大小不固定。

这一部分直接按照要求实现就好了,文件长度信息由于是2字节,所以文件长度的范围是1~(2^15-1)(模拟字节)。

(4) 磁盘分配

磁盘的分配采用链接结构(显式链接)的分配方式。系统采用文件分配表方式记录磁盘空间的使用情况和链接结构的指针。文件分配表中一项需要 1 字节,而磁盘有 256 块,因而有 256 项, 模拟磁盘空间中的第 0、1 块用来存放文件分配表。

这里就有点疑问了,第0、1块一共只有64*2 = 128模拟字节来存储文件分配表,并没有256项。但是根据其他部分的提示,按照我的理解来说就是这个文件分配表可以记录第3-130块(因为0、1、2块被模拟系统用来存储文件系统的重要信息)。由前面的题目可以知道,假如一个文件的大小超出一个磁盘块的大小那么剩下的部分就需要别的磁盘块进行辅助储存。我们可以使用第3-255块来存储文件,但是文件分配表只能够记录128项,所以这里我认为第3-130项是用来储存文件的起始磁盘块,可以使用131-255来进行辅助存储,所以文件分配表的每一项的范围是0和3-255,其中0表示文件在这一个磁盘块就已经存储完而3-255表示辅助存储的磁盘号,当读取文件的时候可以通过文件分配表快速找到文件的存储磁盘块从而读出文件内容。

(5) 用户接口

用户接口提供用户命令接口,接收用户从键盘键入的命令。如果 不使用键盘输入命令的方式,那么就模拟 windows 操作方式,采用“右击快捷菜单”方式提供“创建删除文件/目录,修改属性”等命令,拖 动来移动/复制文件等。 要求实现以下命令: (下面例子中的 $只是命令提示符而已,和 UNIX 无关。除 aa 是目录名外,其余均为文件名。你可以根据自己实现方便或喜欢而自 定义命令参数。 ) 需要实现的命令包括:

  1. 创建文件:create 例如 $ create \aa\bb.e
  2. 删除文件:delete 例如 $ delete \aa\yy
  3. 显示文件:type 例如 $ type \zz
  4. 拷贝文件:copy 例如 $ copy \xx \aa\yy
  5. 建立目录:mkdir 例如 $ mkdir \dd
  6. 删除空目录:rmdir 目录非空时,要报错。

可选实现的命令包括:

  • 改变目录路径:chdir
  • 删除目录:deldir(既可删除空目录又可删除非空目录)
  • 移动文件:move
  • 改变文件属性:change
  • 磁盘格式化:format
  • 磁盘分区命令:fdisk

上述命令在实际系统中都是需要建立进程才可以运行的,这里为简单起 见,这些命令执行时不必在模拟系统中建立进程,可直接让 Windows 执行你编写的相应函数。

没什么好说的这一部分,也是按照要求来做就好了。

(6) 屏幕显示

屏幕显示要求包括: 用户命令接口:用于系统运行时用户用键盘输入或模拟 win 命令; 磁盘目录显示:要求显示磁盘的目录结构; 磁盘使用情况:显示磁盘每一个磁盘块的空间是占用还是空闲。

这一个部分就很简单了,在一开始读取磁盘情况的时候就可以将磁盘使用情况一并读取出来。

我负责部分的分析就大概是这样了,可能会有错误的地方,希望大家能够指出其中错误之处,大家一起讨论一下。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我很乐意为您解答关于Java课程设计中彩票购买抽奖系统的问题! 彩票购买抽奖系统是一个非常有趣的主题,有着广泛的应用场景。在这个系统中,用户可以购买彩票,并在开奖时参与抽奖。以下是一些实现该系统所需的基本功能: 1. 用户注册和登录:用户需要注册并登录才能购买彩票和参与抽奖。 2. 彩票购买:用户可以在系统中购买不同种类的彩票,例如双色球、大乐透等。在购买彩票时,用户需要选择号码和注数,并支付相应的费用。 3. 彩票兑奖:当彩票中奖时,用户可以在系统中进行兑奖操作。系统需要计算中奖金额,并将奖金发放给用户。 4. 抽奖:在开奖时,系统需要随机生成中奖号码,并计算中奖情况。中奖情况包括一等奖、二等奖、三等奖等多个等级。系统需要根据中奖情况计算中奖金额,并将奖金发放给中奖用户。 5. 数据统计:系统需要记录彩票购买和抽奖的数据,并进行统计分析。例如,系统可以统计每种彩票的销售情况、中奖情况等信息。 以上是彩票购买抽奖系统的基本功能,当然还可以根据实际需求进行扩展。在Java课程设计中,您可以使用Java语言和相关技术实现该系统,例如Java Servlet、JSP、MySQL等。同时,您需要考虑系统的安全性和可靠性,例如用户信息的保护、交易数据的安全等。希望这些信息能对您的课程设计有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值