精华内容
下载资源
问答
  • 文件存储管理

    2018-06-01 17:52:36
    文件系统为存储与访问磁盘上的数据与程序提供机制,文件是一组由创建者所定义的相关信息的集合,操作系统将文件映射到物理设备上。文件通常按目录来组织,以便于使用 计算机设备很多方面都有不同,有的设备一次...

    由于内存太小,并不足够永久的去保存所有的数据和程序,所以计算机系统必须提供外存以备份内存,现在主要是通过采用磁盘作为主要在线存储以保存信息(程序与数据)

    文件系统为存储与访问磁盘上的数据与程序提供机制,文件是一组由创建者所定义的相关信息的集合,操作系统将文件映射到物理设备上。文件通常按目录来组织,以便于使用

    计算机设备在很多方面都有不同,有的设备一次传输一个或者一块字符。有的按顺序访问,有的随机访问。有的同步传输,有的异步传输。有的专用,有的共享。有的只读,有的可读写。它们速度差异很大,在许多方面,外设是计算机当中最慢的部分

    由于设备差异很大,所以操作系统需要提供一组功能以便于应用程序控制这些设备,操作系统的I/O子系统的重要目的之一是为系统其它部分提供最简单的接口。由于设备通常是性能瓶颈,所以另一个重要的目的就是优化I/O以使程序并发运行

    文件系统由两个不同的部分组成:一组文件(文件用于存储相关数据)和目录结构(目录用于组织系统内的文件并提供有关文件的信息)

    文件是记录在外存上的相关信息的具有名称的集合,从用户角度上看其实文件是逻辑外存的最小分配单元,也就是说数据除非在文件当中,否则就不能写到外存

    通常文件表示程序(源形式和目标形式)和数据,文件信息是由其创建者定义的,文件可存储许多不同的类型的信息:源程序、目标程序、可执行程序、数字数据、文本、工资记录、图像、声音记录等

    文件通常包含以下属性:名称、标识符、类型、位置、大小、保护信息、时间、日期和用户标识

    所有文件的信息都保存在目录结构中,而目录结构也保存在外存上,通常来说,目录条目包括文件名称以及其唯一标识符,而标识符又定位文件其他属性信息,一个文件的这些信息可能需要1KB左右的空间来记录

    在许多的文件的系统当中,目录大小可能本身就有数兆字节,因为目录如同文件一样也必须是非易失性的,所以它们必须存放在设备上,并在需要的时候分若干次调入内存

    展开全文
  • 从Windows 8和Windows Server 8开始,虚拟磁盘服务COM接口被Storage Management API(种基于WMI编程接口)取代。...VDS从应用程序中隐藏了与存储相关的复杂性,使得服务供应商和技术中立
  • 文件的读写操作

    2021-02-27 10:31:38
    通常存储在外部介质上(存储在磁盘上),在使用时才调入到内存中。 如常把磁盘作为信息载体,保存中间结果或最终数据。当有大量数据输入,通过编辑器可以事先建立输入数据文件,程序运行时从指定文件中读取数据;...

    目录

     

    前提:

    一、文件概述

    二、文件基本操作

    2.1 文件指针

    2.2 文件打开

    2.3 文件关闭

    三、 读写文件

    3.1 写字符函数——fputc()函数

    3.2 读字符函数——fgetc()函数

    3.3 写字符串函数——fputs()函数

    3.4 读字符串函数——fgets()函数

    3.5 格式化写入函数——fprintf()函数

    3.6 格式化读取函数——fscanf()函数

     3.7 数据块读写函数——fread()函数和fwrite()函数

    四、定位文件

    4.1 随机读写操作——fseek()函数

    4.2 返回位置指针——rewind()函数

    4.3得到文件位置——ftell()函数


    前提:

        由scanf 键盘输入的数据与printf程序运行产生的结果,会随着运行程序的结束而丢失。即输入数据和产生的结果并没有被保存,被保存的仅仅只是程序执行代码。文件是解决不仅保留执行代码,保留输入数据或运行结果。

    一、文件概述

    文件指一组相关数据的有序集合,即文件名;通常存储在外部介质上(存储在磁盘上),在使用时才调入到内存中

           如常把磁盘作为信息载体,保存中间结果或最终数据。当有大量数据输入,通过编辑器可以事先建立输入数据文件,程序运行时从指定文件中读取数据;当有大量数据输出时,可将其输出到指定文件,可随时查看相应文件。

           如文件系统输入输出,在使用一些字处理工具时,通过打开一个文件来将磁盘中的信息输入到内存,通过关闭文件来实现将内存数据输出到磁盘

    所有文件都是通过进行输入、输出操作。流是一个数据字节的序列,流入程序的流称为“输入流”, 流出程序的流“输出流”。

     

     

    二、文件基本操作

    基本操作:文件打开和关闭。除标准输入、输出文件外,其他所有文件须先打开,再使用,而使用后必须关闭该文件。

    C使用换成缓冲文件系统来处理文件。

    缓冲文件系统指系统自动在内存区为每一个正在使用的文件开辟一个缓冲区,

    • 当需要把数据写入磁盘时,首先需要把数据写入缓冲区,系统会自动完成把数据从缓冲区写入磁盘文件
    • 从磁盘读取数据同样也经过缓冲区。

    2.1 文件指针

    文件指针:是一个指向文件有关信息的指针,保存在结构体变量中。C系统为每个打开的文件在内存中开辟一个缓冲区,用于存放文件相关信息,

    typedef struct 
    {
        unsigned flags;         //标志文件状态
        char fd;                //文件号
        unsigned char hold;     //无缓冲区取消字符输入
        short bsize;            //缓冲区的大小
        unsigned char *buffer;  //缓冲区指针
        unsigned ar *curp;      //无活动指针
        unsigned istemp;        //草稿文件标识
        short token;            //做正确性检测
    }FILE;

    FILE *fp;

    2.2 文件打开

    FILE *fp;
    fp = fopen("文件名", "使用文件方式");

    只读方式打开文件名为“123”的文本文档文件
    FILE *fp;
    fp = fopen("123.txt", "r")

    文件打开失败存在原因:

    • 指定盘符或路径不存在
    • 文件名中含有无效字符
    • 以r模式打开一个不存在的文件

    2.3 文件关闭

    fclose(文件指针名); 
    //正常关闭文件,返回值为0, 否则返回EOF(即 -1)

    三、 读写文件

    3.1 写字符函数——fputc()函数

    功能:把一个字符写入指针所指向的文件中。

    fputc(ch, fp);
    :把一个字符写到fp所指向的文件中去,其中ch是要输出的字符,看是一个字符常量/字符变量,fp文件指针变量。
    #include<stdio.h>
    #include<math.h>
    #include<time.h>
    #include<stdlib.h>
    #include<string.h>
     
      main()
    {
        FILE *fp;
        char ch;
        
        if((fp = fopen("E:\\cyuyan1.txt", "w")) == NULL )
        {
        	printf("不能打开的文件\n");
    	}
    	
    	ch = getchar();
    	
    	while(ch != '*')
    	{
    		fputc(ch, fp);
    		ch = getchar(); 
    	}
    	
    	fclose(fp);
    	printf("\n");
     }

    3.2 读字符函数——fgetc()函数

    功能:从文件指针指向的磁盘文件中读取一个字符,并且将读取的字符存储到字符变量中

    ch = fgetc(fp);
    从fp指向文件读入一个字符赋值给ch。
    在文件打开时,该指针总是指向文件的第一个字节,
    使用fgetc()函数后,该位置指针会发生变化,向后移动一个字节。
    #include<stdio.h>
    #include<math.h>
    #include<time.h>
    #include<stdlib.h>
    #include<string.h>
     
      main()
    {
        FILE *fp;
        char ch;
        
        fp = fopen("E:\\cyuyan1.txt", "r");
    	
    	ch = fgetc(fp);
    	
    	while(ch != EOF)
    	{
    		putchar(ch);
    		ch = fgetc(fp); 
    		
    	}
    	
    	printf("\n");
    	fclose(fp);
    
     }
     

    3.3 写字符串函数——fputs()函数

    功能:向指定的文件写入一个字符串,其中字符串可以是字符串常量/字符数组名、指针或变量。

    #include<stdio.h>
    #include<math.h>
    #include<time.h>
    #include<stdlib.h>
    #include<string.h>
     
        main()
    {
        FILE *fp;
        char filename[30], str[30];
        printf("请输入文件路径:\n");
        scanf("%s",filename); 
        
        if((fp = fopen(filename, "w")) == NULL )
        {
        	printf("不能打开的文件\n");
        	getchar();
        	return 0;
    	}
    	
    	printf("输入字符串:\n");
    	getchar();
    	gets(str);
    	 
    	fputs(str, fp);
    
    	fclose(fp);
    	printf("\n");
    	
     }

    3.4 读字符串函数——fgets()函数

    功能:从指定文件中读取一个字符串到字符数组中

    #include<stdio.h>
    #include<math.h>
    #include<time.h>
    #include<stdlib.h>
    #include<string.h>
     
        main()
    {
        FILE *fp;
        char filename[30], str[30];
        printf("请输入文件路径:\n");
        scanf("%s",filename); 
        
        if((fp = fopen(filename, "r")) == NULL )
        {
        	printf("不能打开的文件\n");
        	getchar();
        	return 0;
    	}
    	
    	fgets(str, sizeof(str), fp);
    	printf("%s\n", str);
    	printf("\n");
    	fclose(fp);
     }

    3.5 格式化写入函数——fprintf()函数

    格式化:把想要输出的数据,按照一定格式输出。

    功能: 将“输出列表” 数据按照指定的格式输出到 “ 文件类型指针”所指向的磁盘文件中。

    fprintf(fp, "%d", i);
    将整型变量i的值按%d的格式输出到fp指向的文件中。
    #include<stdio.h>
    #include<math.h>
    #include<time.h>
    #include<stdlib.h>
    #include<string.h>
     
        main()
    {
        FILE *fp;
        int i =107;
        char filename[30];
        printf("请输入文件路径:\n");
        scanf("%s",filename); 
        
        if((fp = fopen(filename, "w")) == NULL )
        {
        	printf("不能打开的文件\n");
        	getchar();
        	return 0;
    	}
    	
    	fprintf(fp, "%c", i);
    	printf("\n");
    	fclose(fp);
     }

    3.6 格式化读取函数——fscanf()函数

    功能:按照“格式字符串”中指定的格式,从“文件类型指针”指向的文件中,将“输入列表”中的数据输入数据缓冲区。

    fscanf(fp, "%d", &i);
    读取fp所指向的文件中的i值
    #include<stdio.h>
    #include<math.h>
    #include<time.h>
    #include<stdlib.h>
    #include<string.h>
     
        main()
    {
        FILE *fp;
        int i, j;
        char filename[30];
        printf("请输入文件路径:\n");
        scanf("%s",filename); 
        
        if((fp = fopen(filename, "r")) == NULL )
        {
        	printf("不能打开的文件\n");
        	getchar();
        	return 0;
    	}
    	for(i = 0; i < 5; i++)
    	{
    		fscanf(fp, "%c", &j);
    		printf("%d is: %5d\n", i + 1, j);
    	}
    	printf("\n");
    	fclose(fp);
     }

      3.7 数据块读写函数——fread()函数和fwrite()函数

    fprintf 和 fscanf 函数使用时,要将文本文件转换为二进制文件,在输出时又要将二进制文件转换为字符,用read()和fwrite()函数对磁盘文件读写

    功能:从fp所指向的文件中写入count次,每次读出大小为size个字节,且将读入的信息保存在buffer地址中。

    功能:将buffer数据,写入fp文件中写入count次,每次写大小为size个字节。

    实现将输入的通讯录信息保存到磁盘文件中
    #include<stdio.h>
    #include<math.h>
    #include<time.h>
    #include<stdlib.h>
    #include<string.h>
    
    struct address_list
    {
    	char name[10];
    	char adr[20];
    	char tel[15];
    }info[100];
    
    void save(char* name, int n)
    {
    	FILE *fp;
        int i;
        
        if((fp = fopen(name, "wb")) == NULL )
        {
        	printf("不能打开的文件\n");
            exit(0);
    	}
    	
    	for(i = 0; i < n; i++)
    	{
    		if(fwrite(&info[i], sizeof(struct address_list), 1, fp) != 1)
    		{
    			printf("file write error\n");
    		}
    	}
    	
    	fclose(fp);
    }
    
    void show(char *name, int n)
    {
    	int i;
    	FILE *fp;
    	if((fp = fopen(name, "rb")) == NULL)
    	{
    		printf("不能打开的文件");
    		exit(0); 
    	}
    	
    	for(i = 0; i < n; i++)
    	{
    		fread(&info[i], sizeof(struct address_list), 1, fp);
    		printf("%15s%20s%20s\n",info[i].name, info[i].adr, info[i].tel);
    	}
    	fclose(fp);
    }
     
        main()
    {
       int i, n;
       char filename[50];
       printf("有多少个学生?\n");
       scanf("%d", &n);
       printf("请输入文件路径及名称\n");
       scanf("%s", filename);
       printf("请输入学生的姓名、地址、电话:\n");
       
       for(i = 0; i < n; i++)
       {
       	
       		printf("NO:%d\n",i + 1);
       		scanf("%s%s%s", info[i].name, info[i].adr, info[i].tel );
       		save(filename, n);
    	} 
    	show(filename, n);
     }
     
     

    四、定位文件

       文件定位:根据读写要求移动文件内部读写位置指针。

    4.1 随机读写操作——fseek()函数

    随机读写操作:指读写完上一个字符(字节)后,不一定要读写其后续的字符(字节),而是可以在任意位置上读写文件中所需要的字节(字符)。

    freek():来移动文件内部位置指针。

    “文件类型指针”:指向被移动的文件;

    “位移量”:表示移动的字节数,要求位移量是long型数据,以便文件长度大于64KB时不会出错.

    "起始点“:表示从何处开始计算位移量。如图:

    freek(fp, 20L, 1);

     

    #include<stdio.h>
    #include<math.h>
    #include<time.h>
    #include<stdlib.h>
    #include<string.h>
    
    
    main()
    {
      FILE *fp;
      char filename[30], str[50];
      printf("请输入文件路径:\n");
      scanf("%s", filename);
      
     	if((fp = fopen(filename, "rb")) == NULL)
      {
      	 printf("不能打开\n");
      	 getchar();
    	 exit(0); 
       } 
       
        printf("请输入一个字符串\n");
        getchar();
    	gets(str);
    	fputs(str, fp);
    	fclose(fp);
    	
    	if((fp = fopen(filename, "rb")) == NULL)
    	{
    	  printf("不能打开\n");
      	  getchar();
    	  exit(0); 
    	 } 
    	 
    	 fseek(fp, 6L, 0);  //将文件指针指向距文件首6个字节的位置
    	 fgets(str, sizeof(str), fp);
    	 putchar('\n');
    	 puts(str);
    	 fclose(fp);
    	printf("\n");
    
    }

    4.2 返回位置指针——rewind()函数

    功能:使位置指针重新返回文件的开头

    #include<stdio.h>
    #include<math.h>
    #include<time.h>
    #include<stdlib.h>
    #include<string.h>
    
    
    main()
    {
      FILE *fp;
      char filename[50], ch;
      printf("请输入文件路径:\n");
      scanf("%s", filename);
      
     	if((fp = fopen(filename, "r")) == NULL)
      {
      	 printf("不能打开\n");
      	 getchar();
    	 exit(0); 
       }
       
       ch = fgetc(fp);
       while(ch != EOF)
       {
       	  putchar(ch);
       	  ch = fgetc(fp);
    	} 
    	
    	printf("\n");
    	rewind(fp);
    	
    	ch = fgetc(fp);
    	 while(ch != EOF)
       {
       	  putchar(ch);
       	  ch = fgetc(fp);
    	} 
       
    	 fclose(fp);
    	printf("\n");
    
    }

    4.3得到文件位置——ftell()函数

    功能:得到流式文件中的当前位置。

    #include<stdio.h>
    #include<math.h>
    #include<time.h>
    #include<stdlib.h>
    #include<string.h>
    
    
    main()
    {
      FILE *fp;
      int n;
      char filename[50], ch;
      printf("请输入文件路径:\n");
      scanf("%s", filename);
      
      if((fp = fopen(filename, "r")) == NULL)
      {
      	 printf("不能打开\n");
      	 getchar();
    	 exit(0); 
       }
       
       ch = fgetc(fp);
       while(ch != EOF)
       {
       	  putchar(ch);
       	  ch = fgetc(fp);
    	} 
    	
    	printf("\n");
    	n = ftell(fp);
    	printf("这个字符串的长度为:%d\n", n);
       
    	 fclose(fp);
    	printf("\n");
    
    }

    将文件2内容复制到文件1
    #include<stdio.h>
    #include<math.h>
    #include<time.h>
    #include<stdlib.h>
    #include<string.h>
    
    
    main()
    {
      FILE *fp1, *fp2;
      int n;
      char filename1[50], ch, filename2[50];
      printf("请输入文件1路径:\n");
      scanf("%s", filename1);
      printf("请输入文件2路径:\n");
      scanf("%s", filename2);
      
      if((fp1 = fopen(filename1, "ab+")) == NULL)
      {
      	 printf("不能打开\n");
      	 getchar();
    	 exit(0); 
       }
       
      if((fp2 = fopen(filename2, "rb")) == NULL)
      {
      	 printf("不能打开\n");
      	 getchar();
    	 exit(0); 
       }
       
       fseek(fp1, 0L, 2);
       
       while((ch = fgetc(fp2)) != EOF )
       {
       	 fputc(ch, fp1);
    	} 
    
    	 fclose(fp1);
    	  fclose(fp2);
    	printf("\n");
    
    }

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • mattrib命令用于变更或显示MS-DOS文件的属性,MS-DOS文件是指记录在存储介质(如磁盘、光盘)上的一组相关信息的集合。 mattrib为mtools工具指令,模拟MS-DOS的attrib指令,可变更MS-DOS文件的属性 。 语法格式:...
  • 文件:是记录在磁盘上的,具有符号名的,在逻辑上具有完整定义的一组相关信息项的集合。从用户角度看,文件是逻辑外存的最小分配单元,即信息只能以文件形式写入外存。 文件结构 逻辑结构 定义:是用户所...

    操作系统-存储管理

    5 文件管理

    文件:是记录在磁盘上的,具有符号名的,在逻辑上具有完整定义的一组相关信息项的集合。从用户角度看,文件是逻辑外存的最小分配单元,即信息只能以文件形式写入外存。


    文件结构

    逻辑结构

    定义:是用户所观察到的文件组织形式,它独立于物理特性,又称为文件组织(File Organization)
    分类:有结构的记录式文件:由一个以上的记录构成
    无结构的流式文件:文件无结构,由一串字符构成

    物理结构

    定义:是指文件的内部组织形式,即文件在物理存储设备上存放方法
    常见的几种物理存储方式:

    连续存储(顺序结构)

    它是将逻辑上连续的文件信息,依次存放在编号连续的物理块上。

    链接结构

    将逻辑上连续的文件存放在不连续的物理块上,每个物理块,设有一个指针指向下一个物理块。

    索引结构

    将逻辑上连续的文件(信息)存放在不连续的物理块中,系统为每个文件建立一个专用的数据结构--索引表。索引表中存放文件的逻辑块号和物理块号的对应关系。

    索引表的组织方式

    链接文件方式:

    将多个索引表块按链表文件的方式串联起来。
    例如:假设物理块大小为1K,一个索引项占3个字节,文件大小500k


    多重索引实例--UNIX文件系统

    UNIX文件系统采用多重索引,为了支持文件的共享和提高目录的检索速度,UNIX文件系统中设置了一类特殊的索引结点(index node),称为iNode.inode中包含了文件的控制信息。如(文件索引表:存放文件的物理攀块号)
    char di_addr[40]:每3个字节组成一个单元,记录文件的物理块号。


    能表示的文件大小:(10+341+341*341+341*341*341=40GB)

    Hash文件

    采用计算寻址结构,它由主文件和溢出文件组成:


    外存空间管理

    概述:外存具有较大的存储空间,且被多用户共享,用户执行程序经常要在磁盘上存储,删除文件,因此文件系统必须对磁盘空间进行有效管理。
    外存空闲空间管理的数据结构通常称为磁盘分配表,常用的空闲空间的管理方法有:
    1)空闲区表
    2)位示图
    3)空闲块链

    空闲分区表:

    将外存空间上一个连续未分配区域称为“空闲区“操作系统为磁盘外存上所有空闲区建立一张空闲表,每个表项对应一个空闲区,空闲表中包含序号、空闲区的第一块、空闲块的块数等信息。

    序号

    第一个空闲块号

    空闲块数

    状态

    位示图

    这种方法是在外存上将来一张位示图,记录文件存储器的使用情况,每一位对应文件存储器上的一个物理块,取值为0和1 分别表示空闲和占用。

    空闲块链

    每个空闲物理块中有指向下一个空闲物理块的指针。所有空闲物理块构成一个链表,链表的头指针存放在文件存储器的特定位置(如:管理块中)


    成组连接法

    将空闲块分成若干组,每100个空闲块为一组,每组第一个空闲块记录了下一组空闲块的物理盘块号和本组空闲块总数。

    释放算法

     

    分配算法

    将专用块中的空闲块逐个删除,空闲块数-1,直到减到空闲块数为1时,查看第一个单元中的内容是否为0,如实0,则等待,若不是0,则复制第一个单元对应块的内容(下一组空闲块)到专用块,并将该块分配给请求者。

    文件系统的性能问题

    影响文件系统的性能因素

    存储介质

    磁盘性能的好坏

    磁盘调度算法的好坏

    磁盘高速缓冲区的大小

    磁盘调度

    磁盘是一种共享设备,为了保证信息的安全。系统每一时刻只允许一个进程启动磁盘进行I/O操作,其余的进程只能等待,因此合理的设置调度算法就十分重要。

    设置调度算法的目标是使各进程对磁盘的平均访问时间最小

    磁盘的特点

    磁盘是一种共享设备

    不管系统有多少磁头,多少磁道,多少盘片。在任何时候只能有一个磁头处于活动。

    磁盘调度算法

    FCFS:最简单

    SSF:最短寻道时间优先->"饥饿 "

    SCAN:电梯调度算法(距离+ 方向)

    旋转调度算法

    研究当前移动臂定位后,如何访问数据的问题?可能出现的情况如下:
    1)进程请求访问的是 同一磁道 上的 不同编号的扇区
    2)进程请求访问的是 不同磁道 上的 不同编号的扇区
    3)进程请求访问的是 不同磁道 上的 相同编号的扇区
    例:假设当前读写头总是从编号的最小的扇区开始读数据

    请求顺序

    柱面号

    磁道号

    扇区号

    1

    16

    5

    3

    2

    16

    1

    6

    3

    16

    5

    1

    4

    16

    9

    6

    5

    16

    1

    4

    6

    16

    8

    12

    则可能访问的顺序为: 3 1 5 2 6 4和 3 1 5 4 6 2

     

    展开全文
  • 文件系统

    2016-05-24 10:10:12
    也叫作文件属性管理结构,多数inode都存储在磁盘上。少量常用,近期使用inode会被缓存到内存中。 dentry 目录项,本质上结构体,重要成员有两个{文件名,inode,.....}文件内容data保存在磁盘块中。 文件...

    首先从文件存储相关概念入手:

    inode

    其本质为结构体,存储文件的属性信息。如:权限,类型,大小,时间,用户,盘块位置....也叫作文件属性管理结构,多数的inode都存储在磁盘上。少量常用,近期使用的inode会被缓存到内存中。

    dentry

    目录项,本质上是结构体,重要成员有两个{文件名,inode,.....}文件内容data保存在磁盘块中。

    文件系统

    文件系统是一组规则,规定对文件的存储及读取的一般方法。文件系统在磁盘格式化 过程中指定。

    常见的文件系统有:fat32        ntfs             exfat                 ext2        ext3           ext4

    简单描述一下ext2文件系统

    一个磁盘可以划分成多个分区,每个分区必须先用格式化工具(mkfs)格式化成某种格式的文件系统,然后才能存储,格式化的过程会在磁盘上写一些管理存储布局的信息。

    文件系统中存储的最小单位是块(block),一个块的大小是在格式化时确定的,也可以通过设置来确定块大小。启动快Bootblock的大小是确定的,就是1kb,启动快是由pc标准规定的,用来存储磁盘分区信息和启动信息,任何文件系统都不能使用启动快。启动块之后才是ext2文件系统的开始,ext2文件系统将整个分区划成若干个同样大小的块组BlockGroup,每个块组都由超级快Super Block,块组描述符表(GDT),块位图(Block Bitmap),inode位图,inode表

    Super Block:描述整个分区的文件系统信息,例如块大小,文件系统版本号,上次mount的时间等等。超级快在每个块组的开头都有一份拷贝。

    GDT:由多块组描述符组成,整个分区分成多少个块组就对应有多少个块组描述符。每个块组描述符存储一个块组的描述信息,例如在这个块组中从哪里开始是inode表,从哪里开始是数据块,空闲的inode和数据块还有多少个等等。和超级块类似,块组描述符表在每个块组的开头也都有一份拷贝。

    块位图:用来描述整个块组中哪些块已用哪些块空闲的。它本身就是一个块,其中的每个bit代表本块组中的一个块,这个bit为1表示该块已用,这个bit为0表示该块空闲可用。

    由块位图引出两个问题:

    为什么用df命令统计整个磁盘的已用空间非常快呢?

    因为只需要查看每个块组的块位图即可,不需要搜遍整个分区。相反,用du命令查看一个较大目录的已用空间就非常慢,因为不可避免的要搜遍整个目录的所有文件。

    在格式化一个分区时究竟会划出多少个块组呢?

    主要的限制在于块位图本身必须占用一个块。

    inode位图:和块位图类似,本身占一个块,其中每个bit表示一个inode是否空闲可用。

    inode表:一个文件除了数据需要存储之外,一些描述信息也需要存储,例如文件类型,权限,大小等,这些文件信息存储在inode中而不是数据块中。每个文件都有一个inode,一个块组中的所有inode组成了inode表。inode表中的每个ionde的大小:ext2,ext3中128字节,ext4中256字节

    展开全文
  • 文件(file)是存储在磁盘上的一组信息的集合;目录(directory),即文件夹,是组织多个文件的方式;注册表(registry)则是操作系统中存储各种配置信息的其中地(数据库)。 文件与目录管理 C#支持文件管理和目录...
  • 所谓文件一组带标识(标识即为文件名)逻辑有完整意义的信息序列 1. 文件的存储介质 典型的存储介质 磁盘(包括固态盘SSD)、磁带、光盘、U盘 物理块(块block、簇cluster) 信息存储、传输、...
  • 2-02数据库的相关概念

    2016-10-13 21:13:00
    数据库文件在磁盘上的存储形式: 主数据文件:*.mdf 日志文件:*.ndf 文件组:主要用于管理磁盘空间,分为主文件组和次文件组, 日志文件不属于任何内。 逻辑储存: 由数据表、视图、索引等各种不同的...
  • 文件是进程创建的信息逻辑单元,是一组相关数据集合。文件提供了一种在磁盘上保存信息而且方便以后读取方法。 操作系统中对文件进行管理部分称作文件系统。 文件类型 文件可以分为普通文件(ordinary)和目录...
  • 文件是具有符号名(文件名)的一组相关元素的有序序列,是一段程序或数据的集合。 文件系统包含文件管理程序(文件与目录的集合)和所管理的全部文件,是用户与外存的接口,系统软件为用户提供统一方法(以数据记录...
  • 文件系统基本概念 数据如何存放? 文件是什么? 所谓文件是一组带标识(标识即为...文件是一种抽象机制,它提供了一种把信息保存在磁盘存储设备,并且便于以后访问方法。抽象性体现在用户不必关心具体...
  • Oracle数据库相关

    2020-11-02 21:26:37
    1.所有的关系型数据库存储数据集合就是磁盘上的文件,Oracle数据库就是一组文件的集合; 2.Oracle数据库是由:数据文件、控制文件以及日志文件构成的; 二、什么是数据文件? 数据文件是一个二进制的文件,是用于...
  • 文件系统决定如何将磁盘空间分配给磁盘上的不同文件文件系统也保存了磁盘已分配空间和未分配空间的响应记录。文件系统维护着个目录树用于列出文件系统上存在的文件和目录。它保存有文件和目录的用户,组信息...
  • indows98资源管理器 控制面板与系统配置 小结 熟练掌握对文件文件夹的基本操作 熟练使用查找功能和快捷方式的建立 会使用一些常用的系统设置 * * indows98的文件 文件存储在磁盘上的一组相关信息组成 ...
  • folder Size最好的一个文件夹大小浏览工具了,可以拖入文件夹,操作方便 folder Size一款用于系统硬盘查看对比的工具,它可以帮助你查看系统中的磁盘文件使用状态,同时支持显示每个磁盘文件和文件夹所占用...
  • 数据库(database,有时拼作data base)又称为电子数据库,专门组织起来的一组数据或信息,其目的为了便于计算机快速查询及检索。数据库的结构专门设计的,各种数据处理操作命令的支持下,可以简化数据的...
  • 精通windows server 2008 命令行与powershell 电子书PDF单文件完整版 内容简介: ...10.4.4 &&——如果多个命令中的一个失败即中止后续命令 473 10.4.5 ]sysy[ ]sysy[——允许字符串中包含空格 473...
  • JAVA百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
    (2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致变化,(4)为了可靠和高效地传输,虽然用户可以终端直接地使用它,但是它主要作用供程序使用。本规范尝试满足...
  • (2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致变化,(4)为了可靠和高效地传输,虽然用户可以终端直接地使用它,但是它主要作用供程序使用。本规范尝试满足...
  • (2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致变化,(4)为了可靠和高效地传输,虽然用户可以终端直接地使用它,但是它主要作用供程序使用。本规范尝试满足...
  • (2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致变化,(4)为了可靠和高效地传输,虽然用户可以终端直接地使用它,但是它主要作用供程序使用。本规范尝试满足...
  • (2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致变化,(4)为了可靠和高效地传输,虽然用户可以终端直接地使用它,但是它主要作用供程序使用。本规范尝试满足...
  • rar压缩软件.rar

    2016-02-13 10:52:44
    列表文件是一个包括处理文件名纯文本文件。第列应该以文件名开始。可以 //字符后添加注释。例如,你可以创建包含下列字符串 backup.lst: c:\work\doc\*.txt //备份文本文档 c:\work\image\*.bmp //...
  • 1.3.4 基于一组值返回行 9 1.3.5 LIKE和通配符结合使用 9 1.3.6 声明变量及为变量赋值 11 1.4 数据分组 12 1.4.1 使用GROUP BY子句 12 1.4.2 使用GROUP BY ALL 13 1.4.3 使用HAVING选择性地查询分组...
  •  实例199 禁用窗口上的关闭按钮 267  实例200 向窗体中拖放图片并显示 268  实例201 使应用程序进程中消失 269 9.2 其他窗体技术 270  实例202 关闭窗体时弹出确认对话框 270  实例203 隐藏应用程序...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 230
精华内容 92
关键字:

文件是存储在磁盘上的一组相关信息