软件资源的定义:
资源是一种实体,对于任何计算机系统(智能系统),使用的申请都受到一定的限制。如内存资源、IO资源及CPU资源等等。在我们熟知的系统中如Linux、window、mac&Android等系统内核都对这些资源做了各种管理机制。
这里我们讨论的资源主要是软件实体中内存、同步原语、文件句柄、网络连接、安全令牌、数据库会话和分布式服务等(参见E.Wolff:Server Component Patterns - Component Infrastructures Illustated with EJW)
资源到底是什么,其实没有明确的定义。例如在软件系统中,图像通常被视为资源,也有更精确的说法:它在被处理的时候(占用内存)才是资源。也就是说软件系统中的资源往往具有生命周期。
对资源的分类有很多种,最简洁的方式是将其分为可重用用的和不可重用的。通常从资源提供方那里获取的资源,使用完后还给提供方,这种资源被释放后可以被其他使用者再次使用。如内存,有操作系统分配,使用后立即被还给操作系统,再如文件句柄和线程。可重用的资源是资源的重要种类。不可重用的资源如计算机网格的时间被用掉了,就没有了(参加Grid Computing Info Centre,http://www.gridcomputing.com,2004)。还可以根据访问和使用方式对资源进行分类。资源获取后要么可以供多个用户同时使用,要么只能供一位用户使用,可以供多个用户同时使用的包括服务、队列和数据库。如果多个用户都有资源写权限,那么需要对资源进行同步。相反则不用同步。如J2EE EJB(SUN Microsystem,Java2 Enterprise Edition).应用程