Linux 资源管理之句柄(linux句柄)
Linux作为一款多用户多任务的操作系统,最突出的特点就是其良好的资源管理机制,这里,我们想介绍一种有效的Linux资源管理机制——句柄(Handle)。
句柄是一个指针,它的用途是指向某种数据结构。它由内核在创建时候分配,只有当指针指向真正的数据结构时,才被认为是正确的句柄。
当程序在内核中操作文件、句柄等资源时,会在内核中建立一个文件句柄,作为引用这个文件的指针,同时这个句柄会有一定的属性,其中就有“只读”状态属性,表示这次引用该文件的操作是只读的,而当存在磁盘写操作时,就会将一个新的文件句柄作为引用,这个文件句柄的属性就是“读写”,指的就是既可以读也能够写。
每一个系统调用都是由系统调用去代表,而每一次调用都会创建对应的句柄,系统调用结束时,就会将句柄回收,例如对文件的操作,每次都在用户空间中要创建缓存,创建完缓存之后,就使用句柄来完成文件的读取操作,然后,句柄在处理完毕之后,就会将文件操作缓存所分配的内存空间销毁。
在Linux系统中,句柄用于实现文件资源跟进程的绑定,它提供单独本地化,对全局的本地化,并且可以实现对文件的多任务共享。整个系统的资源管理都有句柄完成,只要有句柄指向,就可以打开文件,操作数据,乃至关闭文件,也就是说句柄用于资源管理可以说是根本性的,是实现资源多任务解决方案的前提,是真正积极主动的提供管理的资源的中间桥梁。
下面来看一下Linux下的代码实现:
– 以文件方式打开句柄:
fd=open(file_name,fd,rs);
– 以管道方式打开句柄:
fd = pipe(fd,rs,MAX_SIZE);
– 获取句柄属性:
int fcntl(int fd,int cmd, struct fcntl_arg *arg);
正如上述所说,Linux下的句柄是资源管理的根本,它可以实现对文件资源的本地化,方便调用者来完成文件等资源请求,以及对文件资源跟进程的绑定,当资源完成了指定任务之后,还可以实现资源的释放。因此,句柄是Linux资源管理的一个效率优化的有效机制,是内核构建开发者实现资源管理的有力工具!