CN112346879B - 进程管理方法、装置、计算机设备及存储介质 - Google Patents

进程管理方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN112346879B
CN112346879B CN202011235859.2A CN202011235859A CN112346879B CN 112346879 B CN112346879 B CN 112346879B CN 202011235859 A CN202011235859 A CN 202011235859A CN 112346879 B CN112346879 B CN 112346879B
Authority
CN
China
Prior art keywords
lock
structure body
private
access
global
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
Application number
CN202011235859.2A
Other languages
English (en)
Other versions
CN112346879A (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.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network 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 Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN202011235859.2A priority Critical patent/CN112346879B/zh
Publication of CN112346879A publication Critical patent/CN112346879A/zh
Application granted granted Critical
Publication of CN112346879B publication Critical patent/CN112346879B/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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

本申请提供一种进程管理方法、装置、计算机设备及存储介质,涉及计算机应用技术领域。该方法包括:第一进程确定访问第二进程的结构体,第二进程的结构体包括第一结构体和第二结构体,第一结构体为供多个进程共享的结构体,第一结构体对应一全局锁,全局锁用于控制多个进程访问第一结构体,第二结构体为第二进程的私有结构体,第二结构体对应一私有锁,私有锁用于控制第二进程访问第二结构体;第一进程根据第一结构体的全局锁和/或第二结构体的私有锁,访问第二进程的结构体。本方案中,通过结构体拆分方式和锁的分配方式,可以有效的收缩全局锁的粒度,从而全局锁的竞态概率降低,实现了进程管理的高并发性。

Description

进程管理方法、装置、计算机设备及存储介质
技术领域
本发明涉及计算机应用技术领域,具体而言,涉及一种进程管理方法、装置、计算机设备及存储介质。
背景技术
在操作系统中,进程管理是操作系统的功能之一,特别是多任务处理的状况下,这是必要的功能。在Linux操作系统中,一个进程对应一个结构体,该结构体包含了进程相关的功能数据。对进程的管理相当于对这个结构体的管理,包括了进程的查询、增删和修改等部分,其中查询对应进程数据的访问,增删对应进程的创建与退出,修改对应进程的状态变化。
现有技术中,进程的查询、增删和修改均使用全局的读写锁来保护,要对进程进行相关操作,首先需要获取对应锁。也即,在进行进程查询时,持有读锁,在进程增删修改时,持有写锁。
上述方法,在进程频繁的进行增删,并且其他的进程频繁的持有读锁时,就会使得进程读写锁繁忙阻塞,从而导致进程管理低效,并发性不足。
发明内容
本发明的目的在于,针对上述现有技术中的不足,提供一种进程管理方法、装置、计算机设备及存储介质,以便于解决现有技术中存在的进程管理效率较低的问题。
为实现上述目的,本申请实施例采用的技术方案如下:
第一方面,本申请实施例提供了一种进程管理方法,应用于运行有linux进程的Windows系统中,所述方法包括:
第一进程确定访问第二进程的结构体,所述第二进程的结构体包括第一结构体和第二结构体,所述第一结构体为供多个进程共享的结构体,所述第一结构体对应一全局锁,所述全局锁用于控制多个进程访问所述第一结构体,所述第二结构体为所述第二进程的私有结构体,所述第二结构体对应一私有锁,所述私有锁用于控制所述第二进程访问所述第二结构体;
所述第一进程根据所述第一结构体的全局锁和/或所述第二结构体的私有锁,访问所述第二进程的结构体。
可选地,所述第一进程根据所述第一结构体的全局锁和/或所述第二结构体的私有锁,访问所述第二进程的结构体,包括:
若所述第一进程与所述第二进程为不同的进程,则所述第一进程根据所述第一结构体的全局锁,访问所述第二进程的第一结构体。
可选地,所述第一进程根据所述第一结构体的全局锁,访问所述第二进程的第一结构体,包括:
若所述全局锁的当前状态为未加锁或者为读模式下的加锁,则所述第一进程读取所述第二进程的第一结构体。
可选地,所述第一进程根据所述第一结构体的全局锁,访问所述第二进程的第一结构体,还包括:
若所述全局锁的当前状态为未加锁,则所述第一进程向所述第二进程的第一结构体进行数据写入,所述数据写入包括:数据增加、数据修改或数据删除。
可选地,所述第一进程根据所述第一结构体的全局锁和/或所述第二结构体的私有锁,访问所述第二进程的结构体,包括:
若所述第一进程与所述第二进程为同一进程,则所述第一进程根据所述第一结构体的全局锁和/或所述第二结构体的私有锁,访问所述第二进程的第一结构体和/或第二结构体。
可选地,所述第一进程根据所述第二结构体的私有锁,访问所述第二结构体,包括:
若所述私有锁的当前状态为未加锁或者为读模式下的加锁,则所述第一进程的第一线程读取所述第二进程的第二结构体。
可选地,所述第一进程根据所述第二结构体的私有锁,访问所述第二结构体,包括:
若所述私有锁的当前状态为未加锁,则所述第一进程的第一线程向所述第二进程的第二结构体进行数据写入,所述数据写入包括:数据增加、数据修改或数据删除。
可选地,所述第二进程的结构体保存在预设的一维数组中,所述一维数组保存在连续的内存地址中。
可选地,所述第二进程的进程标识为所述保存所述第一结构体的一维数组的元素的下标,或者,所述第二进程的进程标识为所述保存所述第二结构体的一维数组的元素的下标。
第二方面,本申请实施例还提供了一种进程管理装置,所述装置包括:确定模块、访问模块;
所述确定模块,用于第一进程确定访问第二进程的结构体,所述第二进程的结构体包括第一结构体和第二结构体,所述第一结构体为供多个进程共享的结构体,所述第一结构体对应一全局锁,所述全局锁用于控制多个进程访问所述第一结构体,所述第二结构体为所述第二进程的私有结构体,所述第二结构体对应一私有锁,所述私有锁用于控制所述第二进程访问所述第二结构体;
所述访问模块,用于所述第一进程根据所述第一结构体的全局锁和/或所述第二结构体的私有锁,访问所述第二进程的结构体。
可选地,所述访问模块,具体用于若所述第一进程与所述第二进程为不同的进程,则所述第一进程根据所述第一结构体的全局锁,访问所述第二进程的第一结构体。
可选地,所述访问模块,具体用于若所述全局锁的当前状态为未加锁或者为读模式下的加锁,则所述第一进程读取所述第二进程的第一结构体。
可选地,所述访问模块,具体用于若所述全局锁的当前状态为未加锁,则所述第一进程向所述第二进程的第一结构体进行数据写入,所述数据写入包括:数据增加、数据修改或数据删除。
可选地,所述访问模块,还用于若所述第一进程与所述第二进程为同一进程,则所述第一进程根据所述第一结构体的全局锁和/或所述第二结构体的私有锁,访问所述第二进程的第一结构体和/或第二结构体。
可选地,所述访问模块,具体用于若所述私有锁的当前状态为未加锁或者为读模式下的加锁,则所述第一进程的第一线程读取所述第二进程的第二结构体。
可选地,所述访问模块,具体用于若所述私有锁的当前状态为未加锁,则所述第一进程的第一线程向所述第二进程的第二结构体进行数据写入,所述数据写入包括:数据增加、数据修改或数据删除。
可选地,所述第二进程的结构体保存在预设的一维数组中,所述一维数组保存在连续的内存地址中。
可选地,所述第二进程的进程标识为所述保存所述第一结构体的一维数组的元素的下标,或者,所述第二进程的进程标识为所述保存所述第二结构体的一维数组的元素的下标。
第三方面,本申请实施例提供了一种计算机设备,包括:处理器、存储介质和总线,存储介质存储有处理器可执行的机器可读指令,当计算机设备运行时,处理器与存储介质之间通过总线通信,处理器执行机器可读指令,以执行时执行如第一方面中提供的进程管理方法的步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,该存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如第一方面提供的进程管理方法的步骤。
本申请的有益效果是:
本申请提供一种进程管理方法、装置、计算机设备及存储介质,该方法包括:第一进程确定访问第二进程的结构体,第二进程的结构体包括第一结构体和第二结构体,第一结构体为供多个进程共享的结构体,第一结构体对应一全局锁,全局锁用于控制多个进程访问第一结构体,第二结构体为第二进程的私有结构体,第二结构体对应一私有锁,私有锁用于控制第二进程访问第二结构体;第一进程根据第一结构体的全局锁和/或第二结构体的私有锁,访问第二进程的结构体。本方案中,通过将进程的结构体拆分为供多个进程之间互相访问的第一结构体和仅供进程自身内部多个线程访问的第二结构体,对第一结构体分配全局锁,第二结构体分配私有锁,通过这种结构体拆分方式和锁的分配方式,可以有效的收缩全局锁的粒度,使得全局锁的读写都仅限于特定的少量的多个进程之间的共享数据的访问,而在进程内部的线程所需要的第二结构体内容的访问,则是通过进程私有的私钥锁实现,从而全局锁的竞态概率降低,实现了进程管理的高并发性。
其次,通过数组的方式保存进程的结构体比链表的方式(Linux内核下是多个链表)具有更好的缓存性能,由于结构体中包含的进程标识pid就是数组的下标,所以对于特定pid的查找是直接获得,没有查找过程,性能较好。
另外,在顺序锁的基础上,本方法的遍历采用循环内部上顺序锁的读锁,也就是允许在遍历的中间发生写锁并发,极大的降低了并发的粒度,降低高并发线程创建删除情况下的遍历阻塞影响程度。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种进程管理方法的流程示意图;
图2为本申请实施例提供的另一种进程管理方法的流程示意图;
图3为本申请实施例提供的一种进程管理装置的示意图;
图4为本申请实施例提供的计算机设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请实施例中将会用到术语“包括”,用于指出其后所声明的特征的存在,但并不排除增加其它的特征。
首先,对本申请的进程管理方法的一些相关技术进行简单说明:
在Windows系统下模拟实现Linux内核,就需要对Linux下的进程和线程概念进行模拟,Linux内核下线程也可以叫做进程,在Windows系统下模拟Linux内核的管理,也即在Windows系统模拟实现Linux进程的管理。进程管理就包括了增删与数据修改两部分。其中增删对应进程的创建与退出,修改对应进程的状态变化。
通常,对Linux内核的模拟是采用的多进程方案,要跨进程的实现进程进行管理,需要设计合理的进程数据结构和跨进程的pid(Process Identification,进程标识)的管理方法。这种方法有很多,但是需要同时满足跨Windows进程和高性能两个要素,就需要数据的共享尽可能的无锁或小锁,并且要求对共享数据的操作保持在最小尺度。
在Linux中,代表一个进程的结构体是struct task_struct,一个进程对应一个这个结构体,对进程的管理大致相当于对这个结构体的管理。该结构体十分复杂,包含了进程方方面面的功能数据。对这个结构体的管理就包括了增删与数据修改两部分。其中增删对应进程的创建与退出,修改对应进程的状态变化。
现有技术中,对于Linux进程的管理(进程的增删改查)使用一个全局的读写锁来保护,进程组的领袖被按照父子关系使用链表组织成一棵树,并且会加入一个全局链表,其它的进程分别被组织进进程组的领袖的私有链表中。所有的这些链表被使用同一个读写锁保护,这也就意味着创建进程和删除进程的链表操作过程是互斥的,并且跨多个数据结构。
上述现有技术存在的一定的缺陷:在遍历搜索进程(例如wait调用)的时候持有读锁,在进程增删的时候持有写锁。而且Linux下的写锁操作比较重,也就是说当进程频繁的增删,并且另外的进程频繁的持有读锁,就会导致进程读写锁的繁忙阻塞,在某些场景下,会导致进程管理的低效,并发性不足。归根到底,是因为Linux内核的进程管理锁是一个全局锁。
基于上述所存在的问题,本申请方案的核心思想在于:将Linux内核的进程共用的读写锁拆分为多个进程之间共用的全局锁和进程内部的多个线程共用的私有锁,进程结构体对应的也拆分为全局可见结构体和进程内部可见结构体两部分。进程之间数据的共享访问通过竞争全局锁实现,而进程内部多个线程之间数据的共享访问通过竞争进程私有锁实现,从而使得锁的粒度相对于Linux内核更小,竞态的概率也就更小,从而实现了进程管理的高并发性。
如下将通过具体的实施例对本申请所提供的进程管理方法的实现步骤和产生的有益效果进行详细说明。
图1为本申请实施例提供的一种进程管理方法的流程示意图;该方法的执行主体可以是计算机设备,例如:可以为终端、服务器或者处理器等。该计算机设备上安装有Windows操作系统,该Windows操作系统上运行有linux进程,以实现在Windows操作系统中对linux内核的进程管理的模拟。如图1所示,该方法可包括:
S101、第一进程确定访问第二进程的结构体,第二进程的结构体包括第一结构体和第二结构体,第一结构体为供多个进程共享的结构体,第一结构体对应一全局锁,全局锁用于控制多个进程访问第一结构体,第二结构体为第二进程的私有结构体,第二结构体对应一私有锁,私有锁用于控制第二进程访问第二结构体。
示例性地,本申请提供的方法可以应用于MuMu模拟器(是专门为手机游戏用户提供的一款能通过电脑玩手游的免费安卓模拟器应用程序)的新引擎Nebula中。通过应用本申请,进程的管理(进程的创建、删除、更改等)可以呈现极高的并发程度,对很多个大型游戏的高并发表现都有正面的影响,典型的是帧率变得更加稳定。
通常,操作系统会将资源分配给各个进程,让进程间可以分享与交换信息,保护每个进程拥有的资源,不会被其他进程抢走,以及使进程间能够同步。为了达到这些要求,操作系统会为每个进程分配一个数据结构,用来描述进程的状态,以及进程拥有的资源,也即上述所说的进程的结构体,操作系统可以通过对进程的结构体的管理,来控制每个进程的运作。
进程可以理解为是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,它包含着一个运行程序所需要的资源。进程之间是相对独立的,进程之间的数据访问可通过竞争锁实现。一个进程运行的失败不会影响其他进程的运行,Windows系统就是利用进程把工作划分为多个独立的区域的,进程可以理解为一个程序的基本边界。
进程的结构体可包括进程状态、内核栈信息、进程使用状态、PID、优先级、锁、时间片、队列、信号量、内存管理信息、文件列表等等与进程管理、调度密切相关的信息。
可选地,一个进程的运行通常是需要多种数据,当进程运行所需的数据为其他进程数据的一部分时,则需要从其他数据中调用该部分数据以实现稳定运行。也即通过访问其他进程的结构体,获取所需的数据。
本实施例中,第一进程和第二进程中的“第一”、“第二”并无具体的含义,其仅用于区别不同的进程。可选地,第一进程可以为除第二进程外的其他进程,也可以为第二进程本身,第二进程可以为任意的进程。当第一进程为除第二进程外的其他进程时,则实现的为不同进程之间的数据访问,当第一进程为第二进程本身时,则实现的为进程内部多个线程之间的数据访问。
可选地,可根据各进程中的数据内容,筛选出需要高效的跨进程访问的数据内容,对进程的结构体进行剥离,将所筛选出的数据内容放入第一结构体,将其他不需要共享访问、或者是其他进程无法访问的数据内容则放入第二结构体中,从而实现对进程结构体的拆分。得到的第一结构体为供多个进程共享的结构体,第二结构体为进程私有的结构体,仅供进程本身进行访问。
在一种可实现的方式中,进程的第一结构体对应一全局锁,第一进程在获取全局锁后才可对第二进程的第一结构体进行访问;第二结构体对应一私有锁,第二进程内部的线程在获取到私钥锁后可对第二进程的第二结构体进行访问,其他进程无需访问第二进程的第二结构体,无需参与私有锁的竞争。通过这种方式可以有效收缩全局锁的粒度,使得全局锁的读写都仅限于特定的少量的多个进程之间的共享数据的访问,而在进程内部的线程所需要的共享进程结构体(第二结构体)内容的访问,则是通过进程私有的私钥锁实现。
其中,锁的粒度也即锁级别,数据库引擎具有多粒度锁定,允许一个事务锁定不同类型的资源,为了尽量减少锁定的开销,数据库引擎自动将资源锁定在适合任务的级别,锁定在较小的粒度,可以提高并发度。
S102、第一进程根据第一结构体的全局锁和/或第二结构体的私有锁,访问第二进程的结构体。
可选地,基于上述的进程结构和锁的划分,本实施例中,可根据第一进程所要访问的第二进程的结构体的不同,分别根据对应的锁(全局锁或私有锁)实现对第二进程的结构体的访问。其中,对进行的访问可包括:第一进程向第二进程的结构体进行数据写入,或者第一进程从第二进行的结构体进行数据读取。可根据实际需求进行不同的访问操作。
综上,本实施例提供的进程管理方法,包括:第一进程确定访问第二进程的结构体,第二进程的结构体包括第一结构体和第二结构体,第一结构体为供多个进程共享的结构体,第一结构体对应一全局锁,全局锁用于控制多个进程访问第一结构体,第二结构体为第二进程的私有结构体,第二结构体对应一私有锁,私有锁用于控制第二进程访问第二结构体;第一进程根据第一结构体的全局锁和/或第二结构体的私有锁,访问第二进程的结构体。本方案中,通过将进程的结构体拆分为供多个进程之间互相访问的第一结构体和仅供进程自身内部多个线程访问的第二结构体,对第一结构体分配全局锁,第二结构体分配私有锁,通过这种结构体拆分方式和锁的分配方式,可以有效的收缩全局锁的粒度,使得全局锁的读写都仅限于特定的少量的多个进程之间的共享数据的访问,而在进程内部的线程所需要的第二结构体内容的访问,则是通过进程私有的私钥锁实现,从而全局锁的竞态概率降低,实现了进程管理的高并发性。
图2为本申请实施例提供的另一种进程管理方法的流程示意图;可选地,如图2所示,上述步骤S102中,第一进程根据第一结构体的全局锁和/或第二结构体的私有锁,访问第二进程的结构体,可以包括:
S201、若第一进程与第二进程为不同的进程,则第一进程根据第一结构体的全局锁,访问第二进程的第一结构体。
在一种可实现的方式中,当第一进程与第二进程为不同的进程,也即第一进程为除第二进程外的其他进程时,则第一进程对第二进程的访问为跨进程访问,第一进程仅可对第二进程的第一结构体中的数据内容进行访问,那么,第一进程需要根据第二进程的第一结构体对应的全局锁访问第二进程的第一结构体。
可选地,上述步骤S201中,第一进程根据第一结构体的全局锁,访问第二进程的第一结构体,可以包括:若全局锁的当前状态为未加锁或者为读模式下的加锁,则第一进程读取第二进程的第一结构体。
在一些实施例中,当第一进程从第二进程的第一结构体读取数据时,首先判断第一结构体的全局锁是否未加锁,若全局锁未加锁,则第一进程可以对第一结构体的全局锁进行加锁,第一进程从第二进程的第一结构体中读取数据,并在数据读取完成后,释放全局锁,以便于其他进程进行加锁访问数据。
由于读写锁在同一时间可以有多个读者同时进行数据读取,那么,在另一种实施例中,当上述的全局锁为读模式下的加锁时,也即第二进程的第一结构体已被其他进程在读模式下进行了加锁,该第一进程同样也可以进行读模式加锁,与其他进程同时从第二进程的第一结构体中读取数据。
可选地,上述所说的加锁和释放锁可以通过对全局锁的标志位进行设置实现。例如:加锁时,将全局锁的标志位设置为1,表示全局锁当前已被加锁,不允许其他进程竞争全局锁。释放锁后,将全局锁的标志位设置为0,表示全局锁当前未加锁,可以允许其他进程加锁以进行数据访问。
可选地,上述步骤S201中,第一进程根据第一结构体的全局锁,访问第二进程的第一结构体,还包括:若全局锁的当前状态为未加锁,则第一进程向第二进程的第一结构体进行数据写入,数据写入包括:数据增加、数据修改或数据删除。
在一些实施例中,由于同一时刻只能有一个写者进行写操作,那么,只有当全局锁处于未加锁状态下时,第一进程才可对全局锁进行加锁,并向第二进程的第一结构体中写入数据。也即,当前若有其他进程对全局锁进行了加锁,正在向第二进程的第一结构体中写入数据,那么,第一进程是无法对全局锁进行加锁,向第二进程的第一结构体中写入数据,直到其他进程释放全局锁后,第一进程才可能竞争全局锁进行加锁。
可选地,继续如图2所示,第一进程根据第一结构体的全局锁和/或第二结构体的私有锁,访问第二进程的结构体,可以包括:
S202、若第一进程与第二进程为同一进程,则第一进程根据第一结构体的全局锁和/或第二结构体的私有锁,访问第二进程的第一结构体和/或第二结构体。
在一种可实现的方式中,当第一进程与第二进程为同一进程时,也即第一进程对第二进程的访问为进程内部访问,此时,第一进程既可以根据第一结构体的全局锁对第一结构体进行访问,也可以根据第二结构体的私有锁对第二结构体进行访问。
可选地,步骤S202中,第一进程根据第二结构体的私有锁,访问第二结构体,可以包括:若私有锁的当前状态为未加锁或者为读模式下的加锁,则第一进程的第一线程读取第二进程的第二结构体。
与上述类似,在一些实施例中,当第一进程从第二结构体读取数据时,也是判断第二结构体的私有锁当前状态,当私有锁的状态为未加锁或者为读模式下的加锁时,则第一进程可对私有锁进行加锁,从而实现从第二进程的第二结构体中读取数据。
需要说明的是,第一进程根据第二结构体的私有锁访问第二结构体时,该第一进程可以为第一进程内部的任意线程。
可选地,步骤S202中,第一进程根据第二结构体的私有锁,访问第二结构体,可以包括:
若私有锁的当前状态为未加锁,则第一进程的第一线程向第二进程的第二结构体进行数据写入,数据写入包括:数据增加、数据修改或数据删除。
在另一些实施例中,只有当私有锁的当前状态为未加锁时,第一进程可对私有锁进行加锁,并向第二进程的第二结构体中写入数据。
同样的,对于私有锁的加锁和释放锁与上述全局锁的加锁和释放锁类似,可通过设置私有锁的标志位实现。
通过上述的方法,可以使得在第一进程根据全局锁访问第二进程的第一结构体的同时,第二进程也可以根据第二结构体的私有锁访问第二结构体,相比于第一结构体和第二结构体共用一个读写锁而言,本方案中,第二进程无需等待第一进程释放全局锁后再去竞争锁,在竞争到锁后才对第二结构体进行访问。从而使得进程之间数据访问和进程内部多个线程之间的数据访问并发性更高,不会引起访问阻塞,数据访问效率更高。
本方案中分别使用全局锁和私有锁保护进程管理数据结构,相比于Linux内核的读写锁,具有顺序锁相对于读写锁的优势,那就是对读操作更加激进的期望,更少的阻塞。这个期望是建立在全局锁更少更细的基础上的,也就是前面所说的细化全局锁管理范围所带来的前提优势。
可选地,上述步骤中,第二进程的结构体保存在预设的一维数组中,一维数组保存在连续的内存地址中。
在一种可实现的方式中,本申请所涉及的第二进程的结构体可以采用一维数组的方式进行保存,做到固定大小内存开销,并且全部数据位于连续的内存地址。跨进程管理结构体(第一结构体)和进程内部结构体(第二结构体)都使用一维数组,这带来了性能和固定内存开销两个优点,主要是性能会更好。
可选地,第二进程的进程标识为保存第一结构体的一维数组的元素的下标,或者,第二进程的进程标识为保存第二结构体的一维数组的元素的下标。
由于本方案是在Windows操作系统下模拟Linux内核的进程管理,与Linux的一个不同的环境是在Windows下跨进程,通过数组的方式保存进程的结构体比链表的方式(Linux内核下是多个链表)具有更好的缓存性能,由于结构体中包含的进程标识pid就是数组的下标,所以对于特定pid的查找是直接获得,没有查找过程,性能较好。之所以可以这样做是因为专用系统与Linux内核通用系统的区别,利用专用系统的PID的有限性,获得了Linux内核不具备的假设前提,从而可以更激进的设计。
可选地,本方法中,遍历的时候读侧不进行循环外部锁,而是在循环内部锁(Linux内核是在遍历循环的外部上锁,锁住整个循环)。
除了顺序锁相对于读写锁的优势之外,本方案中还对Linux内核的读锁使用部分进行了改进,Linux内核在循环的外部进行读锁会导致整个遍历过程与写锁互斥,由于遍历操作的粒度偏大,如果发生遍历与写锁的多并发就容易导致进程的比较大粒度的阻塞。在顺序锁的基础上,本方案的遍历采用循环内部上顺序锁的读锁,也就是允许在遍历的中间发生写锁并发,极大的降低了并发的粒度,降低高并发进程创建删除情况下的遍历阻塞影响程度。
综上所述,本实施例提供的进程管理方法,包括:第一进程确定访问第二进程的结构体,第二进程的结构体包括第一结构体和第二结构体,第一结构体为供多个进程共享的结构体,第一结构体对应一全局锁,全局锁用于控制多个进程访问第一结构体,第二结构体为第二进程的私有结构体,第二结构体对应一私有锁,私有锁用于控制第二进程访问第二结构体;第一进程根据第一结构体的全局锁和/或第二结构体的私有锁,访问第二进程的结构体。本方案中,通过将进程的结构体拆分为供多个进程之间互相访问的第一结构体和仅供进程自身内部多个线程访问的第二结构体,对第一结构体分配全局锁,第二结构体分配私有锁,通过这种结构体拆分方式和锁的分配方式,可以有效的收缩全局锁的粒度,使得全局锁的读写都仅限于特定的少量的多个进程之间的共享数据的访问,而在进程内部的线程所需要的第二结构体内容的访问,则是通过进程私有的私钥锁实现,从而全局锁的竞态概率降低,实现了进程管理的高并发性。
其次,通过数组的方式保存进程的结构体比链表的方式(Linux内核下是多个链表)具有更好的缓存性能,由于结构体中包含的进程标识pid就是数组的下标,所以对于特定pid的查找是直接获得,没有查找过程,性能较好。
另外,在顺序锁的基础上,本方法的遍历采用循环内部上顺序锁的读锁,也就是允许在遍历的中间发生写锁并发,极大的降低了并发的粒度,降低高并发进程创建删除情况下的遍历阻塞影响程度。
下述对用以执行本申请所提供的进程管理方法的装置、设备及存储介质等进行说明,其具体的实现过程以及技术效果参见上述,下述不再赘述。
图3为本申请实施例提供的一种进程管理装置的示意图,该进程管理装置实现的功能对应上述方法执行的步骤。该装置可以理解为上述的计算机设备,服务器或服务器的处理器,也可以理解为独立于上述服务器或处理器之外的在服务器控制下实现本申请功能的组件。
可选地,如图3所示,该进程管理装置可包括:确定模块310、访问模块320;
确定模块310,用于第一进程确定访问第二进程的结构体,第二进程的结构体包括第一结构体和第二结构体,第一结构体为供多个进程共享的结构体,第一结构体对应一全局锁,全局锁用于控制多个进程访问第一结构体,第二结构体为第二进程的私有结构体,第二结构体对应一私有锁,私有锁用于控制第二进程访问第二结构体;
访问模块320,用于第一进程根据第一结构体的全局锁和/或第二结构体的私有锁,访问第二进程的结构体。
可选地,访问模块320,具体用于若第一进程与第二进程为不同的进程,则第一进程根据第一结构体的全局锁,访问第二进程的第一结构体。
可选地,访问模块320,具体用于若全局锁的当前状态为未加锁或者为读模式下的加锁,则第一进程读取第二进程的第一结构体。
可选地,访问模块320,具体用于若全局锁的当前状态为未加锁,则第一进程向第二进程的第一结构体进行数据写入,数据写入包括:数据增加、数据修改或数据删除。
可选地,访问模块320,还用于若第一进程与第二进程为同一进程,则第一进程根据第一结构体的全局锁和/或第二结构体的私有锁,访问第二进程的第一结构体和/或第二结构体。
可选地,访问模块320,具体用于若私有锁的当前状态为未加锁或者为读模式下的加锁,则第一进程的第一线程读取第二进程的第二结构体。
可选地,访问模块320,具体用于若私有锁的当前状态为未加锁,则第一进程的第一线程向第二进程的第二结构体进行数据写入,数据写入包括:数据增加、数据修改或数据删除。
可选地,第二进程的结构体保存在预设的一维数组中,一维数组保存在连续的内存地址中。
可选地,第二进程的进程标识为保存第一结构体的一维数组的元素的下标,或者,第二进程的进程标识为保存第二结构体的一维数组的元素的下标。
上述装置用于执行前述实施例提供的方法,其实现原理和技术效果类似,在此不再赘述。
以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器(digital singnal processor,简称DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(CentralProcessing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称SOC)的形式实现。
上述模块可以经由有线连接或无线连接彼此连接或通信。有线连接可以包括金属线缆、光缆、混合线缆等,或其任意组合。无线连接可以包括通过LAN、WAN、蓝牙、ZigBee、或NFC等形式的连接,或其任意组合。两个或更多个模块可以组合为单个模块,并且任何一个模块可以分成两个或更多个单元。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考方法实施例中的对应过程,本申请中不再赘述。
需要说明的是,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器(Digital Singnal Processor,简称DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(Central Processing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(System-on-a-chip,简称SOC)的形式实现。
图4为本申请实施例提供的计算机设备的结构示意图,该设备可以集成于终端设备或者终端设备的芯片,该设备可以是具备数据处理功能的计算设备。
该设备可包括:处理器401、存储器402。
存储器402用于存储程序,处理器401调用存储器402存储的程序,以执行上述方法实施例。具体实现方式和技术效果类似,这里不再赘述。
其中,存储器402存储有程序代码,当程序代码被处理器401执行时,使得处理器401执行本说明书上述“示例性方法”部分中描述的根据本申请各种示例性实施方式的进程管理方法中的各种步骤。
处理器401可以是通用处理器,例如中央处理器(CPU)、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器402作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random Access Memory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器402还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
可选地,本发明还提供一种程序产品,例如计算机可读存储介质,包括程序,该程序在被处理器执行时用于执行上述方法实施例。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取存储器(英文:Random Access Memory,简称:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

Claims (11)

1.一种进程管理方法,其特征在于,应用于运行有Linux进程的Windows系统中,所述方法包括:
第一进程确定访问第二进程的结构体,所述第二进程的结构体包括第一结构体和第二结构体,所述第一结构体为供多个进程共享的结构体,所述第一结构体对应一全局锁,所述全局锁用于控制多个进程访问所述第一结构体,所述第二结构体为所述第二进程的私有结构体,所述第二结构体对应一私有锁,所述私有锁用于控制所述第二进程访问所述第二结构体;
所述第一进程根据所述第一结构体的全局锁和/或所述第二结构体的私有锁,访问所述第二进程的结构体;
所述第一进程根据所述第一结构体的全局锁和/或所述第二结构体的私有锁,访问所述第二进程的结构体,包括:
若所述第一进程与所述第二进程为同一进程,则所述第一进程根据所述第一结构体的全局锁和/或所述第二结构体的私有锁,访问所述第二进程的第一结构体和/或第二结构体。
2.根据权利要求1所述的方法,其特征在于,所述第一进程根据所述第一结构体的全局锁和/或所述第二结构体的私有锁,访问所述第二进程的结构体,包括:
若所述第一进程与所述第二进程为不同的进程,则所述第一进程根据所述第一结构体的全局锁,访问所述第二进程的第一结构体。
3.根据权利要求2所述的方法,其特征在于,所述第一进程根据所述第一结构体的全局锁,访问所述第二进程的第一结构体,包括:
若所述全局锁的当前状态为未加锁或者为读模式下的加锁,则所述第一进程读取所述第二进程的第一结构体。
4.根据权利要求2所述的方法,其特征在于,所述第一进程根据所述第一结构体的全局锁,访问所述第二进程的第一结构体,还包括:
若所述全局锁的当前状态为未加锁,则所述第一进程向所述第二进程的第一结构体进行数据写入,所述数据写入包括:数据增加、数据修改或数据删除。
5.根据权利要求1所述的方法,其特征在于,所述第一进程根据所述第二结构体的私有锁,访问所述第二结构体,包括:
若所述私有锁的当前状态为未加锁或者为读模式下的加锁,则所述第一进程的第一线程读取所述第二进程的第二结构体。
6.根据权利要求1所述的方法,其特征在于,所述第一进程根据所述第二结构体的私有锁,访问所述第二结构体,包括:
若所述私有锁的当前状态为未加锁,则所述第一进程的第一线程向所述第二进程的第二结构体进行数据写入,所述数据写入包括:数据增加、数据修改或数据删除。
7.根据权利要求1-6任一所述的方法,其特征在于,所述第二进程的结构体保存在预设的一维数组中,所述一维数组保存在连续的内存地址中。
8.根据权利要求7所述的方法,其特征在于,所述第二进程的进程标识为所述保存所述第一结构体的一维数组的元素的下标,或者,所述第二进程的进程标识为所述保存所述第二结构体的一维数组的元素的下标。
9.一种进程管理装置,其特征在于,所述装置包括:确定模块、访问模块;
所述确定模块,用于第一进程确定访问第二进程的结构体,所述第二进程的结构体包括第一结构体和第二结构体,所述第一结构体为供多个进程共享的结构体,所述第一结构体对应一全局锁,所述全局锁用于控制多个进程访问所述第一结构体,所述第二结构体为所述第二进程的私有结构体,所述第二结构体对应一私有锁,所述私有锁用于控制所述第二进程访问所述第二结构体;
所述访问模块,用于所述第一进程根据所述第一结构体的全局锁和/或所述第二结构体的私有锁,访问所述第二进程的结构体;
访问模块,具体用于若所述第一进程与所述第二进程为同一进程,则所述第一进程根据所述第一结构体的全局锁和/或所述第二结构体的私有锁,访问所述第二进程的第一结构体和/或第二结构体。
10.一种计算机设备,其特征在于,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的程序指令,当计算机设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述程序
指令,以执行时执行如权利要求1至8任一所述的进程管理方法的步骤。
11.一种计算机可读存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至8任一所述的进程管理方法的步骤。
CN202011235859.2A 2020-11-06 2020-11-06 进程管理方法、装置、计算机设备及存储介质 Active CN112346879B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011235859.2A CN112346879B (zh) 2020-11-06 2020-11-06 进程管理方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011235859.2A CN112346879B (zh) 2020-11-06 2020-11-06 进程管理方法、装置、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN112346879A CN112346879A (zh) 2021-02-09
CN112346879B true CN112346879B (zh) 2023-08-11

Family

ID=74429066

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011235859.2A Active CN112346879B (zh) 2020-11-06 2020-11-06 进程管理方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN112346879B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117539650A (zh) * 2023-10-10 2024-02-09 本原数据(北京)信息技术有限公司 数据管理系统的去中心化记录锁管理方法以及相关设备

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6119115A (en) * 1998-03-12 2000-09-12 Microsoft Corporation Method and computer program product for reducing lock contention in a multiple instruction execution stream processing environment
CN102412985A (zh) * 2011-10-31 2012-04-11 烽火通信科技股份有限公司 一种基于操作分离的网管系统对象管理方法
CN103019809A (zh) * 2011-09-28 2013-04-03 中国移动通信集团公司 业务处理装置和方法、及业务处理控制装置
CN104572568A (zh) * 2013-10-15 2015-04-29 阿里巴巴集团控股有限公司 读锁操作方法、写锁操作方法及系统
CN106569896A (zh) * 2016-10-25 2017-04-19 北京国电通网络技术有限公司 一种数据分发及并行处理方法和系统
CN109033359A (zh) * 2018-07-26 2018-12-18 北京天地和兴科技有限公司 一种多进程安全访问sqlite的方法
CN109298935A (zh) * 2018-09-06 2019-02-01 华泰证券股份有限公司 一种多进程单写多读无锁共享内存的方法及应用
CN109840151A (zh) * 2017-11-29 2019-06-04 大唐移动通信设备有限公司 一种用于多核处理器的负载均衡方法和装置
CN110399227A (zh) * 2018-08-24 2019-11-01 腾讯科技(深圳)有限公司 一种数据访问方法、装置和存储介质
CN110781016A (zh) * 2019-10-30 2020-02-11 支付宝(杭州)信息技术有限公司 一种数据处理方法、装置、设备及介质
CN110955495A (zh) * 2019-11-26 2020-04-03 网易(杭州)网络有限公司 虚拟化内存的管理方法、装置和存储介质
CN111124685A (zh) * 2019-12-26 2020-05-08 神州数码医疗科技股份有限公司 大数据处理方法、装置、电子设备和存储介质
CN111290827A (zh) * 2018-12-07 2020-06-16 华为技术有限公司 数据处理的方法、装置和服务器
CN111708638A (zh) * 2020-06-18 2020-09-25 网易(杭州)网络有限公司 内存分配方法、装置、设备及存储介质
CN111880940A (zh) * 2020-07-29 2020-11-03 北京浪潮数据技术有限公司 一种存储系统中数据处理方法、装置、设备及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140040218A1 (en) * 2012-07-31 2014-02-06 Hideaki Kimura Methods and systems for an intent lock engine

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6119115A (en) * 1998-03-12 2000-09-12 Microsoft Corporation Method and computer program product for reducing lock contention in a multiple instruction execution stream processing environment
CN103019809A (zh) * 2011-09-28 2013-04-03 中国移动通信集团公司 业务处理装置和方法、及业务处理控制装置
CN102412985A (zh) * 2011-10-31 2012-04-11 烽火通信科技股份有限公司 一种基于操作分离的网管系统对象管理方法
CN104572568A (zh) * 2013-10-15 2015-04-29 阿里巴巴集团控股有限公司 读锁操作方法、写锁操作方法及系统
CN106569896A (zh) * 2016-10-25 2017-04-19 北京国电通网络技术有限公司 一种数据分发及并行处理方法和系统
CN109840151A (zh) * 2017-11-29 2019-06-04 大唐移动通信设备有限公司 一种用于多核处理器的负载均衡方法和装置
CN109033359A (zh) * 2018-07-26 2018-12-18 北京天地和兴科技有限公司 一种多进程安全访问sqlite的方法
CN110399227A (zh) * 2018-08-24 2019-11-01 腾讯科技(深圳)有限公司 一种数据访问方法、装置和存储介质
CN109298935A (zh) * 2018-09-06 2019-02-01 华泰证券股份有限公司 一种多进程单写多读无锁共享内存的方法及应用
CN111290827A (zh) * 2018-12-07 2020-06-16 华为技术有限公司 数据处理的方法、装置和服务器
CN110781016A (zh) * 2019-10-30 2020-02-11 支付宝(杭州)信息技术有限公司 一种数据处理方法、装置、设备及介质
CN110955495A (zh) * 2019-11-26 2020-04-03 网易(杭州)网络有限公司 虚拟化内存的管理方法、装置和存储介质
CN111124685A (zh) * 2019-12-26 2020-05-08 神州数码医疗科技股份有限公司 大数据处理方法、装置、电子设备和存储介质
CN111708638A (zh) * 2020-06-18 2020-09-25 网易(杭州)网络有限公司 内存分配方法、装置、设备及存储介质
CN111880940A (zh) * 2020-07-29 2020-11-03 北京浪潮数据技术有限公司 一种存储系统中数据处理方法、装置、设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Linux中的线程同步机制(一) -- Futex;i活着;https://www.cnblogs.com/yysblog/archive/2012/11/03/2752728.html;第1-6页 *

Also Published As

Publication number Publication date
CN112346879A (zh) 2021-02-09

Similar Documents

Publication Publication Date Title
US9430388B2 (en) Scheduler, multi-core processor system, and scheduling method
US8145817B2 (en) Reader/writer lock with reduced cache contention
US9268698B1 (en) Method and system for maintaining context event logs without locking in virtual machine
CN104572568B (zh) 读锁操作方法、写锁操作方法及系统
US8458721B2 (en) System and method for implementing hierarchical queue-based locks using flat combining
CN101631328B (zh) 一种对共享资源互斥访问的同步方法、装置和网络设备
US10282230B2 (en) Fair high-throughput locking for expedited grace periods
US10929201B2 (en) Method and system for implementing generation locks
US11594252B2 (en) Reader bias based locking technique enabling high read concurrency for read-mostly workloads
CN112306699B (zh) 访问临界资源的方法及装置、计算机设备及可读存储介质
CN110597606B (zh) 一种高速缓存友好的用户级线程调度方法
US20080168447A1 (en) Scheduling of Execution Units
CN114168271B (zh) 一种任务调度方法、电子设备及存储介质
CN111459691A (zh) 共享内存的读写方法及装置
CN112346879B (zh) 进程管理方法、装置、计算机设备及存储介质
CN109558241A (zh) 一种获取自旋锁的方法及装置
CN117215491A (zh) 一种快速数据访问方法、快速数据访问装置及光模块
US10310916B2 (en) Scalable spinlocks for non-uniform memory access
US8689230B2 (en) Determination of running status of logical processor
US9418175B2 (en) Enumeration of a concurrent data structure
CN113961364A (zh) 一种大规模锁系统实现方法、装置、存储介质和服务器
US11068319B2 (en) Critical section speedup using help-enabled locks
US20230121052A1 (en) Resource resettable deep neural network accelerator, system, and method
CN111814007B (zh) 双向链表数据处理方法、装置、设备及机器可读存储介质
CN113760524A (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