恶补《操作系统》4_1——王道学习笔记

server/2024/9/24 16:11:05/

4文件管理

4.1_1 初识文件管理

操作系统提供的功能:

  1. 处理机管理
  2. 存储器管理
  3. 文件管理
  4. 设备管理

目标:安全高效

关于文件管理:

1)计算机中存放了各种各样的文件,一个文件有哪些属性?

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

2)文件内部的数据应该怎样组织起来?

3)文件之间又应该又应该怎么组织起来?

目录结构 组织起来的

4.1_2 文件的逻辑结构

1、无结构文件(如.txt

文件由一系列二进制文件流组成

2有结构文件(记录式文件,如数据库文件)

1)顺序文件:文件中的记录一个接一个顺序排列,定长或变长,可以顺序存储或者链式存储

按照是否与关键字顺序有关,可以分为串结构和顺序结构

链式存储:无法随机存取

顺序存储:

  • 可变长:无法随机存取
  • 定长:可以随机存取,采用串结构,无法快速找到关键字;采用顺序结构,可以快速查找关键字

2)索引文件:索引表本身是定长的顺序文件

3)索引顺序文件:多级索引表嵌套查找

4.1_3 文件目录

1、文件控制块(FCB

需要对目录进行的操作:搜索、创建文件、删除文件、显示目录、修改目录

  1. 搜索:当用户要使用一个文件时,系统要根据文件名搜索目录,找到该文件对应的目录项创建文件:创建一个新文件时,需要在其所属的目录中增加一个目录项
  2. 删除文件:当删除一个文件时,需要在目录中删除相应的目录项
  3. 显示目录:用户可以请求显示目录的内容,如显示该目录中的所有文件及相应属性
  4. 修改目录:某些文件属性保存在目录中,因此这些属性变化时需要修改相应的目录项(:文件重命名)

2、目录结构

  • 单级目录结构
  • 两级目录结构=主文件目录(MFD)+用户文件目录(UFD)
  • 多级目录结构(树形目录结构)

当代操作系统采用方法、不便于文件共享

  • 无环图目录结构
  • 可以共享

3、索引结点(文件控制块FCB的改进)

压缩文件名和信息

4.1_4 文件的物理结构(文件分配方式)

对非空闲磁盘块的管理:

1)连续分配:连续分配方式要求每个文件在磁盘上占有一组连续的块,对文件的拓展不方便,有很多磁盘碎片

2)链接分配

  • 隐式分配:采用链接分配方式的文件,只支持顺序访问,不支持随机访问,方便拓展
  • 显示分配:文件分配表显式记录下一块物理块的位置,方便拓展,支持随机访问,文件表会占内存空间

3)索引分配

索引分配允许文件离散地分配在各个磁盘块中,系统会为每个文件建立一张索引表,索引表记录了文件的各个逻辑块对应的物理块

支持随机访问

  • 链接方案
  • 多层索引
  • 混合索引

http://www.ppmy.cn/server/31535.html

相关文章

【Python进阶(七)】——Series数据结构

🍉CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一|统计学|干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项,参与研究经费10w、40w级横向 文…

Visual studio调试技巧

Visual studio调试技巧 bug是什么?Debug和ReleaseDebugRelease 如何调试VS调试快捷键调试过程中查看程序信息查看临时变量的值查看内存信息查看调用堆栈查看汇编信息查看寄存器信息 编译常见错误编译型错误链接型错误运行时错误 bug是什么? bug的英文释…

LinkedList常考面试题

LinkedList是Java集合框架中的一个重要部分,它是一种线性数据结构,不同于ArrayList基于数组实现,LinkedList是基于双向链表实现的。这使得它在插入、删除操作上具有较高的效率,但随机访问元素时效率较低。以下是一些关于LinkedLis…

Debian 12 -bash: netstat: command not found 解决办法

问题表现: debian 12系统中,不能使用 netstat命令 处理办法: netstat 命令就的net-tools中,把net-tools工具安装上就好了。 apt-get install netstat 安装之后就可以使用netstat 命令了,如查询端口情况: …

从零开始学AI绘画,万字Stable Diffusion终极教程(二)

【第2期】关键词 欢迎来到SD的终极教程,这是我们的第二节课 这套课程分为六节课,会系统性的介绍sd的全部功能,让你打下坚实牢靠的基础 1.SD入门 2.关键词 3.Lora模型 4.图生图 5.controlnet 6.知识补充 在第一节课里面,我们…

Spark使用Java读取Mysql

在Apache Spark中使用Java来读取MySQL数据库中的数据,你需要使用JDBC(Java Database Connectivity)来连接MySQL,并且通常你会使用Spark的JdbcRDD或者DataFrameReader(通过Spark SQL)来读取数据。不过&#…

C++|STL-list运用(1)

cplusplus.com/reference/list/list/?kwlist list介绍 list是一个双向循环链表,双向循环链表它的每个节点都有两个链接,一个指向前一个节点,另一个指向下一个节点,且最后一个结点指向头节点。 结点组成 1.数据域 2.指针域 &a…

深度学习之基于Matlab神经网络的活体人脸和视频人脸识别系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 人脸识别技术作为生物识别技术的一种,近年来得到了广泛的关注和应用。与传统的身份认证方…