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

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

Info

Publication number
CN1514354A
CN1514354A CNA021601364A CN02160136A CN1514354A CN 1514354 A CN1514354 A CN 1514354A CN A021601364 A CNA021601364 A CN A021601364A CN 02160136 A CN02160136 A CN 02160136A CN 1514354 A CN1514354 A CN 1514354A
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.)
Granted
Application number
CNA021601364A
Other languages
English (en)
Other versions
CN1266590C (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
����̩ƽ
北京科泰世纪科技有限公司
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 ����̩ƽ, 北京科泰世纪科技有限公司 filed Critical ����̩ƽ
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函数(在和欣中是: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操作,以便以后再次使用这个相同的线程对象的环境来执行别的应用程序,这就节省了因反复创建/退出线程所占用的***时间。
综上所述,本发明提供了一种在操作***内核中实现进程池与线程池管理功能的计算机技术,能够实现快速地、安全地创建/运行/退出进程/线程,提高***时间的利用率。
本发明提出的进程池与线程池管理技术,均在面向构件的编程环境中进行了实现。***自动实现了对标准接口类的封装,屏蔽了调用COM构件对象过程的繁琐细节,简化了进行本地/远程创建/访问/退出进程/线程的用户编程,具有构件升级的独立性、本地/远程透明性、编程语言无关性。
附图说明
图1为本发明中的进程池管理组件与线程池管理组件在本发明的用途与位置示意图;
图2为本发明中的进程池与线程池管理组件结构组成图;
图3为在现有公知操作***中与在利用进程池管理组件的本发明创建/退出进程的工作步骤比较图,其中图3a为现有公知操作***中创建进程步骤,图3b为本发明创建/退出进程的工作步骤,图3c为现有公知操作***中退出进程步骤;
图4为在现有公知操作***中与在利用线程池管理组件的本发明创建/结束线程的工作步骤比较图,其中图4a为现有公知操作***中创建线程步骤,图4b为本发明创建/退出线程的工作步骤,图4c为现有公知操作***中退出线程步骤;
图5为本发明创建/执行/退出进程的程序流程与进程管理组件的关系图;
图6为本发明创建/执行/退出线程的程序流程与线程管理组件的关系图。
具体实施方式
下面结合附图和具体实施例对本发明的技术方案与有益效果做进一步地说明。
参见图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 (26)

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

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100336019C (zh) * 2004-10-26 2007-09-05 中国科学技术大学 基于服务体/执行流结构的操作***
CN101866300A (zh) * 2009-04-14 2010-10-20 上海科泰世纪科技有限公司 线程托管函数的方法
CN102024121A (zh) * 2009-09-16 2011-04-20 株式会社泛泰 平台安全设备及其方法
CN102012836B (zh) * 2009-09-07 2012-07-04 ***通信集团公司 一种进程生存控制方法和设备
CN102609308A (zh) * 2011-12-22 2012-07-25 深圳市万兴软件有限公司 一种非主线程失效方法及装置
CN102844772A (zh) * 2010-03-29 2012-12-26 亚马逊技术股份有限公司 管理用于共享资源的承诺的请求速率
CN101866298B (zh) * 2009-04-14 2013-08-07 上海科泰世纪科技有限公司 线程托管对象的方法
CN104424032A (zh) * 2013-08-29 2015-03-18 华为技术有限公司 多线程处理器中分支预测资源的调度方法、设备和***
CN105373434A (zh) * 2015-12-16 2016-03-02 上海携程商务有限公司 资源管理***及方法
CN106155803A (zh) * 2015-04-07 2016-11-23 北大方正集团有限公司 一种基于信号量的线程池共享方法及***
CN108345452A (zh) * 2017-01-23 2018-07-31 阿里巴巴集团控股有限公司 一种线程管理方法及装置
CN109086194A (zh) * 2018-06-11 2018-12-25 山东中创软件商用中间件股份有限公司 一种线程池容量调整方法、装置、设备及可读存储介质
CN109660569A (zh) * 2017-10-10 2019-04-19 武汉斗鱼网络科技有限公司 一种多任务并发执行方法、存储介质、设备及***
CN109766131A (zh) * 2017-11-06 2019-05-17 上海宝信软件股份有限公司 基于多线程技术实现软件智能化自动升级的***及方法
CN111124691A (zh) * 2020-01-02 2020-05-08 上海交通大学 多进程共享的gpu调度方法、***及电子设备
CN113176896A (zh) * 2021-03-19 2021-07-27 中盈优创资讯科技有限公司 一种基于单进单出无锁队列的随机取出对象的方法

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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
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
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
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
US9477521B2 (en) 2014-05-29 2016-10-25 Netapp, Inc. Method and system for scheduling repetitive tasks in O(1)
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
CN107256180B (zh) * 2017-05-19 2019-04-26 腾讯科技(深圳)有限公司 数据处理方法、装置及终端
KR101839392B1 (ko) * 2017-07-17 2018-03-16 주식회사 티맥스소프트 스레드 풀의 사이즈를 동적으로 관리하는 방법 및 컴퓨팅 장치
US10073686B1 (en) * 2017-08-10 2018-09-11 Sap Se Function serialization for inter-thread messaging

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 (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100336019C (zh) * 2004-10-26 2007-09-05 中国科学技术大学 基于服务体/执行流结构的操作***
CN101866298B (zh) * 2009-04-14 2013-08-07 上海科泰世纪科技有限公司 线程托管对象的方法
CN101866300A (zh) * 2009-04-14 2010-10-20 上海科泰世纪科技有限公司 线程托管函数的方法
CN101866300B (zh) * 2009-04-14 2013-08-07 上海科泰世纪科技有限公司 线程托管函数的方法
CN102012836B (zh) * 2009-09-07 2012-07-04 ***通信集团公司 一种进程生存控制方法和设备
US8601599B2 (en) 2009-09-16 2013-12-03 Pantech Co., Ltd. Platform security apparatus and method thereof
CN102024121A (zh) * 2009-09-16 2011-04-20 株式会社泛泰 平台安全设备及其方法
CN102844772A (zh) * 2010-03-29 2012-12-26 亚马逊技术股份有限公司 管理用于共享资源的承诺的请求速率
CN102844772B (zh) * 2010-03-29 2018-12-04 亚马逊技术股份有限公司 管理用于共享资源的承诺的请求速率
CN102609308A (zh) * 2011-12-22 2012-07-25 深圳市万兴软件有限公司 一种非主线程失效方法及装置
CN104424032A (zh) * 2013-08-29 2015-03-18 华为技术有限公司 多线程处理器中分支预测资源的调度方法、设备和***
CN106155803A (zh) * 2015-04-07 2016-11-23 北大方正集团有限公司 一种基于信号量的线程池共享方法及***
CN106155803B (zh) * 2015-04-07 2019-08-30 北大方正集团有限公司 一种基于信号量的线程池共享方法及***
CN105373434A (zh) * 2015-12-16 2016-03-02 上海携程商务有限公司 资源管理***及方法
CN105373434B (zh) * 2015-12-16 2018-11-13 上海携程商务有限公司 资源管理***及方法
CN108345452A (zh) * 2017-01-23 2018-07-31 阿里巴巴集团控股有限公司 一种线程管理方法及装置
CN108345452B (zh) * 2017-01-23 2021-07-23 斑马智行网络(香港)有限公司 一种线程管理方法及装置
CN109660569A (zh) * 2017-10-10 2019-04-19 武汉斗鱼网络科技有限公司 一种多任务并发执行方法、存储介质、设备及***
CN109766131A (zh) * 2017-11-06 2019-05-17 上海宝信软件股份有限公司 基于多线程技术实现软件智能化自动升级的***及方法
CN109086194A (zh) * 2018-06-11 2018-12-25 山东中创软件商用中间件股份有限公司 一种线程池容量调整方法、装置、设备及可读存储介质
CN111124691A (zh) * 2020-01-02 2020-05-08 上海交通大学 多进程共享的gpu调度方法、***及电子设备
CN111124691B (zh) * 2020-01-02 2022-11-25 上海交通大学 多进程共享的gpu调度方法、***及电子设备
CN113176896A (zh) * 2021-03-19 2021-07-27 中盈优创资讯科技有限公司 一种基于单进单出无锁队列的随机取出对象的方法

Also Published As

Publication number Publication date
CN1266590C (zh) 2006-07-26
US20040154020A1 (en) 2004-08-05

Similar Documents

Publication Publication Date Title
CN1266590C (zh) 面向构件基于***内核的进程池/线程池管理方法
US6510504B2 (en) Methods and apparatus for memory allocation for object instances in an object-oriented software environment
US6546546B1 (en) Integrating operating systems and run-time systems
Larson et al. Memory allocation for long-running server applications
US7203941B2 (en) Associating a native resource with an application
CN101971146B (zh) 改进作为管理程序来宾而运行的虚拟机中内存使用情况的***和方法
CN101799773B (zh) 并行计算的内存访问方法
US7882505B2 (en) Method and apparatus for switching between per-thread and per-processor resource pools in multi-threaded programs
US8250572B2 (en) System and method for providing hardware virtualization in a virtual machine environment
Gidra et al. A study of the scalability of stop-the-world garbage collectors on multicores
US7263700B1 (en) Serially, reusable virtual machine
US20010037336A1 (en) Incremental garbage collection
CN1961292A (zh) 用于受管运行时环境的线程同步方法和装置
KR20040086214A (ko) 인핸스드 런타임 호스팅
CN1271524C (zh) 一种静态内存管理方法
US20100011357A1 (en) System and method for garbage collection in a virtual machine
EP1311952B1 (en) A method for scalable memory efficient thread-local object allocation
US6980997B1 (en) System and method providing inlined stub
CN104536773B (zh) 基于内存扫描的嵌入式软件动态内存回收方法
US20030196061A1 (en) System and method for secure execution of multiple applications using a single GC heap
US6532487B1 (en) Method and system for managing semaphores in an object-oriented multi-tasking computer system
US7840772B2 (en) Physical memory control using memory classes
CN116820748A (zh) 一种密码卡会话资源管理方法及***
US6457111B1 (en) Method and system for allocation of a persistence indicator for an object in an object-oriented environment
US20080034022A1 (en) System and method for updating references when incrementally compacting a heap

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