linux vfs 根节点名称,Linux:文件,目录项,索引节点,超级块,VFS,具体文件系统...

【笔记:http://m.blog.csdn.net/blog/zhouzhou135】

在了解文件系统之前,先了解磁盘格式化的知识。

所以要理解文件系统的数据结构,要从两个方向来理解:

1:磁盘中的数据结构:因为在磁盘格式化的时候,操作系统将初始的文件系统数据结构写到磁盘上。这些数据结构包括空闲和已分配的空间(FAT或者iNode)和一个初始为空的目录。

2:内存中的数据结构:

文件管理是操作系统的主要任务之一,也是平常编程中经常涉及的一个知识点。

先参考维基百科了解什么是文件系统,引入文件系统的目的是什么,文件系统的职责是什么。

简言之:文件系统是为了方便用户管理硬盘和光盘等物理设备中的数据而引入的这么一个逻辑上的概念。

假设没有文件系统,那么对用户而言:

读数据的时候:必须要知道这个数据块保存在光盘或者磁盘的具体哪个扇区上,然后要读取多长的记录。

写数据的时候:必须要知道哪些磁盘块是空闲的以便写入数据。

同时用户必须自己保存数据和磁盘块之间的映射信息,以便读写的时候知道从哪个磁盘地址开始读写。

于是用户就幻想说要是有这样一个中间者就好了:

读的时候,我把数据名给中间者,中间者直接给我具体的磁盘数据,而不是我自己去磁盘上找。

写的时候,我把要写的数据给中间者,中间者具体负责写到磁盘上的某个位置。

这样的话,这个中间者必须维护某个数据名与磁盘位置的映射关系。而用户只需要和某个数据名(逻辑名字)打交道,而不用关心这个逻辑名字代表的数据在物理上的具体存储位置。

用户 ——> 具体的磁盘或光盘

用户 ——> 中间者提供的接口 ——> 具体的磁盘或者光盘

也就是说,有了中间者,用户只需要和中间者提供的接口打交道,而不再与具体的物理设备耦合。

最后为了方便,大家说咱们取一个统一的名字吧,于是出现了一下称呼:

文件系统:代表这个中间者。最终映射到计算机上,这个文件系统的实现会表现为具体的程序代码。

文件:代表存储在某种长期储存设备或临时存储设备中的一段数据流。虽然一个文件表现为一个单一的流,但它经常在磁盘不同的位置存储为多个数据碎片(甚至是多个磁盘)。

一个代表数据名的结构 ——> 一个封装了磁盘块信息的结构。

比如说数据名dataone在硬盘的a分区的b位置开始,长度为3个磁盘块。

如果不引入树形结构的这个方式的话,那么数据a,数据b,数据c,数据d, 数据abc就很容易重名。于是就映入了树形结构的命名空间。

在文件系统中,文件名是提供给用户标志他存放在磁盘上的某个数据的。

APUE:p56 文件共享 打开文件的内核数据结构。

APUE:p86 文件系统

Linux高级程序设计:

进程打开文件的内核数据结构。p101

VFS虚拟文件系统 p129

概述

VFS中的数据结构

超级块

VFS的索引节点

目录项对象

与进程相关的文件结构

主要数据结构间的关系

有关操作的数据结构

如何实现一个文件系统

struct stat、struct inode 、struct file 的关系

===========================================

参考《操作系统概念(第七版)》第四部分 存储管理,先弄清文件、目录的概念。

文件:

目录:可以实现为一张表,里面保存了数条文件名和该文件名对应的索引信息的映射关系。其中的每一项叫做目录项。

打开文件表:因为每次对文件读、写等操作都要涉及到去目录中搜索对应的文件名对应的所有信息,因此非常耗时,为避免该问题,系统维护了一个包含所有打开文件的信息表。参考P323

多个进程打开同一文件的处理方法?p324 系统范围内的系统打开文件表 vs 每个进程的进程打开文件表

a,b,...进程的进程打开文件表→系统打开文件表(保存进程无关的信息)→目录→具体的物理设备

e867e0f17dc33cb71731215c9f728a7a.png

这些内容在《现代操作系统(原书第3版)》p446有详细描述。

===========================================

参考《现代操作系统(原书第3版)》第4章 文件系统:★★★★★

文件:是为了解决进程存储信息时遇到的一些问题而建立的一种抽象。文件时进程创建的信息逻辑单元。

p153 文件系统在磁盘上的布局

p156:物理inode

p161 : 虚拟文件系统,open系统调用在VFS中的过程。

p179 :Unix v7文件系统:open系统调用时查找iNode的过程。

p440:Linux文件系统

p445 :SuperBlock、Dentry、Inode、File对象

p448:文件描述符表、打开文件描述符表、INode表之间的关系

深入理解磁盘文件系统之inode:http://www.cnblogs.com/thinksasa/archive/2013/04/10/3013445.html

一天一点学习Linux之认识文件系统:http://www.opsers.org/base/the-knowledge-that-one-day-learn-linux-file-system.html

一天一点学习Linux之Inode详解:http://www.opsers.org/base/one-day-the-little-learning-linux-inode-detailed.html

===========

VFS中的超级块、VFS的索引节点、目录项这三个对象的理解,结合视频12.10中00:06:08处的那张图,并结合以下链接:

超级块

VFS的索引节点

目录项对象

或者《linux内核设计与实现》对应部分一起理解。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简单的eda实验vga在linux系统中,EDA实验报告-VGA彩条显示.doc

VGA彩条信号显示控制一、实验目的:1. 熟练掌握 Verilog HDL语言和QuartusII 软件的使用;2. 理解状态机的工作原理和设计方法;3. 熟悉 VGA 接口协议规范。4.通过对VGA接口的显示控制设计,理解VGA接口的时序工作原理,掌握…

c语言中陶陶摘苹果while,洛谷 P1478 陶陶摘苹果(升级版) C语言实现

题目描述又是一年秋季时,陶陶家的苹果树结了n个果子。陶陶又跑去摘苹果,这次她有一个a公分的椅子。当他手够不着时,他会站到椅子上再试试。这次与NOIp2005普及组第一题不同的是:陶陶之前搬凳子,力气只剩下s了。当然&am…

c语言程序设计报告用于医院食品加工等部,南开(本部)《C语言程序设计》14春在线作业答案...

南开(本部)14春《C语言程序设计》在线作业 , W. v1 o) p. J2 n0 I试卷总分:100 测试时间:--4 v8 D, }8 e! w: D6 Y0 m一、单选题(共40道试题,共80分。)8 U: } j% ^2 T) F( q1.以下对一维整型数组 a 的正确说明是( ) C! f | }# n$ t7 g, z…

c语言中二分法100中找30,c语言中的二分法

\\\题外&#xff1a;对于printf引号中的内容一定要细心书写 ; 数组由a[0]开始计数&#xff0c;切记&#xff1b;尤其是与for循环中i1 搞混运用a[i1]等超前数据时 需先用for(i0;i<n-1;i){scanf("%d",&a[i]);}给数组全部赋值题目&#xff1a;对于方程 8*x^47*x^…

c语言 乘除法优先级,运算符运算符优先级 - C语言教程

运算符优先级运算符的优先级确定表达式中项的组合。这会影响到一个表达式如何计算。某些运算符比其他运算符有更高的优先级&#xff0c;例如&#xff0c;乘除运算符具有比加减运算符更高的优先级。例如 x 7 3 * 2&#xff0c;在这里&#xff0c;x 被赋值为 13&#xff0c;而不…

c语言long double位数,int long double 所占位数 和最大值

// // 32 // 位数 数值// int t1 pow(2, 31); // 4 2147483647// int32_t t2 pow(2, 31); // 4 2147483647// int64_t t3 pow(2, 62); // 8 4611686018427387904// NSInteger t4 pow(2, 32); // 4 2147483647// double t5 pow(2, 64); // 8 18446744073709551616.000000//…

存储器块清零c语言版,存储器块清零实验报告

有关单片机存储器块清零实验的试验报告存储器块清零实验报告班级&#xff1a; 11级计科班 姓名&#xff1a;苏靖 学号&#xff1a;1120070544 日期&#xff1a;2012-12-19一、实验目的&#xff1a;1、掌握存储器读写方法2、了解存储器的块操作方法.二、实验要求&#xff1a; 设…

C语言exchange函数,C++指针作为函数参数

函数的参数不仅可以是整型、浮点型、字符型等数据&#xff0c;还可以是指针类型。它的作用是将一个变量的地址传送给被调用函数的形参。【例6.3】题目同例6.2&#xff0c;即对输入的两个整数按大小顺序输出。这里用函数处理&#xff0c;而且用指针类型的数据作函数参数。程序如…

android自定义阴影,Android自定义边框加阴影

一、前言Android自定义边框&#xff0c;可以设置任意边框的角度和阴影。我下面分为 四个角度设置边框、两个角度设置边框、半圆球设置边框加两层阴影等。二、边框分类&#xff1a;1、四个角度设置边框效果图&#xff1a;图片.png2、两个角度设置边框android:topLeftRadius"…

linux read recv,read()/ recv()成功,但缓冲区未更改且为空

我正在编写一个客户端&#xff0c;以使用LINUX上的C脚本读取TCP下通过套接字从服务器发送回的数据。该服务器永远运行&#xff0c;我验证是否可以得到答复netcat localhost [PORT_NUMBER]。使用以下命令检查时&#xff0c;服务器处于LISTEN状态netstat -naprecv()函数返回预期的…

android 代码阅读,代码阅读器手机版-代码阅读器appv1.0 安卓版-腾牛安卓网

代码阅读器app&#xff0c;一款非常不错的手机阅读开源代码软件&#xff0c;不但能够让你们在上面选择自己喜欢的阅读代码&#xff0c;还能够选择大量的阅读主题&#xff0c;方便你们在任何时候&#xff0c;都能够获得最佳的阅读环境。代码阅读器app简介一款简单的源码阅读器的…

android点击运行后无法显示设备,Android仿真器除了黑屏外什么都不显示,adb设备显示“设备离线”...

我只是想开始在Android中进行开发。因此&#xff0c;问题是当我尝试通过发出命令emulator A2来启动仿真器时&#xff0c;屏幕上会出现一个仿真器。但是即使等待了2-3个小时&#xff0c;它所显示的只是一个黑屏。甚至没有android主屏幕或android徽标。只是黑屏。最初&#xff0…

Android测量图像中物体大小,android – 加载图像后测量ImageView

我试图找到一种方法来测量ImageView后使用Glide或Picasso(或其他任何东西)加载图像.基本上,我试图在某些位置在图像顶部布局其他视图,但需要最终的ImageViews尺寸才能准确地完成.我不知道用于尝试这样做的最佳布局是什么,但我目前正在使用这个&#xff1a;android:layout_width…

android string参数最大长度,每日一问 | 我们经常用的 String类型,你知道它最大可以放多长的字符串吗?...

String被用作常量时&#xff0c;它被编译器当成字面量存放于常量池。常量池中主要存放两大类常量&#xff1a;字面量和符号引用&#xff1b;常量池中的每一个常量都是一个表&#xff0c;字符串常量存于CONSTANT_Utf8_info表(Tip:字节码文件由无符号数和表映射的数据构成&#x…

android物理健代码,Android 物理按键整理及实例代码

先给大家看一段代码&#xff0c;然后说明。import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.KeyEvent;import android.widget.Toast;public class MainActivity extends Activity {Overrideprotected void onCreate(Bundle…

Android studio 按钮排版,Android Studio自动排版的两种方法

解决java compiler level does not match the version of the installed java project facet在项目目录的.setting文件夹下的org.eclipse.wst.common.project.facet.core.xml中 CSS长度单位及区别 em ex px pt in1. css相对长度单位 em 元素的字体高…

android 中自定义键盘,【图片】自定义属于自己的专属键盘的思路!!!(需要有android编程基础)【exagear吧】_百度贴吧...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼最近玩一些全键盘游戏,比如elona,nethack等等这类游戏,模拟器的键盘就很不够用,那个 游戏键盘 软件用起来体验也很不好,今天自己就琢磨着为这些游戏专门写一个键盘.1.首先尝试了写一个简单的键盘,发现无法实现跨进程用(也就是说只能…

linux sed 冒号,linux sed 总结

1.简介sed是一种行编辑器&#xff0c;它一次处理一行内容。2.sed调用方式sed [options] command file(s)sed [options] -f scriptfile file(s)第一种直接在命令行中执行&#xff0c;第二种把命令写到了脚本中&#xff0c;二者无本质区别。示例(1)&#xff1a;打印hello.txt的内…

wps office android,WPS Office

应用介绍安卓端办公软件&#xff0c;个人版免费使用用户多:全球用户600,000,000排名高:全球APP总榜同类产品榜首体积小:只安装一个应用即可打开所有格式文档云办公:免费云空间&#xff0c;安全高效&#xff0c;可以在任何设备.上及时查看和编辑远程办公推荐-远程会议&#xff0…

鸿蒙形容欣欣向荣发展,比喻事业蓬勃发展繁荣兴旺的成语蒸蒸日上

2020-03-13阅读(79)1.《RE从零开始的异世界生活》作者&#xff1a;长月达平。2.《魔法少女小圆》作者&#xff1a;新房昭之。3.《命运石之门》作者&#xff1a;冈部伦太郎。4.《寒蝉鸣泣之时》作者&#xff1a;前原圭一。5.《目隐都市的演绎者》作者&#xff1a;新房昭之。6.《…