1.硬链接(hard link)和软链接(soft link)
硬链接:包含在目录中的文件名就是一个文件的硬链接,或者简称链接。硬链接有两方面的限制:不允许用户给目录创建硬链接,因为这样可能把目录变成一个环形树;只有在同一文件系统中的文件之间才能创建硬链接。
软链接:为了克服上面的这些限制,引入了软连接,也成为符号链接(symbol link)。符号链接文件可以指向位于任何一个文件系统上的任何一个文件或目录,甚至可以指向不存在的文件。
2.文件描述符、索引节点和打开文件对象
文件系统处理文件需要的信息包含在一个名为索引节点(inode)的数据结构中,每个文件都有自己的索引节点,文件系统用索引节点来标识文件。
文件描述符表示进程与打开文件之间的交互,而打开文件对象包含了于这种交互相关的数据。实际上,进程会为打开的每个文件都创建一个相应的打开文件对象,而文件描述符就是相应的打开文件对象的索引。几个进程可以打开同一个文件,文件系统会给每个进程分配一个单独的打开文件对象和文件描述符。
3.mmap()系统调用
该系统调用允许存放在块设备上的文件或者信息的一部分映射到进程的部分地址空间。内存映射为正常的读写传送数据方式提供了另一种选择。如果同一文件由几个进程共享,那么共享它的每个进程地址空间都包含它的内存映射。
4.同步和互斥
信号量(semaphore)在单处理器和多处理器上都有效。可以把每个信号量看成一个对象,其组成如下:
一个整数变量;
一个等待进程的链表
两个源自方法:down()和up()
Linux通过按规定的顺序请求信号量来避免死锁。
自旋锁(spin lock)在单处理器的环境下是无效的。
5.信号(Signal)
Unix信号提供了把系统事件报告给进程的一种机制,每种事件都有自己的信号编号,通常用一个符号常量来表示,例如SIGTERM。有两种系统事件:
异步通告:例如,当用户按下中断键(通常为Ctrl+C)时,即向前台进程发出中断信号SIGINT。
同步错误或者异常:例如,当进程访问内存非法地址时,内核向这个进程发送一个SIGSEGV信号。
一般来说,进程可以对接收到的信号做以下两种方式的处理:
忽略该信号;或者异步地执行一个指定的过程(信号处理程序)。如果进程不指定任何方式,那么内核就会根据信号的编号采取默认的处理操作。
阅读(1428) | 评论(0) | 转发(0) |