CN115167913B - 一种操作系统的分层方法、计算设备及存储介质 - Google Patents
一种操作系统的分层方法、计算设备及存储介质 Download PDFInfo
- Publication number
- CN115167913B CN115167913B CN202210922130.5A CN202210922130A CN115167913B CN 115167913 B CN115167913 B CN 115167913B CN 202210922130 A CN202210922130 A CN 202210922130A CN 115167913 B CN115167913 B CN 115167913B
- Authority
- CN
- China
- Prior art keywords
- directed
- graph
- operating system
- application
- node
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 230000001419 dependent effect Effects 0.000 claims description 36
- 230000015654 memory Effects 0.000 claims description 22
- 125000004122 cyclic group Chemical group 0.000 claims description 6
- 125000002015 acyclic group Chemical group 0.000 claims description 2
- 238000011144 upstream manufacturing Methods 0.000 claims description 2
- 238000012163 sequencing technique Methods 0.000 claims 1
- 230000006870 function Effects 0.000 description 48
- 238000010586 diagram Methods 0.000 description 25
- 238000012549 training Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 11
- 238000013145 classification model Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000012216 screening Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 5
- 238000004140 cleaning Methods 0.000 description 3
- 230000006837 decompression Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000002372 labelling Methods 0.000 description 2
- 230000007723 transport mechanism Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 230000001808 coupling effect Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及操作系统领域,特别涉及一种操作系统的分层方法、计算设备及存储介质,并包括步骤:根据操作系统中所包括的多个应用绘制有向图,有向图用于表征应用之间的依赖关系;根据有向图生成拓扑序列,拓扑序列用于表征多个应用对应节点所依赖的应用;根据拓扑序列确定操作系统的多个层级。本发明能够根据操作系统中依赖包的依赖关系,进而对操作系统的层级进行划分,实现确定操作系统的层级。
Description
技术领域
本发明涉及操作系统领域,特别涉及一种操作系统的分层方法、计算设备及存储介质。
背景技术
伴随着计算机技术本身及其应用的日益发展,操作系统逐渐变得大型化、复杂化。由于现代操作系统的复杂性,从底层向上层所涉及到的应用在数量和复杂度上呈几何数增长,而依赖关系、层次结构更为错综复杂。为了能让操作系统的结构更加清晰,易于扩充和移植,需要对操作系统进行层次结构划分。
为此,需要一种操作系统的分层方法。
发明内容
为此,本发明提供一种操作系统的分层方法,以力图解决或者至少缓解上面存在的问题。
根据本发明的一个方面,提供一种操作系统的分层方法,适于在计算设备中执行,方法包括:根据操作系统中所包括多个应用之间的依赖关系绘制有向图,有向图用于表征应用之间的依赖关系;根据有向图生成关于应用的拓扑序列,拓扑序列用于表征多个应用对应节点所依赖的应用;根据拓扑序列确定操作系统的多个层级。
可选地,在根据本发明的方法中,根据操作系统中所包括多个应用之间的依赖关系绘制有向图,包括:确定多个应用之间的一条或多条依赖关系;将每条依赖关系作为有向图中的一条有向边,得到包括多条有向边的有向图。
可选地,在根据本发明的方法中,根据有向图生成关于应用的拓扑序列,包括:确定有向图的种类,种类包括有向无环图和有向有环图;若有向图的种类为有向无环图,则根据有向无环图生成拓扑序列;若有向图的种类为有向有环图,则根据有向有环图生成有向无环图,再根据有向无环图生成拓扑序列。
可选地,根据有向有环图生成有向无环图,包括:遍历有向有环图中的有向边,确定有向有环图中包括的一个或多个环路;将一个或多个环路作为环路集,生成包括环路集的有向无环图。
可选地,在根据本发明的方法中,根据有向无环图生成拓扑序列,包括:基于有向无环图中所包括的各节点之间的依赖关系,对所有节点进行排序,得到拓扑序列,其中,有向无环图中的被依赖节点作为其依赖节点的上游节点,依赖节点作为其被依赖节点的下游节点。
可选地,在根据本发明的方法中,根据拓扑序列确定操作系统的多个层级,包括:根据拓扑序列确定拓扑序列中的关键点集;根据关键点集确定操作系统的多个层级。
可选地,在根据本发明的方法中,根据拓扑序列确定拓扑序列中的关键点集,包括:针对拓扑序列中每个节点,确定其在前的节点是否均不对在后的节点产生依赖;若是,则将该节点作为关键节点集中的关键节点。
可选地,在根据本发明的方法中,根据关键节点集确定操作系统的多个层级,包括:基于关键点集中每个关键节点在拓扑序列中所处的位置,将拓扑序列划分为多段序列;将多段序列中的每一段序列确定为一个层级,得到所述操作系统的多个层级。
根据本发明的另一个方面,提供了一种计算设备,包括:一个或多个处理器;存储器;以及一个或多个程序,其中,一个或多个程序存储在存储器中并被配置为由一个或多个处理器执行,一个或多个程序包括用于执行根据本发明的操作系统的分层方法的指令。
根据本发明的再一个方面,提供了一种存储一个或多个程序的计算机可读存储介质,一个或多个程序包括指令,该指令当由计算设备执行时,使得计算设备执行根据本发明的操作系统的分层方法。
本发明公开了一种操作系统的分层方法,适于在计算设备中执行,方法包括:根据操作系统中所包括的多个应用之间绘制有向图,有向图用于表征应用之间的依赖关系;根据有向图生成关于应用的拓扑序列,拓扑序列用于表征多个应用对应节点所依赖的应用;根据拓扑序列确定操作系统的多个层级。本发明能够根据操作系统中依赖包的依赖关系,进而对操作系统的层级进行划分,实现确定操作系统的层级。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本发明公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个示范性实施例的操作系统的分层方法100的流程示意图;
图2示出了根据本发明一个示范性实施例的计算设备200的结构框图;
图3示出了根据本发明一个示范性实施例的有向有环图的示意图;
图4示出了根据本发明一个示范性实施例的有向无环图的示意图;
图5示出了根据本发明一个示范性实施例的拓扑序列的示意图;
图6示出了根据本发明一个示范性实施例的分层的示意图;
图7示出了根据本发明一个示范性实施例的有向无环图的示意图;
图8示出了根据本发明一个示范性实施例分层架构图的示意图;
图9示出了根据本发明一个示范性实施例的应用功能分类决策的示意图;
图10示出了根据本发明一个示范性实施例的应用功能确定的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个示范性实施例的操作系统的分层方法100的流程示意图。本发明的操作系统的分层方法适于在计算设备中运行。计算设备中运行有操作系统。本发明对计算设备中所运行操作系统的种类不做限制。下面对计算设备进行介绍。
图2示出了根据本发明一个示范性实施例的计算设备的结构框图。
在基本配置中,计算设备200包括至少一个处理单元220和系统存储器210。根据一个方面,取决于计算设备的配置和类型,系统存储器210包括但不限于易失性存储(例如,随机存取存储器)、非易失性存储(例如,只读存储器)、闪速存储器、或者这样的存储器的任何组合。根据一个方面,系统存储器210包括操作系统211。
根据一个方面,操作系统211是在计算设备200上运行的重要软件,适合于管理计算设备200的内存和进程,以及所有的软件和硬件,例如,可以根据用户输入的操作指令达到控制硬件的效果,从而满足用户的需求。此外,示例结合图形库、其他操作系统、或任何其他应用程序而被实践,并且不限于任何特定的应用或系统。在图2中通过在虚线215内的那些组件示出了该基本配置。根据一个方面,计算设备200具有额外的特征或功能。例如,根据一个方面,计算设备200包括额外的数据存储设备(可移动的和/或不可移动的),例如磁盘、光盘、或者磁带。
如在上文中所陈述的,根据一个方面,在系统存储器210中存储程序模块212。根据一个方面,程序模块212可包括一个或多个应用程序,本发明不限制应用程序的类型,例如应用还包括:电子邮件和联系人应用程序、文字处理应用程序、电子表格应用程序、数据库应用程序、幻灯片展示应用程序、绘画或计算机辅助应用程序、网络浏览器应用程序等。
根据一个方面,可以在包括分立电子元件的电路、包含逻辑门的封装或集成的电子芯片、利用微处理器的电路、或者在包含电子元件或微处理器的单个芯片上实践示例。例如,可以经由其中在图2中所示出的每个或许多组件可以集成在单个集成电路上的片上系统(SOC)来实践示例。根据一个方面,这样的SOC设备可以包括一个或多个处理单元、图形单元、通信单元、系统虚拟化单元、以及各种应用功能,其全部作为单个集成电路而被集成(或“烧”)到芯片基底上。当经由SOC进行操作时,可以经由在单个集成电路(芯片)上与计算设备200的其他组件集成的专用逻辑来对在本文中所描述的功能进行操作。还可以使用能够执行逻辑操作(例如AND、OR和NOT)的其他技术来实践本发明的实施例,所述其他技术包括但不限于机械、光学、流体、和量子技术。另外,可以在通用计算机内或在任何其他任何电路或系统中实践本发明的实施例。
根据一个方面,计算设备200还可以具有一个或多个输入设备231,例如键盘、鼠标、笔、语音输入设备、触摸输入设备等。还可以包括输出设备232,例如显示器、扬声器、打印机等。前述设备是示例并且也可以使用其他设备。计算设备200可以包括允许与其他计算设备240进行通信的一个或多个通信连接233。合适的通信连接233的示例包括但不限于:RF发射机、接收机和/或收发机电路;通用串行总线(USB)、并行和/或串行端口。计算设备200可通过通信连接233与其他计算设备240通信连接。
本发明实施方式还提供一种非暂态可读存储介质,存储有指令,所述指令用于使所述计算设备执行根据本发明实施方式的方法。本实施例的可读介质包括永久性和非永久性、可移动和非可移动介质,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。可读存储介质的例子包括但不限于:相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非暂态可读存储介质。
根据一个方面,通信介质是由计算机可读指令、数据结构、程序模块、或者经调制的数据信号(例如,载波或其他传输机制)中的其他数据实施的,并且包括任何信息传递介质。根据一个方面,术语“经调制的数据信号”描述了具有一个或多个特征集或者以将信息编码在信号中的方式改变的信号。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声学、射频(RF)、红外线的、以及其他无线介质之类的无线介质。
需要说明的是,尽管上述计算设备仅示出了处理单元220、系统存储器210、输入设备231、输出设备232、以及通信连接233,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
请看图1。如图1所示,首先执行步骤110,根据操作系统中所包括的多个应用绘制有向图,有向图用于表征应用之间的依赖关系。
根据本发明的一个实施例,操作系统中可包括一个或多个应用。本发明对操作系统中所包括应用的数量和类型不做限制。操作系统中所包括的应用还可实现为软件包,即操作系统中包括一个或多个软件包,本发明对操作系统中所包括应用的种类不做限制。
根据本发明的一个实施例,根据操作系统中所包括多个应用之间的依赖关系绘制有向图时,先确定多个应用之间的一条或多条依赖关系;再将每条依赖关系作为有向图中的一条有向边,得到包括多条有向边的有向图。
根据本发明的一个实施例,应用之间具有引用或调用的依赖关系。应用包括应用信息,其中记载应用的各种描述和数据,包括版本(Version)、架构(Architecture)、摘要(Summary)、描述(Description)及依赖(Depends)关系等。本发明可通过对应用信息进行解析确定应用的依赖关系,本发明对确定应用的依赖的具体方式不做限制。
一个有向图D是指一个有序三元组(V(D),A(D),ψD),其中ψD)为关联函数,它使A(D)中的每一个元素(称为有向边或弧)对应于V(D)中的一个有序元素(称为顶点、点或节点)对。
根据本发明的一个实施例,将每一对依赖关系作为有向图中的依赖关系,将依赖关系中包括的应用作为有向图中的节点,得到有向图。
随后,执行步骤120,根据有向图生成关于应用的拓扑序列,拓扑序列用于表征多个应用对应节点所依赖的应用;具体的:先确定有向图的种类。根据本发明的一个实施例,有向图可根据有无环图划分为有向无环图和有向有环图。
若有向图为有向无环图,则根据有向无环图生成拓扑序列;
若有向图为有向有环图,则根据有向有环图生成有向无环图,再根据有向无环图生成拓扑序列。
有向无环图指的是一个无回路(或环路)的有向图。回路或环路是指节点通过有向边能够回到自身。
根据本发明的一个实施例,通过应用本身记录的依赖关系,或者通过应用文件之间依赖关系,输出针对整个操作系统的应用的依赖关系,形成一个有向图,该有向图可表示为:
G=(V,E)
由于操作系统的分层结构中需要遵循单向依赖原则,所以需要对G进行判断,判断G是否为有向无环图,若G为有向无环图(DAG),则根据有向无环图生成拓扑序列;若G为有向有环图(DCG),则需要根据环路处理算法,将有向有环图转变为有向无环图。
根据有向有环图生成有向无环图时,遍历有向有环图中的有向边,确定有向有环图中包括的一个或多个环路;接着将一个或多个环路作为环路集,生成包括环路集的有向无环图。
图3示出了根据本发明一个示范性实施例的有向有环图的示意图。如图3所示,该有向有环图表示各应用之间的依赖关系,即图3为操作系统的依赖关系图。图3中包括多个节点,每个节点代表一个应用。节点与节点之间的有向边代表应用与应用之间的依赖关系。图3中包括多个环路。遍历依赖关系,用用CircleN的方式表示环路集:
Circle0:[glibc,libselinux]
Circle1:[glibc,libselinux,libsepol]
Circle2:[glibc,libselinux,pcre2]
Circle3:[glibc,bash]
Circle4:[glibc,bash,filesystem]
Circle5:[glibc,bash,ncurses]
Circle6:[glibc,basesystem,filesystem,bash]
Circle7:[glibc,basesystem,filesystem,bash,ncurses]
其中,自依赖关系不作为环路处理。
接着将代入到有向有环图中,可以将操作系统的依赖关系图中环关系消除,操作系统依赖图将转变为DAG,将该DAG记为Gi。
图4示出了根据本发明一个示范性实施例的有向无环图的示意图。如图4所示,该有向无环路中已经不包括环路。
根据本发明的一个实施例,根据有向无环图生成拓扑序列时,将有向无环图中被依赖节点作为在前的节点,依赖节点作为在后的节点,对有向无环图中所包括的各节点进行排序,得到拓扑序列。在拓扑序列中,被依赖越多的节点位置越靠后,依赖其他节点越少的节点的位置越靠前。
根据本发明的一个实施例,如图4所示,其中,节点readline依赖节点texinfo。节点readline为依赖节点,节点texinfo为被依赖节点。因此,拓扑序列中,将节点readline作为在前的节点,节点texinfo作为在后的节点。
图5示出了根据本发明一个示范性实施例的拓扑序列的示意图。如图5所示,图5为图4所示的有向无环图的一个拓扑序列的实例。
根据本发明的一个实施例,在确定有向无环图的拓扑序列时,由于每个有向图可能有多种组成拓扑序列的方式,所以需要从中确定一个拓扑序列。生成拓扑序列的过程中,当有多个节点可以选择时,则根据这多个节点被依赖的次数数据进行排序,被依赖数据较高者,在拓扑排序中位置越靠后。
最后,执行步骤130,根据拓扑序列确定操作系统的多个层级;具体的:根据拓扑序列确定拓扑序列中的关键点集;根据关键点集确定操作系统的多个层级。
根据本发明的一个实施例,根据拓扑序列确定所述拓扑序列中的关键点集时,针对拓扑序列中每个节点,确定其在前的节点是否均不对在后的节点产生依赖;若是,则将该节点作为关键点集中的关键节点。
若一个节点为关键节点,则该节点在DAG的拓扑排序中,可以作为每一层界限的节点,使得各层不会出现跨层依赖,是层次的边界。根据本发明的一个实施例,在Gi的拓扑序列中,存在节点集V={v1,v2...,vn},存在于该节点集中任一节点vx的所处位置之前的所有节点都不对vx节点所处位置之后的节点产生依赖,该节点集称为关键节点集。
根据本发明的一个实施例,根据关键节点集确定操作系统的多个层级时,基于关键点集中每个关键节点在拓扑序列中所处的位置,将拓扑序列划分为多段序列;将多段序列中的每一段序列确定为一个层级,得到操作系统的多个层级。
将拓扑序列划分为多段序列时,将关键节点与依赖关键节点的其他节点划分为一个层级。
根据本发明的一个实施例,图6示出了根据本发明一个示范性实施例的分层的示意图。如图6所示:以readline的有向无环图的拓扑序列进行划分层级,根据关键节点的定义,将有一个关键节点集存在,即为V={Circle0~7},这个关键节点集中有一个关键节点存在,将readline的依赖关系分为2层。
根据本发明的一个实施例,在该拓扑序列的划分时,令入度节点为0的节点readline单独列为一个层级,在该DAG的拓扑序列中,将关键节点抽离后,剩余部分拓扑序列将出现2个层级,形成全序结构,实现对操作系统层级的划分。层次结构有全序和半序之分。各层之间为单向依赖,每层之间模块保持独立,则这种层次结构被称为全序。如果各层之间是单向依赖,但某些层内允许有相互调用的关系,则这种层次结构成为半序。
根据本发明的一个实施例,podman的应用依赖关系可绘制依赖关系图。图7示出了根据本发明一个示范性实施例的有向无环图的示意图。如图7所示,图7以有向无环图的形式示出了podman的依赖关系图。
随后根据图7生成拓扑序列。根据本发明的一个实施例,在生成拓扑序列中多个同时被依赖的应用或依赖应用在拓扑序列中的次序时,可通过各应用的权重进行排序。
得到拓扑序列:
[′podman′,′skopeo′,′conmon′,′fuse-overlayfs′,′containernetworking-plugins′,′libvarlink′,′slirp4netns′,′runc′,′criu′,′container-selinux′,′protobuf-c′,′libnet′]
根据拓扑序列和有向无环图可确定关键节点集:
{criu,container-selinux}
根据关键节点集进行分层得到分层结果:
起始软件包或应用:[′podman′]
第三层(Level3):[′skopeo′,′conmon′,′fuse-overlayfs′,′containernetworking-plugins′,′libvarlink′,′slirp4netns′,′runc′]
第二层(Level2):[′criu′,′container-selinux′]
第一层(Level1):[′protobuf-c′,′libnet′]
根据分层结果,可得到Podman的分层架构图。图8示出了根据本发明一个示范性实施例分层架构图的示意图。如图8所示,图8示出了Podman作为云原生子系统的示意图,包括多个层级,每个层级包括多个应用。
本发明公开了一种操作系统的分层方法,适于在在计算设备中执行,方法包括:根据操作系统中所包括多个应用之间的依赖关系绘制有向图;根据有向图生成关于应用的拓扑序列;根据拓扑序列确定操作系统的多个层级。本发明能够根据操作系统中依赖包的依赖关系,进而对操作系统的层级进行划分,实现确定操作系统的层级。
本发明通过对有向有环图采用缩点方式处理为有向无环图,可以解决操作系统分层分级过程中无法处理循环依赖关系问题,使得操作系统的依赖关系可以形成一个有序的关系。本发明中可使用软件包被依赖数量作为判断权重,解决拓扑序列生成过程中无法确定先后顺序的问题。通过增加关键节点的定义,解决了无法对拓扑序拆分层级的问题。在获取到分层级的数据后,通过TextRank、kNN、Naive Bayes等算法提取出层级特征关键字,解决了每个层级的定义问题。
通过本发明描述方式,可以设计实现出一套完整的工具,开发者可以使用该工具获得操作系统中任意完整依赖关系的分层分级数据,并可以获得每个层级定义的特征关键字。
根据本发明的一个实施例,在对操作系统的层级确定后,还可确定各层级的特征,具体步骤如下:
首先,获取一个或多个应用中每个应用的应用信息,根据应用的应用信息确定应用的特征数据。根据本发明的一个实施例,每个层级中可包括一个或多个应用。本发明对层级中所包括应用的数量和类型不做限制。操作系统中所包括的应用还可实现为软件包,即操作系统的层级中包括一个或多个软件包,本发明对操作系统中所包括程序的具体种类不做限制。
根据应用的应用信息确定应用的特征数据时,对应用的应用信息进行数据清洗,得到应用的一个或多个特征关键词,将一个或多个特征关键词确定为应用的特征数据。
根据本发明的一个实施例,应用包括应用信息,其中记载应用的各种描述和数据,包括版本(Version)、架构(Architecture)、摘要(Summary)、描述(Description)及依赖(Depends)关系等。本发明可通过对应用信息进行解析确定应用的特征数据,本发明对确定应用的特征数据的具体方式不做限制。
根据本发明的一个实施例,应用的特征数据在其对应的应用信息中记载。应用信息可具体实现为自然语言的英文描述。本发明对应用信息的具体呈现方式不做限制。为了便于根据应用信息确定应用的特征,首先需要提取应用的应用信息组成元数据,然后对这些元数据进行规范和清洗,得到特征数据。
在进行数据清洗时,通过分箱法对应用信息进行筛选得到筛选数据,所述筛选数据中包括可以确定应用的特征的信息。
随后,对筛选数据进行清洗得到一个或多个特征关键词。
根据本发明的一个实施例,可通过分箱法将应用的元数据做大致的初筛和清洗,将应用的名称、摘要、描述这三项定义为确定应用特征的筛选数据。但是这些筛选数据还并不能直接使用,其中包含大量的自然语言,需要进行预操作,把筛选数据转化为可以进行特征解析的数据。
根据本发明的一个实施例,可通过自然语言处理工具包(NLTK)对软件包的筛选数据进行清洗。首先通过NLTK将筛选数据进行分句,对分好的句进行分词并标注词性,去除停用词和标点符号。根据分词后的单词词性获取名词、动词、形容词、副词,再进行词频统计,最终获取包括一个或多个特征关键词的特征数据。
随后,根据应用的特征数据确定应用的特征。根据本发明的一个实施例,应用的特征包括类型特征和功能特征。确定类型特征时,根据预先构建的特征关键词典确定特征关键词所属的应用类型;再根据特征数据中特征关键词所属的应用类型确定应用的类型特征。
根据本发明的一个实施例,一个应用的应用信息包括:“zlib是一个解/压缩库”。该应用中类型特征为“库”;功能特征为:“解/压缩”。
根据本发明的一个实施例,特征关键词典包括一个或多个应用类型,每个应用类型包括一个或多个特征关键词,每个特征关键词具有权重。
特征关键词典的构建过程,包括:获取多个应用的应用信息,根据应用的应用信息进行数据清洗得到特征关键词集;确定特征关键词集中每个特征关键词对应的权重和应用类型;根据特征关键词及对应的权重和应用类型构建特征关键词典。
根据本发明的一个实施例,特征关键词典中应用类型包括库、服务、应用/工具。本发明对特征关键词典中所包括应用类型的具体数目和形式不做限制。
根据本发明的一个实施例,特征关键词典中每个特征关键词的权重可通过标注确定,或根据特征关键词出现的频率进行确定。
根据特征数据中特征关键词所属的应用类型确定应用的类型特征时,根据特征关键词的权重及所属应用类型,分别确定应用所属每种应用类型的权重;将应用所属每种应用类型的权重中最大值所对应的应用类型,确定为应用的类型特征。
根据本发明的一个实施例,若应用的特征关键词包括库文件、软件服务。其中,库文件为“库”应用类型中的特征关键词,权重为10,软件服务为“服务”应用类型中的特征关键词,权重为80。随后将权重为80对应的应用类型“服务”,作为该应用的应用类型。
根据本发明的一个实施例,应用的特征还包括功能特征,根据应用的特征数据确定应用的特征,还包括:根据预设功能分类列表确定应用的功能特征。
根据本发明的一个实施例,预设功能分类列表中可包括多种功能及对应的应用类型或应用名称,根据应用类型或应用名称可从预设功能列表中查找到该应用对应的功能分类,从而确定功能特征。
根据本发明的一个实施例,功能分类可包括:网络、I/O、存储、安全、压缩/解压缩、数据库、中间件、虚拟化等。本发明对功能分类所包括的具体类型和数目不做限制。
根据本发明的一个实施例,若预设功能分类未记载应用的功能特征,则确定应用的一个或多个依赖包;在应用的一个或多个依赖包中选取同一层级依赖的一个或多个依赖包,作为同级依赖包,得到包括一个或多个同级依赖包的同级依赖包集合;根据同级依赖包中每个同级依赖包的功能特征确定应用具有各功能特征的概率,得到多个概率值;根据各层级的同级依赖包得到的多个概率值确定应用的功能特征。
根据本发明的一个实施例,软件设计开发过程中,遵循“高内聚低耦合”原则,操作系统也不例外,相似功能的模块高内聚,因此软件包的功能特征解析将围绕这一原则进行展开。在通用操作系统中,一个单独的软件的运行是无法对用户提供服务的,所以解析一个软件包的功能,一要根据其自身的聚合性,二要根据其耦合性,聚合性求自身,耦合性求依赖。
因此,根据本发明的一个实施例,本发明可采用KNN算法模型确定应用的功能分类。具体的:根据分类决策原则,需要圈定一个与其中一个软件包相似度最高的一个点的范围,从而最终以多数表决原则确定该软件包的功能类别。
图9示出了根据本发明一个示范性实施例的应用功能分类决策的示意图。如图9所示:待分类应用A其直接依赖包为B、C、D;依赖包C又对依赖包E和依赖包F构成依赖,依赖包E和依赖包F为应用A的间接依赖包,应用A其直接依赖与间接依赖均在圈定范围内,那么依赖包A的功能分类概率为P(A)=(P(B)+P(C)+P(D))/3,其中D依赖包功能概率P(D)是已知的,P(B)=1,C功能概率P(C)为,P(C)=(P(E)+P(F))/2,其中D依赖包与E依赖包并不存在依赖关系。D、E依赖包功能概率只能从D、E依赖包信息中推断而出。摘要和描述中会存在依赖包的功能描述。使用朴素贝叶斯分类法可以推导出D、E依赖包的分类概率P(D)、P(E)。
根据本发明的一个实施例,应用若有k层依赖关系,则根据分层的依赖数据结构将依赖范围作为K的取值范围,以每层依赖的功能的相似度作为距离度量,以每层依赖中所有软件包所代表的特征功能的概率作为分类决策的规则,即在K层依赖范围内,哪一层中某一功能的平均概率越大,则该应用属于哪一功能的概率就越高。
根据操作系统依赖分层结构图,假设某一层所代表的所有功能概率为1,此依赖层级共有n个软件包,那其中包涵的每一个软件包的平均概率为1/n,其中k个软件包的功能是已经知晓的,还有x个软件包概率是不知晓的,所以这一层所有软件包的功能概率为:(1*k+x*p(x))/n,整个应用功能的平均概率为:
该平均概率即为此应用属于各个功能类别的概率,概率越大表明票数越多,那这个软件包的功能与此功能近似度越高。
根据本发明的一个实施例,在确定每一层级依赖中,属于哪一项功能的概率最大后,可对各层级的功能概率进行统计,对各层级属于各项功能类别的概率进行加权,从而最终确定应用的功能类别。
根据本发明的一个实施例,根据应用的第一层级依赖确定该层级中,属于功能类别1的概率为50%。属于功能类别2的概率为50%。根据应用的第二层级确定该层级中,属于功能类别1的概率为20%,属于功能类别2的概率为80%,则确定应用属于功能类别1的权重为0.7,属于功能类别2的权重为1.3,则确定应用的功能特征为功能类别2。
图10示出了根据本发明一个示范性实施例的应用功能确定的示意图。如图10所示,以待分类应用为原点,待分类应用的直接依赖为依赖包s1,s2,s3,s4,s5,s6,s7,分别在图10中以点的形式示出,在图中可以看到,点s1,s2,s3属于fun1功能类,点s4,s5属于fun2功能类,假设功能类权重占比是均匀的,范围都在直接依赖范围内,根据KNN算法原理,只要计算出直接依赖这七个点中大多数点属于哪个类别就可以判断出待分类软件包的类别,但是其中两个点s6,s7功能类别是不确定的,而这两个点的类别也决定了待分类软件包的类别,所以首先要确定s6,s7这两个点(未知软件包)的功能分类p(x)才能最终确定待分类软件包功能分类。未知依赖包的功能分类可以根据依赖包包的信息进行确定。
根据本发明的一个实施例,确定应用的功能特征时,还可根据应用的特征数据确定应用的一个或多个功能关键词;再将应用的一个或多个功能关键词输入分类模型,得到分类结果,根据分类结果确定应用的功能特征。
根据本发明的一个实施例,可在无法根据依赖包确定应用的功能特征时,或者应用没有依赖包时根据功能关键词进行确定功能分类。本发明对确定应用的功能分类时的具体应用场景不做限制。
根据本发明的一个实施例,分类模型的构建方法包括:获取多个应用的应用信息,根据应用信息确定包括每个应用的功能关键词集,功能关键词集包括一个或多个功能关键词;将每个应用作为一个训练样本,得到包括多个训练样本的训练样本集,每个训练样本包括应用的功能特征及功能关键词集;根据训练样本集训练分类模型。
根据本发明的一个实施例,所训练的分类模型可具体为朴素贝叶斯分类模型,本发明对分类模型的具体实现方式不做限制。
根据本发明的一个实施例,在构建训练样本集时,可划分多个功能类别。再对多个应用进行功能类别的标注。标注时,可对整个ISO/仓库软件包进行功能分类,挑选对应的应用作为分类的基础数据,然后提取每一类应用的特征信息。这一阶段的输入为ISO/仓库的分类及数据,输出是特征类别和训练样本。
随后,计算每个类别在训练样本中的出现频率及每个功能分类划分对每个类别的条件概率估计,并将结果记录。在这一阶段中将可以得到的应用的信息(如:摘要和描述)中可提取的可能代表其功能类别的名词、动词、形容词、副词作为其关键词,并提取出这些词在摘要和描述中的词频,以关键词加词频作为其进行训练的功能特征,最终以某一功能类的多个软件包的功能特征作为其训练样本。根据本发明的一个实施例,可采用NLTK提供的贝叶斯分类器完成输入和训练。
根据本发明的一个实施例,在根据训练好的分类模型对应用的功能特征进行确定时,输入分类器应用的功能关键词集,输出是应用在各功能类别内的概率。在这一阶段中可提取待分类应用的摘要和描述信息,并在其中提取可代表其功能的功能关键词集作为分类器的输入,输出则为待分类软件包与各个类别的相似概率。
根据本发明的一个实施例,上述分类模型还可用于确定位置功能类型的依赖包的功能类别,输入依赖包的功能关键词进行确定。将未知功能类别的依赖包确定为已知功能类别的依赖包,再根据KNN算法模型确定应用的功能分类。
最后,根据层级所包括应用的特征确定操作系统的层级的特征。
根据本发明的一个实施例,确定操作系统的层级的特征时,可根据层级所包括应用的特征确定操作系统的层级所包括特征的特征集合;根据特征集合中出现最多的特征确定操作系统的层级的特征。
确定特征集合后,可对特征按照出现次数进行排序。出现次数最多的特征即为层级的特征。
根据本发明的一个实施例,操作系统的层级的特征包括类型特征和功能特征。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组间可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组间组合成一个模块或单元或组间,以及此外可以把它们分成多个子模块或子单元或子组间。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如软盘、CD-ROM、硬盘驱动器或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的操作系统的分层方法。
以示例而非限制的方式,计算机可读介质包括计算机存储介质和通信介质。计算机可读介质包括计算机存储介质和通信介质。计算机存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在计算机可读介质的范围之内。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的。
Claims (7)
1.一种操作系统的分层方法,适于在计算设备中执行,所述方法包括:
根据所述操作系统中所包括的多个应用绘制有向图,所述有向图用于表征应用之间的依赖关系;
根据所述有向图生成拓扑序列,所述拓扑序列用于表征所述多个应用对应节点所依赖的应用;
根据所述拓扑序列确定所述操作系统的多个层级,包括:
根据所述拓扑序列确定所述拓扑序列中的关键点集;
根据所述关键点集确定所述操作系统的多个层级;
其中,所述根据所述拓扑序列确定所述拓扑序列中的关键点集,包括:
针对所述拓扑序列中每个节点,确定其在前的节点是否均不对在后的节点产生依赖;
若是,则将该节点作为所述关键点集中的关键节点;
根据所述关键点集确定所述操作系统的多个层级,包括:
基于所述关键点集中每个关键节点在所述拓扑序列中所处的位置,将所述拓扑序列划分为多段序列;
将多段序列中的每一段序列确定为一个层级,得到所述操作系统的多个层级,所述关键节点在拓扑序列中作为每一层级界限的节点,使得各层不会出现跨层依赖。
2.如权利要求1所述的方法,其中,所述根据所述操作系统中所包括的多个应用绘制有向图,包括:
确定所述多个应用之间的一条或多条依赖关系;
将每条依赖关系作为所述有向图中的一条有向边,得到包括多条有向边的有向图。
3.如权利要求1所述的方法,其中,所述根据所述有向图生成拓扑序列,包括:
确定所述有向图的种类,所述种类包括有向无环图和有向有环图;
若所述有向图的种类为有向无环图,则根据所述有向无环图生成拓扑序列;
若所述有向图的种类为有向有环图,则根据所述有向有环图生成有向无环图,再根据所述有向无环图生成所述拓扑序列。
4.如权利要求3所述的方法,其中,所述根据所述有向有环图生成有向无环图,包括:
遍历所述有向有环图中的有向边,确定所述有向有环图中包括的一个或多个环路;
将所述一个或多个环路作为环路集,生成包括环路集的有向无环图。
5.如权利要求3或4所述的方法,其中,所述根据所述有向无环图生成所述拓扑序列,包括:
基于所述有向无环图中所包括的各节点之间的依赖关系,对所有节点进行排序,得到拓扑序列,其中,所述有向无环图中的被依赖节点作为其依赖节点的上游节点,依赖节点作为其被依赖节点的下游节点。
6.一种计算设备,包括:
一个或多个处理器;
存储器;以及
一个或多个程序,其中,一个或多个程序存储在存储器中并被配置为由一个或多个处理器执行,一个或多个程序包括用于执行根据权利要求1-5中任一项所述的方法的指令。
7.一种存储一个或多个程序的计算机可读存储介质,所述一个或多个程序包括指令,所述指令当由计算设备执行时,使得所述计算设备执行根据权利要求1-5中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410606117.8A CN118519675A (zh) | 2022-08-02 | 2022-08-02 | 一种操作系统的分层方法、计算设备及存储介质 |
CN202210922130.5A CN115167913B (zh) | 2022-08-02 | 2022-08-02 | 一种操作系统的分层方法、计算设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210922130.5A CN115167913B (zh) | 2022-08-02 | 2022-08-02 | 一种操作系统的分层方法、计算设备及存储介质 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410606117.8A Division CN118519675A (zh) | 2022-08-02 | 2022-08-02 | 一种操作系统的分层方法、计算设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115167913A CN115167913A (zh) | 2022-10-11 |
CN115167913B true CN115167913B (zh) | 2024-06-04 |
Family
ID=83476957
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210922130.5A Active CN115167913B (zh) | 2022-08-02 | 2022-08-02 | 一种操作系统的分层方法、计算设备及存储介质 |
CN202410606117.8A Pending CN118519675A (zh) | 2022-08-02 | 2022-08-02 | 一种操作系统的分层方法、计算设备及存储介质 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410606117.8A Pending CN118519675A (zh) | 2022-08-02 | 2022-08-02 | 一种操作系统的分层方法、计算设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN115167913B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116048584A (zh) * | 2023-02-10 | 2023-05-02 | 中国银联股份有限公司 | 一种系统升级方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102880466A (zh) * | 2012-09-04 | 2013-01-16 | 中标软件有限公司 | 一种Linux操作系统软件包依赖关系检测方法 |
US11093221B1 (en) * | 2020-02-14 | 2021-08-17 | Red Hat, Inc. | Automatic containerization of operating system distributions |
CN113742534A (zh) * | 2021-08-13 | 2021-12-03 | 贵州电网有限责任公司 | 一种多能源系统控制和保护系统的自动建模及可视化方法 |
CN114327473A (zh) * | 2021-12-15 | 2022-04-12 | 中电信数智科技有限公司 | 一种软件包依赖关系检测方法 |
CN114546432A (zh) * | 2022-02-28 | 2022-05-27 | 广联达科技股份有限公司 | 一种多应用的部署方法、装置、设备及可读存储介质 |
-
2022
- 2022-08-02 CN CN202210922130.5A patent/CN115167913B/zh active Active
- 2022-08-02 CN CN202410606117.8A patent/CN118519675A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102880466A (zh) * | 2012-09-04 | 2013-01-16 | 中标软件有限公司 | 一种Linux操作系统软件包依赖关系检测方法 |
US11093221B1 (en) * | 2020-02-14 | 2021-08-17 | Red Hat, Inc. | Automatic containerization of operating system distributions |
CN113742534A (zh) * | 2021-08-13 | 2021-12-03 | 贵州电网有限责任公司 | 一种多能源系统控制和保护系统的自动建模及可视化方法 |
CN114327473A (zh) * | 2021-12-15 | 2022-04-12 | 中电信数智科技有限公司 | 一种软件包依赖关系检测方法 |
CN114546432A (zh) * | 2022-02-28 | 2022-05-27 | 广联达科技股份有限公司 | 一种多应用的部署方法、装置、设备及可读存储介质 |
Non-Patent Citations (1)
Title |
---|
一种基于有向无环图的依赖管理机制及实现;颜雨1;李洋昕2;张咏秋2;《通信技术》;20201231;第第53卷卷(第第12期期);第2989-2994页 * |
Also Published As
Publication number | Publication date |
---|---|
CN115167913A (zh) | 2022-10-11 |
CN118519675A (zh) | 2024-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Krishnaraj et al. | An efficient radix trie‐based semantic visual indexing model for large‐scale image retrieval in cloud environment | |
US20200356901A1 (en) | Target variable distribution-based acceptance of machine learning test data sets | |
US20200184272A1 (en) | Framework for building and sharing machine learning components | |
US20160307113A1 (en) | Large-scale batch active learning using locality sensitive hashing | |
US6687705B2 (en) | Method and system for merging hierarchies | |
TW202029079A (zh) | 異常群體識別方法及裝置 | |
JP2022535165A (ja) | 多数の分類モジュールから集約された情報を使用するデータ分類 | |
Alham et al. | A MapReduce-based distributed SVM ensemble for scalable image classification and annotation | |
US20050262039A1 (en) | Method and system for analyzing unstructured text in data warehouse | |
US20190005043A1 (en) | Automated Digital Asset Tagging using Multiple Vocabulary Sets | |
WO2020003109A1 (en) | Facet-based query refinement based on multiple query interpretations | |
CN115167913B (zh) | 一种操作系统的分层方法、计算设备及存储介质 | |
CN112540973A (zh) | 一种基于关联规则的网络可视化方法 | |
CN115146741B (zh) | 一种操作系统层级的特征确定方法、计算设备及存储介质 | |
WO2023129353A1 (en) | Enhanced lexicon-based classifier models with tunable error-rate tradeoffs | |
US11989628B2 (en) | Machine teaching complex concepts assisted by computer vision and knowledge reasoning | |
CN107402886B (zh) | 堆栈分析方法及相关装置 | |
US20230334742A1 (en) | Apparatus, system, and method for generating a video avatar | |
CN111259975B (zh) | 分类器的生成方法及装置、文本的分类方法及装置 | |
CN115544257B (zh) | 网盘文档快速分类方法、装置、网盘及存储介质 | |
US20230259761A1 (en) | Transfer learning system and method for deep neural network | |
US20230162518A1 (en) | Systems for Generating Indications of Relationships between Electronic Documents | |
CN115129890A (zh) | 回馈数据图谱生成方法、生成设备、问答设备及冰箱 | |
JP2008165572A (ja) | データ分類装置、データ分類プログラム | |
Wen et al. | Computing k-cores in large uncertain graphs: An index-based optimal approach |
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 |