在编写
文件 *** 作的或者网络通信的软件时,伏渗初学者一般可能会遇到“Too many open files”的问题。这主要是因为文件描述符是
系统的一个重要资源,虽然说系统内存有多少就可以打开多少的文件描述符,但是在实际实现过程中内核是会做相应的处缺陆脊理的,一般最大打开文件数会是系统内存的10%(以KB来计算)(称之为系统级限制),查看系统级别的最大打开文件数可以使用sysctl -a | grep fs.file-max命令查看。与此同时,内核为了不让某一个进程消耗掉所有的文件资源,其也会对单个进程最大打开文件数做默认值处理(称之为用户级限制),默认值一般是1024,使用ulimit -n命令可以查看。在Web服务器中,通过更改系统默认值文件描述符的最大值来优化服务器是最常见的方式之一悉陵,具体优化方式请查看文件
目录(file directory)为每个文件设立一个表目。文件目录表目至少要包含文件名、物理地址、文件结构信息和存取控制信息等,以建立起文件名与物理地址手档的对应关系,实现按名存取文件。
通常情况下,系统会为文件目录建立一个简单的索引表,只包含文件的ID、文件名、文件当前状态(可读/可写/不可访问)及一个指向对应文件目录表项的指针。
系统在对一个文件进行读写的 *** 作过程如下:
1、根据提供的文件名查找对应的文件索引表;
2、根据索引表指针找到对应的目录项;
3、根据目录册镇项的物理地址项找到文件;
4、修改文件索引表中文件的当前状态(若系统只读文件,不进行修改,则标记5、为可读,若系统要对文件进行修改,则标记为不可访问);
6、将文件读入内存,对文件进行读写 *** 作;
7、 *** 作完毕,释放文件,州薯粗修改索引表中文件的状态;
评论列表(0条)