微内核操作系统只需要内核有一个很小的函数集,通常包括几个同步原语,一个简单的调度系统和进程间通信机制,运行在微内核之上的几个系统进程实现从前操作系统级实现的功能,如内存分配程序,设备驱动程序,系统调用处理程序。
为了达到微内核理论上的很多优点而又不影响性能,Linux内核提供了模块。模块是一个目标文件,其代码可以在运行时链接到内核或从内核解除链接。这种目标代码通常由一组函数组成,用来实现文件系统,驱动系统或其他内核上层功能,与微内核操作系统的外层不同,模块不是作为一个特殊进程执行的。相反,与任何其他静态链接的内核函数一样,他代表当前进程在内核态下执行。
Unix的每个进程都有一个当前工作目录,它属于进程执行上下文,标识出进程所用的当前目录。
包含在目录中的文件名就是一个文件的硬链接,在同一目录或不同目录中,同一个文件可以由几个链接,因此对应几个文件名。
$ ln P1 P2(用来创立一个新链接,为由路径P1标识的文件创建一个路径名为P2的硬链接)
$ ln -s P1 P2(创建一个路径名为P2的新软连接,P2指向路径名P1。当这个命令执行时,文件系统抽出P2的目录幕府,并在那个目录下创建一个名为P2的符号链接类型的新项。这个新文件包含路径名P1,这样任何对P2的引用都可以被自动转换成指向P1的一个引用。)
Unix文件类型
普通文件 目录 符号链接 面向块的设备文件 面向字符的设备文件 管道和命名管道 套接字
前三种文件类型是所有Unix文件系统的基本类型。
设备文件和I/O设备以及集成到内核中的设备驱动程序相关。例如,当程序访问设备文件时,它直接访问与那个文件相关的I/O设备。
管道和套接字是用于进程间通信的特殊文件。
索引节点
文件系统处理文件需要的所有信息包含在一个名为索引节点的数据结构中,每个文件都有自己的索引节点,文件系统用索引节点来标识文件。这些信息包括:文件类型,与文件相关的硬链接个数,以字节为单位的文件长度,设备标识符(即包含文件的设备的标识符),在文件系统中标识文件的索引节点号,文件拥有者的UID,文件的用户组ID,几个时间戳,表示索引节点状态改变的时间,最后访问时间及最后修改的时间,访问权限和文件模式