一种用户态虚拟机任务间的同步与互斥的方法及装置制造方法及图纸

技术编号:35901032 阅读:20 留言:0更新日期:2022-12-10 10:37
本发明专利技术提供了一种用户态虚拟机任务间的同步与互斥方法及装置,通过信号量实现用户态虚拟机任务间的同步与互斥,所述方法包括:在一个信号量的控制块中设置该信号量的信号量计数和任务等待队列;当第一任务尝试获取第一信号量时,递减第一信号量的信号量计数;且当第一信号量递减后的信号量计数大于等于0时,第一任务成功获取第一信号量,否则,把第一任务挂在第一信号量的任务等待队列中;当第一任务释放所获取的第一信号量时,递增第一信号量的信号量计数。本发明专利技术的技术方案还通过互斥锁、条件变量、任务栅栏和读写锁实现用户态虚拟机任务间的同步与互斥。本发明专利技术的技术方案更加简洁、高效,高操作系统的性能、可维护性。可维护性。可维护性。

【技术实现步骤摘要】
一种用户态虚拟机任务间的同步与互斥的方法及装置


[0001]本专利技术涉及操作系统领域,尤其涉及一种用户态虚拟机任务间的同步与互斥的方法及装置。

技术介绍

[0002]现有支持多任务多虚拟核的嵌入式操作系统中支持任务同步与互斥的机制主要有信号量、互斥锁、条件变量、任务栅栏等,各同步机制的实现比较独立,从而增加了操作系统的复杂性,降低了操作系统的性能、可维护性。

技术实现思路

[0003]有鉴于此,本专利技术实施例提供了一种用户态虚拟机任务间的同步与互斥方法及装置,通过信号量实现用户态虚拟机任务间的同步与互斥,所述方法包括:在一个信号量的控制块中设置该信号量的信号量计数和任务等待队列;当第一任务尝试获取第一信号量时,递减第一信号量的信号量计数;且当第一信号量递减后的信号量计数大于等于0时,第一任务成功获取第一信号量,否则,把第一任务挂在第一信号量的任务等待队列中;当第一任务释放所获取的第一信号量时,递增第一信号量的信号量计数。本专利技术的技术方案还通过互斥锁、条件变量、任务栅栏和读写锁实现用户态虚拟机任务间的同步与互斥。本专利技术的技术方案更加简洁、高效,高操作系统的性能、可维护性。
[0004]第一方面,本专利技术实施例提供了一种用户态虚拟机任务间的同步与互斥方法,其通过信号量实现用户态虚拟机任务间的同步与互斥,包括:在一个信号量的控制块中设置该信号量的信号量计数和任务等待队列;当第一任务尝试获取第一信号量时,递减第一信号量的所述信号量计数;且当第一信号量递减后的信号量计数大于等于0时,第一任务成功获取第一信号量,否则,把第一任务挂在第一信号量的任务等待队列中,第一信号量是第一任务尝试获取的信号量,第一任务为用户态虚拟机的任一任务;当第一任务释放所获取的第一信号量时,递增第一信号量的所述信号量计数。
[0005]由上,根据一个信号量的信号量计数的绝对值不需要轮询信号量任务等待队列上的任务就获取有多少任务在等待此信号量,方案简洁高效,增加了操作系统的可维护性,减少操作系统的复杂性。
[0006]在第一方面一种可能的实施方式中,还包括:在一个任务的控制块中设置该任务的等待信号量指针,该指针指向该任务等待的信号量的控制块;当把第一任务挂在第一信号量的任务等待队列中时,把第一任务的控制块中等待信号量指针指向第一信号量的控制块。
[0007]由上,在任务的控制块中通过等待信号量指针,可以快速确定该任务等待的信号量,减少操作系统的复杂性。
[0008]在第一方面一种可能的实施方式中,还包括:当第一任务释放所获取的第一信号量时,第一信号量的控制块中任务等待队列中链头任务成功获取第一信号量,且把该链头
任务的所述等待信号量指针设置为空;当把第一任务挂在第一信号量的任务等待队列中时,根据第一任务的优先级别确定在第一信号量的任务等待队列中的位置,其优先级越高,该位置越靠近链头。
[0009]由上,根据任务的优先级别确定其信号量的任务等待队列中位置,以在唤醒时按照任务的优先级别被唤醒,从而可以处理不同优先级别的任务的差异化处理。
[0010]第二方面,本专利技术实施例提供了一种用户态虚拟机任务间的同步与互斥方法,其通过互斥锁实现用户态虚拟机任务间的同步与互斥,包括:在一个互斥锁的控制块中设置该互斥锁的信号量的控制块,一个互斥锁的信号量为第一方面任一实施方式所述信号量;第二任务通过获取第一互斥锁的信号量而获取第一互斥锁,第一互斥锁是第二任务尝试获取的互斥锁,第二任务为用户态虚拟机的任一任务;第二任务在释放第一互斥锁时,释放第一互斥锁的信号量。
[0011]由上,通过使用信号量的获取和释放功能来获取和释放互斥锁,方案简洁高效,增加了操作系统的可维护性。
[0012]在第二方面的一种可能的实施方式中,还包括:一个互斥锁的控制块还包括该互斥锁的拥有者和该互斥锁的嵌套层数;当第二任务在不拥有第一互斥锁时成功获取第一互斥锁,把第二任务设置为第一互斥锁的拥有者;当第二任务已经拥有第一互斥锁且再次获取第一互斥锁时,则递增第一互斥锁的嵌套层数;当第二任务释放第一互斥锁时,还递减第一互斥锁的嵌套层数,且当第二任务释放第一互斥锁后且不再拥有第一互斥锁时,把第一互斥锁的拥有者设置为

1。
[0013]由上,通过在互斥锁的控制块中定义互斥锁拥有者和互斥锁嵌套层数,实现嵌套获取互斥锁,进一步增加了操作系统的可维护性。
[0014]第三方面,本专利技术实施例提供了一种用户态虚拟机任务间的同步与互斥方法,通过条件变量实现用户态虚拟机任务间的同步与互斥,包括:在一个条件变量的控制块中设置该条件变量的信号量的控制块,一个条件变量的信号量为第一方面任一实施方式所述信号量;第三任务通过尝试获取第一条件变量的信号量从而等待第一条件变量上,第三任务为用户态虚拟的等待第一条件变量的任一任务。
[0015]由上,通过使用信号量的获取功能使用户态虚拟机的任务等待条件变量上,方案简洁高效,增加了操作系统的可维护性。
[0016]在第三方面的一种可能的实施方式中,还包括:当第四任务释放第一条件变量的信号量,唤醒第一条件变量的信号量的等待队列中优先级最高的任务或所有任务,第四任务为用户态虚拟机中使第一条件变量满足条件的任一任务。
[0017]由上,通过使用信号量的释放功能唤醒等待在条件变量上的任务,进一步提高了系统的可维护性。
[0018]第四方面,本专利技术实施例提供了一种用户态虚拟机任务间的同步与互斥方法,通过任务栅栏实现用户态虚拟机任务间的同步与互斥,包括:在一个任务栅栏的控制块中设置该任务栅栏的信号量的控制块和栅栏次数,其中,一个任务栅栏的信号量为第一方面任一实施方式所述信号量,一个任务栅栏的栅栏次数为唤醒等待在该任务栅栏上的所有任务时任务栅栏等待接口的调用次数;当第五任务尝试获取第一任务栅栏时且当第一任务栅栏的信号量的信号量计数的绝对值加1等于第一任务栅栏的次数时,唤醒等待在第一任务栅
栏上的所有任务,第五任务为用户态虚拟机中尝试获取第一任务栅栏的任一任务;当第五任务尝试获取第一任务栅栏时且当第一任务栅栏的信号量的信号量计数的绝对值加1不等于第一任务栅栏的次数时,获取第一任务栅栏的信号量,使第五任务等待在第一任务栅栏上。
[0019]由上,在一个任务栅栏的控制块中设置该任务栅栏的信号量的控制块,通过获取任务栅栏的信号量等待在任务栅栏上,通过释放任务栅栏的信号量而释放等待在任务栅栏上所有任务,方案简洁高效,增加了操作系统的可维护性。
[0020]第五方面,本专利技术实施例提供了一种用户态虚拟机任务间的同步与互斥方法,通过读写锁实现用户态虚拟机任务间的同步与互斥,包括:在一个读写锁的控制块中设置该读写锁的互斥锁的控制块、该读写锁的条件变量的控制块和该读写锁的读写状态,其中,该读写锁的互斥锁为第二方面任一实施方式所述互斥锁,控制互斥访问所述读写状态,该读写锁的条件变量为第三方面任一实施方式所述条件变量;在第六任务尝试获取第一读写锁的读锁功能时,当根据所述读写状态判断出第一本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用户态虚拟机任务间的同步与互斥方法,其特征在于,通过信号量实现用户态虚拟机任务间的同步与互斥,包括:在一个信号量的控制块中设置该信号量的信号量计数和任务等待队列;当第一任务尝试获取第一信号量时,递减第一信号量的所述信号量计数;且当第一信号量递减后的信号量计数大于等于0时,第一任务成功获取第一信号量,否则,把第一任务挂在第一信号量的任务等待队列中,第一信号量是第一任务尝试获取的信号量,第一任务为用户态虚拟机的任一任务;当第一任务释放所获取的第一信号量时,递增第一信号量的所述信号量计数。2.根据权利要求1所述方法,其特征在于,还包括:在一个任务的控制块中设置该任务的等待信号量指针,该指针指向该任务等待的信号量的控制块;当把第一任务挂在第一信号量的任务等待队列中时,把第一任务的控制块中等待信号量指针指向第一信号量的控制块。3.根据权利要求1所述方法,其特征在于,还包括:当第一任务释放所获取的第一信号量时,第一信号量的控制块中任务等待队列中链头任务成功获取第一信号量,且把该链头任务的所述等待信号量指针设置为空;当把第一任务挂在第一信号量的任务等待队列中时,根据第一任务的优先级别确定在第一信号量的任务等待队列中的位置,其优先级越高,越靠近链头。4.一种用户态虚拟机任务间的同步与互斥方法,其特征在于,通过互斥锁实现用户态虚拟机任务间的同步与互斥,包括:在一个互斥锁的控制块中设置该互斥锁的信号量的控制块,一个互斥锁的信号量为权利要求1至3任一所述信号量;第二任务通过获取第一互斥锁的信号量而获取第一互斥锁,第一互斥锁是第二任务尝试获取的互斥锁,第二任务为用户态虚拟机的任一任务;第二任务在释放第一互斥锁时,释放第一互斥锁的信号量。5.根据权利要求4所述方法,其特征在于,还包括:一个互斥锁的控制块还包括该互斥锁的拥有者和该互斥锁的嵌套层数;当第二任务在不拥有第一互斥锁时成功获取第一互斥锁,把第二任务设置为第一互斥锁的拥有者;当第二任务已经拥有第一互斥锁且再次获取第一互斥锁时,则递增第一互斥锁的嵌套层数;当第二任务释放第一互斥锁时,还递减第一互斥锁的嵌套层数,且当第二任务释放第一互斥锁后且不再拥有第一互斥锁时,把第一互斥锁的拥有者设置为

1。6.一种用户态虚拟机任务间的同步与互斥方法,其特征在于,通过条件变量实现用户态虚拟机任务间的同步与互斥,包括:在一个条件变量的控制块中设置该条件变量的信号量的控制块,一个条件变量的信号量为权利要求1至3任一所述信号量;第三任务通过尝试获取第一条件变量的信号量从而等待第一条件变量上,第三任务为用户态虚拟的等待第一条件变量的任一任务。
7.根据权利要求6所述方法,其特征在于,还包括:当第四任务释放第一条件变量的信号量,唤醒第一条件变量的信号量的等待队列中优先级最高的任务或所有任务,第四任务为用户态虚拟机中使第一条件变量满足条件的任一任务。8.一种用户态虚拟机任务间的同步与互斥方法,其特征在于,通过任务栅栏实现用户态虚拟机任务间的同步与互斥,包括:在一个任务栅栏的控制块中设置该任务栅栏的信号量的控制块和栅栏次数,其中,一个任务栅栏的信号量为权利要求1至3任一所述信号量,一个任务栅栏的栅栏次数为唤醒等待在该任务栅栏上的所有任务时任务栅栏等待接口的调用次数;当第五任务尝试获取第一任务栅栏时且当第一任务栅栏的信号量的信号量计数的绝对值加1等于第一任务栅栏的次数时,唤醒等待在第一任务栅栏上的所有任务,第五任务为用户态虚拟机中尝试获取第一任务栅栏的任一任务;当第五任务尝试获取第一任务栅栏时且当第一任务栅栏的信号量的信号量计数的绝对值加1不等于第一任务栅栏的次数时,获取第一任务栅栏的信号量,使第五任务等待在第一任务栅栏上。9.一种用户态虚拟机任务间的同步与互斥方法,其特征在于,通过读写锁实现用户态虚拟机任务间的同步与互斥,包括:在一个读写锁的控制块中设置该读写锁的互斥锁的控制块、该读写锁的条件变量的控制块和该读写锁的读写状态,其中,该读写锁的互斥锁为权利要求4或5任一所述互斥锁,控制互斥访问所述读写状态,该读写锁的条件变量为权利要求6或7任一所述条件变量;在第六任务尝试获取第一读写锁的读锁功能时,当根据所述读写状态判断出第一读写锁的写锁功能没有被任一任务已获取或等待获取时,第六任务获取第一读写锁的读锁功能,否则第六任务等待在所述条件变量上,第六任务是用户态虚拟机的当前运行任务;在第六任务尝试获取第一读写锁的写锁功能时,当根据所述读写状态判断出第一读写锁的写锁功能和读锁功能都未被获取时,第六任务获取第一读写锁的读锁功能,否则第一任务等待在所述条件变量上。10.根据权利要求9所述方法,其特征在于,一个读写锁的读写状态包括该读写锁的读者计数、写者等待计数和写标记;其中,一个读写锁的读者计数表示获取该读写锁的读锁功能的任务数目,一个读写锁的写者等待计数表示等待获取该读写锁的写锁功能的任务数目,一个读写锁的写标记为true时,表示有任务已经获取读写锁的写锁功能,当该写标记为false时,表示没有任务已经获取读写锁的写锁功能。11.根据权利要求10所述方法,其特征在于,所述第六任务尝试获取第一读写锁的读锁功能,具体包括:当第一读写锁的写者等待计数大于0或第一读写锁的写标记为true时,通过获取第一读写锁的条件变量,使第六任务等待在第一读写锁的条...

【专利技术属性】
技术研发人员:李燕
申请(专利权)人:科东广州软件科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1