当前位置: 首页 > ds >正文

操作系统——第四章(文件管理与文件的逻辑结构)

            

一、文件系统基础

1.文件的属性

  • 文件名:由创建文件的用户决定文件名,主要是为了方便用户找到文件,同一目录下不允许有重名文件
  • 标识符:一个系统内的各文件标识符唯一,对用户来说毫无可读性。因此标识符只是操作系统用于区分各个文件的一种内部名称。
  • 类型:指明文件的类型
  • 位置:文件存放的路径(让用户使用)、在外存中的地址(操作系统使用,对用户不可见)
  • 大小:指明文件大小
  • 创建时间、上次修改时间
  • 文件所有者信息
  • 保护信息:对文件进行保护的访问控制信息

2..文件内部的数据怎样组织起来?

         

对于记录式文件,记录就是一种相关数据项的集合。而数据项是文件系统中最基本的数据单位。(数据项可以分为基本数据项和组合数据项)

  • 文件的结构自底向上包括数据项、记录和文件。

        

3.文件之间应该怎样被组织起来?

文件通过目录把数据有结构的组织起来。

      

4.操作系统应该向上层提供哪些功能?

        

5.从上往下看,文件应该如何存放在外存?

          

6.其他由操作系统实现的文件管理功能

          

7.知识图谱


二、文件的逻辑结构

知识概览

        

1.有结构文件

按文件是否有结构分类,可以分为无结构文件、有结构文件两种。
无结构文件:文件内部的数据就是一系列二进制流或字符流组成。又称“流式文件”。如:
Windows操作系统中的.txt文件。
有结构文件:由一组相似的记录组成,又称“记录式文件”。每条记录又若干个数据项组成。如:
数据库表文件。一般来说,每条记录有一个数据项可作为关键字。根据各条记录的长度(占用的
存储空间)是否相等,又可分为定长记录可变长记录两种。


   

2.有结构文件的逻辑结构

                

(1)顺序文件

    

    

结论:定长记录的顺序文件,若物理上采用顺序存储,则可实现随机存取:若能再保证记录的顺结构,则可实现快速检索(即根据关键字快速找到对应记录)
【注】一般来说,考试题目中所说的“顺序文件”指的是物理上顺序存储的顺序文件。可见,顺序文件的缺点是增加/删除一个记录比较困难(如果是串结构则相对简单)

(2)索引文件

    

【拓展】SQL语句中某个数据项建立索引的功能代码

在SQL语句中,可以使用以下代码来为某个数据项建立索引:

CREATE INDEX index_name ON table_name (column_name);

在上面的代码中,index_name是索引的名称,table_name是数据表的名称,column_name是要建立索引的列名。通过建立索引,可以加快数据库的查询速度,特别是对于频繁查询的列。

折半查找:

折半查找(Binary Search)是一种在有序数组中查找特定元素的算法。其原理是通过不断将查找范围缩小为原来的一半,直到找到目标元素或者确定目标元素不存在为止。

以下是折半查找的C语言代码实现:

#include <stdio.h>int binarySearch(int arr[], int left, int right, int target) {while (left <= right) {int mid = left + (right - left) / 2;if (arr[mid] == target) {return mid;} else if (arr[mid] < target) {left = mid + 1;} else {right = mid - 1;}}return -1;
}int main() {int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};int target = 7;int n = sizeof(arr) / sizeof(arr[0]);int result = binarySearch(arr, 0, n - 1, target);if (result != -1) {printf("目标元素在数组中的索引为:%d\n", result);} else {printf("目标元素不存在于数组中\n");}return 0;
}

在上面的代码中,binarySearch函数接受一个有序数组arr、左边界left、右边界right和目标元素target,并返回目标元素在数组中的索引,如果目标元素不存在则返回-1。函数通过不断更新左右边界leftright来缩小查找范围,直到找到目标元素或者左边界超过右边界为止。在main函数中,我们定义一个有序数组arr,设置目标元素为7,并调用binarySearch函数进行查找。

(3)索引顺序文件(定长结构的串结构文件)

索引顺序文件是索引文件和顺序文件思想的结合。索引顺序文件中,同样会为文件建立一张索引表,但不同的是:并不是每个记录对应一个索引表项,而是一组记录对应一个索引表项

         
 

思考     若文件共有105个记录,则可分为1000个分组,每个分组1000个记录根据关键字检索一个记录平均需要查找500+500=1000次。这个查找次数依然很多,如何解决呢?

答:需要建立多级索引顺序文件。

        

3.知识回顾

       ​​​​​​​

http://www.xdnf.cn/news/2957.html

相关文章:

  • power bi获取局域网内共享文件
  • arm设备树基础知识
  • “专精特新”中小企业数字化转型呈现 4 大转型特征
  • 同步时钟与异步时钟
  • 1.24g 雨晨 19045.5796 Windows 10 企业版 x64 极速版
  • pymsql(SQL注入与防SQL注入)
  • Spring反射机制
  • Dijkstra算法的学习
  • cmake qt 项目编译
  • 开源 Agent 框架对比:LangChain vs AutoGen vs CrewAI
  • 牛客:AB1 【模板】栈
  • 天猫TP代运营服务商-品融电商:助力品牌破局增长的专业推手
  • 【HCIA】4种NAT的配置方式
  • AI专题(二)----由浅入深初识LLM
  • 大模型性能测试
  • 数据要素如何驱动的新质IDC一体化运营体系发展?
  • Jtti:nginx服务器如何限制访问频率
  • 在android 系统上qnn sdk转换,运行模型示例
  • MCU低功耗运行模式与唤醒机制解析
  • 数据结构每日一题day12(链表)★★★★★
  • 【AI论文】PHYBench:大型语言模型中物理感知与推理能力的全面评估
  • Redis 常见问题深度剖析与全方位解决方案指南
  • 基于STM32、HAL库的DS2411R安全验证及加密芯片驱动程序设计
  • RPO与RTO
  • 代码随想录第30天:动态规划3
  • Foreign Trade Process
  • 9.Excel:条件格式
  • torch.nn.Parameter 与 torch.Tensor
  • 微机控制电液伺服钢轨滚动疲劳试验机
  • 17:00开始面试,17:08就出来了,问的问题有点变态。。。