• 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
    • / 22
    • 下载费用:30 金币  

    20181025011重庆时时彩: 同步变量映射方法及装置、同步变量释放方法及同步变量删除方法.pdf

    关 键 词:
    同步 变量 映射 方法 装置 释放 删除
      专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    摘要
    申请专利号:

    CN201110143315.8

    申请日:

    2011.05.26

    公开号:

    CN102200930A

    公开日:

    2011.09.28

    当前法律状态:

    授权

    有效性:

    有权

    法律详情: 授权|||著录事项变更IPC(主分类):G06F 9/54变更事项:申请人变更前:华为数字技术有限公司变更后:北京华为数字技术有限公司变更事项:地址变更前:100085 北京市海淀区上地信息路3号变更后:100085 北京市海淀区上地信息路3号|||实质审查的生效IPC(主分类):G06F 9/54申请日:20110526|||公开
    IPC分类号: G06F9/54 主分类号: G06F9/54
    申请人: 华为数字技术有限公司
    发明人: 李凤凯; 董雪松; 尹鸿涛
    地址: 100085 北京市海淀区上地信息路3号
    优先权:
    专利代理机构: 代理人:
    PDF完整版下载: PDF下载
    法律状态
    申请(专利)号:

    CN201110143315.8

    授权公告号:

    102200930B|||||||||

    法律状态公告日:

    2013.04.17|||2013.03.20|||2011.11.23|||2011.09.28

    法律状态类型:

    授权|||著录事项变更|||实质审查的生效|||公开

    摘要

    本发明实施例提供了一种同步变量映射的方法,包括:在嵌入式系统的物理地址空间中分配用于存储同步变量的第一物理地址空间;在嵌入式系统的用户态进程对应的虚拟地址空间中分配第一虚拟地址空间,将第一物理地址空间映射至第一虚拟地址空间;在嵌入式系统的核心态线程对应的虚拟地址空间中分配第二虚拟地址空间,将第一物理地址空间映射至第二虚拟地址空间。此外,本发明实施例提供了相应的同步变量映射装置。此外,本发明实施例提供了同步变量释放方法以及同步变量删除方法。通过本发明实施例提供的同步变量映射方法及同步变量映射装置,达到了用户态进程不需要进行系统调用即可以访问同步变量,节约嵌入式系统的开销的技术效果,同时保障内核的安全性和稳定性。

    权利要求书

    1.一种同步变量映射方法,其特征在于,在嵌入式系统的物理地址空间中分配用于存储同步变量的第一物理地址空间;在所述嵌入式系统的用户态进程对应的虚拟地址空间中分配第一虚拟地址空间,将所述第一物理地址空间映射至所述第一虚拟地址空间;在所述嵌入式系统的核心态线程对应的虚拟地址空间中分配第二虚拟地址空间,将所述第一物理地址空间映射至所述第二虚拟地址空间。2.根据权利要求1所述的同步变量映射方法,其特征在于,所述嵌入式系统启动时分配所述第一物理地址空间。3.根据权利要求1所述的同步变量映射方法,其特征在于,所述第一物理地址空间为连续的地址空间,所述第一虚拟地址空间为连续的地址空间。4.根据权利要求3所述的同步变量映射方法,其特征在于,所述第一虚拟地址空间位于所述用户态进程对应的虚拟地址空间的栈顶。5.一种同步变量映射装置,其特征在于,包括:第一物理地址空间分配单元,用于在嵌入式系统的物理地址空间中分配用于存储同步变量的第一物理地址空间;第一虚拟地址空间分配单元,用于在所述嵌入式系统的用户态进程对应的虚拟地址空间中分配所述第一虚拟地址空间;第二虚拟地址空间分配单元,用于在所述嵌入式系统的核心态线程对应的虚拟地址空间中分配所述第二虚拟地址空间;第一映射单元,用于将所述第一物理地址空间映射至所述第一虚拟地址空间;第二映射单元,用于将所述第一物理地址空间映射至所述第二虚拟地址空间。6.一种同步变量释放方法,其特征在于,所述同步变量为用户态进程同步变量,所述用户态进程退出时调用用户态进程退出同步变量处理函数,所述用户态进程退出同步变量处理函数为核心态函数,所述用户态进程退出同步变量处理函数执行如下操作:调用与所述同步变量对应的同步变量释放应用程序接口。7.根据权利要求6所述的同步变量释放方法,其特征在于,所述用户态进程退出同步变量处理函数还执行如下操作:调用与所述同步变量对应的同步变量删除应用程序接口。8.根据权利要求6或者7所述的同步变量释放方法,其特征在于,所述用户态进程退出同步变量处理函数根据存储在核心态的所述同步变量的标识,确定所述用户态进程使用的同步变量。9.根据权利要求8所述的同步变量释放方法,其特征在于,所述同步变量的标识存储在所述用户态进程的进程描述符process?descriptor中。10.根据权利要求8所述的同步变量释放方法,其特征在于,所述同步变量的标识存储在所述用户态进程的进程描述符之外的存储空间。11.根据权利要求6所述的同步变量释放方法,其特征在于,调用所述用户态进程创建的所有同步变量分别对应的同步变量释放应用程序接口。12.一种同步变量删除方法,其特征在于,所述同步变量为用户态进程同步变量,所述用户态进程退出时调用用户态进程退出同步变量处理函数,所述用户态进程退出同步变量处理函数为核心态函数,所述用户态进程退出同步变量处理函数执行如下操作:调用与所述同步变量对应的同步变量删除应用程序接口。13.根据权利要求12所述的同步变量删除方法,其特征在于,调用所述用户态进程创建的所有同步变量分别对应的同步变量释放应用程序接口。

    说明书

    同步变量映射方法及装置、同步变量释放方法及同步变量删除方法

    技术领域

    本发明涉及计算机领域,特别是涉及一种同步变量映射方法、同步变量映射装置、同步变量释放方法以及同步变量删除方法。

    背景技术

    随着多核、多线程技术的不断发展,嵌入式系统可以并发执行多个“任务”,例如用户态的某个程序和核心态的操作系统并发执行,这使得该嵌入式系统的总体性能大大提高。利用多核、多线程技术,使嵌入式系统能够有更多的“任务”并发工作,是技术研究与发展的趋势。

    有时,嵌入式系统中并发执行的多个“任务”之间是相互关联的。例如,核心态线程和用户态进程都需要访问(包括读出和写入)存储在嵌入式系统存储器某一地址空间的数据,即共享资源。因此,确保多个“任务”对共享资源进行访问时的互斥性,是制约嵌入式系统的总体性能与可靠性的一个关键因素。例如,核心态线程对共享资源进行写入操作时,用户态进程不能对共享资源进行读出操作。

    为保障核心态线程和用户态进程对共享资源进行访问时的互斥性,现有技术提供了如下技术方案:

    1、调用同步变量创建应用程序接口,为共享资源创建一个同步变量。

    2、将共享资源与同步变量进行关联。

    3、核心态线程或者用户态进程对共享资源访问前,调用同步变量持有应用程序接口。

    4、核心态线程或者用户态进程成功持有同步变量后,对共享资源进行访问。

    现有技术中,用户态进程创建、初始化同步变量,需要通过系统调用,进入核心态;创建以及初始化同步变量后,又需要通过系统调用返回用户态,从而获得初始化的同步变量。用户态进程访问同步变量,也需要通过系统调用,进入核心态。访问同步变量后,又需要通过系统调用返回用户态,从而获得更新的同步变量。现有技术中,用户态进程创建、初始化同步变量的过程如图1所示;用户态进程访问同步变量的过程图2所示。

    在实现本发明的过程中,本发明的发明人发现现有技术至少存在以下问题:

    1、用户态进程对同步变量进行访问,需要通过系统调用进入核心态。通常,每个系统调用需要耗时几十个纳秒,是一个比较大的开销。对于需要频繁访问共享资源的用户态进程来说,这一问题更为严重。

    2、用户态进程通过系统调用进入核心态对同步变量进行访问,需要将核心态的相关的数据结构、同步算法暴露给用户态进程,并允许用户态进程针对核心态的相关资源进行操作。这将对内核的安全性和稳定性造成影响。

    3、用户态进程正常退出或异常退出,有可能没有对其持有的同步变量做释放处理,该同步变量一直为被持有的状态,这使得其他进程/线程无法持有该同步变量。希望访问该同步变量的其他进程/线程可能将一直等待该被持有的同步变量。这将导致“死锁”,使得该同步变量所?;さ墓蚕碜试次薹ū凰耸褂?。

    4、用户态进程正常退出或异常退出,有可能没有对其所创建的同步变量进行删除处理,这将使得该用户态进程使用的同步变量一直存在于系统中。

    发明内容

    一方面,本发明实施例提供一种同步变量映射方法,实现用户态进程不需要进行系统调用即可以访问同步变量,以节约嵌入式系统的开销,同时保障内核的安全性和稳定性。

    一种同步变量映射方法,包括:

    在嵌入式系统的物理地址空间中分配用于存储同步变量的第一物理地址空间;

    在嵌入式系统的用户态进程对应的虚拟地址空间中分配第一虚拟地址空间,将第一物理地址空间映射至第一虚拟地址空间;

    在嵌入式系统的核心态线程对应的虚拟地址空间中分配第二虚拟地址空间,将第一物理地址空间映射至第二虚拟地址空间。

    另一方面,本发明实施例提供一种同步变量映射装置,实现用户态进程不需要进行系统调用即可以访问同步变量,以节约嵌入式系统的开销,同时保障内核的安全性和稳定性。

    一种同步变量映射装置,包括:

    第一物理地址空间分配单元,用于在嵌入式系统的物理地址空间中分配用于存储同步变量的第一物理地址空间;

    第一虚拟地址空间分配单元,用于在嵌入式系统的用户态进程对应的虚拟地址空间中分配第一虚拟地址空间;

    第二虚拟地址空间分配单元,用于在嵌入式系统的核心态线程对应的虚拟地址空间中分配第二虚拟地址空间;

    第一映射单元,用于将第一物理地址空间映射至第一虚拟地址空间;

    第二映射单元,用于将第一物理地址空间映射至第二虚拟地址空间。

    又一方面,本发明实施例提供一种同步变量释放方法,解决了用户态进程正常退出或异常退出没有对其持有的同步变量做释放处理,导致的“死锁”现象,“死锁”现象意味者同步变量所?;さ墓蚕碜试次薹ū凰耸褂?。

    一种同步变量释放方法,包括:同步变量为用户态进程同步变量,用户态进程退出时调用用户态进程退出同步变量处理函数,用户态进程退出同步变量处理函数为核心态函数,用户态进程退出同步变量处理函数执行如下操作:

    调用与同步变量对应的同步变量释放应用程序接口。

    再一方面,本发明实施例提供一种同步变量删除方法,解决了用户态进程正常退出或异常退出有可能没有对其所创建的同步变量进行删除处理的问题。没有对其所创建的同步变量进行删除将使得该用户态进程使用的同步变量一直存在于系统中。

    一种同步变量删除方法,包括:同步变量为用户态进程同步变量,用户态进程退出时调用用户态进程退出同步变量处理函数,用户态进程退出同步变量处理函数为核心态函数,用户态进程退出同步变量处理函数执行如下操作:

    调用与同步变量对应的同步变量删除应用程序接口。

    通过本发明实施例提供的同步变量映射方法及同步变量映射装置,达到了用户态进程不需要进行系统调用即可以访问同步变量,节约嵌入式系统的开销的技术效果,同时保障内核的安全性和稳定性。

    通过本发明实施例提供的同步变量释放方法,解决了用户态进程正常退出或异常退出没有对其持有的同步变量做释放处理,导致的“死锁”现象以及同步变量所?;さ墓蚕碜试次薹ū黄渌淌褂玫奈侍?。

    通过本发明实施例提供的同步变量删除方法,解决了用户态进程正常退出或异常退出有可能没有对其所创建的同步变量进行删除处理的问题。没有对其所创建的同步变量进行删除将使得该用户态进程使用的同步变量一直存在于系统中。

    附图说明

    为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

    图1是现有技术中用户态进程创建、初始化同步变量示意图;

    图2是现有技术中用户态进程访问同步变量示意图;

    图3是本发明实施例提供的同步变量映射方法示意图;

    图4是本发明实施例提供的核心态线程对应的虚拟地址空间的地址映射流程图;

    图5是本发明实施例提供的用户态进程对应的虚拟地址空间的地址映射流程图;

    图6是本发明实施例提供的用户态进程在核心态模式下创建同步变量的流程图;

    图7是本发明实施例提供的用户态进程在用户态模式下创建同步变量的流程图;

    图8是本发明实施例提供的用户态进程访问共享资源的流程图;

    图9是本发明实施例提供的同步变量的格式示意图;

    图10是本发明实施例提供的同步变量映射装置示意图;

    图11是本发明实施例提供的第一种同步变量释放方法流程图;

    图12是本发明实施例提供的第二种同步变量释放方法流程图;

    图13是本发明实施例提供的同步变量的标识存储在用户态进程的进程描述符之外的存储空间的示意图;

    图14是本发明实施例提供的同步变量的标识存储在用户态进程的进程描述符的示意图;

    图15是本发明实施例提供的同步变量删除方法流程图。

    具体实施方式

    为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例?;诒痉⒚髦械氖凳├?,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明?;さ姆段?。

    下面对本发明实施例中出现一些概念进行解释:

    “共享资源”是指,操作系统中可能会被多个不同的进程或线程访问的系统资源。

    “同步变量”是指,用于对资源进行访问控制的一种同步机制。

    与同步变量有关的应用程序接口(application?programming?interface,API)通常包括同步变量创建(create)应用程序接口、同步变量持有(lock)应用程序接口、同步变量释放(unlock)应用程序接口以及同步变量删除(destroy)应用程序接口等。上述应用程序接口的功能如下:

    同步变量创建应用程序接口:用于创建并初始化一个同步变量。

    同步变量持有应用程序接口:根据同步变量算法,持有该同步变量。

    同步变量释放应用程序接口:释放一个已经持有的同步变量。

    同步变量删除应用程序接口:删除一个已经创建的同步变量。

    另外,同步变量可以有多种类型(例如读写锁、互斥锁等),不同类型的同步变量可以有不同的算法以及不同的应用程序接口。

    实施例一:

    本发明实施例提供了一种同步变量映射方法,参见图3,图3是本发明实施例提供的同步变量映射方法示意图,具体论述如下:

    嵌入式系统的虚拟地址空间可以分为用户态(user?space)模式或者核心态(kernel?space)模式。用户态模式下,使用用户态进程对应的虚拟地址空间,即用户态地址空间304。核心态模式下,使用核心态线程对应的虚拟地址空间,即核心态地址空间305。

    在物理地址空间301中,分配第一物理地址空间303,该地址空间用于存储用户态进程或者核心态线程创建的同步变量。该同步变量用于关联用户态进程和核心态线程共享的共享资源。在虚拟地址空间302中,位于左边的304为用户态地址空间,位于右边的305为核心态地址空间。用户态地址空间304以及核心态地址空间305的位置以及大小可以由用户进行定义。例如,虚拟地址空间302的大小为4G,用户态地址空间304占据0至3G;核心态地址空间305占据3G至4G。在用户态地址空间304中分配第一虚拟地址空间306。在核心态地址空间305中,分配第二虚拟地址空间307。

    将物理地址空间301中的第一物理地址空间303映射至第一虚拟地址空间306。这样用户态进程可以通过虚拟地址对存储在第一物理地址空间303中的同步变量进行访问。

    将物理地址空间301中的第一物理地址空间303映射至第二虚拟地址空间307。这样核心态线程可以通过虚拟地址对存储在第一物理地址空间303中的同步变量进行访问。

    核心态线程和用户态进程都可以根据各自的虚拟地址访问第一物理地址空间303中存放的内容。第一物理地址空间303用于存放用户态进程或者核心态线程创建的同步变量,因此,核心态线程和用户态进程都可以根据各自的虚拟地址访问用户态进程或者核心态线程创建的同步变量。也就是说,通过本发明,用户态进程不需要通过系统调用进入核心态,然后再访问用户态进程或者核心态线程创建的同步变量。用户态进程在用户态模式下即可访问存储在第一物理地址空间303中的同步变量。

    例如,假设用户态进程A需要访问用户态进程A和核心态线程B共享的某一共享资源。物理地址空间308存储了与该共享资源关联的同步变量,物理地址空间308映射至用户态虚拟地址空间309,物理地址空间308映射至核心态虚拟地址空间310。在这种情况下,用户态进程A可以通过用户态虚拟地址空间309得到存储同步变量的物理地址空间308,从而实现对同步变量的访问。用户态进程A访问同步变量不需要通过系统调用进入核心态。不进行系统调用不仅可以节约嵌入式系统的开销,而且可以保障内核的安全性和稳定性。

    参见图4,图4是核心态线程对应的虚拟地址空间的地址映射流程图,具体描述如下:

    401、在核心态线程对应的虚拟地址空间中分配第二虚拟地址空间。第二虚拟地址空间用于403的映射。

    402、在物理地址空间中分配用于存储同步变量的第一物理地址空间。第一物理地址空间也用于403的映射。

    403、第一物理地址空间映射到第二虚拟地址空间。即存储同步变量的物理地址空间映射到401所述的核心态线程对应的虚拟地址空间中的第二虚拟地址空间。

    404、返回。即返回到系统初始化主流程。

    参见图5,图5是用户态进程对应的虚拟地址空间的地址映射流程图,具体论述如下:

    501、用户态进程调用系统调用函数。该系统调用函数是一种特定的系统调用函数,用于完成存储同步变量的第一物理地址空间映射到在用户态进程对应的虚拟地址空间中的第一虚拟地址空间的操作。

    502、判断用户态进程对应的虚拟地址空间中是否为同步变量分配了第一虚拟地址空间。如果判断结果为“是”,则执行503。如果判断结果为“否”,则执行504。

    关于“用户态进程对应的虚拟地址空间为同步变量分配第一虚拟地址空间”,可以通过下述方式实现:调整用户态进程虚拟地址空间的分布,为用户态进程分配对应的虚拟地址空间,编译新的系统内核,使嵌入式系统使用新内核启动,这样此系统中的用户态进程对应的虚拟地址空间中便分配了对应的虚拟地址空间。

    503、第一物理地址空间映射到第一虚拟地址空间。

    504、返回。即系统调用返回到用户态进程。

    参见图6,图6是用户态进程在核心态模式下创建同步变量的流程图,具体论述如下:

    601、系统调用。系统调用使得嵌入式系统进入核心态。

    602、调用同步变量创建应用程序接口。

    603、在物理地址空间中分配所需的内存空间。在核心态模式下,在402分配的第一物理地址空间中,分配该同步变量所需大小的内存空间。

    604、初始化同步变量。对同步变量进行初始化。关于初始化后的同步变量,请参见图9。

    605、系统调用返回。即系统调用完毕,返回到用户态进程。

    参见图7,图7是用户态进程在用户态模式下创建同步变量的流程图,具体论述如下:

    701、调用同步变量创建应用程序接口。

    702、在物理地址空间中分配所需的内存空间。在用户态模式下,在402分配的第一物理地址空间中,分配该同步变量所需大小的内存空间。

    703、初始化同步变量。对同步变量进行初始化。关于初始化后的同步变量,请参见图9。

    704、同步变量创建应用程序接口返回。即同步变量创建应用程序接口调用完毕,返回到用户态进程。

    参见图8,图8是用户态进程访问共享资源的流程图。为防止用户态进程和核心态线程共享的共享资源同时被用户态进程和核心态线程访问,用户态进程访问共享资源前,先持有与该共享资源关联的同步变量。具体论述如下:

    801、用户态进程需要访问共享资源。

    802、调用同步变量持有应用程序接口,得到同步变量持有应用程序接口的返回值。用户态进程调用同步变量持有应用程序接口前,需要创建同步变量。关于如何如何创建同步变量,请参考图6、图7以及相关实施例。

    803、根据返回值,判断是否成功持有同步变量。若成功持有该同步变量,则执行804;若未成功持有该同步变量,则执行802,即再次调用同步变量持有应用程序接口,得到同步变量持有应用程序接口的返回值。当然,也可以退出对共享资源的访问,并返回用户态进程。

    804、用户态进程访问共享资源。

    参见图9,图9是同步变量的格式示意图,具体论述如下:

    字段901、同步变量ID。用于标识同步变量,用户态进程或核心态线程可以通过同步变量ID来调用同步变量应用程序接口。

    字段902、同步变量状态值。用于标识同步变量是否被某一个用户态进程(或者核心态线程)持有。例如,用1表示被持有;用0表示没有被持有。根据不同的同步变量的算法(例如读写锁、互斥锁等),同步变量状态值可以取不同的数值,以代表该同步变量的各种状态。

    字段903、使用计数。使用计数(reference?count)用于标识该同步变量被多少个使用者(包括用户态进程以及核心态线程)使用。同步变量被第一个使用者创建时,使用计数为1;同步变量被第二个使用者创建,使用计数值增加1,依此类推。当某一使用者不再使用该同步变量(例如通过调用同步变量删除应用程序接口,解除使用者与共享资源的关联关系),该同步变量的字段903减1。另外,如果同步变量的字段903的值为1,则表明该同步变量仅被一个使用者使用。利用这一特点可用于执行1104。

    在本发明实施例的具体实现时,嵌入式系统启动时分配第一物理地址空间。该方案的好处是,不需要另外付出时间和开销分配用于存储同步变量的物理地址空间。

    进一步的,第一物理地址空间为连续的地址空间,第一虚拟地址空间为连续的地址空间。该方案的好处是,将物理地址空间向用户态进程对应的虚拟地址空间进行映射时,只需映射一次即可,不需进行多次映射。

    进一步的,第一虚拟地址空间位于用户态进程对应的虚拟地址空间的栈顶。该方案的好处是,采用下调用户态进程调用栈顶的方式比较简单,并且对做出预留地址空间的的虚拟地址空间也无需特殊的管理。

    进一步的,用户态进程在访问与核心态线程共享的共享资源前,先调用同步变量持有应用程序接口并根据同步变量持有应用程序接口的返回值判断用户态进程是否成功持有所述同步变量。如果用户态进程成功持有同步变量,则对共享资源进行访问;如果用户态进程没有成功持有同步变量,则不对共享资源进行访问。

    进一步的,核心态线程在访问与用户态进程共享的共享资源前,先调用同步变量持有应用程序接口并根据同步变量持有应用程序接口的返回值判断核心态线程是否成功持有所述同步变量。如果所述核心态线程成功持有同步变量,则对共享资源进行访问;如果核心态线程没有成功持有同步变量,则不对共享资源进行访问。

    进一步的,用户态进程退出时调用用户态进程退出同步变量处理函数,用户态进程退出同步变量处理函数为核心态函数,用户态进程退出同步变量处理函数执行如下操作:调用与同步变量对应的同步变量释放应用程序接口。解决了用户态进程正常退出或异常退出没有对其持有的同步变量做释放处理导致的“死锁”现象?!八浪毕窒笠馕蹲磐奖淞克;さ墓蚕碜试次薹ū凰耸褂?。

    关于用户态进程退出同步变量处理函数,可通过本发明实施例三提供的用户态进程同步变量释放方法实现。具体可参考本发明实施例三以及图11和图12。

    进一步的,用户态进程退出同步变量处理函数还执行如下操作:

    调用与同步变量对应的同步变量删除应用程序接口。同步变量删除应用程序接口可以执行如下操作:对同步变量是否被其他使用者(包括其他用户态进程以及核心态线程)创建做出判断(判断同步变量字段903的值是否等于1,具体请参见上文对字段903的描述)。如果同步变量没有被其他使用者创建,则删除同步变量,并释放同步变量占用的内存空间;如果同步变量被其他使用者创建,则将同步变量字段903的值减1。

    进一步的,用户态进程退出同步变量处理函数根据存储在核心态的同步变量的标识,确定用户态进程使用的同步变量。其中,同步变量的标识可以是同步变量的ID或者同步变量的地址。

    进一步的,同步变量的标识存储在用户态进程的进程描述符(process?descriptor)中(具体请参考图14)。图14是本发明实施例提供的同步变量的标识存储在进程描述符的示意图。进程描述符为核心态为用户态进程创建的数据结构,以记录用户态进程的上下文等信息。本发明实施例利用用户态进程对应的进程描述符,记录用户态进程所使用的同步变量。进程描述符包括Process?ID、链表头指针等字段。用户态进程使用的所有同步变量的记录(包括第一同步变量标识、第二同步变量标识等)构成一个链表,链表头指针指向该链表的链表头。该方案可以达到利用现有的进程描述符存储用户态进程使用的同步变量的标识,节约储存空间以及简化相关配置的技术效果。

    进一步的,同步变量的标识存储在用户态进程的进程描述符之外的存储空间(具体请参考图13)。图13是本发明实施例提供的同步变量的标识存储在单独分配的存储空间的示意图。本发明实施例在嵌入式系统中单独分配一段存储空间,用于记录用户态进程所使用的同步变量。分配的存储空间存放用户态进程标识、链表头指针等字段。用户态进程使用的所有同步变量的标识(包括第一同步变量标识、第二同步变量标识等)构成一个链表,链表头指针指向该链表的链表头。该方案可以达到不依赖用户态进程在内核中对应的进程描述符,灵活性较高的技术效果。

    进一步的,在本发明实施例的具体实现时,调用用户态进程创建的所有同步变量分别对应的同步变量释放应用程序接口。该方案可以达到将该用户态进程创建并持有的同步变量都释放掉。

    进一步的,用户态进程退出时调用用户态进程退出同步变量处理函数,用户态进程退出同步变量处理函数为核心态函数,用户态进程退出同步变量处理函数执行如下操作:调用与同步变量对应的同步变量删除应用程序接口。解决了用户态进程正常退出或异常退出,可能出现的问题:

    (1)没有删除同步变量(在该同步变量没有被核心态线程或者其他用户态进程创建的情况下)。没有删除同步变量意味着同步变量一直存在于系统中。

    (2)没有将使用计数的值减1(在该同步变量被核心态线程或者其他用户态进程创建的情况下)。没有将使用计数的值减1意味着创建该同步变量的核心态线程或者其他用户态进程退出时无法删除该同步变量并释放同步变量占据的存储空间。

    关于用户态进程退出同步变量处理函数,可通过本发明实施例四提供的用户态进程同步变量删除方法实现。具体请参考本发明实施例四以及图15。

    进一步的,调用用户态进程创建的所有同步变量分别对应的同步变量释放应用程序接口。

    实施例二:

    本发明实施例还提供了一种同步变量映射装置,本实施例可以通过实施例一提供的同步变量映射方法实现。本发明实施例提供的同步变量映射装置可以实现用户态进程不需要进行系统调用即可以访问同步变量,以节约嵌入式系统的开销,同时保障内核的安全性和稳定性。参见图10,图10是本发明实施例提供的同步变量映射装置示意图,该同步变量映射装置包括:

    1001:第一物理地址空间分配单元。用于在嵌入式系统的物理地址空间中分配用于存储同步变量的第一物理地址空间;

    1002:第一虚拟地址空间分配单元。用于在嵌入式系统的用户态进程对应的虚拟地址空间中分配第一虚拟地址空间;

    1003:第二虚拟地址空间分配单元。用于在嵌入式系统的核心态线程对应的虚拟地址空间中分配第二虚拟地址空间;

    1004:第一映射单元。用于将第一物理地址空间映射至第一虚拟地址空间;

    1005:第二映射单元。用于将第一物理地址空间映射至第二虚拟地址空间。

    可见,通过本发明实施例提供的同步变量映射装置,可以实现用户态进程不需要进行系统调用即可以访问同步变量,以节约嵌入式系统的开销,同时保障内核的安全性和稳定性。

    实施例三:

    本发明实施例提供一种用户态进程同步变量释放方法,解决了用户态进程正常退出或异常退出没有对其持有的同步变量做释放处理导致的“死锁”现象?!八浪毕窒笠馕蹲磐奖淞克;さ墓蚕碜试次薹ū凰耸褂?。本发明实施例提供了两种同步变量释放方法,第一种是用户态进程退出后即调用的用户态进程退出同步变量处理函数,具体请参见图11;第二种是用户态进程退出核心态处理函数调用用户态进程退出同步变量处理函数,具体请参见图12。

    参见图11,图11是本发明实施例提供的第一种同步变量释放方法流程图,具体包括:

    1101:用户态进程退出。用户态进程退出可以是正常退出也可以是异常退出。用户态进程退出后,直接执行1102,即调用用户态进程退出同步变量处理函数。

    1102:调用用户态进程退出同步变量处理函数。该函数将调用用户态进程对应的同步变量释放应用程序接口。

    1103:调用同步变量释放应用程序接口。同步变量释放应用程序接口可以执行如下操作:对同步变量是否被本用户态进程持有做出判断(具体根据用户态进程同步变量的算法);如果用户态进程持有该同步变量,则对同步变量执行释放操作。

    1104:返回。即返回到用户态进程退出核心态处理函数。

    参见图12,图12是本发明实施例提供的第二种同步变量释放方法流程图,具体包括:

    1201:用户态进程退出。用户态进程退出可以是正常退出也可以是异常退出。用户态进程退出后,执行1202,即调用用户态进程退出核心态处理函数。

    1202:调用用户态进程退出核心态处理函数。该函数将执行1203,即调用用户态进程退出同步变量处理函数。

    1203:调用用户态进程退出同步变量处理函数。类似于1102,这里不再赘述。

    1204:调用同步变量释放应用程序接口。类似于1103,这里不再赘述。

    1205:返回。即用户态进程退出同步变量处理函数返回到用户态进程退出核心态处理函数。

    进一步的,用户态进程退出同步变量处理函数还执行如下操作:

    调用与同步变量对应的同步变量删除应用程序接口。同步变量删除应用程序接口可以执行如下操作:对同步变量是否被其他使用者(包括其他用户态进程以及核心态线程)创建做出判断(判断同步变量字段903的值是否等于1,具体请参见上文对字段903的描述)。如果同步变量没有被其他使用者创建,则删除同步变量,并释放同步变量占用的内存空间;如果同步变量被其他使用者创建,则将同步变量字段903的值减1。

    进一步的,用户态进程退出同步变量处理函数根据存储在核心态的同步变量的标识,确定用户态进程使用的同步变量。其中,同步变量的标识可以是同步变量的ID或者同步变量的地址。

    进一步的,同步变量的标识存储在用户态进程的进程描述符(process?descriptor)中(具体请参考图14)。图14是本发明实施例提供的同步变量的标识存储在进程描述符的示意图。进程描述符为核心态为用户态进程创建的数据结构,以记录用户态进程的上下文等信息。本发明实施例利用用户态进程对应的进程描述符,记录用户态进程所使用的同步变量。进程描述符包括Process?ID、链表头指针等字段。用户态进程使用的所有同步变量的记录(包括第一同步变量标识、第二同步变量标识等)构成一个链表,链表头指针指向该链表的链表头。该方案可以达到利用现有的进程描述符存储用户态进程使用的同步变量的标识,节约储存空间以及简化相关配置的技术效果。

    进一步的,同步变量的标识存储在用户态进程的进程描述符之外的存储空间(具体请参考图13)。图13是本发明实施例提供的同步变量的标识存储在单独分配的存储空间的示意图。本发明实施例在嵌入式系统中单独分配一段存储空间,用于记录用户态进程所使用的同步变量。分配的存储空间存放用户态进程标识、链表头指针等字段。用户态进程使用的所有同步变量的标识(包括第一同步变量标识、第二同步变量标识等)构成一个链表,链表头指针指向该链表的链表头。该方案可以达到不依赖用户态进程在内核中对应的进程描述符,灵活性较高的技术效果。

    进一步的,在本发明实施例的具体实现时,调用用户态进程创建的所有同步变量分别对应的同步变量释放应用程序接口。该方案可以达到将该用户态进程创建并持有的同步变量都释放掉。

    可见,通过本发明实施例提供的同步变量释放方法,可以解决用户态进程正常退出或异常退出没有对其持有的同步变量做释放处理导致的“死锁”现象?!八浪毕窒笠馕蹲磐奖淞克;さ墓蚕碜试次薹ū凰耸褂?。

    实施例四:

    本发明实施例提供一种用户态进程同步变量删除方法,解决了用户态进程正常退出或异常退出有可能没有对其所创建的同步变量进行删除处理的问题。没有对其所创建的同步变量进行删除将使得该用户态进程使用的同步变量一直存在于系统中。

    参见图15,图15是本发明实施例提供的一种同步变量删除方法流程图,具体包括:

    1501:用户态进程退出。用户态进程退出可以是正常退出也可以是异常退出。用户态进程退出后,执行1502,即调用用户态进程退出同步变量处理函数。

    1502:调用用户态进程退出同步变量处理函数。该函数将调用同步变量删除应用程序接口。

    1503:调用同步变量删除应用程序接口。同步变量删除应用程序接口可以执行如下操作:对同步变量是否被其他使用者(包括其他用户态进程以及核心态线程)创建做出判断(判断同步变量字段903的值是否等于1,具体请参见上文对字段903的描述)。如果同步变量没有被其他使用者创建,则删除同步变量,并释放同步变量占用的内存空间;如果同步变量被其他使用者创建,则将同步变量字段903的值减1。

    1504:返回。

    进一步的,调用用户态进程创建的所有同步变量分别对应的同步变量释放应用程序接口。

    可见,通过本发明实施例提供的同步变量删除方法,解决了用户态进程正常退出或异常退出,可能出现的问题:

    (1)没有删除同步变量(在该同步变量没有被核心态线程或者其他用户态进程创建的情况下)。没有删除同步变量意味着同步变量一直存在于系统中。

    (2)没有将使用计数的值减1(在该同步变量被核心态线程或者其他用户态进程创建的情况下)。没有将使用计数的值减1意味着创建该同步变量的核心态线程或者其他用户态进程退出时无法删除该同步变量并释放同步变量占据的存储空间。

    本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

    最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

       内容来自专利网重庆时时彩单双窍门 www.4mum.com.cn转载请标明出处

    关于本文
    本文标题:同步变量映射方法及装置、同步变量释放方法及同步变量删除方法.pdf
    链接地址://www.4mum.com.cn/p-5875056.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    [email protected] 2017-2018 www.4mum.com.cn网站版权所有
    经营许可证编号:粤ICP备17046363号-1 
     


    收起
    展开
  • 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
  • pc蛋蛋预测大古预测 贵州快三全部开奖今天 云南十一选五前三组走势图 大玩家彩票网址 浙江20选5专家杀号 北京赛车pk10在线计划软件 3d试机号今天开机号表 云南时时彩走势图 极速飞艇开奖都一样吗 建彩票网站 斗棋湖北麻将安卓版 北京快乐8全包稳赚法 怎么控制时时彩开奖结果 杭州麻将高手视频 山西快乐10分玩法 山西11选5规则