UNIX文件系统概述(unix系统文件权限356)
深入理解Linux内核(作者:(美)博韦,西斯特)读书笔记
文件
Unix文件是以字节序列组成的信息载体(Container),内核不解释文件的内容。从用户的角度来看,文件被组织在一个树结构的命名空间中(dev、home、bin、usr等)。
除了叶节点外,树的所有节点都表示目录名,目录节点包含它下面文件及目录的所有信息。文件或目录名由除“/”,“\0”之外的任意ASCII字符序列组成,其最大长度不超过255个字符。树的根目录(root directory),名字为“/”。在同一目录中文件名不能相同,在不同目录中文件名可以相同。
Unix的每个进程都有一个当前工作目录,它属于进程执行上下文(execution context),标识出进程所用的当前目录。
路径名分为绝对路径,相对路径。绝对路径的路径名起点为根目录,相对路径则为某目录名或文件名。".",".."分别标识当前工作目录和父目录,根目录的当前目录和父目录是一致的。
硬链接和软链接
包含在目录中的文件名就是一个文件的硬链接(hard link),在同一个目录或者不同的目录中,同一个文件可以有几个链接,可对应几个文件名。Unix命令:ln p1 p2,用来创建新的硬链接。
硬链接的限制因素:
不允许对目录创建硬链接,因为容易将目录树变成环,导致不能通过名字定位某个文件。只能在同一个文件系统中创建硬链接,而现代Unix系统可能包含了多种文件系统,这些文件系统位于不同的磁盘和/或分区,用户难以区分它们之间具体的物理划分。为了克服限制,引入了软链接(soft link),也称符号链接(symbolic link)。软链接包含另一个文件的任意一个路径名,路径名可以指向位于任意文件系统的任意文件或者目录,甚至指向不存在的文件。Unix命令:ln -s p1 p2,用来创建新的软链接,任何对p2的引用都可以自动被转成指向p1。
文件类型
Unix文件类型包括:
普通文件目录符号链接(软链接)面向块的设备文件面向字符的设备文件管道和命名管道套接字文件描述符与索引节点
Unix对文件的内容和描述文件的信息进行了清楚的区分。除了设备文件和特殊文件系统外,每个文件都由字符序列组成,文件内容不包括任何控制信息。
文件系统处理文件需要的所有信息包含在一个名为索引节点(inode)的数据结构中。每个文件都有自己的索引节点,文件系统用索引节点来标识文件。该数据结构包括的类型大致有:
文件类型硬链接个数文件长度设备标识符文件系统中标识文件的索引节点号文件拥有者的UID文件用户组ID时间戳,状态改变时间、最后访问时间、最后修改时间访问权限和文件模式访问权限和文件模式
文件的潜在用户包括:
文件所有者的用户同组用户,不包括所有者所有剩下用户文件有三种类型的访问权限,读、写、执行。文件访问权限的组合用九种不同的二进制标记。另外还有三种附加标记,包括:
suid (set user id)进程可获得该文件拥有者的uidsgid (set group id)进程可获得该文件用户组的idsticky 程序执行结束后,依然将它保留在内存中文件操作的系统调用
当用户访问一个普通文件或者目录文件的内容时,实际上是访问存储在硬件块设备上的数据,从这个角度来看,文件系统是硬盘分区物理组织的用户级视图。处于用户态的进程不能直接与底层硬件交互,所以每个实际的文件操作必须在内核态下进行。
打开文件:
fd = open(path,flag,mode)path表示被打开文件的相对路径或绝对路径、flag指定文件打开的方式(读、写、读/写、追加),也指定是否创建一个不存在的文件、mode指定新创建文件的访问权限。
访问打开的文件:
对普通的unix文件,可以顺序地访问,也可以随机的访问,而对设备文件和命名管道文件,通常只能顺序访问。在这俩种访问方式中,内核把文件指针存放在打开文件对象中,当前位置就是下一次进行读或者写操作的位置。顺序访问是文件的默认访问方式。
offset = lseek(fd,offset,whence)fd 文件描述符、offset 计算文件指针的新位置、whence 指定文件指针新位置的计算方式
readlen = read(fd,buf,count)fd为文件描述符、buf 指定在进程地址空间中缓冲区的地址、所要读字节数。若遇到文件结束或者空管道等情况,内核无法成功的读出全部count的字节。返回readlen的值就是实际读的字节数。
关闭文件:
close(fd)当一个进程终止时,内核会关闭所有打开的文件。
更名或删除文件:
重新命名或者删除一个文件时,进程不需要打开它,因为并不对文件内容起作用,而是对一个或者多个目录的内容起作用。
rename(oldpath,newpath)、unlink(pathname)只有当文件链接数为0时,文件才真正的被删除。
以上就是关于《UNIX文件系统概述(unix系统文件权限356)》的全部内容,本文网址:https://www.7ca.cn/tg/42450.shtml,如对您有帮助可以分享给好友,谢谢。