[文件系统]文件系统学习笔记(十)---杂项

1,在一个系统上,比如smartphone平台,有很多分区,比如/data和/system分区都是ext4文件系统,但是系统中还是只有一个file_system_type的成员,不过每个分区对应的ext4文件系统对应不同的super_block,fs_supers就是将这些相同文件系统不同的super block链接起来形成双向循环链表,fs_supers是链表头,链表元素由super_block结构体的s_instance成员表示。系统中所有的super_block由super_block结构体的s_list链接成双向循环链表,表头是super_blocks变量表示。

2,伪文件系统是不能装载的文件系统,因而不能从用户空间直接以文件或者目录的方式看到。系统中所有的伪文件系统可以从/proc/filesystem中获取

3,dumpe2fs命令 dumpe2fs

4,内存中文件系统第一个block是super block,每个group都有一个super block,后面的superblock是第一个super block的备份,group是有很多block组成的,比如32768

5,inode的大小是由各个文件系统本身决定,比如256B等等

6,查看磁盘和目录容量的命令分别是df,du.

7,一个文件至少占用一个block,若文件太大则占用多个block.

8,当我们删除文件的时候,只是把Inode标记为可用,文件在block中的内容是没有被清除的,只有在有新的文件需要占用block的时候,才会被覆盖,这也是我们删除文件还可以恢复的原因。

9, stat命令查看文件的时候里面每个成员的含义?
答:stat命令的使用如以下截图所示,每个成员的含义如下:
File:表示文件名。              
Blocks:表示该文件占用的块数,通常linux一个块大小为512Byte,而文件系统块的大小为4096,4096/512=8,如下截图表示f1文件占用8个块.也就是一个文件最少占用8 block。
Device:表示的是存放文件的设备。
Inode:表示的是该文件对应的inode的号。
Size:表示的是文件的大小。
Links:表示的是硬链接的个数。
IO Block:系统格式化block的大小,文件系统块的大小。
Accesss:表示的是最后一次访问文件时间,读一次该文件,该时间就会改变。
Modify:表示的是最后一次修改文件的时间,对文件修改一次该时间就会更新,比如用VI命令后保存文件。
Change:表示的是最后一次修改文件熟悉信息(inode节点)的时间,比如使用chmod命令更新该文件的权限。

10,每个进程最多打开32个文件,如果一个进程同时打开32个文件的话是否可以扩展?
答:在linux内核里分配文件描述符的时候,系统默认每个进程同时打开的文件个数是32,如果超过的话会在alps/kernel/fs/File.c文件里的alloc_fd()函数里的expand_files()函数里进行扩展。但是最大扩展个数的限制是1024,也就是即使扩展,一个进程同时打开文件个数为1024.不过这个1024用户还是可以通过命令去修改。

11,linux编程如何查看文件系统相关信息statfs函数。

查看文件系统相关信息

[cpp] view plaincopy

  1. #include <sys/vfs.h>
  2. int statfs(const char *path, struct statfs *buf);
  3. int fstatfs(int fd, struct statfs *buf);

参数:   
path: 位于需要查询信息的文件系统的文件路径名。     
fd: 位于需要查询信息的文件系统的文件描述词。 
buf:以下结构体的指针变量,用于储存文件系统相关的信息

[cpp] view plaincopy

  1. struct statfs {
  2. long    f_type;     /* 文件系统类型  */
  3. long    f_bsize;    /* 经过优化的传输块大小  */
  4. long    f_blocks;   /* 文件系统数据块总数 */
  5. long    f_bfree;    /* 可用块数 */
  6. long    f_bavail;   /* 非超级用户可获取的块数 */
  7. long    f_files;    /* 文件结点总数 */
  8. long    f_ffree;    /* 可用文件结点数 */
  9. fsid_t  f_fsid;     /* 文件系统标识 */
  10. long    f_namelen;  /* 文件名的最大长度 */
  11. };
时间: 2024-10-08 22:03:09

[文件系统]文件系统学习笔记(十)---杂项的相关文章

Swift学习笔记十二:下标脚本(subscript)

下标脚本就是对一个东西通过索引,快速取值的一种语法,例如数组的a[0].这就是一个下标脚本.通过索引0来快速取值.在Swift中,我们可以对类(Class).结构体(structure)和枚举(enumeration)中自己定义下标脚本的语法 一.常规定义 class Student{ var scores:Int[] = Array(count:5,repeatedValue:0) subscript(index:Int) -> Int{ get{ return scores[index];

第十七篇:实例分析(3)--初探WDDM驱动学习笔记(十)

续: 还是记录一下, BltFuncs.cpp中的函数作用: CONVERT_32BPP_TO_16BPP 是将32bit的pixel转换成16bit的形式. 输入是DWORD 32位中, BYTE 0,1,2分别是RGB分量, 而BYTE3则是不用的 为了不减少color的范围, 所以,都是取RGB8,8,8的高RGB5, 6, 5位, 然后将这16位构成一个pixel. CONVERT_16BPP_TO_32BPP是将16bit的pixel转换成32bit的形式 输入是WORD 16BIT中

初探swift语言的学习笔记十(block)

作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/35783341 转载请注明出处 如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号fengsh998来支持我,谢谢! 在前面一些学习中,原本把闭包给理解成了block尽管有很多相似之处,但block还是有他自己的独特之外.近日,在写oc/swift混合编码时,有时候需要swift回调oc,oc回调swift . 因此我把swift中的 block 常见的声明和写

Swift学习笔记十:属性

1.存储属性       1. 作为特定类或结构实例的一部分,存储属性存储着常量或者变量的值.存储属性可分为变量存储属性(关键字var描述)和常量存储属性(关键字let描述). struct student{ let name = "" var score = 0 } let a = student(name:"小笨狼",score:96)           注意:                ① 定义储存属性时,需要为每一个属性定义一个默认值.在初始化的时候,

python学习笔记十——异常处理

1.try: command except 错误类型,记录错误信息变量: command finally: command try...finally的用处是无论是否发生异常都要确保资源释放代码的执行.一般来说,如果没有发生错误,执行过try语句块之后执行finally语句块,完成整个流程.如果try语句块发生了异常,抛出了这个异常,此时就马上进入finally语句块进行资源释放处理.如下从几个细节讨论finally的特性. 1).try中的return: 当在try语句块中含有return语句

虚拟机VMWare学习笔记十二 - 将物理机抓取成虚拟机

1. 安装VMware vCenter Converter Standalone Client 运行虚拟机,File -- Virtualize a Physical Machine 这时如果电脑中没有VMware vCenter Converter Standalone Client ,则会进行安装. 安装过程 之后图标会出现在桌面上,双击运行 选择连接到本地服务器,登陆 点击转换计算机 这个,可以将本地计算机抓取成虚拟机,也可以将其他可以访问的计算机(需知道管理员用户名及密码)抓取成虚拟机.

Linux System Programming 学习笔记(十) 信号

1. 信号是软中断,提供处理异步事件的机制 异步事件可以是来源于系统外部(例如用户输入Ctrl-C)也可以来源于系统内(例如除0) 内核使用以下三种方法之一来处理信号: (1) 忽略该信号.SIGKILL和SIGSTOP不能被忽略. (2) 捕捉并且处理该信号.The kernel will suspend execution of the process's current code path and jump to a previously registered function. SIGK

APUE 学习笔记(十) 高级I/O

1. Unix IPC(InterProcess Communication) 同一主机的各个进程间的IPC:管道.FIFO.消息队列.信号量.共享存储器 不同主机上的各个进程间IPC:socket套接字 2. 管道 管道进行IPC有两个局限: (1) 半双工,即数据只能在一个方向上流动 (2) 只能在具有公共祖先的进程之间使用.通常,一个管道由一个进程创建,然后该进程调用fork,此后 父子进程之间可以使用该管道 fstat函数对管道的每一端都返回一个FIFO类型的文件描述符,可以用S_ISF

angular学习笔记(十九)

本篇主要介绍angular使用指令修改DOM: 使用angular指令可以自己扩展html语法,还可以做很多自定义的事情.在后面会专门讲解这一块的知识,这一篇只是起到了解入门的作用. 与控制器,过滤器,服务,一样,可以通过模块实例的directive的方法来创建指令: var someModule = angular.module('SomeModule',[]); someModule.directive('directiveName',function(){ return { link: f

Swift学习笔记十四:构造(Initialization)

类和结构体在实例创建时,必须为所有存储型属性设置合适的初始值.存储型属性的值不能处于一个未知的状态. 你可以在构造器中为存储型属性赋初值,也可以在定义属性时为其设置默认值.以下章节将详细介绍这两种方法. 注意: 当你为存储型属性设置默认值或者在构造器中为其赋值时,它们的值是被直接设置的,不会触发任何属性观测器(property observers). 一.基本语法 class Human{ var name :String init(){ name = "human" } init(n