CN1266590C - 面向构件基于系统内核的进程池/线程池管理方法 - Google Patents

面向构件基于系统内核的进程池/线程池管理方法 Download PDF

Info

Publication number
CN1266590C
CN1266590C CN02160136.4A CN02160136A CN1266590C CN 1266590 C CN1266590 C CN 1266590C CN 02160136 A CN02160136 A CN 02160136A CN 1266590 C CN1266590 C CN 1266590C
Authority
CN
China
Prior art keywords
thread
pool
management unit
pond
thread pool
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN02160136.4A
Other languages
English (en)
Other versions
CN1514354A (zh
Inventor
陈榕
林清洪
吕龙川
陈志成
连珠林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ketai Century Science and Technology Co., Ltd., Shanghai
Original Assignee
KETAI CENTURY SCIENCE AND TECHNOLOGY Co Ltd SHANGHAI
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by KETAI CENTURY SCIENCE AND TECHNOLOGY Co Ltd SHANGHAI filed Critical KETAI CENTURY SCIENCE AND TECHNOLOGY Co Ltd SHANGHAI
Priority to CN02160136.4A priority Critical patent/CN1266590C/zh
Priority to US10/747,315 priority patent/US20040154020A1/en
Publication of CN1514354A publication Critical patent/CN1514354A/zh
Application granted granted Critical
Publication of CN1266590C publication Critical patent/CN1266590C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种面向构件基于系统内核的进程池/线程池管理方法,在计算机操作系统内核设置进程池/线程池管理组件,用于管理系统线程池中存放的构件化进程对象/线程对象,管理包括对进程/线程需要运行的环境进行配置;每个线程对象中都包含一个工作例程对象,系统在创建线程对象的同时,也创建了一个与之环境相适应的一个工作例程对象。将其应用于“面向构件”的编程环境中,能够在快速、安全地创建/退出进程/线程时有效的发挥作用,减少占用的系统时间,提高网络数据的安全性。

Description

面向构件基于系统内核的进程池/线程池管理方法
技术领域
本发明涉及一种在计算机操作系统中实现进程池与线程池管理功能的方法,尤其是一种在操作系统内核中实现的、面向对象快速地、安全地创建、运行、退出进程或线程的进程池或线程池管理方法。属于计算机技术领域。
背景技术
进程与线程的概念是在任何计算机操作系统中都存在而且很重要的,对进程与线程的管理是操作系统功能中不可或缺的一个重要组成部分,其管理机制的优劣直接关系到整个系统的运行效率与所能实现的服务功能。在公知的操作系统(MSDos/Unix/Linux/Windows,下同)中,进程通常是指在系统中的应用程序或可执行程序模块及其运行环境。为了执行程序,通常需要创建地址空间,分配内存堆与共享代码模块,无论进程本身所需要执行的程序代码量的大或小,这些工作都需要在真正的程序入口点被执行之前由系统来一步步完成,这就需要占用一部分系统资源,如内存、CPU时间。等到进程结束时,又需要按着相反的顺序逐项释放,这也需要占用CPU时间。
在公知的操作系统中,线程通常是指在一个特定的进程环境之下,执行一个代码段并为其提供执行环境。为了执行代码,通常需要创建一个栈和一个含上下文的控制块,这也需要占用一部分系统资源,如内存,CPU时间,此外,还需要占用一部分其隶属进程的地址空间与代码模块,无论线程的执行期长或短,这些工作都需要在真正的代码入口点被执行之前由进程或系统来一步步完成。等到线程结束时,亦需要按其相反的顺序来逐项释放,这同样需要占用CPU时间。
在按组件方式运行的操作系统里,经常涉及到动态地创建进程与/或线程,待程序执行完成之后,又需要卸载进程程序或清理线程执行环境。在面向组件的编程模型中,由于每个服务组件的服务接口函数、事件启动引起的回调函数,通常都以线程的形式来被调用,因此线程的启动与退出相对较为频繁,如果在这阶段对线程的管理效率过低,则会大大影响整个操作系统的性能,甚至成为影响系统效率的瓶颈问题。
由于以上介绍的原因,在微软最近推出的Visual Studio.Net(以下简称.Net)中使用了线程池(ThreadPool)的概念,并实现了线程池的类对象(ThreadPool Class)管理,用以解决因频繁创建/退出线程而导致系统效率降低的问题,但是微软对线程池的实现没有用C++语言,也没有在操作系统的内核中以构件方式来实现其对线程池的管理。尽管在一些专用的系统软件中有进程池与线程池的概念,比如一些邮件收发服务器,采用了池来进行管理,但其实现不是在系统内核中,也不是在面向构件的编程环境中。除此之外,在现有公知的计算机操作系统中,还没有见到有关在系统内核中以构件方式实现进程池与线程池的管理功能方面的报道。
至此为止,上述的进程池与线程池的管理主要针对本地的计算机系统而言。而另一个较为重要的问题是:随着操作系统逐渐从桌面应用向网络应用的转移与发展,在下一代因特网操作系统中,对在网络环境中进行远程地动态地创建/运行/退出进程/线程的需求日益突出,而且这涉及到网络计算机的安全问题。目前有关这方面的工作进展主要集中在“网络管理软件”这一层面上,其本质是操作系统之上的一些应用程序,而没有在操作系统这一“系统管理软件”层面上来实现并支持对远程计算机创建/运行/退出进程/线程的请求的安全验证并提供相关服务,这就使得一些不法分子可以利用并不很专业的手段来盗取网络数据,从而进行犯罪活动,这使得网络安全这一问题难以从根本上得到解决。
发明内容
本发明的目的在于提供一种面向构件基于系统内核的进程/线程池管理及应用程序对象获得与执行的方法,能够实现进行快速地、安全地创建/运行/退出进程/线程,提高系统时间的利用率和网络服务的安全性。
本发明的另一目的在于提供一种面向构件基于系统内核的进程/线程池管理及应用程序对象获得与执行的方法,大大缩减创建/退出进程/线程的时间,减少占用的系统时间,提高运行效率。
本发明的目的还在于提供一种面向构件基于系统内核的进程/线程池管理及应用程序对象获得与执行的方法,它针对“进程对象/线程对象”的运行管理,严格区别于原有操作系统“进程/线程”的概念,前者是静态组件的概念,后者是运行程序的概念;利用池的缓存特点,在进程/线程虽已停止运行,但还没有释放其对象之前,可以访问进程对象/线程对象的属性。
本发明通过如下技术方案实现上述目的:一种面向构件基于系统内核的进程池/线程池管理方法,包括:
在计算机操作系统内核设置线程池管理组件,用于管理系统线程池中存放的构件化线程对象,管理包括对线程对象需要运行的环境进行配置;每个线程在面向构件的环境中运行的是一个工作例程对象;
在计算机操作系统内核中还有进程池管理组件,用于管理系统进程池中存放的进程对象,对进程对象需要运行的环境进行配置;
进程池管理组件管理进程需要的全部资源,创建进程,并记录各个进程的属性;在进程退出时,进行所用资源的回收,对于每一个进程对象,线程池管理组件负责创建线程对象,管理隶属于该进程的各个线程的资源利用情况,并记录各个线程对象的属性,在线程执行完成时,线程池管理组件负责资源的清理工作;
进程池或线程池管理组件至少包括分配、释放两个成员方法,系统通过相应的操作实现创建/退出进程/线程。
本发明还提供了一种基于构件进程/线程池模式管理应用程序对象获得与执行的方法,其特征在于:它包括应用程序的主进程或主线程创建新进程或线程的请求,调用系统的API或接口函数,获取当前系统对象的接口智能指针,通过该接口智能指针,调用相应接口方法,得到一实例化的对象,并返回其接口智能指针,进行参数设置,调用新创建对象的启动方法运行程序,调用其结束方法停止运行,但保留其对象,调用其释放资源方法则真正释放其对象,结束此子进程或子线程,主进程或主线程继续运行。
综上所述,本发明提供了一种在操作系统内核中实现进程池与线程池管理功能的计算机技术,能够实现快速地、安全地创建/运行/退出进程/线程,提高系统时间的利用率。
本发明提出的进程池与线程池管理技术,均在面向构件的编程环境中进行了实现。系统自动实现了对标准接口类的封装,屏蔽了调用COM构件对象过程的繁琐细节,简化了进行本地/远程创建/访问/退出进程/线程的用户编程,具有构件升级的独立性、本地/远程透明性、编程语言无关性。
附图说明
图1为本发明中的进程池管理组件与线程池管理组件在本发明的用途与位置示意图;
图2为本发明中的进程池与线程池管理组件结构组成图;
图3为在现有公知操作系统中与在利用进程池管理组件的本发明创建/退出进程的工作步骤比较图,其中图3a为现有公知操作系统中创建进程步骤,图3b为本发明创建/退出进程的工作步骤,图3c为现有公知操作系统中退出进程步骤;
图4为在现有公知操作系统中与在利用线程池管理组件的本发明创建/结束线程的工作步骤比较图,其中图4a为现有公知操作系统中创建线程步骤,图4b为本发明创建/退出线程的工作步骤,图4c为现有公知操作系统中退出线程步骤;
图5为本发明创建/执行/退出进程的程序流程与进程管理组件的关系图;
图6为本发明创建/执行/退出线程的程序流程与线程管理组件的关系图。
具体实施方式
下面结合附图和具体实施例对本发明的技术方案与有益效果做进一步地说明。
本发明利用进程池与线程池的概念,改变用户程序原有的主导地位。由系统提供进程池这样的一个管理组件,用它来管理进程需要的全部资源,并记录各个进程的属性,在进程退出时,进行所用资源的回收。对于每一个进程对象,系统提供一个线程池管理组件,由它来管理隶属于该进程的各个线程的资源利用情况,并记录各个线程对象的属性,在线程执行完成时,线程池负责资源的清理工作。系统的进程池与线程池的管理功能的程序代码都在操作系统的内核中实现,这就大大增加了不法分子破解系统程序和密钥以便盗取网络数据的难度。在本地/远程进行线程的创建/访问/退出时,把提出的“工作例程”概念应用在面向构件的编程环境中进行实现,从而提高网络计算机的安全性,完善其计算模型。进程池管理组件/线程池管理组件自身是构件化的系统组件。
具体地,进程池管理组件和线程池管理组件是整个操作系统的基础性管理组件,与一般的系统组件和应用程序相比,具有一定的管理功能。进程池管理组件在操作系统内核初始化阶段被构造,在整个操作系统启动之后,系统已经拥有一个进程池管理组件实例。在这个进程池管理组件实例中,已经预先创建了一定个数的进程对象,并且对这些它们需要运行的环境进行了缺省方式的配置,主要包括申请一段地址空间,创建内存堆和开辟共享代码模块,同时对池中进程对象的基本属性进行了缺省的设置,如进程的调度优先级。这里的“个数”可以通过更改头文件或配置文件来静态设置,或调用系统函数来进行动态设置,在程序设计中称之为“进程池的容量”。进程池管理组件至少有分配与释放两个成员方法,以及池的容量与实际使用个数两个成员变量,在下面的叙述中将阐述。
进程池管理组件对池中对象的管理通过维护一个队列来实现,进程对象是队列的组成成员。当用户需要创建一个进程时,在本发明中提供了两种方式,一种是调用系统API函数(ZeeCreateProcess()),另一种则是通过当前系统对象的接口方法(ISystem∷CreateProcess())来创建。当用户程序执行到创建进程的函数/方法时,系统并不是直接去创建一个进程对象,而是通过进程池管理组件的分配方法来动态分配出一个可用的进程对象实例。这里的分配方法的实现方式是:首先检查进程池这个池中是否存在已经初始化但还没有真正使用的进程对象,如果有(当前池中已经分配的进程对象实例个数<池中的最大进程实例个数,即实际使用个数<池的容量),则不需要耗费时间去创建与初始化一个全新的进程对象实例,而是直接把进程池的一个进程对象分配給用户进程,并设置该进程对象的“是否来源于进程池的进程”(IsProcessPoolProcess)属性为TRUE,同时对实际使用个数变量执行加1操作,返回其接口智能指针。如果池中已经分配完毕预先创建好的进程对象,则此时分配方法转而去创建一个全新的进程对象实例,并把此进程对象的“是否来源于进程池的进程”(IsProcessPoolProcess)属性设置为FALSE,而实际使用个数与池的容量值均不变,且二者相等。在本发明中默认的容量值为15,在本说明书以下的叙述及其附图中,如无特别声明,创建的进程默认为均来自于进程池。当然,用户程序也可以先取得实际使用个数与池的容量值,根据需要可以重新设置池的容量值,以便决定创建的新的进程对象是否来源于进程池中。
利用上面的方法,在创建一个新的进程之后,用户程序可以得到一个指向某个进程对象实例的接口智能指针,此时已经有了一个干净的可运行进程的环境,然而此时的进程并没有真正开始运行,要真正运行进程,则需要利用这个接口智能指针来调用进程对象的启动方法,在具体实施例中将有阐述。
基于上述的思想与技术实现,解决了在目前公知的计算机操作系统中创建进程需要花费较长时间的问题,为什么呢?因为系统一开始就在进程池中创建了一定数量的进程对象实例,并初始化了相关环境,因此在用户程序调用创建进程(ISystem∷CreateProcess())的方法时就直接可以拿来用,而这里“拿来”的实质仅仅是一个指针的赋值与传出。在用户调用启动方法时,程序才开始真正运行,系统可以充分利用创建进程与运行进程这段间隔时间来处理别的任务,用户也可以在真正运行程序之前利用所得到的接口智能指针,根据需要进行运行环境的自定义,包括命令行参数、环境变量、私有密钥的设置。从而提高了系统的运行效率,同时满足用户对系统与进程运行的安全管理。
当用户需要停止进程运行时,则需要调用其接口智能指针的停止运行函数方法,此时系统仅仅停止了进程的运行,并没有立即释放进程对象的资源,用户仍可以访问其属性;要真正退出进程并交出所占资源,则调用结束对象函数方法,此时,系统将调用进程管理组件的释放方法来清理这个进程环境,释放相应的资源。释放方法首先判断当前池中拥有的进程对象的个数,如果实际使用个数=0,则需要释放整个进程对象所占用的系统资源,否则,不必花时间去释放整个进程对象,而是按默认方式清理一些环境参数,然后放入进程池中,并执行实际使用个数减1操作,以便以后再次使用这个相同的进程对象的环境来执行别的应用程序,这就节省了因反复创建/退出进程所占用的系统时间。
线程池管理组件的设计与实现思想与进程池是一致的。其关键不同之处在于:进程池是隶属于系统的,整个系统可以就是一个进程池管理组件,而线程池是隶属于进程的,对于每个具体的进程对象,均有一个且只有一个线程池管理组件。线程池管理组件在创建某个进程对象时被同时创建,它拥有池缓存的特点,管理着一个的线程对象缓存队列,负责对该进程对象之内的各个线程对象的资源与运行状态的管理。在这个线程池管理组件中,已经预先创建了一定个数的线程对象,并且对这些它们需要运行的环境进行了缺省方式的配置,主要包括创建一个栈、一个含上下文的控制块、分配其在进程中的地址空间与代码模块,同时对池中线程对象的基本属性进行了缺省的设置,如线程的调度优先级。这里的“个数”可以通过更改头文件或配置文件来静态设置,或调用系统函数来进行动态设置,在程序设计中称之为“线程池的容量”。与进程池管理组件类似,线程池管理组件至少也有分配与释放两个成员方法,以及池的容量与实际使用个数两个成员变量,在下面的叙述中将阐述。
线程池管理组件对池中对象的管理通过维护一个队列来实现,线程对象是队列的组成成员。当用户需要创建一个线程时,在本发明中提供了两种方式,一种是调用系统API函数(ZeeCreateThread()),另一种则是通过当前进程对象的接口方法(IProcess->CreateThread())来创建。当用户程序执行到创建线程的函数/方法时,系统并不是直接去创建一个线程对象,而是通过线程池管理组件的分配方法来动态分配出一个可用的线程对象实例。这里的分配方法的实现方式是:首先检查线程池中是否存在已经初始化但还没有真正使用的线程对象实例,如果有(当前池中已经分配的线程对象实例个数<池中的最大线程实例个数,即实际使用个数<池的容量),则不需要耗费时间去创建与初始化一个全新的线程对象实例,而是直接把线程池的一个线程对象实例分配給用户线程,并设置该线程对象的“是否来源于线程池的线程”(IsThreadPoolThread)属性为TRUE,同时对实际使用个数变量执行加1操作,返回其接口智能指针。如果池中已经分配完毕预先创建好的线程对象实例,则此时分配方法转而去创建一个全新的线程对象实例,并把此线程对象的“是否来源于线程池的线程”(IsThreadPoolThread)属性设置为FALSE,而实际使用个数与池的容量的值均不变,且二者相等。例如,默认的容量值为15。创建的线程默认为均来自于线程池。当然,用户程序也可以先取得实际使用个数与池的容量值,根据需要可以重新设置池的容量值,以便决定创建的新的线程是否来源于线程池中。
利用上面的方法,在创建一个新的线程之后,用户程序可以得到一个指向某个线程对象实例的接口智能指针,此时已经有了一个干净的可运行线程的环境,然而此时的线程并没有真正开始运行,要真正运行线程,则需要利用这个接口智能指针来调用线程对象的启动方法,在具体实施例中将有阐述。
基于上述的思想与技术实现,解决了在目前公知的计算机操作系统中创建线程需要花费较长时间的问题,为什么呢?因为在创建一个进程时就创建了一个与之对应的线程池管理组件,并在线程池中创建了一定数量的线程对象实例,并初始化了相关环境,因此在用户程序调用创建线程(IProcess∷CreateThread())的方法时就可以直接拿来用,而这里“拿来”的实质仅仅是一个指针的赋值与传出。在用户调用启动方法时,代码才开始真正执行,系统可以充分利用创建线程与执行代码这段间隔时间来处理别的任务,用户也可以在真正执行代码之前利用所得到的接口智能指针,根据需要进行执行环境的自定义,包括命令行参数、环境变量、私有密钥的设置。从而提高了系统的运行效率,同时满足用户对进程与线程运行的安全管理。
当用户需要停止线程执行时,则需要调用其接口智能指针的停止方法,此时系统仅仅停止了线程的执行,并没有立即释放线程对象的资源,用户仍可以访问其属性;要真正结束线程并交出所占资源,则调用结束线程对象的方法,此时,系统将调用线程管理组件的释放方法来清理这个线程环境,释放相应的资源。释放方法首先判断当前池中拥有的线程对象的个数,如果实际使用个数=0,则需要释放整个线程对象所占用的系统资源,否则,不必花时间去释放整个线程对象,而是按默认方式清理一些环境参数,然后放入线程池中,并执行实际使用个数减1操作,以便以后再次使用这个相同的线程对象的环境来执行别的应用程序,这就节省了因反复创建/退出线程所占用的系统时间。
参见图1,在任何操作系统中,进程与线程都在其中扮演着重要的角色,而对进程与线程的管理方式直接影响着系统的运行效率和能提供的系统功能。在本发明中,进程池管理组件/线程池管理组件就是为了提高系统时间的使用效率而提出的一种系统管理组件,它主要负责系统中进程对象/线程对象的创建与释放,在建立一个进程池/线程池的基础上,一方面可以在需要时直接从池中取出一个对象,从而提高效率;另一方面利用其缓存的特点,可以对已经停止运行,但还未释放其资源的进程对象/线程对象进行访问,以提供給用户需要的系统信息。
参见图2,进程池管理组件与线程池管理组件结构组类似,二者都至少具有分配与释放两个成员方法;实际使用个数与池的容量两个成员变量变量;以及一个进程池/线程池,池中拥有一定数量的进程对象实例/线程对象实例。
参见图3、图4,通过对在现有公知操作系统中与在利用了进程池管理组件的本发明创建/退出进程的工作步骤的比较,可以看出:创建进程时,如实际使用个数<池的容量时,无需花费时间去创建新的进程对象实例,而是直接从池中取出一个进程对象,返回其接口智能指;退出进程时,如实际使用个数>0时,也无需花时间去释放其对象,而是直接放回池中,以备复用。图4中创建/退出线程的原理与图3相同。
参见图5,本发明中的具体实施例:在本发明中创建/执行/退出进程。图5(a)为应用程序流程图部分,图5(b)表示了进程池管理组件在此过程中的作用。本实施例的主要程序如下:
从应用程序的角度来分析此过程为:
步骤1:用系统API函数获取当前系统的接口智能指针;
步骤2:调用系统接口的方法得到一个新进程对象,返回指向新创建进程对象的接口智能指针;
步骤3:对步骤2是否成功创建新进程对象进行判断,即hr值是否成功,除了系统异常之外,一般都会成功创建,这一步通常不影响程序的继续执行,但如是系统程序,为避免异常,还是有必要检查;
步骤4:设置密钥和/或参数,调用新创建进程对象的启动方法来真正运行程序,这里的启动包括新的进程需要加载运行的应用程序名称、执行程序的参数、启动进程的标志、指向一个构件对象的接口智能指针、程序工作目录,在这些参数的设计中,包含创建进程的一些标志,则是用于传入特定的私有密钥、命令参数、和/和环境变量。
步骤5:可以调用进程对象,确认其是否是来自进程池的进程对象;但是无论是否来自于池对象,在这里用户都可以根据需要调用进程对象所提供的任何方法来设置/获取相关数据;
步骤6:调用新创建进程对象的停止运行函数来停止该进程的运行,但并没有立即释放进程对象,仍可以访问其属性,如本实施例中在此时调用获取进程号方法,仍可获得其进程号;
步骤7:调用新创建进程对象的结束对象函数来退出该进程的运行,交出进程对象,此后不能再访问其属性。
从系统的角度来分析此过程,本发明的特征在于:在步骤2中不是直接创建一个新的进程对象,而是调用进程池管理组件的分配方法从进程池中直接取出一个可用的进程对象(当实际使用个数<池的容量时),这就节省了占用系统的时间。在步骤7中,结束对象函数也把控制权交给了进程池管理组件,不是直接释放其占用的系统资源,而是调用进程池管理组件的释放方法来处理,如果当前池中实际使用个数>0,则无需释放其所有资源,只需进行部分环境参数的清理,并放入池中以备以后使用,这也减少了其占用系统的时间。
参见图6,本发明线程创建/退出的具体实施例。图6(a)为应用程序流程图部分,图6(b)表示了线程池管理组件在此过程中的作用。本实施例的主要程序如下:
从用户的角度来分析此过程为:
步骤1:定义一个工作历程对象,它需要事先定义功能与结束两个函数,分别作为对象的两个成员方法,调用回调函数来初始化。一旦线程开始执行,也就是执行功能函数中的代码,在执行结束时则要执行结束函数中的代码。
步骤2:调用系统API函数获取当前进程对象的接口智能指针;
步骤3:调用进程接口的创建线程的方法,得到一个新的线程对象,返回指向新创建线程对象的接口智能指针;
步骤4:对步骤3是否成功创建新线程对象进行判断,即hr值是否成功,除了系统异常之外,一般都会成功创建,这一步通常不影响程序的继续执行;
步骤5:调用新创建线程对象的启动函数来真正执行代码,启动时开始运行相应的工作例程,并根据传入的密钥和/或参数进行系统验证,决定是否提供服务;
步骤6:可以调用新创建线程对象,确认其是否是来自线程池的线程对象,在这里用户可以根据需要调用线程对象所提供的任何方法来设置/获取相关数据;
步骤7:调用新线程对象的终止执行功能函数来终止线程的执行,此时系统保留了线程对象的一次引用,并没有立即释放线程对象,仍然可以访问其属性,如调用其获取线程号的方法仍然可以获得其线程号;
步骤8:调用新线程对象的结束函数,此时系统将真正结束线程的执行,并把线程对象交给线程池管理组件来处理,之后不能再访问其属性。
从系统的角度来分析此过程,本发明的特征在于:利用了这个对象,这个对象在步骤1中定义时就进行创建,在步骤3创建线程时,也不是直接创建一个新的线程对象,而是调用线程池管理组件的分配方法从线程池中直接取出一个可用的线程对象(当实际使用个数<池的容量时),这就节省了占用系统的时间。在步骤8中,结束函数也把控制权交给了线程池管理组件,不是直接释放其占用的系统资源,而是调用线程池管理组件的释放方法来处理,如果当前池中实际使用个数>0,则无需释放其所有资源,只需进行部分环境参数的清理,并放入池中以备以后使用,这也减少了其占用系统的时间。

Claims (23)

1.一种面向构件基于系统内核的进程池/线程池管理方法,其特征在于:在计算机操作系统内核设置线程池管理组件,用于管理系统线程池中存放的构件化线程对象,管理包括对线程对象需要运行的环境进行配置;每个线程在面向构件的环境中运行的是一个工作例程对象;在计算机操作系统内核中设置进程池管理组件,管理系统进程池中存放的进程对象,对进程对象需要运行的环境进行配置;
进程池管理组件管理进程需要的全部资源,创建进程,并记录各个进程的属性;在进程退出时,进行所用资源的回收;
对于每一个进程对象,线程池管理组件负责创建线程对象,管理隶属于该进程的各个线程的资源利用情况,并记录各个线程对象的属性,在线程执行完成时,线程池管理组件负责资源的清理工作;
进程池或线程池管理组件至少包括分配、释放两个成员的操作,通过相应的操作创建/退出进程/线程。
2.根据权利要求1所述的面向构件基于系统内核的进程池/线程池管理方法,其特征在于:在操作系统底层,设置进程池管理组件/线程池管理组件,根据内存管理机制,开辟进程池/线程池容量,提供进程池/线程池空间,创建一定个数的进程对象/线程对象,优化系统整体性能。
3.根据权利要求2所述的面向构件基于系统内核的进程池/线程池管理方法,其特征在于:进程池管理组件/线程池管理组件面向所有系统程序和应用程序,为其提供直接从操作系统内核获得进程对象/线程线程的管理,用于提高系统效率。
4.根据权利要求1-3所述的面向构件基于系统内核的进程池/线程池管理方法,其特征在于:配置主要包括为对象申请一段地址空间,创建内存堆栈和开辟共享代码模块,并对对象的基本属性进行缺省的设置。
5.根据权利要求4所述的面向构件基于系统内核的进程池/线程池管理方法,其特征在于:缺省的设置包括进程/线程的调度优先级,进程对象/线程对象是否来自于进程池/线程池,根据当前环境产生的系统密钥。
6.根据权利要求1-3所述的面向构件基于系统内核的进程池/线程池管理方法,其特征在于:进程池管理组件在操作系统内核初始化阶段被构造,预先创建一定个数的进程对象,在创建某个进程对象的同时创建线程池管理组件。
7.根据权利要求6所述的面向构件基于系统内核的进程池/线程池管理方法,其特征在于:整个系统设有一个或一个以上进程池管理组件,每个进程对象对应设有一个或一个以上线程池管理组件。
8.根据权利要求1所述的面向构件基于系统内核的进程池/线程池管理方法,其特征在于:回收对象时,包括清理其中的部分环境参数,放入池中。
9.根据权利要求8所述的面向构件基于系统内核的进程池/线程池管理方法,其特征在于:部分环境参数包括系统默认设置、系统当前用户及其密钥、当前工作路径、命令行运行参数。
10.根据权利要求1所述的面向构件基于系统内核的进程池/线程池管理方法,其特征在于:应用程序请求创建对象时,直接从池中直接分配一对象,或全新创建对象。
11.根据权利要求1所述的面向构件基于系统内核的进程池/线程池管理方法,其特征在于:应用程序结束进程/线程的执行时,池管理组件或保留该对象的一次引用及其资源,或清理其运行环境,或释放对象。
12.根据权利要求11所述的面向构件基于系统内核的进程池/线程池管理方法,其特征在于:池管理组件保留的对象及其资源,用户可以调用其接口方法来访问其属性。
13.根据权利要求11所述的面向构件基于系统内核的进程池/线程池管理方法,其特征在于:池管理组件没有保留的对象及其资源,或释放或清理其运行环境后放入进程池/线程池中,用户不能再访问其属性。
14.根据权利要求1-3所述的面向构件基于系统内核的进程池/线程池管理方法,其特征在于:进程池管理组件/线程池管理组件至少都有及池的容量、实际使用个数两个成员变量,分别表示池能够容纳的最大进程对象/线程对象个数和当前已经被使用的进程对象/线程对象的个数。
15.根据权利要求14所述的面向构件基于系统内核的进程池/线程池管理方法,其特征在于:池中的对象通过队列方式进行管理与操作,实际使用个数随池中已被使用的对象数量变化,即实际使用个数增加,或实际使用个数减少。
16.根据权利要求14所述的面向构件基于系统内核的进程池/线程池管理方法,其特征在于:用户可以通过系统调用来获取/设置进程池/线程池的容量。
17.根据权利要求16所述的面向构件基于系统内核的进程池/线程池管理方法,其特征在于:池的容量可以通过更改头文件或配置文件静态设置或调用系统函数来进行动态设置。
18.根据权利要求1所述的面向构件基于系统内核的进程池/线程池管理方法,其特征在于:应用程序请求创建对象时,进程池/线程池管理组件判断进程池/线程池实际使用个数是否小于池的容量,是则直接从池中直接分配一对象;否则全新创建对象。
19.根据权利要求1所述的面向构件基于系统内核的进程池/线程池管理方法,其特征在于:应用程序结束进程/线程时,进程池/线程池管理组件判断实际使用个数是否大于0;如果实际使用个数大于0,池管理组件直接把该对象放入池中,以备复用;否则释放对象及其资源。
20.一种基于构件进程/线程池模式管理应用程序对象获得与执行的方法,其特征在于:它包括应用程序的主进程或主线程创建新进程或线程的请求,调用系统的API或接口函数,获取当前系统对象的接口智能指针,通过该接口智能指针,调用相应接口方法,得到一实例化的对象,并返回其接口智能指针,进行参数设置,调用新创建对象的启动方法运行程序,调用其结束方法停止运行,但保留其对象,调用其释放资源方法则真正释放其对象,结束此子进程或子线程,主进程或主线程继续运行。
21.根据权利要求20所述的基于构件进程/线程池模式管理应用程序对象获得与执行的方法,其特征在于:系统/进程的接口方法创建进程对象/线程对象,具体可为调用进程池管理组件/线程池管理组件的分配方法,如果实际使用个数小于池的容量,直接从进程池/线程池中取出一个进程对象/线程对象,并返回其接口智能指针;如果实际使用个数等于池的容量,则需创建一个全新的进程对象/线程对象。
22.根据权利要求20所述的基于构件进程/线程池模式管理应用程序对象获得与执行的方法,其特征在于:当退出进程/线程执行并回收对象时,具体可为调用进程池管理组件/线程池管理组件的释放方法,如果实际使用个数大于0,则只需按默认方式清理其运行环境,直接把它放回进程池/线程池中,以备下次复用;如果实际使用个数等于0,则释放此进程对象/线程对象及其所有占用的系统资源。
23.根据权利要求20所述的基于构件进程/线程池模式管理应用程序对象获得与执行的方法,其特征在于:终止进程/线程时,系统停止对象运行,池管理组件保留该对象的一次引用,暂存该对象及其资源,根据设定条件与系统内存管理机制,判断是否释放对象及其资源。
CN02160136.4A 2002-12-31 2002-12-31 面向构件基于系统内核的进程池/线程池管理方法 Expired - Fee Related CN1266590C (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN02160136.4A CN1266590C (zh) 2002-12-31 2002-12-31 面向构件基于系统内核的进程池/线程池管理方法
US10/747,315 US20040154020A1 (en) 2002-12-31 2003-12-30 Component oriented and system kernel based process pool/thread pool managing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN02160136.4A CN1266590C (zh) 2002-12-31 2002-12-31 面向构件基于系统内核的进程池/线程池管理方法

Publications (2)

Publication Number Publication Date
CN1514354A CN1514354A (zh) 2004-07-21
CN1266590C true CN1266590C (zh) 2006-07-26

Family

ID=32739372

Family Applications (1)

Application Number Title Priority Date Filing Date
CN02160136.4A Expired - Fee Related CN1266590C (zh) 2002-12-31 2002-12-31 面向构件基于系统内核的进程池/线程池管理方法

Country Status (2)

Country Link
US (1) US20040154020A1 (zh)
CN (1) CN1266590C (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107256180A (zh) * 2017-05-19 2017-10-17 腾讯科技(深圳)有限公司 数据处理方法、装置及终端

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7263554B2 (en) 2003-02-28 2007-08-28 Bea Systems, Inc. Method and system for performing resource pool maintenance by refreshing resources based on the pool resource test
US7080126B2 (en) * 2003-02-28 2006-07-18 Bea Systems, Inc. Computer program product for performing resource pool maintenance by maintaining resources in several deques
CN100336019C (zh) * 2004-10-26 2007-09-05 中国科学技术大学 基于服务体/执行流结构的操作系统
JP2006146678A (ja) * 2004-11-22 2006-06-08 Hitachi Ltd 情報処理装置におけるプログラム制御方法、情報処理装置、及びプログラム
CN100461875C (zh) * 2005-10-21 2009-02-11 华为技术有限公司 移动终端共享存储空间的方法及其系统
US7908874B2 (en) * 2006-05-02 2011-03-22 Raytheon Company Method and apparatus for cooling electronics with a coolant at a subambient pressure
US8332866B2 (en) * 2006-11-29 2012-12-11 Qualcomm Incorporated Methods, systems, and apparatus for object invocation across protection domain boundaries
US7958402B2 (en) * 2008-09-22 2011-06-07 International Business Machines Corporation Generate diagnostic data for overdue thread in a data processing system
CN101866298B (zh) * 2009-04-14 2013-08-07 上海科泰世纪科技有限公司 线程托管对象的方法
CN101866300B (zh) * 2009-04-14 2013-08-07 上海科泰世纪科技有限公司 线程托管函数的方法
CN102012836B (zh) * 2009-09-07 2012-07-04 中国移动通信集团公司 一种进程生存控制方法和设备
KR101012872B1 (ko) * 2009-09-16 2011-02-08 주식회사 팬택 플랫폼 보안 장치 및 방법
EP2553638B1 (en) * 2010-03-29 2018-07-18 Amazon Technologies, Inc. Managing committed request rates for shared resources
US8433954B2 (en) 2010-04-20 2013-04-30 Microsoft Corporation Testing components for thread safety
US10095562B2 (en) * 2013-02-28 2018-10-09 Oracle International Corporation System and method for transforming a queue from non-blocking to blocking
CN102609308A (zh) * 2011-12-22 2012-07-25 深圳市万兴软件有限公司 一种非主线程失效方法及装置
US9424089B2 (en) * 2012-01-24 2016-08-23 Samsung Electronics Co., Ltd. Hardware acceleration of web applications
US9092281B2 (en) 2012-10-02 2015-07-28 Qualcomm Incorporated Fast remote procedure call
CN104424032A (zh) * 2013-08-29 2015-03-18 华为技术有限公司 多线程处理器中分支预测资源的调度方法、设备和系统
US9304702B2 (en) 2014-05-29 2016-04-05 Netapp, Inc. System and method for parallelized performance data collection in a computing system
US9256477B2 (en) * 2014-05-29 2016-02-09 Netapp, Inc. Lockless waterfall thread communication
US9477521B2 (en) 2014-05-29 2016-10-25 Netapp, Inc. Method and system for scheduling repetitive tasks in O(1)
CN106155803B (zh) * 2015-04-07 2019-08-30 北大方正集团有限公司 一种基于信号量的线程池共享方法及系统
CN105373434B (zh) * 2015-12-16 2018-11-13 上海携程商务有限公司 资源管理系统及方法
CN108345452B (zh) * 2017-01-23 2021-07-23 斑马智行网络(香港)有限公司 一种线程管理方法及装置
KR101839392B1 (ko) * 2017-07-17 2018-03-16 주식회사 티맥스소프트 스레드 풀의 사이즈를 동적으로 관리하는 방법 및 컴퓨팅 장치
US10073686B1 (en) * 2017-08-10 2018-09-11 Sap Se Function serialization for inter-thread messaging
CN109660569B (zh) * 2017-10-10 2021-10-15 武汉斗鱼网络科技有限公司 一种多任务并发执行方法、存储介质、设备及系统
CN109766131B (zh) * 2017-11-06 2022-04-01 上海宝信软件股份有限公司 基于多线程技术实现软件智能化自动升级的系统及方法
CN109086194A (zh) * 2018-06-11 2018-12-25 山东中创软件商用中间件股份有限公司 一种线程池容量调整方法、装置、设备及可读存储介质
CN111124691B (zh) * 2020-01-02 2022-11-25 上海交通大学 多进程共享的gpu调度方法、系统及电子设备
CN113176896B (zh) * 2021-03-19 2022-12-13 中盈优创资讯科技有限公司 一种基于单进单出无锁队列的随机取出对象的方法
CN113296939A (zh) * 2021-03-26 2021-08-24 阿里巴巴新加坡控股有限公司 线程处理方法、任务处理方法、装置及设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6108715A (en) * 1994-12-13 2000-08-22 Microsoft Corporation Method and system for invoking remote procedure calls

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107256180A (zh) * 2017-05-19 2017-10-17 腾讯科技(深圳)有限公司 数据处理方法、装置及终端

Also Published As

Publication number Publication date
CN1514354A (zh) 2004-07-21
US20040154020A1 (en) 2004-08-05

Similar Documents

Publication Publication Date Title
CN1266590C (zh) 面向构件基于系统内核的进程池/线程池管理方法
CN101493787B (zh) 一种内存操作的管理方法及系统
US11003502B2 (en) Resource manager for managing the sharing of resources among multiple workloads in a distributed computing environment
Larson et al. Memory allocation for long-running server applications
CN101799773B (zh) 并行计算的内存访问方法
CN1096642C (zh) 高效利用空间的对象加锁的系统和方法
EP2485146A1 (en) System and method for providing hardware virtualization in a virtual machine environment
CN1108569C (zh) 具有无数据端点机的可伸缩和可扩充系统管理结构
US7165255B2 (en) Method and apparatus for managing surplus memory in multitasking system
CN108255582B (zh) java虚拟机垃圾回收的方法、系统、设备及存储介质
US7882505B2 (en) Method and apparatus for switching between per-thread and per-processor resource pools in multi-threaded programs
CN100342342C (zh) 支持多进程的Java虚拟机实现方法
CN1961292A (zh) 用于受管运行时环境的线程同步方法和装置
CN1716206A (zh) 根据客户软件的特许级支持向虚拟机监视器转移
WO1999032978A1 (en) Incremental garbage collection
KR20040086214A (ko) 인핸스드 런타임 호스팅
EP1311952B1 (en) A method for scalable memory efficient thread-local object allocation
CN102929597A (zh) 一种基于Java平台的Web业务支持方法和装置
CN104536773B (zh) 基于内存扫描的嵌入式软件动态内存回收方法
CN1510575A (zh) 一种数据库连接的高效管理方法
JP2021530756A (ja) ポーズレスなガベージ・コレクションのための活性化フレームを表す方法および装置
CN104731634A (zh) 一种实时在线的分布式计算框架的实现方法
US7840772B2 (en) Physical memory control using memory classes
CN116820748A (zh) 一种密码卡会话资源管理方法及系统
CN109460287A (zh) 资源混合调度的控制方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: SHANGHAI KETAI SHIJI TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: KETAI SHIJI SCIENCE AND TECHNOLOGY CO., LTD., BEIJING

Effective date: 20050610

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20050610

Address after: 201203 Shanghai city Pudong New Area Jing Road No. 498 building 17 layer 2

Applicant after: Ketai Century Science and Technology Co., Ltd., Shanghai

Address before: 100084, No. 6, No. 618, block B, innovation building, Tsinghua Science Park, Beijing, Haidian District

Applicant before: Ketai Shiji Science and Technology Co., Ltd., Beijing

C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20060726

Termination date: 20151231

EXPY Termination of patent right or utility model