首页 > 其他分享 >OS(十二):文件管理之文件的逻辑结构

OS(十二):文件管理之文件的逻辑结构

时间:2023-08-23 17:14:56浏览次数:37  
标签:文件 顺序 记录 十二 索引 指针 OS 结构

 文件存在两种形式的结构:

  逻辑结构:又称为文件组织,用户角度的文件组织形式,用户可直接处理数据及其结构,独立于文件的物理特性。

  物理结构:又称为文件的存储结构,值文件在外存上的存储组织形式。

1、文件逻辑结构的类型

  文件逻辑结构分为两大类:有结构文件,也被称为记录式文件,由一个以上的记录构成的文件;无结构文件,也被称为流式文件,由字符流构成的文件。

1.1、有结构文件

 记录式文件,每个记录都用于描述实体集的一个实体。记录的长度可分为 定长 和 不定长 两类。

  ·定长记录:文件中所有记录的长度都相同,所有记录中的各数据项都处在记录中相同的位置,具有相同的顺序和长度。

  ·变长记录:文件中各记录的长度不相同,

 常采用组织记录的方式:

  ·顺序文件:一系列记录按某种顺序排列所形成的文件,定长记录。

  ·索引文件:记录为可变长度时,建立一张索引表,并为每个记录设置一个表项,以加快对记录检索的速度。

  ·索引顺序文件:为文件建立一张索引表,为每一组记录中的第一个记录设置一个表项。

1.2、无结构文件

  源程序、可执行文件、库函数等,采用的就是无结构的文件形式,即流式文件。长度以字节为单位。对流式文件的访问,采用读/写指针来指出下一个要访问的字符。

2、顺序文件(Sequential File)

2.1、逻辑记录的排序

  文件是记录的集合,可按照不同的顺序进行排列。可归纳为两种:

  串结构,各记录之间的顺序与关键字无关。

  顺序结构,文件中的所有记录按关键字排列。顺序结构文件有更高的教唆效率。

2.2、对顺序文件的读/写操作

  读一个文件时,设置读指针Rptr,令它指向下一个记录的首地址,每当读完一个记录时,便执行 Rptr = Rptr + L 操作,使指向下一个记录的首地址,L为记录长度。

  写一个文件时,设置写指针Wptr,令它指向要写的记录的首地址,每当写完一个记录时,便执行 Wptr = Wptr + L 操作,L为记录长度。

  对于变长记录的顺序文件,在顺序读或写时,分别为他们设置读或写指针,每次读或写完一个记录后,将读或写指针加上L,L为记录的长度。

2.3、优缺点

  顺序文件适用于对记录进行批量存取,顺序文件的存取效率是所有逻辑文件中最高的。

  查找或修改单个记录,逐个查找记录,性能差;增加或删除一个记录较为困难。

3、索引文件(Index File)

  对于变长记录文件,建立一张索引表,对主文件中的每个记录,在索引表中舍友一个相应的表项,用于记录该记录的长度L及指向该记录的指针(指向该记录在逻辑空间的首址)。

  索引表是按记录键排序,索引表本身是一个定长记录的顺序文件,方便的实现直接存取。

  索引文件的组织形式:

 

  对索引文件检索时,根据用户提供的关键字,利用折半查找法去检索索引表,从中找到相应的表项;再利用该表项中给出的指向记录的指针值,去访问锁需的记录。

4、索引顺序文件

  索引顺序文件,是顺序文件和索引文件的产物,将顺序文件中的所有记录分为若干个组,为顺序文件建立一张索引表,在索引表中为每组中的第一个记录建立一个索引项,其中含有该记录键值和指向该记录的指针。

 

标签:文件,顺序,记录,十二,索引,指针,OS,结构
From: https://www.cnblogs.com/RunningSnails/p/17652182.html

相关文章

  • plutosdr通过uboot单独加载bit文件
    导出bit文件,修改uEnv.txt文件,修改bitstream_image为自己的bit文件,如system_top.bit,并增加两行:bitstream_image=system_top.bitmmc_loadbit_fat=echoLoadingbitstream${bitstream_image}fromSDtoRAM...&&mmcinfo&&fatloadmmc0${loadbit_addr}${bitstream_imag......
  • OS(十三):文件管理之外存分配方式
    文件分配外存空间时所要考虑的主要问题是:怎样才能有效地利用外存空间和如何提高对文件的访问速度。外存分配方式有连续分配、链接分配和索引分配。文件的物理结构直接与外存分配方式有关,采用不同的分配方式时,将形成不同的文件物理结构。1、连续分配1.1、连续分配......
  • 2、postgres数据导入
    目录postgres数据导入1、数据导入2、导入不存在数据库处理3、整库导入postgres数据导入1、数据导入psql-fuser_export.sql-hlocalhost-Umypguser-Wmypostgres参数说明:-f读取的sql文件-h导入的ip地址-U导入的用户-W导入指定的数据库2、导入不存在数据库处理......
  • 1、postgres数据导出
    目录postgres数据导出1、只导出所有对象的数据库结构2、只导出对应的数据库与数据3、只导出所有的表数据4、整个数据库导出postgres数据导出1、只导出所有对象的数据库结构pg_dump-fuser_export.sql-i-C-EUTF8-nmyschema-s-Umypguser-hlocalhost-Wmypostgres......
  • 1、postgres删除与创建schema
    目录postgres删除与创建schema1、删除schema语法2、创建schemapostgres删除与创建schema1、删除schema语法dropschema[schema_name];或者dropschema[ifexists][schema_name][cascade][restrict];参数说明:参数说明dropschema关键字,删除schema固定语法......
  • 利用 XGBoost 进行时间序列预测
    推荐:使用NSDT场景编辑器助你快速搭建3D应用场景XGBoost应用程序的常见情况是分类预测(如欺诈检测)或回归预测(如房价预测)。但是,也可以扩展XGBoost算法以预测时间序列数据。它是如何工作的?让我们进一步探讨这一点。时间序列预测数据科学和机器学习中的预测是一种技术,用于根据一......
  • Linux文件操作
    目录1.文件操作1.1创建文件1.2删除文件1.3压缩文件1.4解压文件2.0文件权限2.1查看文件权限2.2赋予文件可执行权限2.3去除文件可执行权限1.文件操作1.1创建文件#touch+文件名#例子:#创建一个文件touchhello.c#创建多个文件touchhello.chi.c1.2删除文件#......
  • Git操作-拉取指定目录文件
    拉取指定目录文件1、初始化本地目录gitinit2、启用过滤的配置项gitconfigcore.sparsecheckouttrue3、设置远程仓库地址gitremoteaddoriginhttp://xxx4、设置目标目录文件echonewFolder>.git/info/sparse-checkout5、拉取项目gitpulloriginmaster......
  • CloudOS:物联网开发平台,云上开发,边端交付
    什么是物联网?    物联网(InternetofThings,简称IoT)是指通过各种信息传感器、射频识别技术、全球定位系统、红外感应器、激光扫描器等各种装置与技术,实时采集任何需要监控、连接、互动的物体或过程,采集其声、光、热、电、力学、化学、生物、位置等各种需要的信息,通过各类可能的......
  • 2、oracle表空间文件追加
    oracle表空间文件追加1、查看使用SELECTT.TABLESPACE_NAME,D.FILE_NAME,D.AUTOEXTENSIBLE,D.BYTES,D.MAXBYTES,D.STATUSFROMDBA_TABLESPACEST,DBA_DATA_FILESDWHERET.TABLESPACE_NAME=D.TABLESPACE_NAMEORDERBYTABLESPACE_NAME,FILE_NAME;2、追加表空间altertab......