CN109445847A - 工业服务器微内核架构实现方法 - Google Patents

工业服务器微内核架构实现方法 Download PDF

Info

Publication number
CN109445847A
CN109445847A CN201811296334.2A CN201811296334A CN109445847A CN 109445847 A CN109445847 A CN 109445847A CN 201811296334 A CN201811296334 A CN 201811296334A CN 109445847 A CN109445847 A CN 109445847A
Authority
CN
China
Prior art keywords
control program
kernel
physics
micro
control
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
CN201811296334.2A
Other languages
English (en)
Other versions
CN109445847B (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.)
Kyland Technology Co Ltd
Original Assignee
Kyland Technology Co Ltd
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 Kyland Technology Co Ltd filed Critical Kyland Technology Co Ltd
Priority to US16/243,414 priority Critical patent/US10866833B2/en
Priority to EP19151212.8A priority patent/EP3594812A1/en
Priority to JP2019003424A priority patent/JP6924786B2/ja
Publication of CN109445847A publication Critical patent/CN109445847A/zh
Application granted granted Critical
Publication of CN109445847B publication Critical patent/CN109445847B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/22Microcontrol or microprogram arrangements
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0421Multiprocessor system
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • 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
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • 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/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/10Plc systems
    • G05B2219/15Plc structure of the system
    • G05B2219/15053Microcontroller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5021Priority
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/506Constraint

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种工业服务器微内核架构实现方法,涉及工业服务器技术领域。针对现有工业现场单个物理内核固定运行单个微内核,或,单个微内核只能利用单个物理内核的计算资源,从而造成物理内核计算资源利用低效的问题,本方案根据用户自定义,在系统启动前即基于微内核任务类型、微内核任务优先级和/或运行时长的权重,计算控制程序的相关性,根据相关性确定每个物理内核上运行的控制程序数量以及每个控制程序运行在多个物理内核上,自定义方案不限于单个物理内核对多个微内核时间片进行控制,以及单个微内核占用计算资源跨物理内核调配,从而实现工业服务器微内核在工业现场层的实时控制和自由组合。

Description

工业服务器微内核架构实现方法
本专利申请要求于2018年07月09日提交的、申请号为201810745308.7、申请人为北京东土科技股份有限公司、发明名称为“工业服务器微内核架构实现方法、装置、服务器和介质”的中国专利申请的优先权,该申请的全文以引用的方式并入本文中。
技术领域
本发明实施例涉及工业服务器技术,尤其涉及一种工业服务器微内核架构实现方法。
背景技术
基于工业服务器硬件的虚拟操作系统,以i7为例,可以支持4个物理内核,每个内核上运行一个虚拟机,即微控制内核,微控制内核内包括PLC。
但是,一个内核上只能运行一个PLC,资源浪费,可以执行功能也很有限。另外,多核PLC的调度方式包括应用于实时性较高的业务场景的优先级调度算法和应用于对实时性要求不高的业务场景的时间表调度算法,任一种调度算法在业务需求较为复杂的场景下,很难满足用户的业务需求,造成CPU资源的利用率低的问题。
发明内容
本发明实施例提供一种工业服务器微内核架构实现方法,以实现工业服务器微内核在工业现场层的实时控制和自由组合。
本发明实施例提供了一种工业服务器微内核架构实现方法,所述方法应用于工业服务器,所述工业服务器中基于工业服务器硬件的操作系统内核支持多个物理内核,所述方法包括:
系统启动前,操作系统内核根据控制程序对应的微内核任务类型的权重以及微内核任务优先级和/或运行时长的权重生成调度配置信息,所述调度配置信息包括每个物理内核上运行的控制程序数量,每个物理内核上运行的控制程序的调度算法,以及每个控制程序运行在多个物理内核上;
所述操作系统内核根据所述调度配置信息对所述操作系统内核上运行的控制程序进行配置;
所述操作系统内核启动配置后的控制程序。
可选地,所述操作系统内核根据控制程序对应的微内核任务类型的权重以及微内核任务优先级和/或运行时长的权重生成调度配置信息,包括:
根据控制程序对应的微内核任务类型的权重以及微内核任务优先级和/或运行时长的权重计算控制程序的相关性;
根据所述相关性生成所述调度配置信息。
可选地,所述根据控制程序对应的微内核任务类型的权重以及微内核任务优先级和/或运行时长的权重计算控制程序的相关性,包括:
根据所述微内核任务类型、微内核任务优先级和运行时长的权重计算所述相关性;或,
根据所述微内核任务类型和微内核任务优先级的权重计算所述相关性;或,
根据所述微内核任务类型和运行时长的权重计算所述相关性。
可选地,所述操作系统内核根据所述调度配置信息对所述操作系统内核上运行的控制程序进行配置,包括:
通过虚拟机监控程序对硬件进行虚拟化处理,根据所述调度配置信息在一个物理内核上配置多个控制程序;和/或,
根据所述调度配置信息对每个物理内核上运行的控制程序的调度算法进行配置,所述调度算法包括基于时间表的调度算法或基于优先级的调度算法;和/或,
将多个物理内核进行虚拟化,根据所述调度配置信息将一个控制程序对应得到的多个控制程序分别配置到所述多个物理内核上。
可选地,所述操作系统内核根据控制程序对应的微内核任务类型的权重以及微内核任务优先级和/或运行时长的权重生成调度配置信息,包括:
采用粗粒度加锁调度方法,每个物理内核对应一个锁,基于时间表的调度算法或基于优先级的调度算法从单个物理内核上的多个控制程序中确定一个控制程序得到所述物理内核对应的锁,获取所述物理内核对应的锁的控制程序独占所述物理内核执行内核态操作,根据所述控制程序的微内核任务类型、优先级和/或运行时长生成所述调度配置信息;或者,
采用细粒度加锁调度方法,每个物理内核对应一个锁,按照控制程序所需计算资源将控制程序对应得到多个控制程序,根据所述多个控制程序之间的相关性将所述多个控制程序分配在不同的物理内核上,所述多个控制程序分别得到所属物理内核对应的锁,获取锁的所述多个控制程序通过多个物理内核同时执行内核态操作并发执行,根据所述控制程序的微内核任务类型、优先级和/或运行时长生成所述调度配置信息。
可选地,所述基于时间表的调度算法包括:
设定多个定时器,其中,第一定时器的时长为主帧时间,第二定时器按照所述主帧时间内的多个时间窗的前后顺序逐次启动,并且所述第二定时器的时长逐次与各时间窗的时长相同;
以所述主帧时间为周期,启动所述第一定时器和所述第二定时器的同时,根据时间表的设定调度控制程序,一旦所述第二定时器的定时到达,调度下一个控制程序,且一旦所述第一定时器的定时到达,启动下一个周期,所述时间表包括所述多个时间窗的起止时间和各时间窗对应的控制程序。
可选地,所述基于优先级的调度算法包括:
遍历优先级主索引号位图确定最高优先级对应的主索引号;
遍历所述主索引号对应的优先级次索引号位图确定最高优先级对应的次索引号;
根据所述主索引号和所述次索引号计算当前的最高优先级,并确定所述最高优先级对应的控制程序。
可选地,所述操作系统内核根据控制程序对应的微内核任务类型的权重以及微内核任务优先级和/或运行时长的权重生成调度配置信息,包括:
所述操作系统内核根据控制程序对应的微内核任务类型的权重以及微内核任务优先级和/或运行时长的权重,以及控制程序的业务需求,生成调度配置信息。
可选地,所述调度配置信息还包括:各控制程序之间的运行触发条件和/或业务参数。
可选地,所述调度配置信息还包括:每个控制程序包括的各子控制程序,每个控制程序的各子控制程序运行在一个或多个物理内核上,各子控制程序运行在的物理内核,以及各子控制程序之间的运行触发条件和/或业务参数。
可选地,所述操作系统内核根据控制程序对应的微内核任务类型的权重以及微内核任务优先级和/或运行时长的权重,以及控制程序的业务需求,生成调度配置信息,还包括:
所述操作系统内核根据控制程序的资源需求和微内核提供的计算资源,将每个控制程序划分成多个子控制程序;
所述操作系统内核根据各子控制程序对应的微内核任务类型的权重以及微内核任务优先级和/或运行时长的权重,以及各子控制程序的业务需求,生成调度配置信息。
可选地,所述操作系统内核根据控制程序的资源需求和微内核提供的计算资源,将每个控制程序划分成多个子控制程序,包括:
所述操作系统内核根据控制程序的计算量和各物理内核中微内核提供的计算能力的衡量参数,将所述控制程序划分成多个子控制程序;或者,
所述操作系统内核根据控制程序的I/O接口数和各物理内核中微内核提供的I/O接口数,将所述控制程序划分成多个子控制程序。
可选地,所述操作系统内核根据控制程序对应的微内核任务类型的权重以及微内核任务优先级和/或运行时长的权重,以及控制程序的业务需求,生成调度配置信息,包括:
所述操作系统内核根据控制程序对应的微内核任务类型的权重以及微内核任务优先级和/或运行时长的权重,控制程序的业务需求,以及系统提供的基本程序块,生成调度配置信息,所述调度配置信息还包括:每个控制程序包括的各个基本程序块、各基本程序块之间的运行触发条件和/或业务参数。
本发明实施例根据用户自定义,在系统启动前即基于微内核任务类型、微内核任务优先级和/或运行时长的权重,计算控制程序的相关性,根据相关性确定每个物理内核上运行的控制程序数量以及每个控制程序运行在多个物理内核上,自定义方案不限于单个物理内核对多个微内核时间片进行控制,以及单个微内核占用计算资源跨物理内核调配,从而实现工业服务器微内核在工业现场层的实时控制和自由组合。
附图说明
图1为本发明实施例提供的工业服务器微内核架构实现方法的流程图;
图2为本发明实施例提供的工业服务器的结构示意图;
图3为本发明实施例提供的粗粒度加锁调度的示意图;
图4为本发明实施例提供的细粒度加锁调度的示意图;
图5为本发明实施例提供的时间表的示意图;
图6为本发明实施例提供的优先级索引号位图的示意图;
图7为本发明实施例四提供的一种工业服务器微内核架构实现方法的流程图;
图8为本发明实施例提供的一种控制程序之间的协同示意图;
图9为本发明实施例提供的一种子控制程序之间的协同示意图;
图10为本发明实施例提供的一种基本程序块之间的协同示意图;
图11为本发明实施例提供的工业服务器微内核架构实现装置的结构示意图;
图12为本发明实施例提供的工业服务器的结构示意图。
具体实施方式
针对现有工业现场单个物理内核固定运行单个微内核,或,单个微内核只能利用单个物理内核的计算资源,从而造成物理内核计算资源利用低效的问题。本发明实施例根据用户自定义,在系统启动前即基于微内核任务类型、微内核任务优先级和/或运行时长的权重,计算控制程序的相关性,根据相关性确定每个物理内核上运行的控制程序数量以及每个控制程序运行在多个物理内核上,自定义方案不限于单个物理内核对多个微内核时间片进行控制,以及单个微内核占用计算资源跨物理内核调配,从而实现工业服务器微内核在工业现场层的实时控制和自由组合。
下面结合附图和实施例对本发明实施例作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明实施例,而非对本发明实施例的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明实施例相关的部分而非全部结构。
实施例一
图1为本发明实施例提供的工业服务器微内核架构实现方法的流程图,该方法应用于工业服务器,图2为本发明实施例提供的工业服务器的结构示意图,可见工业服务器包括工业服务器硬件,基于工业服务器硬件的操作系统内核,以及操作系统内核支持的多个物理内核,每个物理内核上可以运行多个虚拟机,每个虚拟机对应一个微内核,控制程序运行于微内核上,即每个物理内核上可以运行多个控制程序。示例性的,一共有3个物理内核a、b和c,物理内核a上运行3个控制程序a1,a2和a3,物理内核b上运行3个控制程序b1,b2和b3,物理内核c上运行3个控制程序c1,c2和c3。
本实施例中把内核各个服务的部分内容移到内核之外,就是微内核(MicroKernel)。微内核的操作系统只在内核里提供最基本、必不可少的服务,比如进程间通信(IPC)、内存管理、任务调度。而其它的包括驱动、文件系统、网络这样的服务,都放在用户态来实现。各个服务组件之间不会共享地址空间,都在各自独立的地址空间运行。大多数微内核操作系统通过服务模块间的消息传递来处理请求。例如,一个模块发出了一个需要更多内存的请求,会通过内核把请求传递给处理请求的服务。处理完成后,再把结果通过内核传递回去。
本实施例工业服务器微内核架构实现方法可以由操作系统内核来执行,具体可以由操作系统内核上运行的虚拟机监控器执行。本实施例提供的方法具体包括如下步骤:
步骤101、系统启动前,操作系统内核根据控制程序对应的微内核任务类型的权重以及微内核任务优先级和/或运行时长的权重生成调度配置信息,调度配置信息包括每个物理内核上运行的控制程序数量,每个物理内核上运行的控制程序的调度算法,以及每个控制程序运行在多个物理内核上;
本实施例中,每个物理内核可以运行多个控制程序,包括运行周期相同或运行周期不同的控制程序。示例性的,参照图2,物理内核a,b和c分别运行3个控制程序,物理内核a上运行3个控制程序a1,a2和a3,物理内核b上运行3个控制程序b1,b2和b3,物理内核c上运行3个控制程序c1,c2和c3。其中,a1,a2和a3可以是具备相同运行周期的控制程序,b1,b2和b3可以是具备不同运行周期的控制程序,c1和c2运行周期相同而和c3的运行周期不同。每个物理内核上运行的控制程序可以通过配置的调度算法进行调度,该调度算法包括基于时间表的调度算法或基于优先级的调度算法,不同的物理内核可以配置不同的调度算法。一个控制程序可以运行在一个或多个物理内核上。可见一个物理内核上可以运行多个控制程序,这多个控制程序可以是一个完整功能的控制程序,也可以是一个控制程序的部分功能的控制程序;一个控制程序被配置到多个物理内核上运行时,在各物理内核上是独立运行的,即参与到所在物理内核的调度中;不同的物理内核可以配置不同的调度算法,彼此之间互不影响。
操作系统内核根据控制程序对应的微内核任务类型的权重以及微内核任务优先级和/或运行时长的权重计算控制程序的相关性,再根据相关性生成调度配置信息。其中,相关性的计算包括根据微内核任务类型、微内核任务优先级和运行时长的权重计算相关性;或,根据微内核任务类型和微内核任务优先级的权重计算相关性;或,根据微内核任务类型和运行时长的权重计算相关性。
如上所述,每个物理内核可以运行多个控制程序,包括运行周期相同或运行周期不同的控制程序。即多个控制程序共享一个物理内核,其中某个控制程序需要执行内核态操作,物理内核就为该控制程序服务。为了互斥使用物理内核,任何需要执行内核态操作的控制程序都需要申请获取一个锁(lock),只有得到了锁的控制程序才可以使用物理内核执行内核态操作。按照控制程序所需计算资源的粒度大小分为粗粒度加锁调度方法和细粒度加锁调度方法。
图3为本发明实施例提供的粗粒度加锁调度的示意图,粗粒度加锁调度指的是一个物理内核对应一个锁,获取锁的控制程序可以独占整个物理内核。因此,同一时间内只能有一个控制程序使用物理内核执行内核态操作,其他需要执行内核态操作的控制程序只能等待被调度之后获取到锁。采用粗粒度加锁调度方法,单个物理内核上的多个控制程序的调度算法包括基于时间表的调度算法或基于优先级的调度算法。示例性的,参照图2,一共有3个物理内核a、b和c,每个物理内核对应一个锁,粗粒度表示物理内核内的调度是以一个完整的控制程序为单位进行的。物理内核a上运行3个控制程序a1,a2和a3,同一时间内只能有一个控制程序使用物理内核执行内核态操作,这里可以基于时间表的调度算法或基于优先级的调度算法在控制程序a1,a2和a3之间进行调度,确定出由哪个控制程序获得物理内核a的锁。同理,物理内核b上运行的3个控制程序b1,b2和b3,物理内核c上运行的3个控制程序c1,c2和c3都可以采用前述方法进行调度取得其所在物理内核对应的锁的使用权,进而使用物理内核执行内核态操作。
图4为本发明实施例提供的细粒度加锁调度的示意图,当控制程序需要的内核服务的计算资源较大时,可以让多个物理内核共同执行该控制程序的内核态操作。通过对单个控制程序不同的控制程序的粒度进行分割,将多个控制程序分配在不同的物理内核上,多个物理内核同时执行内核态操作可以使得多个控制程序并发执行。控制程序可以按照各微内核任务类型将控制程序划分为多个类型,包括进程间通信(IPC)、内存管理、任务调度等。本实施例采用一种双层裁剪算法对控制程序进行裁剪分类。其中,第一层裁剪算法将多个控制程序按运行时长裁剪成尽可能少的可调度的几个周期控制程序集合,以减少控制程序调度的系统开销。第二层裁剪算法则是针对第一层控制程序裁剪结果,再裁剪成几个不同优先级等级的控制程序集合,以便让控制程序在一个更可靠、更实时的环境下运行。最后通过计算多个控制程序的相关性,该计算过程可以结合微内核任务类型的权重以及微内核任务优先级和/或运行时长的权重。将相关性高的控制程序进行组合,配置于同一个物理内核上,将相关性较低的控制程序配置于不同的物理内核上,多个物理内核共同执行内核态操作,完成控制程序。
本实施例提出的裁剪算法不限于双层裁剪算法,还可以包括以下算法:针对控制程序对应得到多个控制程序,将其裁剪成几个不同优先级等级的控制程序,以便让控制程序在一个更可靠、更实时的环境下运行。最后通过计算多个控制程序的相关性,该计算过程可以结合微内核任务类型的权重以及微内核任务优先级和/或运行时长的权重。将相关性高的控制程序进行组合,配置于同一个物理内核上,将相关性较低的控制程序配置于不同的物理内核上,多个物理内核共同执行内核态操作,完成控制程序。
示例性的,参照图2,一共有3个物理内核a、b和c,每个物理内核对应一个锁,细粒度表示一个完整的控制程序对应得到多个控制程序,然后根据控制程序之间的相关性将多个控制程序分配在不同的物理内核上,而各物理内核将控制程序和其他控制程序一起进行调度。物理内核b上运行b1,b2和b3,物理内核c上运行c1,c2和c3,其中,b1,b2和c1,c2来自同一个控制程序,如上所述,该控制程序可以采用双层裁剪算法或其他算法进行拆分,并且根据相关性对控制程序所在的物理内核进行分配,即b1,b2的相关性较高,因此被分在同一个物理内核b上,而c1,c2的相关性较高,因此被分在同一个物理内核c上。这样基于控制程序力度的分配后,同一个控制程序被分配在两个物理内核上。每个物理内核内可以基于时间表的调度算法或基于优先级的调度算法调度控制程序,获取锁的使用权的控制程序将使用物理内核执行内核态操作。
可选的,还可以针对控制程序对应的多个控制程序,将其裁剪成几个不同运行时长的控制程序,以便让控制程序在一个更可靠、更实时的环境下运行。最后通过计算多个控制程序的相关性,该计算过程可以结合微内核任务类型的权重以及微内核任务优先级和/或运行时长的权重。将相关性高的控制程序进行组合,配置于同一个物理内核上,将相关性较低的控制程序配置于不同的物理内核上,多个物理内核共同执行内核态操作,完成控制程序。
一般而言,工业现场层涉及执行的控制程序包括但不限于:温度测控、湿度测控以及流程控制等。而本发明中所谓的相关性,是指上述控制程序在微内核上实现时,能够确定基于微内核完成上述控制程序对应的多个控制程序。实际上,通过预设算法获得的微控制流程可能是符合工业现场的工业控制流程,也可能是用户自定义的工业控制流程。
所谓预设算法,比如,对微内核任务类型、控制程序运行时长、优先级分别设置不同权重,将权重加和值在一定范围内的认为是对应同一个控制程序。通过预设算法计算相关性,将相关性高的控制程序进行组合,确定每个物理内核上运行的控制程序数量以及每个控制程序运行在多个物理内核上。
调度配置信息包括每个物理内核上运行的控制程序数量,每个物理内核上运行的控制程序的调度算法,以及每个控制程序运行在多个物理内核上。本实施例中,根据上述方法确定了哪些控制程序分配在哪些物理内核上后,生成调度配置信息。示例性的,参照图2,物理内核a,b和c分别运行3个控制程序,物理内核a上运行3个控制程序a1,a2和a3,物理内核b上运行3个控制程序b1,b2和b3,物理内核c上运行3个控制程序c1,c2和c3。物理内核a采用基于时间表的调度算法从3个控制程序a1,a2和a3中确定当前由谁执行内核态操作,物理内核b采用基于优先级的调度算法从3个控制程序b1,b2和b3中确定当前由谁执行内核态操作,物理内核c采用基于优先级的调度算法从3个控制程序c1,c2和c3中确定当前由谁执行内核态操作。由一个控制程序对应得到的控制程序b1,b2,c1,c2运行在两个物理内核b和c上。
步骤102、操作系统内核根据调度配置信息对操作系统内核上运行的控制程序进行配置;
操作系统内核通过虚拟机监控程序对硬件进行虚拟化处理,根据调度配置信息在一个物理内核上配置多个控制程序;和/或,根据调度配置信息对每个物理内核上运行的控制程序的调度算法进行配置,调度算法包括基于时间表的调度算法或基于优先级的调度算法;和/或,将多个物理内核进行虚拟化,根据调度配置信息将一个控制程序对应得到的多个控制程序分别配置到多个物理内核上。
操作系统内核即可根据调度配置信息对操作系统内核上运行的控制程序进行实际配置。示例性的,参照图2,物理内核a,b和c分别运行3个控制程序,物理内核a上运行3个控制程序a1,a2和a3,物理内核b上运行3个控制程序b1,b2和b3,物理内核c上运行3个控制程序c1,c2和c3。物理内核a采用基于时间表的调度算法从3个控制程序a1,a2和a3中确定当前由谁执行内核态操作,物理内核b采用基于优先级的调度算法从3个控制程序b1,b2和b3中确定当前由谁执行内核态操作,物理内核c采用基于优先级的调度算法从3个控制程序c1,c2和c3中确定当前由谁执行内核态操作。由一个控制程序对应得到的控制程序b1,b2,c1,c2运行在两个物理内核b和c上。
步骤103、操作系统内核启动配置后的控制程序。
经过上述配置后,操作系统内核启动配置后的控制程序,示例性的,9个控制程序参照图2被配置到3个物理内核中,且按照相应的调度算法被调度。
本实施例可以在一个物理核上运行多个控制程序,提高物理核资源利用率,而且不同周期的控制程序可以运行在同一个物理核上,实现多内核上的控制程序的自由组合,实现多业务软件定义的自由调度,不同物理内核可以自由配置不同的控制程序调度算法,提高控制程序调度的灵活性和多样性。
本实施例的技术方案,在系统启动前根据控制程序对应的微内核任务类型的权重以及微内核任务优先级和/或运行时长的权重生成调度配置信息,并根据调度配置信息配置每个物理内核上运行的控制程序数量、调度算法、以及每个控制程序运行在多个物理内核上,自定义配置方案不限于单个物理内核对多个微内核时间片进行控制,以及单个微内核占用计算资源跨物理内核调配,从而实现工业服务器微内核控制在工业现场层的实时控制和自由组合,提高物理内核计算资源的利用率。
实施例二
在上述技术方案的基础上,基于时间表的调度算法包括:设定多个定时器,其中,第一定时器的时长为主帧时间,第二定时器按照主帧时间内的多个时间窗的前后顺序逐次启动,并且第二定时器的时长逐次与各时间窗的时长相同;以主帧时间为周期,启动第一定时器和第二定时器的同时,根据时间表的设定调度控制程序,一旦第二定时器的定时到达,调度下一个控制程序,且一旦第一定时器的定时到达,启动下一个周期,时间表包括多个时间窗的起止时间和各时间窗对应的控制程序。
本实施例中,一个物理内核上运行的控制程序根据配置好的时间表进行调度,时间表可以根据需求预先配置,调度时以主帧时间为周期,在主帧时间内有多个时间窗。时间表包括多个时间窗的起止时间和各时间窗对应的控制程序,时间窗可分为非空闲时间窗和空闲时间窗,其中,非空闲时间窗对应一个控制程序的运行时间,空闲时间窗时不运行控制程序。在调度控制程序时,重复执行主帧时间,也即每执行完一次时间表,重新转至第一个时间窗继续执行。图5为本发明实施例提供的时间表的示意图,该时间表中第一个非空闲时间窗是控制程序1的运行时间,第二个非空闲时间窗是控制程序2的运行时间,第三个非空闲时间窗是控制程序3的运行时间,第四个非空闲时间窗又是控制程序1的运行时间。主帧时间是图中6个时间窗的总时长。用户可以根据实际需求配置每个时间窗的时长及运行的控制程序,各时间窗的时长可以配置为相同,也可以配置为不同。
但是考虑到基于时间表的调度算法采用系统时钟,可能会出现每隔较小的时间间隔就发生一次中断的现象,如果频繁中断可能导致时间表的时间窗产生延迟。例如,假设时间表的主帧时间为500ms,控制程序1对应的非空闲时间窗为100ms,并且假定中断处理时间为1ms,若在控制程序1运行过程中产生了10次中断,那么就会造成10ms的延迟,也就是说控制程序1运行了110ms才切换至控制程序2。那么相应地,当主帧时间500ms到达时,实际还处于时间表的最后一个时间窗,需等到510ms时才会重新切换至时间表的第一个时间窗,导致主帧切换产生了10ms的延迟。为了避免控制程序切换和主帧切换的延迟,本实施例中设定多个定时器,通过第一定时器对主帧时间进行定时,以控制主帧时间的切换,通过第二定时器对时间窗进行定时,以控制时间窗口的切换。参照图5,一个主帧开始的同时启动第一定时器和第二定时器,并调度时间表中第一个时间窗对应的控制程序1,此时第二定时器的时长与第一个时间窗的时长相同;当第二定时器的定时到达时,将时间表中第一时间窗切换为相邻的第二个时间窗,调度第二个时间窗对应的控制程序2,此时第二定时器的时长与第二个时间窗的时长相同。以此类推。当第一定时器的定时到达时,启动下一个主帧周期,即重新调度时间表中第一个时间窗对应的控制程序1,此时无论当前处于哪个时间窗,均切换为时间表的第一个时间窗,从头计时,从而实现主帧时间的同步。
实施例三
在上述技术方案的基础上,获取一个或多个物理内核上运行的控制程序的优先级,并将优先级采用8位二进制的方式表示,其中,高3位为主索引号,低5位为次索引号,根据主索引号将优先级主索引号位图中对应位做标识,根据次索引号将优先级次索引号位图中对应位做标识。
本实施例中可以给每个控制程序配置优先级,优先级的范围可设置为0-255,其中0对应最高级,255对应最低级。各控制程序的状态可以为就绪、等待、挂等、挂起或者休眠,只有处于就绪状态的控制程序可以被调度,其余状态的控制程序不列入调度对象。每个优先级采用8位二进制的方式表示,其中,高3位为主索引号,低5位为次索引号。例如,优先级为42的控制程序处于就绪状态,用二进制表示是00101010,其高3位是001(1),低5位是01010(10),那么42对应的主索引号就是1,次索引号就是10。图6为本发明实施例提供的优先级索引号位图的示意图,其中,优先级主索引号位图是1*8的一维位图,其编号为0-7,优先级次索引号位图是8*32的二维位图,纵向编号为0-7,横向编号为0-31,根据42对应的主索引号1和次索引号10分别在优先级主索引号位图的编号1和优先级次索引号位图上纵向编号1横向编号10做标识(标记为1)。
在上述技术方案的基础上,基于优先级的调度算法包括:遍历优先级主索引号位图确定最高优先级对应的主索引号;遍历主索引号对应的优先级次索引号位图确定最高优先级对应的次索引号;根据主索引号和次索引号计算当前的最高优先级,并确定最高优先级对应的控制程序。
参照图6,首先按照0-7的顺序遍历优先级主索引号位图,查找到第一个标记为1的位置编号为1,然后在优先级次索引号位图上按照0-31的顺序遍历纵向编号为1的横向位图查找到第1个标记为1的编号为10。根据优先级的组成方式计算的到此时优先级最高的是42级的控制程序。
实施例四
图7为本发明实施例四提供的一种工业服务器微内核架构实现方法的流程图,本实施例中,操作系统内核根据控制程序对应的微内核任务类型的权重以及微内核任务优先级和/或运行时长的权重,以及控制程序的业务需求,生成调度配置信息。结合图7,具体包括以下步骤:
S710、系统启动前,操作系统内核根据控制程序对应的微内核任务类型的权重以及微内核任务优先级和/或运行时长的权重,以及控制程序的业务需求,生成调度配置信息。
可选地,控制程序的业务需求包括控制程序的流程需求、数据需求和功能需求等。本实施例中,在微内核任务类型的权重、微内核任务优先级和运行时长权重的基础上,增加了控制程序的业务需求,作为生成调度配置信息的依据。在具体实现方式中,操作系统内核可根据控制程序对应的微内核任务类型的权重、微内核任务优先级的权重、运行时长的权重以及控制程序的业务需求,生成调度配置信息;或者,操作系统内核可根据控制程序对应的微内核任务类型的权重、微内核任务的优先级的权重以及控制程序的业务需求,生成调度配置信息;或者,操作系统可根据控制程序对应的微内核任务类型的权重、运行时长的权重以及控制程序的业务需求,生成调度配置信息。控制程序的业务需求可以是控制程序要实现的控制逻辑、控制任务和控制目的等。尤其在分布式控制系统中,通过每个控制程序的业务需求,可以分析出控制系统中各个控制程序之间运行触发条件和相互之间需要传递的业务参数或数据等协同关系。在确定控制程序在哪些或哪个物理核上运行,物理核上运行的控制程序数量时,可以将微内核任务类型的权重、微内核任务的优先级的权重和控制程序的业务需求相结合,计算多个控制程序之间的相关性,将相关性高的控制程序进行组合,配置于同一个物理内核上,将相关性较低的控制程序配置于不同的物理内核上。
调度配置信息包括每个物理内核上运行的控制程序数量,每个物理内核上运行的控制程序的调度算法,以及每个控制程序运行在多个物理内核上。
S720、操作系统内核根据所述调度配置信息对所述操作系统内核上运行的控制程序进行配置。
S730、操作系统内核启动配置后的控制程序。
本实施例中,操作系统内核根据控制程序对应的微内核任务类型的权重以及微内核任务优先级和/或运行时长的权重,以及控制程序的业务需求,生成调度配置信息,从而使得系统能够根据控制程序的业务需求进行启动,在微核架构的基础上实现控制程序的业务间、业务内的协同以及运行在不同物理核上的各子控制程序之间的设备协同,这里所述的设备协同中各子控制程序组成一个完整的控制程序。
在一可选实施方式中,物理内核上运行有多个控制程序,多个控制程序之间具有业务需求关系。基于此,调度配置信息包括:每个物理内核上运行的控制程序数量,每个物理内核上运行的控制程序的调度算法,每个控制程序运行在多个物理内核上,以及各控制程序之间的运行触发条件和/或业务参数。从而采用微内核架构实现业务之间的协同。如果多个控制程序运行在不同的物理内核上,则实现物理内核硬件设备之间的协同。可选地,调度配置中还包括指示一个控制程序与其存在协同关系的控制程序运行在哪个物理核上,触发与其存在协同关系的控制程序运行时所需要的运行触发条件和/或需要给与其存在协同关系的控制程序的业务参数。这里所说的存在协同关系的控制程序,可以是一个控制程序与另一控制控制之间的协同,也可以是一个控制程序的子控制程序与另一控制程序的子控制程序之间的协同。
一个物理内核上可以运行一个或者多个控制程序,具体运行在各微内核中的PLC上。对于一个物理内核运行多个控制程序的情况,结合图2,物理内核a运行3个控制程序a1,a2和a3,3个控制程序的调度算法包括基于时间表的调度算法或基于优先级的调度算法,详见上述实施例的描述,此处不再赘述。运行触发条件和业务参数例如包括控制程序a1对a2的运行触发条件,控制程序a2对a3的运行触发条件,控制程序a1,a2和a3之间传递的参数和运算结果等。对于一个物理内核运行一个控制程序的情况,继续结合图2,物理内核a运行控制程序a1,物理内核b运行控制程序b1,控制程序a1和b1的调度算法包括基于时间表的调度算法或基于优先级的调度算法。运行触发条件和业务参数例如包括控制程序a1对b1的运行触发条件,控制程序a1,b1之间传递的参数和运算结果等。
下面结合图8,以一应用场景详细说明各控制程序之间的运行触发条件和/或业务参数。
图8包括控制程序A和控制程序B,虚线代表运行触发条件的流向,实线代表业务参数的流向。在系统启动之前,预先生成运行触发条件和业务参数,并对控制程序A和控制程序B进行配置,从而,控制程序A和控制程序B自动按照配置实现业务间的协同。值得说明的是,被触发的控制程序开始运行后,负责触发的控制程序可以停止运行或者继续运行,具体运行方式由各控制程序的业务需求决定。
例如,控制程序A为传送带控制程序,控制程序B是机械臂抓取控制程序,传送带控制程序需要在达到条件时启动机械臂抓取控制程序开始执行抓取动作。则在系统启动前,配置传送带控制程序:在达到条件时启动机械臂抓取控制程序开始执行抓取动作。如果,传送带控制程序需要告诉机械臂抓取控制程序抓取动作的速率和力量,则预先配置传送带控制程序:在达到条件时,启动机械臂抓取控制程序开始执行抓取动作。进一步还可以预先将抓取动作的速率和力量配置给机械臂抓取控制程序。
又例如,控制程序A为加料控制程序,控制程序B为加热控制程序,加料控制程序需要在容器内的水的温度达到预设条件时加料,监控到温度没有达到预设条件时,启动加热控制程序开始对加热容器内的水。在系统启动前,预先配置加料控制程序:水的温度低于预设条件时,启动加热控制程序开始对加热容器内的水。进一步,还可以预先将水要达到的温度范围配置给加热控制程序。
在另一可选实施方式中,控制程序的数量为至少一个,每个控制程序可划分为多个子控制程序。基于此,所述调度配置信息还包括:每个控制程序包括的各子控制程序,每个控制程序的各子控制程序运行在一个或多个物理内核上,各子控制程序运行在的物理内核,以及各子控制程序之间的运行触发条件和/或业务参数。从而采用微内核架构实现子控制程序之间的协同。如果一控制程序的多个子控制程序运行在不同的物理内核上,则实现物理内核硬件设备之间的协同。可选地,调度配置中还包括指示一个子控制程序与其存在协同关系的子控制程序运行在哪个物理核上,触发与其存在协同关系的子控制程序运行时所需要的运行触发条件和/或需要给与其存在协同关系的控制程序的业务参数,这里所述的存在协同关系的各子控制程序组成一个完整的控制程序。
值得说明的是,同一物理内核中可运行不同控制程序的子控制程序或者同一控制程序的多个子控制程序。
对于每个控制程序中的各子控制程序来说,一个物理内核上可以运行一个或者多个子控制程序,具体运行在各微内核中的PLC上。对于一个物理内核运行多个子控制程序的情况,结合图2,物理内核a运行3个子控制程序a1,a2和a3,3个子控制程序的调度算法包括基于时间表的调度算法或基于优先级的调度算法。运行触发条件和业务参数例如包括子控制程序a1对a2的运行触发条件,子控制程序a2对a3的运行触发条件,子控制程序a1,a2和a3之间传递的参数和运算结果等。对于一个物理内核运行一个子控制程序的情况,继续结合图2,物理内核a运行子控制程序a1,物理内核b运行子控制程序b1,子控制程序a1和b1的调度算法包括基于时间表的调度算法或基于优先级的调度算法。运行触发条件和业务参数例如包括子控制程序a1对b1的运行触发条件,子控制程序a1,b1之间传递的参数和运算结果等。
下面结合图9,以一应用场景详细说明各子控制程序之间的运行触发条件和/或业务参数。
图9中,控制程序A包括子控制程序a1、a2和a3。子控制程序a1配置在物理内核a的PLC1上,子控制程序a2配置在物理内核b的PLC2上,子控制程序a3配置在物理内核c的PLC3上。可选地,物理内核还包括通信功能块。通信功能块用于传输子控制程序之间的运行触发条件和业务参数,在控制程序流程上相当于各个PLC的“输入”或“输出”。虚线代表运行触发条件的流向,实线代表业务参数的流向。在系统启动之间,预先生成运行触发条件和业务参数,并对子控制程序a1、a2和a3进行配置,从而子控制程序a1、a2和a3自动按照配置实现物理内核硬件设备之间的协同。值得说明的是,被触发的子控制程序开始运行后,负责触发的子控制程序可以停止运行或者继续运行,具体运行方式由各子控制程序的业务需求决定。
例如,预先配置子控制程序a1的初始值,子控制程序a2的运行触发条件为子控制程序a1的运算结果,子控制程序a3的运行触发条件为子控制程序a1的运算结果和a2的运行结果,子控制程序a1的运行触发条件为子控制程序a1的运算结果。
具体地,子控制程序a1按照预先配置的初始值进行运算,并将运算结果通过通信功能块分别发送至子控制程序a2和a3,子控制程序a2按照从通信功能块接收到的子控制程序a1的运算结果进行运算,并将运算结果发送到子控制程序a3。子控制程序a3按照从通信功能块接收到的子控制程序a1和a2的运算结果进行运算,得到最终的结果。
可选地,采用多种方式将控制程序划分为多个子控制程序,例如上述实施例提供的双层裁剪算法。本实施方式中,根据控制程序的资源需求和微内核提供的计算资源,划分子控制程序。基于此,操作系统内核根据控制程序对应的微内核任务类型的权重以及微内核任务优先级和/或运行时长的权重,以及控制程序的业务需求,生成调度配置信息,还包括:所述操作系统内核根据控制程序的资源需求和微内核提供的计算资源,将每个控制程序划分成多个子控制程序;所述操作系统内核根据各子控制程序对应的微内核任务类型的权重以及微内核任务优先级和/或运行时长的权重,以及各子控制程序的业务需求,生成调度配置信息。
其中,控制程序的资源需求包括控制程序的计算量或者I/O接口数,控制程序的计算量包括运行内存大小、指令数和进程数等;相应地,微内核提供的计算资源包括计算能力的衡量参数或者提供的I/O接口数,计算能力的衡量参数包括内存、主频、存储空间等。基于此,所述操作系统内核根据控制程序的计算量和各物理内核中微内核提供的计算能力的衡量参数,将所述控制程序划分成多个子控制程序;或者,所述操作系统内核根据控制程序的I/O接口数和各物理内核中微内核提供的I/O接口数,将所述控制程序划分成多个子控制程序,使得划分出的子控制程序能够采用微内核提供的计算资源成功运行。
进一步地,在划分出子控制程序之后,计算子控制程序的I/O接口相关性,I/O接口相关性可有子控制程序之间直接相连的I/O接口点数来衡量。将I/O接口相关性大于预设相关性阈值的子控制程序配置在同一物理内核中,或者地理位置相邻的多个物理内核中,以减少数据传输的距离。
在又一可选实施方式中,控制程序的数量为至少一个,每个控制程序包括至少一个基本程序块。基本程序块是执行控制逻辑的最小软件单元,它对外表现为触发条件的输入输出和业务参数的输入输出。控制程序包括的基本程序块以及基本程序块之间的运行触发条件和/或业务参数,可以在系统启动之前预先生成并配置。可选地,操作系统内核根据控制程序对应的微内核任务类型的权重以及微内核任务优先级和/或运行时长的权重,以及控制程序的业务需求,生成调度配置信息,包括:所述操作系统内核根据控制程序对应的微内核任务类型的权重以及微内核任务优先级和/或运行时长的权重,控制程序的业务需求,以及系统提供的基本程序块,生成调度配置信息,所述调度配置信息还包括:每个控制程序包括的各个基本程序块、各基本程序块之间的运行触发条件和/或业务参数。从而实现业务内的协同。
一般情况下,如图8和图9所示,基本程序块包括在子控制程序或者控制程序中,例如图9中,子控制程序a1包括基本程序块1、2和3,子控制程序a2包括基本程序块4和2。又例如图8中,控制程序A包括基本程序块1、4和5,控制程序B包括基本程序块2、4和1。可见,基本程序块可以在不同子控制程序或者不同控制程序中复用。相应地,基本程序块在物理内核上的配置位置由其包括在的子控制程序或者控制程序决定,子控制程序和控制程序的配置位置详见上述实施例的描述,此处不再赘述。
结合图8、图9和图10,各基本程序块之间的虚线代表运行触发条件的流向,实现代表业务参数的流向。在系统启动之间,预先选择出各控制程序对应的基本程序块,并生成各基本程序块之间的运行触发条件和业务参数。然后,对各基本程序块进行配置,从而,各基本程序块自动启动,从而实现整个控制程序。
图10中,预先配置控制程序包括的基本程序块,例如为1、2和3;以及配置基本程序块1的初始值,基本程序块2的初始值;以及基本程序块2的触发条件为基本程序块1的运算结果,基本程序块3的触发条件为基本程序块1的运算结果和基本程序块2的运算结果。
基本程序块1按照预先配置的初始值进行运算,并将运算结果分别发送至基本程序块2和3。基本程序块2根据基本程序块1的运算结果和预先配置的初始值进行运算,并将运算结果发送至基本程序块3。基本程序块3根据基本程序块2和1的运算结果进行运算得到该控制程序的运算结果。
实施例四
图11为本发明实施例提供的工业服务器微内核架构实现装置的结构示意图,该装置设置于图2所示的工业服务器,该装置包括:生成模块11、配置模块12和启动模块13,其中,生成模块11,用于系统启动前,根据控制程序对应的微内核任务类型的权重以及微内核任务优先级和/或运行时长的权重生成调度配置信息,所述调度配置信息包括每个物理内核上运行的控制程序数量,每个物理内核上运行的控制程序的调度算法,以及每个控制程序运行在多个物理内核上;配置模块12,用于根据所述调度配置信息对所述操作系统内核上运行的控制程序进行配置;启动模块13,用于启动配置后的控制程序。
本发明实施例所提供的工业服务器微内核架构实现装置可执行本发明任意实施例所提供的工业服务器微内核架构实现方法,具备执行方法相应的功能模块和有益效果。
实施例五
图12为本发明实施例提供的工业服务器的结构示意图,如图12所示,该工业服务器包括处理器20、存储器21、输入装置22和输出装置23;工业服务器中处理器20的数量可以是一个或多个,图12中以一个处理器20为例;工业服务器中的处理器20、存储器21、输入装置22和输出装置23可以通过总线或其他方式连接,图12中以通过总线连接为例。
存储器21作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的工业服务器微内核架构实现方法对应的程序指令/模块。处理器20通过运行存储在存储器21中的软件程序、指令以及模块,从而执行工业服务器的各种功能应用以及数据处理,即实现上述的工业服务器微内核架构实现方法。
存储器21可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器21可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器21可进一步包括相对于处理器20远程设置的存储器,这些远程存储器可以通过网络连接至工业服务器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置22可用于接收输入的数字或字符信息,以及产生与工业服务器的用户设置以及功能控制有关的键信号输入。输出装置23可包括显示屏等显示设备。
实施例六
本发明实施例还提供一种包含可执行指令的存储介质,所述可执行指令在由处理器执行时可以执行本发明任意实施例所提供的工业服务器微内核架构实现方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明实施例可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明实施例各个实施例所述的方法。
值得注意的是,上述装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明实施例的保护范围。
注意,上述仅为本发明实施例的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明实施例不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明实施例的保护范围。因此,虽然通过以上实施例对本发明实施例进行了较为详细的说明,但是本发明实施例不仅仅限于以上实施例,在不脱离本发明实施例构思的情况下,还可以包括更多其他等效实施例,而本发明实施例的范围由所附的权利要求范围决定。

Claims (10)

1.一种工业服务器微内核架构实现方法,所述方法应用于工业服务器,所述工业服务器中基于工业服务器硬件的操作系统内核支持多个物理内核,其特征在于,所述方法包括:
系统启动前,操作系统内核根据控制程序对应的微内核任务类型的权重以及微内核任务优先级和/或运行时长的权重生成调度配置信息,所述调度配置信息包括每个物理内核上运行的控制程序数量,每个物理内核上运行的控制程序的调度算法,以及每个控制程序运行在多个物理内核上;
所述操作系统内核根据所述调度配置信息对所述操作系统内核上运行的控制程序进行配置;
所述操作系统内核启动配置后的控制程序。
2.根据权利要求1所述的方法,其特征在于,所述操作系统内核根据所述调度配置信息对所述操作系统内核上运行的控制程序进行配置,包括:
通过虚拟机监控程序对硬件进行虚拟化处理,根据所述调度配置信息在一个物理内核上配置多个控制程序;和/或,
根据所述调度配置信息对每个物理内核上运行的控制程序的调度算法进行配置,所述调度算法包括基于时间表的调度算法或基于优先级的调度算法;和/或,
将多个物理内核进行虚拟化,根据所述调度配置信息将一个控制程序对应得到的多个控制程序分别配置到所述多个物理内核上。
3.根据权利要求1所述的方法,其特征在于,所述操作系统内核根据控制程序对应的微内核任务类型的权重以及微内核任务优先级和/或运行时长的权重生成调度配置信息,包括:
采用粗粒度加锁调度方法,每个物理内核对应一个锁,基于时间表的调度算法或基于优先级的调度算法从单个物理内核上的多个控制程序中确定一个控制程序得到所述物理内核对应的锁,获取所述物理内核对应的锁的控制程序独占所述物理内核执行内核态操作,根据所述控制程序的微内核任务类型、优先级和/或运行时长生成所述调度配置信息;或者,
采用细粒度加锁调度方法,每个物理内核对应一个锁,按照控制程序所需计算资源将控制程序对应得到多个控制程序,根据所述多个控制程序之间的相关性将所述多个控制程序分配在不同的物理内核上,所述多个控制程序分别得到所属物理内核对应的锁,获取锁的所述多个控制程序通过多个物理内核同时执行内核态操作并发执行,根据所述控制程序的微内核任务类型、优先级和/或运行时长生成所述调度配置信息。
4.根据权利要求2所述的方法,其特征在于,所述基于时间表的调度算法包括:
设定多个定时器,其中,第一定时器的时长为主帧时间,第二定时器按照所述主帧时间内的多个时间窗的前后顺序逐次启动,并且所述第二定时器的时长逐次与各时间窗的时长相同;
以所述主帧时间为周期,启动所述第一定时器和所述第二定时器的同时,根据时间表的设定调度控制程序,一旦所述第二定时器的定时到达,调度下一个控制程序,且一旦所述第一定时器的定时到达,启动下一个周期,所述时间表包括所述多个时间窗的起止时间和各时间窗对应的控制程序。
5.根据权利要求1所述的方法,其特征在于,所述操作系统内核根据控制程序对应的微内核任务类型的权重以及微内核任务优先级和/或运行时长的权重生成调度配置信息,包括:
所述操作系统内核根据控制程序对应的微内核任务类型的权重以及微内核任务优先级和/或运行时长的权重,以及控制程序的业务需求,生成调度配置信息。
6.根据权利要求5所述的方法,其特征在于,所述调度配置信息还包括:各控制程序之间的运行触发条件和/或业务参数。
7.根据权利要求5所述的方法,其特征在于,所述调度配置信息还包括:每个控制程序包括的各子控制程序,每个控制程序的各子控制程序运行在一个或多个物理内核上,各子控制程序运行在的物理内核,以及各子控制程序之间的运行触发条件和/或业务参数。
8.根据权利要求7所述的方法,其特征在于,所述操作系统内核根据控制程序对应的微内核任务类型的权重以及微内核任务优先级和/或运行时长的权重,以及控制程序的业务需求,生成调度配置信息,还包括:
所述操作系统内核根据控制程序的资源需求和微内核提供的计算资源,将每个控制程序划分成多个子控制程序;
所述操作系统内核根据各子控制程序对应的微内核任务类型的权重以及微内核任务优先级和/或运行时长的权重,以及各子控制程序的业务需求,生成调度配置信息。
9.根据权利要求8所述的方法,其特征在于,所述操作系统内核根据控制程序的资源需求和微内核提供的计算资源,将每个控制程序划分成多个子控制程序,包括:
所述操作系统内核根据控制程序的计算量和各物理内核中微内核提供的计算能力的衡量参数,将所述控制程序划分成多个子控制程序;或者,
所述操作系统内核根据控制程序的I/O接口数和各物理内核中微内核提供的I/O接口数,将所述控制程序划分成多个子控制程序。
10.根据权利要求5所述的方法,其特征在于,所述操作系统内核根据控制程序对应的微内核任务类型的权重以及微内核任务优先级和/或运行时长的权重,以及控制程序的业务需求,生成调度配置信息,包括:
所述操作系统内核根据控制程序对应的微内核任务类型的权重以及微内核任务优先级和/或运行时长的权重,控制程序的业务需求,以及系统提供的基本程序块,生成调度配置信息,所述调度配置信息还包括:每个控制程序包括的各个基本程序块、各基本程序块之间的运行触发条件和/或业务参数。
CN201811296334.2A 2018-07-09 2018-11-01 工业服务器微内核架构实现方法 Active CN109445847B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US16/243,414 US10866833B2 (en) 2018-07-09 2019-01-09 Method and appratus for implementing microkernel architecture of industrial server
EP19151212.8A EP3594812A1 (en) 2018-07-09 2019-01-10 Method for implementing microkernel architecture of industrial server
JP2019003424A JP6924786B2 (ja) 2018-07-09 2019-01-11 産業用サーバのマイクロカーネルアーキテクチャの実現方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201810745308 2018-07-09
CN2018107453087 2018-07-09

Publications (2)

Publication Number Publication Date
CN109445847A true CN109445847A (zh) 2019-03-08
CN109445847B CN109445847B (zh) 2021-09-17

Family

ID=65549934

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811296334.2A Active CN109445847B (zh) 2018-07-09 2018-11-01 工业服务器微内核架构实现方法

Country Status (4)

Country Link
US (1) US10866833B2 (zh)
EP (1) EP3594812A1 (zh)
JP (1) JP6924786B2 (zh)
CN (1) CN109445847B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111221645A (zh) * 2019-11-14 2020-06-02 中国民航信息网络股份有限公司 一种航空作业处理方法和系统

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101226577A (zh) * 2008-01-28 2008-07-23 南京大学 基于可信硬件与虚拟机的微内核操作系统完整性保护方法
CN101377745A (zh) * 2007-08-28 2009-03-04 张玉昆 在各个域间实现数据共享的虚拟化计算机系统和方法
US7673304B2 (en) * 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
US7765548B2 (en) * 2005-02-17 2010-07-27 Red Hat, Inc. System, method and medium for using and/or providing operating system information to acquire a hybrid user/operating system lock
CN102193853A (zh) * 2010-03-12 2011-09-21 三星电子株式会社 虚拟机监控器及其调度方法
US20110238969A1 (en) * 2010-03-25 2011-09-29 Microsoft Corporation Intelligent boot device selection and recovery
US20130097355A1 (en) * 2011-10-13 2013-04-18 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
US20140165077A1 (en) * 2011-07-14 2014-06-12 Siemens Corporation Reducing The Scan Cycle Time Of Control Applications Through Multi-Core Execution Of User Programs
US8776088B2 (en) * 2009-03-30 2014-07-08 Microsoft Corporation Operating system distributed over heterogeneous platforms
CN105550040A (zh) * 2015-12-29 2016-05-04 四川中电启明星信息技术有限公司 基于kvm平台的虚拟机cpu资源预留算法
CN107479943A (zh) * 2017-07-03 2017-12-15 北京东土科技股份有限公司 基于工业互联网操作系统的多操作系统运行方法及装置
CN108196501A (zh) * 2017-12-22 2018-06-22 北京东土科技股份有限公司 一种基于plc的分布式控制系统的容灾方法、装置和系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5515538A (en) * 1992-05-29 1996-05-07 Sun Microsystems, Inc. Apparatus and method for interrupt handling in a multi-threaded operating system kernel
US7140015B1 (en) * 1999-09-29 2006-11-21 Network Appliance, Inc. Microkernel for real time applications
US20030033345A1 (en) * 2002-06-27 2003-02-13 Keefer Christopher E. Thread-based methods and systems for using the idle processing power of one or more networked computers to solve complex scientific problems
GB2453284A (en) * 2004-04-02 2009-04-01 Symbian Software Ltd Mechanism for notifying a kernel of a thread entering a critical section.
AU2012271352B2 (en) * 2011-06-16 2015-05-07 Argyle Data, Inc. Software virtual machine for acceleration of transactional data processing

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7673304B2 (en) * 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
US7765548B2 (en) * 2005-02-17 2010-07-27 Red Hat, Inc. System, method and medium for using and/or providing operating system information to acquire a hybrid user/operating system lock
CN101377745A (zh) * 2007-08-28 2009-03-04 张玉昆 在各个域间实现数据共享的虚拟化计算机系统和方法
CN101226577A (zh) * 2008-01-28 2008-07-23 南京大学 基于可信硬件与虚拟机的微内核操作系统完整性保护方法
US8776088B2 (en) * 2009-03-30 2014-07-08 Microsoft Corporation Operating system distributed over heterogeneous platforms
CN102193853A (zh) * 2010-03-12 2011-09-21 三星电子株式会社 虚拟机监控器及其调度方法
US20110238969A1 (en) * 2010-03-25 2011-09-29 Microsoft Corporation Intelligent boot device selection and recovery
US20140165077A1 (en) * 2011-07-14 2014-06-12 Siemens Corporation Reducing The Scan Cycle Time Of Control Applications Through Multi-Core Execution Of User Programs
US20130097355A1 (en) * 2011-10-13 2013-04-18 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
CN105550040A (zh) * 2015-12-29 2016-05-04 四川中电启明星信息技术有限公司 基于kvm平台的虚拟机cpu资源预留算法
CN107479943A (zh) * 2017-07-03 2017-12-15 北京东土科技股份有限公司 基于工业互联网操作系统的多操作系统运行方法及装置
CN108196501A (zh) * 2017-12-22 2018-06-22 北京东土科技股份有限公司 一种基于plc的分布式控制系统的容灾方法、装置和系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
郝继锋: "嵌入式微核虚拟机管理器存储管理架构设计", 《航空计算技术》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111221645A (zh) * 2019-11-14 2020-06-02 中国民航信息网络股份有限公司 一种航空作业处理方法和系统
CN111221645B (zh) * 2019-11-14 2023-06-16 中国民航信息网络股份有限公司 一种航空作业处理方法和系统

Also Published As

Publication number Publication date
CN109445847B (zh) 2021-09-17
EP3594812A1 (en) 2020-01-15
US20200012519A1 (en) 2020-01-09
JP2020009404A (ja) 2020-01-16
JP6924786B2 (ja) 2021-08-25
US10866833B2 (en) 2020-12-15

Similar Documents

Publication Publication Date Title
CN108984267A (zh) 工业服务器的微内核架构控制系统及工业服务器
CN105893157B (zh) 一种开放分布式系统资源管理与任务调度系统与方法
CN101452404A (zh) 一种嵌入式操作系统的任务调度装置及方法
US10979368B2 (en) Architecture for converged industrial control and real time applications
CN104536835B (zh) 一种热备份实时控制系统中自适应任务调度方法
CN104915253A (zh) 一种作业调度的方法及作业处理器
CN104820616B (zh) 一种任务调度的方法及装置
Shi et al. Elastic resource provisioning for scientific workflow scheduling in cloud under budget and deadline constraints
Wang et al. Joint server assignment and resource management for edge-based MAR system
CN111026519B (zh) 基于分布式的任务优先级调度方法和系统及存储介质
Chen et al. Online scheduling for multi-core shared reconfigurable fabric
Qiu et al. Cost-minimizing preemptive scheduling of mapreduce workloads on hybrid clouds
CN103023980A (zh) 一种云平台处理用户服务请求的方法和系统
CN112673349A (zh) 基于QoS即服务的数据确定性可传递通信技术
CN107220107B (zh) 一种多时钟多任务并行实时仿真系统及方法
CN110347427A (zh) 网页代码的优化方法及装置
Maray et al. Dependent task offloading with deadline-aware scheduling in mobile edge networks
CN109445847A (zh) 工业服务器微内核架构实现方法
Im et al. Scheduling jobs with non-uniform demands on multiple servers without interruption
CN106648831A (zh) 基于萤火虫算法和动态优先级的云工作流调度方法
CN115827258B (zh) 分布式任务运行方法、主控服务器、仿真计算节点及系统
Teng et al. Scheduling real-time workflow on MapReduce-based cloud
Grigoras et al. Elastic management of reconfigurable accelerators
CN101996105A (zh) 可重构计算平台上的静态软硬件任务划分与调度方法
CN115502975A (zh) 一种机器人调度方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
EE01 Entry into force of recordation of patent licensing contract
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20190308

Assignee: Beijing Shuili Intelligent Building Technology Co.,Ltd.

Assignor: KYLAND TECHNOLOGY Co.,Ltd.

Contract record no.: X2022990000047

Denomination of invention: Implementation method of micro kernel architecture of industrial server

Granted publication date: 20210917

License type: Common License

Record date: 20220121