答:首先,文件名是一个字符串, *** 作速度慢且占空间大,而文件描述符为一整数,其处理效率明显高于字符串。其次,文件被打开后其控制信息(FCB)被缓冲到内存系统空间,文件描述符作为用户打开文件表中的入口地址直接与内存FCB建立起联系,而文件名无法做到这一点。
在编写文件 *** 作的或者网络通信的软件时,伏渗初学者一般可能会遇到“Too many open files”的问题。这主要是因为文件描述符是系统的一个重要资源,虽然说系统内存有多少就可以打开多少的文件描述符,但是在实际实现过程中内核是会做相应的处缺陆脊理的,一般最大打开文件数会是系统内存的10%(以KB来计算)(称之为系统级限制),查看系统级别的最大打开文件数可以使用sysctl -a | grep fs.file-max命令查看。与此同时,内核为了不让某一个进程消耗掉所有的文件资源,其也会对单个进程最大打开文件数做默认值处理(称之为用户级限制),默认值一般是1024,使用ulimit -n命令可以查看。在Web服务器中,通过更改系统默认值文件描述符的最大值来优化服务器是最常见的方式之一悉陵,具体优化方式请查看你好,Unix文件系统是对存储设备上的数据和元数据进行组织的机制。UNIX文件系统是UNIX系统的心脏部分,提供了层次结构的目录和文件。中文名
UNIX文件系统
外文名
UNIX file system
学科
计算机应用
应用
Unix/Linux系统
物理结构
索引文件结构
快速
导航
管理结构
物理结构
空闲磁盘块
结构和共享
安全性
软件介绍
Unix系统的产生和流行推动了 *** 作系统的革命,它的设计思想和在发展过程中积累的丰富经验及教训仍可为人们借鉴。文件系统负责系统内文件信息的管理,在整个系统中起着至关重要的作用,文件系统是Unix成功的关键。Unix系统采用树形文件结构、内核与外核的结合、设备与文件一样的管理机制和使用方法等技术和措施,使得Unix文件系统成为当代非常优秀的系统[1] 。
管理结构
Unix文件系统是通过“磁盘索引i节点”、“目录项”来进行管理的,在文件被打开或被引用后还需要“乎稿毁内存索引i节点”、“用户文件描述表”、“文件表”。文件系统磁盘结构如图1。管理块主要管理磁盘结构中各部分区域的大小及资源(i节点,磁盘块)的使用情况与管理方式。i节点区用于存放该文件系统全部磁盘i节点结构,磁盘索引节点包含文件的重要信息如下:文件所有者标识符;文件类型;文件存取许可权;文件联结数目;文件存取时间;文件长度;文件地址索引表。
图1
Unix的每个目录项只存放文件名和i节点号,共16个字节,而文件中除名字以外的信息都存放到i节点中,优点是系统各级目录的规模大大减少。在Unix文件系统中,为了提高系统效率,减少内存空间的占用,当打开一个文件时敬早,只是将与该文件相联系的目录项和磁盘i节点拷贝到主存中,为了对打开的文件进行管理,因此又设置了打开文件管理机构,它又由下列三部分组成:
1、活动i节点(内存i节点)。作用是反映文件当前活动的情况,因此它添加了一些项目:内存索引节点状态、设备号、索引节点号、内存索引节点的访问计数。
2、打开文件表。i节点中只包含有文件的静态信息,但当一个文件被同一进程或不同进程、用同一或不同路径名、相同的或互异 *** 作同时打开时,仅靠i节点就不能满足要求,因此,打开文件表记录了打开文件所需的一些附加信息:读写状态、引用计数、指向内存索引点的指针、读/写位置指针。
3、用户文件描述符表。每个用户进程有一个用户文件描述符表,每一个表项就是一个指针,并指向打开文件表的一个表项,这个表的作用就是保证每个进程能够打开多个文件,或岁备者对同一个文件以不同形式 *** 作打开。假定一个进程执行下列代码:
fd1= open(”/etc/pad”,O- RDONLY);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)