Skip to content

Latest commit

 

History

History
122 lines (79 loc) · 2.37 KB

设计文档.md

File metadata and controls

122 lines (79 loc) · 2.37 KB

设计文档

总纲

1、图形界面带有命令行接口,并且命令行支持语法高亮

功能

多用户

用户数据结构

一个用户用一个unode表示,其成员如下:

class Unode{
  String userName; // 用户名
  String password; // 密码
  Date lastActive; // 上次登录时间
  Domain userDomain; // 用户所在的域
}

用户类型

super user - 超级用户

​ 可以操作所有文件,可以设置其他用户的访问权限

user - 一般用户

​ 可以操作用户文件,可以为访客设置权限

guest - 访客

​ 只可以在经过用户或超级用户的授权后对用户文件中的个别文件进行操作

访问控制表

数据结构

访问控制表记录了若干域,以及各个域对各个文件的访问权限:

class AccessControlTable{
  AccessControlDomain[] domainList = new AccessControlDomain[3];
}
class AccessControlDomain{
  HashMap<String, Privilege> domain2accessMapping;
}

文件系统

数据结构

硬盘模拟

​ 用位示图表示空闲盘块。

#####磁盘类:

class ExternalStorage{
  int size;				// 磁盘空间
  int inUse;			// 已用空间
  int blockSize;		// 盘块大小
  boolean[] bitDiagram;	 // 位示图
  void salloc(ArrayList returnBlock);	// 为文件分配盘块,分配的结果存放在参数中
  void sfree(ArrayList usingBlock);		// 释放参数所指定的盘块
}

#####内存类:

class Memory{
    
}
inode:
class Inode{
  int fileLength;	// 文件字节数
  String userID;	// 文件拥有者ID
  String GroupID;	// 文件组ID
  int privilege;	// 文件权限
  Date ctime, mtime, atime; 	// inode上次变动时间、文件内容上次变动时间、文件上次打开时间
  int linkCount;	// 文件链接数
  int dataBlockPosition; 		// 文件数据块的位置
}

#####文件系统类:

class FileSystem{//整合对磁盘和内存的操作,同时提供对文件的读写、增删操作
	ArrayList<Inode> inodeList;    
	//需要提供一组最基本的操作,如open、close、write等
    //提供一组由基本操作组合形成的操作,用于实现具体的命令,如cat,rm,touch,mkdir,ls等
}

文件类型

系统文件、用户文件

文件权限

read, write, visible

文件操作

open, close, read, write, delete