Linux期末复习知识点小结(五)——文件系统
2015-02-02 17:10
323 查看
UNIX文件系统是UNIX成功的关键。其特点主要表现为以下几点:
1、目录结构采用树形层次结构
2、可安装拆卸的文件系统
3、文件是无结构的字符流式文件
4、把外部设备和文件目录作为文件处理。
文件描述符
每个进程可以同时打开多个文件,每个进程用一个小的非负整数来表示其打开的每个文件,这个整数就是文件描述符(fd, file descriptor).
任何时候对文件的输入/输出都是通过文件描述符来标示文件的。文件描述符类似于标准库中的文件指针或MS-DOS中的文件句柄。
因为大多数的输入/输出都是通过键盘和显示器来实现的,为了方便起见,当shell运行一个程序的时候,它将自动打开三个文件,对应的文件描述符分别为0、1、2,依次表示标准输入(stdin)、标准输出(stdout)和标准错误(stderr)。
System Calls for File I/O
1、creat
创建一个空文件,格式:fd=creat(name,Pmode), 例如:fd= creat(“/usr/abc”,0777)
2、open
打开一个已存在的文件,格式:fd = open(name, rwmode [, pmode]);
rwmode为文件被打开的模式。该函数正常调用返回的fd大于等于3
3、close
关闭一个被打开的文件,格式:status = close(fd);
4、read/write
对文件的读写,格式:
n=read(fd,buffer, size);
n=write(fd,buffer,size);
buffer是指向读/写缓冲区的指针,n是一次读/写操作的返回字节数
拷贝命令的实现:
5、lseek 文件的随机存取
改变文件指针所指的位置,格式:newpos=lseek(fd,offset, origin);
创建空洞文件
两个数组数据之间有30个空字节,他们被0填充
这6个系统调用(creat,open,read,write,lseek,close)通常称为unbuffered I/O(相对于标准I/O库stdio.h中提供的函数).
系统调用stat
头文件<sys/stat.h>中包含了描述stat的返回值的结构
struct stat { /* 由stat返回的i结点信息 */
dev_t st_dev; /* i结点设备 */
ino_t st_ino; /* i结点编号 */
short st_mode; /* 模式位,包含文件类型和访问权限 */
short st_nlink; /* 文件的总链接数 */
short st_uid; /* 所有者的用户id */
short st_gid; /* 所有者的组id */
dev_t st_rdev; /* 用于特殊文件 */
off_t st_size; /* 用字符数表示的文件长度 */
time_t st_atime; /* 上一次访问的时间 */
time_t st_mtime; /* 上一次修改的时间 */
time_t st_ctime; /* 上一次改变i结点的时间 */
};
st_mode项包含了描述文件的一系列标志,这些在<sys/stat.h>中定义。文件类型的有关部分为:
#define S_IFMT 0160000 /* 文件的类型 */
#define S_IFDIR 0040000 /* 目录 */
#define S_IFCHR 0020000 /* 特殊字符 */
#define S_IFBLK 0060000 /* 特殊块 */
#define S_IFREG 0100000 /* 普通 */
Unix文件类型:
→常规文件(-) :文本文件和二进制文件
→目录文件(d) :将文件的名称和它的索引节点号结合在一起的一张表(记住:目录也是文件)
→设备文件(c or b) :每种I/O设备对应一个设备文件
→管道文件(p) :主要用于在进程间传递数据 ,又称先进先出(FIFO)文件
→链接文件(L) :又称符号链接文件,它提供了共享文件的一种方法
UNIX文件系统 —— 一个分区创建一个文件系统
查看文件的索引节点号→
目录
目录(directory)是一种特殊的文件。目录的功能是实现文件名到文件地址的映射。目录中的一项称为目录项(dentry, directory entry)。所以,文件名和地址这两项在目录中是必不可少的。而文件的其他属性是否放到目录中,不同的操作系统有不同的做法。
下图是一个MS-DOS的目录项,它总共32个字节。
UNIX中采用的目录结构非常简单,如图,每个目录项占16个字节,其中只包含文件名及其索引节点号。有关文件类型、长度、时间、所有者和磁盘地址等信息都放到索引节点(inode, index node)中,inode的引入为文件共享提供了便利。
Unix采用inode的好处?
优点1:加快检索文件的速度
Unix的目录项只包含文件名和对应的inode编号,这样大大减少了系统各级目录的规模。
优点2. 采用inode为文件共享提供了便利,可以让多个逻辑文件名共享同一个物理文件。
硬链接和软链接——实现文件共享
链接命令:ln(link)
硬链接(hardlink):让一个文件对应一个或多个文件名,或者说把我们使用的文件名和文件系统使用的节点号链接起来,这些文件名可以在同一目录或不同目录
软链接(也叫符号链接,symbolic link):是一种特殊的文件,这种文件包含了另一个文件的任意一个路径名。这个路径名指向位于任意一个文件系统的任意文件,甚至可以指向一个不存在的文件
硬链接 ln sourcefile linkfile
不同文件名对应了同一个物理文件,它们的索引节点相同,删除任何一个逻辑文件名(链接),只是将索引节点中的文件链接数减一,直到减为零,才会删除物理文件。
link
用于建立文件之间的硬链接,格式: status=link(name1,name2)
unlink
删除一个链接文件status=unlink(name)
Link与unlink的组合实现MV
硬链接的缺点:
1.不能跨文件系统建立硬链接;
2.不能对目录建立硬链接。
软链接(又称符号链接): ln–s sourcefile linkfile
为了克服硬链接的上述缺点,产生了软链接。软链接相当于windows下的快捷方式。
可以跨文件系统建立符号链接,也可以对目录创建符号链接,甚至可以对一个不存在的文件创建符号链接。软链接文件类型为l, 一般用于目录。
FAT技术
Microsoft在其早期的操作系统中采用的是FAT(File Allocation Table,文件分配表)文件系统.
内存打开文件结构
当用户需要查询、读写文件信息时,文件系统必须涉及文件目录结构、文件磁盘 i节点、文件地址索引表这样一些数据结构。
当打开一个文件时,系统进程将该文件在磁盘上面的有关目录信息、磁盘i节点及相应的文件地址索引表拷贝到内存中。
打开文件机构:文件系统中管理这一方面工作的机构称为打开文件管理机构。
当一个进程执行以下代码:
fd1=open(“/etc/passwd”,O_RDONLY);
fd2=open(“loca”,O_RDONLY);
fd3=open(“/etc/passwd”,O_WRONLY);
磁盘驱动器 →
访问权限
※每个进程有四个ID:
真实uid和真实gid表明我们真正是谁。有效uid和有效gid用来判定文件访问权限。一般情况下真实uid等于有效uid,真实gid等于有效gid
※每个文件有两个ID:属主ID和组ID,分别表示为st_uid和st_gid.一个进程能否访问一个文件,就是判断进程的有效id是否等于文件的id
文件的访问权限除了日常提到的九位,其实还有三位,分别是suid、sgid和sticky位。
1)suid位:saved set-uid
如何设置文件的suid位:chmod u+s file 或 chmod 4*** file
2)sgid位:saved set-gid,通常只对目录设置sgid
设置方法:chmod g+s dir 或 chmod 2*** dir
3)sticky位:也叫粘滞位,通常只对目录设置sticky位
用户想删除或重命名一个被设置了sticky位的目录中的文件,该用户不仅要对该目录有写权限,而且必须是一下三者之一:拥有该文件、拥有该目录、超级管理员。
设置sticky位:chmod +t dir 或 chmod 1*** dir
1、目录结构采用树形层次结构
2、可安装拆卸的文件系统
3、文件是无结构的字符流式文件
4、把外部设备和文件目录作为文件处理。
文件描述符
每个进程可以同时打开多个文件,每个进程用一个小的非负整数来表示其打开的每个文件,这个整数就是文件描述符(fd, file descriptor).
任何时候对文件的输入/输出都是通过文件描述符来标示文件的。文件描述符类似于标准库中的文件指针或MS-DOS中的文件句柄。
因为大多数的输入/输出都是通过键盘和显示器来实现的,为了方便起见,当shell运行一个程序的时候,它将自动打开三个文件,对应的文件描述符分别为0、1、2,依次表示标准输入(stdin)、标准输出(stdout)和标准错误(stderr)。
System Calls for File I/O
1、creat
创建一个空文件,格式:fd=creat(name,Pmode), 例如:fd= creat(“/usr/abc”,0777)
2、open
打开一个已存在的文件,格式:fd = open(name, rwmode [, pmode]);
rwmode为文件被打开的模式。该函数正常调用返回的fd大于等于3
3、close
关闭一个被打开的文件,格式:status = close(fd);
4、read/write
对文件的读写,格式:
n=read(fd,buffer, size);
n=write(fd,buffer,size);
buffer是指向读/写缓冲区的指针,n是一次读/写操作的返回字节数
拷贝命令的实现:
5、lseek 文件的随机存取
改变文件指针所指的位置,格式:newpos=lseek(fd,offset, origin);
创建空洞文件
两个数组数据之间有30个空字节,他们被0填充
这6个系统调用(creat,open,read,write,lseek,close)通常称为unbuffered I/O(相对于标准I/O库stdio.h中提供的函数).
系统调用stat
头文件<sys/stat.h>中包含了描述stat的返回值的结构
struct stat { /* 由stat返回的i结点信息 */
dev_t st_dev; /* i结点设备 */
ino_t st_ino; /* i结点编号 */
short st_mode; /* 模式位,包含文件类型和访问权限 */
short st_nlink; /* 文件的总链接数 */
short st_uid; /* 所有者的用户id */
short st_gid; /* 所有者的组id */
dev_t st_rdev; /* 用于特殊文件 */
off_t st_size; /* 用字符数表示的文件长度 */
time_t st_atime; /* 上一次访问的时间 */
time_t st_mtime; /* 上一次修改的时间 */
time_t st_ctime; /* 上一次改变i结点的时间 */
};
st_mode项包含了描述文件的一系列标志,这些在<sys/stat.h>中定义。文件类型的有关部分为:
#define S_IFMT 0160000 /* 文件的类型 */
#define S_IFDIR 0040000 /* 目录 */
#define S_IFCHR 0020000 /* 特殊字符 */
#define S_IFBLK 0060000 /* 特殊块 */
#define S_IFREG 0100000 /* 普通 */
Unix文件类型:
→常规文件(-) :文本文件和二进制文件
→目录文件(d) :将文件的名称和它的索引节点号结合在一起的一张表(记住:目录也是文件)
→设备文件(c or b) :每种I/O设备对应一个设备文件
→管道文件(p) :主要用于在进程间传递数据 ,又称先进先出(FIFO)文件
→链接文件(L) :又称符号链接文件,它提供了共享文件的一种方法
UNIX文件系统 —— 一个分区创建一个文件系统
查看文件的索引节点号→
目录
目录(directory)是一种特殊的文件。目录的功能是实现文件名到文件地址的映射。目录中的一项称为目录项(dentry, directory entry)。所以,文件名和地址这两项在目录中是必不可少的。而文件的其他属性是否放到目录中,不同的操作系统有不同的做法。
下图是一个MS-DOS的目录项,它总共32个字节。
UNIX中采用的目录结构非常简单,如图,每个目录项占16个字节,其中只包含文件名及其索引节点号。有关文件类型、长度、时间、所有者和磁盘地址等信息都放到索引节点(inode, index node)中,inode的引入为文件共享提供了便利。
Unix采用inode的好处?
优点1:加快检索文件的速度
Unix的目录项只包含文件名和对应的inode编号,这样大大减少了系统各级目录的规模。
优点2. 采用inode为文件共享提供了便利,可以让多个逻辑文件名共享同一个物理文件。
硬链接和软链接——实现文件共享
链接命令:ln(link)
硬链接(hardlink):让一个文件对应一个或多个文件名,或者说把我们使用的文件名和文件系统使用的节点号链接起来,这些文件名可以在同一目录或不同目录
软链接(也叫符号链接,symbolic link):是一种特殊的文件,这种文件包含了另一个文件的任意一个路径名。这个路径名指向位于任意一个文件系统的任意文件,甚至可以指向一个不存在的文件
硬链接 ln sourcefile linkfile
不同文件名对应了同一个物理文件,它们的索引节点相同,删除任何一个逻辑文件名(链接),只是将索引节点中的文件链接数减一,直到减为零,才会删除物理文件。
link
用于建立文件之间的硬链接,格式: status=link(name1,name2)
unlink
删除一个链接文件status=unlink(name)
Link与unlink的组合实现MV
硬链接的缺点:
1.不能跨文件系统建立硬链接;
2.不能对目录建立硬链接。
软链接(又称符号链接): ln–s sourcefile linkfile
为了克服硬链接的上述缺点,产生了软链接。软链接相当于windows下的快捷方式。
可以跨文件系统建立符号链接,也可以对目录创建符号链接,甚至可以对一个不存在的文件创建符号链接。软链接文件类型为l, 一般用于目录。
FAT技术
Microsoft在其早期的操作系统中采用的是FAT(File Allocation Table,文件分配表)文件系统.
内存打开文件结构
当用户需要查询、读写文件信息时,文件系统必须涉及文件目录结构、文件磁盘 i节点、文件地址索引表这样一些数据结构。
当打开一个文件时,系统进程将该文件在磁盘上面的有关目录信息、磁盘i节点及相应的文件地址索引表拷贝到内存中。
打开文件机构:文件系统中管理这一方面工作的机构称为打开文件管理机构。
当一个进程执行以下代码:
fd1=open(“/etc/passwd”,O_RDONLY);
fd2=open(“loca”,O_RDONLY);
fd3=open(“/etc/passwd”,O_WRONLY);
磁盘驱动器 →
访问权限
※每个进程有四个ID:
真实uid和真实gid表明我们真正是谁。有效uid和有效gid用来判定文件访问权限。一般情况下真实uid等于有效uid,真实gid等于有效gid
※每个文件有两个ID:属主ID和组ID,分别表示为st_uid和st_gid.一个进程能否访问一个文件,就是判断进程的有效id是否等于文件的id
文件的访问权限除了日常提到的九位,其实还有三位,分别是suid、sgid和sticky位。
1)suid位:saved set-uid
如何设置文件的suid位:chmod u+s file 或 chmod 4*** file
2)sgid位:saved set-gid,通常只对目录设置sgid
设置方法:chmod g+s dir 或 chmod 2*** dir
3)sticky位:也叫粘滞位,通常只对目录设置sticky位
用户想删除或重命名一个被设置了sticky位的目录中的文件,该用户不仅要对该目录有写权限,而且必须是一下三者之一:拥有该文件、拥有该目录、超级管理员。
设置sticky位:chmod +t dir 或 chmod 1*** dir
相关文章推荐
- Linux期末复习知识点小结(六)——线程与进程通信之管道通信概念
- linux期末复习知识点小结(二)——Linux操作系统
- Linux期末复习知识点小结(四)——进程
- linux期末复习知识点小结(三)—— Shell
- linux期末复习知识点小结(一)——Introduction
- Linux系统下转换文件编码的方法小结
- Linux下加挂文件系统小结
- linux0.11文件系统学习小结
- Linux虚拟文件系统小结
- IBM主机系统与和操作系统导论期末复习知识点总结
- Linux文件系统上的特殊权限(SUID、SGID、Sticky)的知识点
- Linux 文件系统权限小结-基本权限-粘滞位-ACL
- Linux下加挂文件系统的小结
- 获取linux的文件系统相关信息的知识点
- Linux复习笔记(二) -- Linux文件系统基本结构和操作
- Linux--文件系统复习
- Linux文件系统上的特殊权限(SUID、SGID、Sticky)的知识点
- linux 文件系统小结
- Linux下加挂文件系统的小结
- 为什么Linux不需要磁盘碎片整理?——借以复习文件系统方面的知识