-
2018-09-27 19:30:04
文件目录结构:单级、两级、多级(树形)和无环图目录结构
与文件管理系统和文件集合相关联的是文件目录,它包含有关文件的信息,包括属性、 位置和所有权等,这些信息主要是由操作系统进行管理。首先我们来看目录管理的基本要求: 从用户的角度看,目录在用户(应用程序)所需要的文件名和文件之间提供一种映射,所以目录管理要实现“按名存取”;目录存取的效率直接影响到系统的性能,所以要提高对目录的检索速度;在共享系统中,目录还需要提供用于控制访问文件的信息。此外,文件允许重名也是用户的合理和必然要求,目录管理通过树形结构来解决和实现。
文件控制块和索引结点
同进程管理一样,为实现目录管理,操作系统中引入了文件控制块的数据结构。
文件控制块(FCB)是用来存放控制文件需要的各种信息的数据结构,以实现“按名存取”。FCB的有序集合称为文件目录,一个FCB就是一个文件目录项。为了创建一个新文件,系统将分配一个FCB并存放在文件目录中,成为目录项。
FCB主要包含以下信息:- 基本信息,如文件名、文件的物理位置、文件的逻辑结构、文件的物理结构等。
- 存取控制信息,如文件存取权限等。
- 使用信息,如文件建立时间、修改时间等。
在检索目录文件的过程中,只用到了文件名,仅当找到一个目录项(查找文件名与目录项中文件名匹配)时,才需要从该目录项中读出该文件的物理地址。也就是说,在检索目录时,文件的其他描述信息不会用到,也不需调入内存。因此,有的系统(如UNIX,见表)釆用了文件名和文件描述信息分开的方法,文件描述信息单独形成一个称为索引结点的数据结构,简称为 i 结点。在文件目录中的每个目录项仅由文件名和指向该文件所对应的i结点的指针构成。
UNIX的文件目录结构 文件名 索引结点编号 文件名1 文件名2
一个FCB的大小是64字节,盘块大小是1KB,则在每个盘块中可以存放16个FCB(注意,FCB必须连续存放)。而在UNIX系统中一个目录项仅占16字节,其中14字节是文件名,2字节是 i 结点指针。在1KB的盘块中可存放64个目录项。这样,可使查找文件时平均启动磁盘次数减少到原来的1/4,大大节省了系统开销。
存放在磁盘上的索引结点称为磁盘索引结点,UNIX中的每个文件都有一个唯一的磁盘索引结点,主要包括以下几个方面:- 文件主标识符,拥有该文件的个人或小组的标识符。
- 文件类型,包括普通文件、目录文件或特别文件。
- 文件存取权限,各类用户对该文件的存取权限。
- 文件物理地址,每个索引结点中含有13个地址项,即 iaddr(0) ~ iaddr(12),它们以直接或间接方式给出数据文件所在盘块的编号。
- 文件长度,以字节为单位。
- 文件链接计数,在本文件系统中所有指向该文件的文件名的指针计数。
- 文件存取时间,本文件最近被进程存取的时间、最近被修改的时间以及索引结点最‘ 近被修改的时间。
- 文件被打开时,磁盘索引结点复制到内存的索引结点中,以便于使用。在内存索引结点中又增加了以下内容:
- 索引结点编号,用于标识内存索引结点。
- 状态,指示i结点是否上锁或被修改。
- 访问计数,每当有一进程要访问此i结点时,计数加1,访问结束减1。
- 逻辑设备号,文件所属文件系统的逻辑设备号。
- 链接指针,设置分别指向空闲链表和散列队列的指针。
在理解一个文件系统的需求前,我们首先来考虑在目录这个层次上所需要执行的操作,这有助于后面文件系统的整体理解。
- 搜索:当用户使用一个文件时,需要搜索目录,以找到该文件的对应目录项。
- 创建文件:当创建一个新文件时,需要在目录中增加一个目录项。
- 删除文件:当删除一个文件时,需要在目录中删除相应的目录项。
- 显示目录:用户可以请求显示目录的内容,如显示该用户目录中的所有文件及属性。
- 修改目录:某些文件属性保存在目录中,因而这些属性的变化需要改变相应的目录项。
操作时,考虑以下几种目录结构:在整个文件系统中只建立一张目录表,每个文件占一个目录项,如图所示。
当访问一个文件时,先按文件名在该目录中查找到相应的FCB,经合法性检查后执行相应的操作。当建立一个新文件时,必须先检索所有目录项以确保没有“重名”的情况,然后在该目录中增设一项,把FCB的全部信息保存在该项中。当删除一个文件时,先从该目录中找到该文件的目录项,回收该文件所占用的存储空间,然后再清除该目录项。
单级目录结构实现了 “按名存取”,但是存在查找速度慢、文件不允许重名、不便于文件共享等缺点,而且对于多用户的操作系统显然是不适用的。2) 两级目录结构。
单级目录很容易造成文件名称的混淆,可以考虑釆用两级方案,将文件目录分成主文件目录(Master File Directory, MFD)和用户文件目录(User File Directory, UFD)两级,如图所示。
主文件目录项记录用户名及相应用户文件目录所在的存储位置。用户文件目录项记录该用户文件的FCB信息。当某用户欲对其文件进行访问时,只需搜索该用户对应的UFD,这既解决了不同用户文件的“重名”问题,也在一定程度上保证了文件的安全。
两级目录结构可以解决多用户之间的文件重名问题,文件系统可以在目录上实现访问限制。但是两级目录结构缺乏灵活性,不能对文件分类。将两级目录结构的层次关系加以推广,就形成了多级目录结构,即树形目录结构,如图所示。
用户要访问某个文件时用文件的路径名标识文件,文件路径名是个字符串,由从根目录出发到所找文件的通路上的所有目录名与数据文件名用分隔符链接起来而成。从根目录出发的路径称绝对路径。当层次较多时,每次从根目录查询浪费时间,于是加入了当前目录,进程对各文件的访问都是相对于当前目录进行的。当用户要访问某个文件时,使用相对路径标识文件,相对路径由从当前目录出发到所找文件通路上所有目录名与数据文件名用分隔符“/”链接而成。上图是Linux操作系统的目录结构,“/dev/hda”就是一个绝对路径。若当前目录为 “/bin”,则“./ls”就是一个相对路径,其中.符号表示当前工作目录。
通常,每个用户都有各自的“当前目录”,登录后自动进入该用户的“当前目录”。操作系统提供一条专门的系统调用,供用户随时改变“当前目录”。例如,UNIX系统中, “/etc/passwd”文件就包含有用户登录时默认的“当前目录”,可用cd命令改变“当前目录”。
树形目录结构可以很方便地对文件进行分类,层次结构清晰,也能够更有效地进行文件的管理和保护。但是,在树形目录中查找一个文件,需要按路径名逐级访问中间结点,这就增加了磁盘访问次数,无疑将影响查询速度。树形目录结构可便于实现文件分类,但不便于实现文件共享,为此在树形目录结构的基础上增加了一些指向同一结点的有向边,使整个目录成为一个有向无环图。引入无环图目录结构是为了实现文件共享,如图4-6所示。
当某用户要求删除一个共享结点时,若系统只是简单地将它删除,当另一共享用户需要访问时,却无法找到这个文件而发生错误。为此可以为每个共享结点设置一个共享计数器,每当图中增加对该结点的共享链时,计数器加 1;每当某用户提出删除该结点时,计数器减1。仅当共享计数器为0时,才真正删除该结点,否则仅删除请求用户的共享链。
图4-6 图形目录结构
共享文件(或目录)不同于文件拷贝(副本)。如果有两个文件拷贝,每个程序员看到的是拷贝而不是原件;但如果一个文件被修改,那么另一个程序员的拷贝不会有改变。对于共享文件,只存在一个真正文件,任何改变都会为其他用户所见。
无环图目录结构方便实现了文件的共享,但使得系统的管理变得更加复杂。更多相关内容 -
4.1.3 OS之文件目录目录结构(单级-两级-多级-无环图)、索引节点FCB瘦身
2020-05-23 13:24:24两级目录结构4.多级目录结构(树形目录结构)5.无环图目录结构6.索引节点(FCB的改进)瘦身 0.思维导图 1.文件控制块 对目录的操作 2.单级目录结构 3.两级目录结构 4.多级目录结构(树形目录结构) 无环图目录... -
vue项目划分目录结构
2022-01-21 16:48:37vue项目结构的细节划分1、本地项目文件除了用get clone方法以外还可以用到更简单的命令进行关联
git remote add origin git仓库项目的地址
git push -u ortgin maste
通过这两条命令可以快速的进行本地与git仓库连接
2、创建新项目首先进行目录划分
2.1刚开始创建的vue cli2目录是这样的,在真实的公司进行开发的时候需要对目录结构进行细划分,便于后期的管理和维护
2.2、这里的主要是对src进行目录规划
2.2.1、(1)assets:资源文件,主要放css和img文件
(2)common:公共js文件,主要是一些js常量抽取和封装的工具类
(3)componets:组件,这个想必大家都很熟悉了,主要是本项目业务的组件和公共的组件(封装的组件在其它项目也可以使用)
(4)router:路由文件,store:状态管理
(5)network:存放一些axios文件和分类主页js文件
(6)views:视图文件。一些分类主页各个部分的文件
2.3、文件根目录创建的文件
2.3.1、vue.config.js:对文件路径进行别名,路径的时候不用输入../
vue.config.js中的格式如下:
2.3.2、.editorconfig:对代码的风格进行统一(vue3中没有这个文件,建议在项目文件中添加这个文件,在多个人开发提交项目的时候,规范代码格式)
.editorconfig文件内容如下
总结:在创建新项目之后的第一步就是划分目录结构(根据自己所需),这样方便后期的管理和维护。
-
数据库 | 数据库系统模式 | 三级模式结构 | 两级映像 | 数据独立性
2019-03-14 14:30:04数据库系统模式的概念;...两级映射与数据独立性;外模式/模式映像;内模式/模式映像;总结;数据库模式;数据库的内模式;数据库的外模式;数据库的二级映像;数据库系统模式的概念;模式(Schema...;目录
数据库系统模式的概念
模式(Schema)
- 数据库逻辑结构和特征的描述
- 是型的描述
- 反映的是数据的结构及其联系
- 模式是相对稳定的
实例(Instance)
- 模式的一个具体值
- 反映数据库某一时刻的状态
- 同一个模式可以有很多实例
- 实例随数据库中的数据的更新而变动
“型” 和“值” 的概念
型(Type)
对某一类数据的结构和属性的说明
值(Value)
是型的一个具体赋值
例如
- 学生记录型:
(学号,姓名,性别,系别,年龄,籍贯)
- 一个记录值:
(900201,李明,男,计算机,22,江苏)
数据库系统的三级模式结构
- 模式(Schema)-全体数据的逻辑结构和特征的描述
- 外模式(External Schema)-局部数据的逻辑结构和特征的描述
- 内模式(Internal Schema)-数据的物理结构和存储方式的描述
模式/逻辑模式
外模式
外模式(也称子模式或用户模式)
- 数据库用户(包括应用程序员和最终用户)使用的局部数据的逻辑结构和特征的描述
- 数据库用户的数据视图,是与某一应用有关的数据的逻辑表示
内模式
内模式(也称存储模式)
两级映射与数据独立性
- 三级模式是对数据的三个抽象级别
- 二级映象在DBMS内部实现这三个抽象层次的联系和转换
- 外模式/模式映像
- 模式/内模式映像
外模式/模式映像
保证数据的逻辑独立性
- 当模式改变时,数据库管理员修改有关的外模式/模式映象,使外模式保持不变
- 应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
内模式/模式映像
保证数据的物理独立性
- 当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式/内模式映象,使模式保持不变
- 应用程序不受影响。保证了数据与程序的物理独立性,简称数据的物理独立性。
总结
数据库模式
- 即全局逻辑结构是数据库的中心与关键
- 独立于数据库的其他层次
- 设计数据库模式结构时应首先确定数据库的逻辑模式
数据库的内模式
- 依赖于它的全局逻辑结构
- 独立于数据库的用户视图,即外模式
- 独立于具体的存储设备
- 将全局逻辑结构中所定义的数据结构及其联系按照一定的物理存储策略进行组织,以达到较好的时间与空间效率
数据库的外模式
- 面向具体的应用程序
- 定义在逻辑模式之上
- 独立于存储模式和存储设备
- 当应用需求发生较大变化,相应外模式不能满足其视图要求时,该外模式就得做相应改动
- 设计外模式时应充分考虑到应用的扩充性
数据库的二级映像
- 保证了数据库外模式的稳定性
- 从底层保证了应用程序的稳定性,除非应用需求本身发生变化,否则应用程序一般不需要修改
-
CentOS7目录结构详细版
2018-08-19 17:15:03原文地址:http://www.cnblogs.com/ellisonDon/archive/2012/10/03/2710730.html 原文地址:... linux 目录分类 CentOS的目录大体上可分为四类:管理类、用户类、应用程序类、信息类文件目录。 ... -
一个让Typora标题自动在各目录结构添加标题,同时也在目录结构中也显示自动编号
2020-05-06 16:02:41但他有个问题是,把前面的几个标题和几级目录给干掉了,因为前面是摘要、目录这两个一级标题,然后他本人不喜欢1、2标题编号,所以是从三级标题开始的。 因此,我把他的base.user.css修改了下,准确来说是删掉乐... -
获取文件夹的目录层级结构
2019-06-29 11:06:59最近因为任务交接需要上传代码到仓库,写README和以一些辅助的说明文档。可能是开发流程不规范,导致现在...另外有一个清晰的目录架构对于理解别人写的代码是有很大帮助的。 (1)切换目录 window下 win + r, 输... -
gitlab项目目录结构
2018-12-13 14:53:53git项目主要划分在两类空间:个人和群组 1 实际在公司使用git项目的时候,项目可以Group来区分(群组),如支付可以新建一个群组 pay,订单为order 2 项目按Group聚合,Group名和项目名尽量用中横线而不是下横线 3... -
Python 不同层级目录文件的导入
2021-02-03 23:42:07下面将具体介绍几种常用情况:(1)主程序与模块程序在同一目录下:如下面程序结构:-- src|-- mod1.py`-- test1.py若在程序test1.py中导入模块mod1, 则直接使用import mod1或from mod1 import *;(2)主程序所在目录是模块... -
Linux目录结构
2019-01-11 09:47:18系统级目录:/usr:系统级的目录,可以理解为C:/Windows/,/usr/lib理解为C:/Windows/System32。 用户级程序目录:/usr/local:用户级的程序目录,可以理解为C:/Progrem Files/。用户自己编译的软件默认会安装到这... -
3.React Native项目目录结构介绍;
2018-11-09 16:09:241.初始创建目录结构说明 2.编辑React Native中的JS代码 3.编写IOS/Android原生代码 4.如何添加第三方react native npm源码库 4.1仅仅涉及React Native开发 4.2涉及React Native和IOS或者Android混合开发 5.第... -
操作系统——文件目录结构
2020-05-03 08:19:37文件目录结构 目录管理的要求 能够实现“按名存取”(最基本功能) 能够提供快速的目录查询手段以提高对文件的检索速度 能够实现文件的共享和重名 文件控制块(FCB)是用于描述和控制文件的数据结构,包括文件... -
HDFS文件目录结构详解
2020-11-22 09:11:03下面分别介绍Namenode和Datanode中的文件存储结构。 文章目录1 Namenode1.1 文件所在位置 1 Namenode 1.1 文件所在位置 文件所在位置由hdfs-site.xml中的配置项dfs.namenode.name.dir配置。这些文件都存于${dfs.... -
文件系统(文件系统目录结构、磁盘分区、虚拟文件系统)、linux内核结构框图
2021-09-13 18:19:48常规认知就是根目录下那些文件,但其实并不是那样。文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中... -
一个完整react项目的目录结构
2018-12-26 00:22:15目录说明 │ .babelrc #babel配置文件 │ package-lock.json │ package.json │ README.MD │ webpack.config.js #webpack生产配置文件 │ webpack.dev.config.js #webpack... -
Elasticsearch存储目录结构深入详解
2019-01-07 20:16:26我们将查看节点,索引和分片级文件,并简要说明其内容,以便了解Elasticsearch写入磁盘的数据。 1、从Elasticsearch路径说起 Elasticsearch配置了多个路径: path.home:运行Elasticsearch进程的用户的主目录。... -
操作系统之文件管理:3、文件目录(文件控制块FCB、多级目录结构、无环图目录结构、索引节点)
2020-10-12 18:36:163、文件目录思维导图文件控制块FCB目录操作目录结构单级目录结构两级目录结构多级目录结构(树形目录结构)无环图目录结构索引结点(FCB的改进) 思维导图 文件控制块FCB 1、什么是文件目录:一种特殊的文件,是有... -
Linux文件系统目录结构详解
2017-10-08 13:09:34对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面我们就开始了解一下linux... -
01. Linux文件目录结构及存放内容(功能)
2021-12-25 12:37:101. Linux系统的文件目录结构 Linux 系统不同于 Windows,没有 C 盘、D 盘、E 盘那么多的盘符,只有一个根目录/,所有的文件(资源)都存储在以根目录/为树根的树形目录结构中,如下图所示: 在 Linux 根目录/下包含... -
5.文件目录结构(一)
2019-07-04 18:56:482.文件目录结构一览表 1.树形结构 在 Linux 根目录(/)下包含很多的子目录(称为一级目录),各一级目录下还含有很多子目录(称为二级目录),Linux 文件系统目录总体呈现树形结构,/ 根目录就相当于树根。... -
进程页表两级结构:页目录和页表页
2015-02-10 18:20:36大虚址空间下的内存进程页表结构采用页表页和页目录。 32位意味着虚址空间可达4GB 虚址空间计算方法:32位的编址为232,232=210*210*210*22=4GB 1k=1024b 1m=1024K 1g=1024M 若虚址空间为2GB,在页长4KB... -
LiteOs代码目录结构
2019-05-24 21:41:23LiteOS的代码目录结构说明 转自https://github.com/LiteOS/LiteOS/blob/master/doc/LiteOS_Code_Info.md 关于代码树中各个目录存放的源代码的相关内容简介如下: 一级目录 二级目录 三级目录 说明 arch ... -
Linux 目录详解 树状目录结构图
2017-04-15 21:41:001、树状目录结构图2、/目录目录描述/第一层次结构的根、整个文件系统层次结构的根目录。/bin/需要在单用户模式可用的必要命令(可执行文件);面向所有用户,例如:cat、ls、cp,和/usr/bin类似。/boot/引导程序文件... -
DDD领域驱动设计实战-分层架构及代码目录结构
2021-01-13 15:38:01Infrastructure 的代码目录结构有:config 和 util 两个子目录。 Config 主要存放配置相关代码。 Util 存放平台、开发框架、消息、数据库、缓存、文件、总线、网关、第三方类库、通用算法等基础代码,你可以为不同... -
vue目录树组件(树状结构列表)
2020-09-14 09:56:39单击导航,在右侧查询出当前导航下所有目录结构,可以新建目录。新增类型分为三种,目录可以无限嵌套,当然也可以设置层级。 页面整体布局 页面分为左右两个部分。左侧列表,通过路由跳转显示右侧内容。左侧列表... -
Linux的目录结构
2018-08-22 22:32:18版权声明:本文为博主原创文章,未经博主允许不得转载!...Linux的目录结构,最顶层的目录是/ ,称之为根目录。 /bin: (binaries) 存放系统命令的目录,所有用户都可以执行。 /sbin : (... -
原生Android_APP目录结构分析
2020-01-20 10:26:12从结构图中可以看到, 该工程下面有两个目录: 一个是app, 另一个是Gradle Scripts。 其中, app下面又 有3个子目录, 功能说明如下: (1) manifests子目录, 下面只有一个xml文件, 即AndroidManifest.xml, 是... -
两级页表如何实现地址转换
2021-05-10 22:58:18(2) 从PCB中读取页目录起始地址,再根据一级页号查页目录表,找到下一级页表在内存中存放位置。 (3) 根据二级页号查表,找到最终想要访问的内存块号。 (4) 结合页内偏移量得到物理地址。 下面以一个逻辑地址为例。将... -
Unity项目如何组织目录结构,有几个习惯与你相同
2020-09-01 17:12:53组织好项目的目录结构,是维护项目的很重要的一个点,我们学习别人源码,了解别人的设计思路都是从目录结构开始,一个清晰的目录结构,对项目开发维护,项目管理来说非常的重要,目录维护的好,大家在一起工作很愉快... -
Linux目录结构及详细介绍
2017-06-02 14:27:16/:根目录,位于Linux文件系统目录结构的顶层,一般根目录下只存放目录,不要存放文件,/etc、/bin、/dev、/lib、/sbin应该和根目录放置在一个分区中。 /bin,/usr/bin:该目录为命令文件目录,也称为二进制目录。...