【操作系统】文件管理——文件共享与保护,文件系统的结构(个人笔记)

学习日期:2024.7.18

内容摘要:文件共享,文件保护,文件系统的层级结构和全局结构,虚拟文件系统


文件共享

操作系统提供的文件共享功能,可以让多个用户共享使用同一个文件。文件共享和文件复制是不一样的,共享意味着系统中只有“一份”文件数据,一个用户修改,其他的用户都可以看到文件数据的变化。而复制意味着有好几份数据,用户修改自己的那份,对其他用户没有影响。

基于索引节点的共享方式(硬链接)

之前介绍过,索引节点是只包括文件名和索引节点指针的结构。索引节点中设计了一个链接计数变量count,统计链接到本索引节点上的用户目录项数。

通过共享同一个节点来共享文件,当用户决定删除文件时,事实上操作系统只是删除了用户目录中与该文件对应的目录项,并且让count--了,只有当count==0时,才真正删除文件的数据。

基于符号链的共享方式(软链接)

比如说,当User3也共享这个文件时,使用一个Link类型的文件指向文件1,这个Link就类似快捷方式,User3的索引节点指针不是直接指向要访问的文件,而是指向Link类型文件,再通过Link类型的文件访问要共享的文件。

 当文件1被删除时,软链接方式找不到文件1了,此快捷方式就失效了,在Windows操作系统中,会提示我们“此快捷方式指向的项目xxx已删除”。

文件保护

口令保护

用户为文件设置一个口令(一般是一个字符串,保存在文件对应的FCB或索引节点当中,访问前操作系统会比对),用户请求访问该文件时必须提供该口令,否则不允许访问。

优点:空间开销和时间开销都很小。

缺点:正确的口令放在系统内部,可能被入侵,不够安全。

加密保护

使用某个“密码”(与口令的本质区别是,设置了加密算法,且不需要存在系统当中)对文件进行加密,在访问文件时需要提供正确的密码才能解密。

优点:保密性强,不需要在系统中存储密码。

缺点:编码和解码需要一定的时间开销。

访问控制

系统会在每个文件的FCB或索引节点中增加一个访问控制表(Access-Control List,ACL),该表中记录了用户可以对文件进行的访问操作权限。 在用户访问前,操作系统会检查访问控制表,确认用户的权限。

而用户很多时,控制表可能会比较复杂,此时就把用户分成几组,比如说可以分成系统管理员,文件主,文件主的伙伴,其他用户 这几个分组。 在Windows中,“以管理员身份运行”就是这样。

 优点:实现灵活,可以实现复杂的文件保护功能。

文件的层次结构

用一个例子来帮助记忆层次

一个用户想删除文件"D:/工作记录:/学生信息.xlsx"的最后100条记录。

1.用户需要通过操作系统提供的接口发出请求——用户接口

2.由于用户提供的是文件的路径,操作系统需要按照路径一层一层的查找目录,找到对应的目录项——文件目录系统

3.不同的用户对文件有不同的操作权限,操作系统要确认用户的权限——存取控制模块

4.在验证了用户有权限后,操作系统把用户提供的“记录号”转换为对应的逻辑地址——逻辑文件系统与文件信息缓冲区

5.把上一层提供的逻辑地址再转换为实际的物理地址——物理文件系统

6.有了物理地址,再对磁盘设备发出请求,删除数据——设备管理程序模块

7.删除这些记录后,肯定有一些盘块空闲,将这些盘块重新回收——辅助分配模块

文件系统的全局结构

从一个磁盘出厂开始,文件系统在外存中是如何一步步建立的?

物理格式化:将磁盘分成一个个扇区,并用备用扇区替换。

坏扇区对操作系统也是透明的,操作系统不知道有坏扇区的存在,因为已经被自动替换了。

逻辑格式化:磁盘分区(CDE盘),划分超级块等方便找到空闲块的结构。

空闲空间管理块在之前介绍过,主要用于记录空闲空间,而i节点区主要存放索引节点。

内存中会有最近打开的目录的缓存(相对路径,详见文件管理基础)以此来快速访问附近的文件,不需要每次都从磁盘读入,而进程打开文件表和系统打开文件表,分别记录了进程打开的文件和系统打开的全部文件。当我们删除文件时,有时会提示“无法删除,因为该文件正在被xx进程占用”这就是系统/进程打开文件表记录的作用,它能避免不同进程访问同一文件时的一些冲突。

虚拟文件系统

虚拟文件系统和虚拟内存一样,存在的目的都是向下屏蔽差异,向上提供统一,本质上是为了方便程序员调用的。

 在日常生活中我们使用计算机时,难免会有好几种外存设备同时使用的情况(移动硬盘,U盘,磁盘等),为了避免不同的外存设备的调用接口不同的问题,引入了虚拟文件系统(Virtual File System,VFS)。

 ①VFS要求下层的文件系统必须实现某些规则的函数功能,如open/read/write,一个新的文件系统想要在某个操作系统上被使用,就必须满足其VFS的要求。

②每打开一个文件,VFS就会在主存中新建一个vnode,里面保存了具体的函数功能指针,用统一的数据结构表示该文件,无论其存储在哪个文件系统。vnode只存在于主存当中,而inode既会被调入主存,也会在外存当中存储。


感谢您看到这里,如果满意的话麻烦您点个赞支持一下,个人主页还有更多内容分享。

个人能力不足,如有错漏还请指出,我会尽快修改。

内容总结自王道计算机考研《操作系统》 和 人民邮电出版社《操作系统导论》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3249776.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

mac docker no space left on device

mac 上 docker 拉取镜像报错 Error response from daemon: write /var/lib/docker/tmp/docker-export-3995807640/b8464f52498789c4ebbc063d508f04e8d2586567fbffa475e3cd9afd3c5a7cf2/layer.tar: no space left on device解决: 增加 docker 虚拟磁盘大小。如下图

分(中)位数回归算法 -医学小样本数据回归分析的更佳选择 ?

分(中)位数回归算法 -医学小样本数据回归分析的更佳选择 ? 在医学研究中,小样本数据回归分析是一项常见且重要的任务。由于医学数据的复杂性、多样性和稀缺性,传统的回归分析方法如最小二乘法(OLS&#xf…

LeetCode 3112.访问消失节点的最少时间:单源最短路的Dijkstra算法

【LetMeFly】3112.访问消失节点的最少时间:单源最短路的Dijkstra算法 力扣题目链接:https://leetcode.cn/problems/minimum-time-to-visit-disappearing-nodes/ 给你一个二维数组 edges 表示一个 n 个点的无向图,其中 edges[i] [ui, vi, l…

大数据之数据抽取架构演变过程

架构演变之Flink架构的演变过程 一、 起初搭建整个大数据平台是基于CDH这一套资源管理和整合的CM资源管理器搭建的 整个平台包括了: HDFS,YARN,HIVE,zoozie,FLINK,Spark,Zookeeper等组件搭建而成, 刚开始搭建的时候&am…

Quartus II 13.1添加新的FPGA器件库

最近需要用到Altera的一款MAX II 系列EPM240的FPGA芯片,所以需要给我的Quartus II 13.1添加新的器件库,在此记录一下过程。 1 下载所需的期间库 进入Inter官网,(Altera已经被Inter收购)https://www.intel.cn/content…

人工智能导论-机器学习

机器学习概述 概述 本章主要介绍的机器学习的概念、发展历程、发展趋势、相关应用,着重拓展机监督学习和无监督学习的相关知识。 重点:机器学习的定义和应用; 难点:机器学习算法及分类。 机器学习 - 重要性 MachineLeaning出…

基于X86+FPGA+AI数字化医疗设备:全自动尿沉渣检测仪

助力数字医疗发展,信迈可提供全自动尿沉渣检测仪专用计算机 随着信息技术的不断进步,医疗也进入了一个全新的数字化时代。首先是医疗设备的数字化,大大丰富了医疗信息的内涵和容量,具有广阔的市场发展前景。 数字化医疗设备&…

[开源]语雀+Vercel:打造免费个人博客网站

大家好,我是白露。 今天我想和大家分享我的今年的第一个开源项目 —— 基于语雀+Nextjs+Vercel实现免费的博客系统。 简单来说,你在语雀写博客,然后直接一键同步到个人网站上,网站自动部署! 而且,整个过程几乎不需要额外的成本,也不用充值语雀超级会员,hh。这个项目…

IAR嵌入式开发解决方案已全面支持芯科集成CX3288系列车规RISC-V MCU,共同推动汽车高品质应用的安全开发

中国上海,2024年7月16日 — 全球领先的嵌入式系统开发软件解决方案供应商IAR与芯科集成电路(以下简称“芯科集成”)联合宣布,最新版本IAR Embedded Workbench for RISC-V 3.30.2功能安全版已全面支持芯科集成CX3288系列车规RISC-V…

分布式服务框架zookeeper+消息队列kafaka

一、zookeeper概述 zookeeper是一个分布式服务框架,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:命名服务,状态同步,配置中心,集群管理等。 在分布式环境下,经常需要对应用/服…

秋招突击——7/18——多线程编程(Java线程池和Executor框架的)

文章目录 引言基础知识线程池原理Executor框架Executor框架的两级调度模型Executor框架结构Executor框架成员ThreadPoolExecutor详解——这里简单过一下,知道原理即可FixedThreadPool简介SingleThreadExecutorCachedThreadPool ScheduledThreadPoolExecutor详解——…

【Docker】基于Docker-compose创建LNMP环境

目录 一.Docker-compose 概述 1.容器编排管理与传统的容器管理的区别 2.docker-compose 作用 3.docker-compose 本质 4.docker-compose 的三大概念 二.YML文件格式及编写注意事项 1.yml文件是什么 2.yml问价使用注意事项 3.yml文件的基本数据结构 三.Docker-compose …

Redis常用的5大数据类型

Reids字符串&#xff08;String&#xff09; 设置相同的key&#xff0c;之前内容会覆盖掉 Redis列表&#xff08;List&#xff09; 常用命令 从左往右放值 数据结构 Redis集合&#xff08;set&#xff09; sadd<key><value1><value2>...... 数据结构 Set数据…

2024可信数据库发展大会|存算分离架构驱动电信数据平台革新

7 月 16 日 - 17 日&#xff0c;由中国通信标准化协会和中国信息通信研究院主办&#xff0c;大数据技术标准推进委员会承办&#xff0c;InfoQ 联合主办的「2024 可信数据库发展大会」&#xff08;TDBC&#xff09;在北京召开。 酷克数据解决方案架构师吴昊受邀参与“电信行业数…

给Wordpress评论列表的用户昵称增加个性化角色称号和注册年数

什么是个性化角色称号? 个性化称号:其实就是对应wordpress的几个用户组,重新给它装个面具。 比如:管理员 -> 华山掌门 比如:订阅者 -> 华山弟子 比如:VIP组 -> 掌门亲传弟子 。。。 就是个好玩的东西 什么又是注册年数? 显示用户在你的网站上注册了多少…

阿里布达插画:成都亚恒丰创教育科技有限公司

阿里布达插画&#xff1a;梦幻与现实交织的绮丽画卷 在浩瀚的艺术长河中&#xff0c;总有一些作品以其独特的魅力&#xff0c;跨越时空的界限&#xff0c;触动着每一个观者的心灵。阿里布达插画&#xff0c;便是这样一股不可忽视的艺术清流&#xff0c;它以细腻的情感描绘、奇…

紫光展锐5G安卓核心板T760__国产手机芯片方案

展锐T760安卓核心板是具备续航和性能更加均衡的5G移动平台。其主要特点包括主流的6400万像素摄像头和高达120Hz的刷新率。 平台采用多模融合的创新架构和AI智能调节技术&#xff0c;从而在5G数据场景下降低了37%的整体功耗&#xff0c;在5G待机场景下降低了18%的整体功耗。 多…

收银系统源码-线上商城diy装修

线下线上一体化收银系统越来越受门店重视&#xff0c;尤其是连锁多门店&#xff0c;想通过线下线上相互带动&#xff0c;相互引流&#xff0c;提升门店营业额。商城商城如何装修呢&#xff1f; 1.收银系统开发语言 核心开发语言: PHP、HTML5、Dart后台接口: PHP7.3后合管理网…

40.简易频率计(基于等精度测量法)(3)

&#xff08;1&#xff09;BCD8421码&#xff1a;十进制数字转换成BCD8421码的方法 补零&#xff1a;你需要显示多少位数字&#xff0c;就在前面补上四倍的位宽。比如你要显示一个十进制8位的数字&#xff0c;就在前面补上8*432个零。判断&#xff1a;判断补零部分显示的十进制…

2024717-VSCode-1.19.1-部署gcc13-C++23-win10-22h2

2024717-VSCode-1.19.1-部署gcc13-C++23-win10-22h2 一、软件环境 标签:C++ VSCode mingw gcc13分栏:C++操作系统:Windows10 x64 22h2二、操作步骤 1. 下载安装VScode 1.1官网 打开官网【https://code.visualstudio.com/Download】,选择【System Installer】【x64】,按…