一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据处理方法、系统、电子装置及存储介质与流程

2021-12-17 19:16:00 来源:中国专利 TAG:


1.本发明涉及计算机技术领域,具体涉及一种数据处理方法、系统、电子装置及存储介质。


背景技术:

2.在许多(如果不是大多数)应用微控制器必须提供任务切换和多线程功能。某些时间紧迫事件(例如,计时器,通信端口或外部电路的中断)会中断微控制器中当时使用的微处理器所做的任何事情,并重新定向微处理器以执行更高优先级的任务。现有的微控制器在实时任务切换和多线程处理时,容易出现处理速度变慢的情况。


技术实现要素:

3.鉴于以上问题,本发明提出一种数据处理方法、系统、电子装置及存储介质,以提高数据处理的速度。
4.本技术的第一方面提供一种数据处理方法,所述方法包括:
5.选择下一个执行的线程;
6.判断选择的线程是否为高效能线程;
7.当所述选择的线程是高效能线程时,确认片内存储器的使用者是否为所选择的高效能线程;
8.当所述片内存储器的使用者不是所述选择的高效能线程时,备份所述片内存储器中的内容至所述使用者对应的线程的堆栈内存中;
9.备份所述选择的线程的堆栈内存中的内容至所述片内存储器中;
10.更新所述片内存储器的使用者为所述选择的线程;
11.将所述片内存储器中的内容存入cpu寄存器中完成上下文切换;及
12.执行所述选择的线程。
13.优选地,所述方法还包括:
14.当所述选择的线程不是高效能线程时,将所述选择的线程的堆栈内存中的内容存入所述cpu寄存器中完成上下文切换;
15.执行所述选择的线程。
16.优选地,所述方法还包括:
17.当所述片内存储器的使用者是所述选择的高效能线程时,将所述片内存储器中的内容存入cpu寄存器中完成上下文切换;及
18.执行所述选择的线程。
19.优选地,在选择下一个执行的线程后,所述方法还包括:
20.判断当前执行的线程是否为最高优先级线程;
21.若当前执行的线程不是最高优先级线程,存入当前cpu寄存器中的内容至所述当前执行的线程的堆栈内存中;
22.若当前执行的线程是所述最高优先级线程,继续执行当前的线程。
23.优选地,所述判断选择的线程是否为高效能线程包括:
24.通过查看所述选择的线程是否存在标记来确认所述下一个执行的线程是否为高效能线程;
25.当所述选择的线程中存在标记时,确认下一个执行的线程是高效能线程;
26.当所述选择的线程中不存在标记时,确认下一个执行的线程不是高效能线程。
27.优选地,通过更新所述片内存储器的占用参数为所述选择的线程对应的参数,以更新所述片内存储器的使用者为所述选择的线程。
28.优选地,所述高效能线程为在线程活动期间需要加速局部变量访问的线程。
29.本技术的第二方面提供一种数据处理系统,所述系统包括:
30.选择模块,用于选择下一个执行的线程;
31.判断模块,用于判断选择的线程是否为高效能线程;
32.所述判断模块,还用于当所述选择的线程是高效能线程时,确认片内存储器的使用者是否为所选择的高效能线程;
33.备份模块,用于当所述片内存储器的使用者不是所述选择的高效能线程时,备份所述片内存储器中的内容至所述使用者对应的线程的堆栈内存中;
34.所述备份模块,还用于备份所述选择的线程的堆栈内存中的内容至所述片内存储器中;
35.更新模块,用于更新所述片内存储器的使用者为所述选择的线程;
36.处理模块,用于将所述片内存储器中的内容存入cpu寄存器中完成上下文切换;及
37.所述处理模块,还用于执行所述选择的线程。
38.本发明第三方面提供一种电子装置,所述电子装置包括:处理器;以及存储器,所述存储器中存储有多个程序模块,所述多个程序模块由所述处理器加载并执行如上所述的数据处理方法。
39.本发明第四方面提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如前所述的数据处理方法。
40.本发明提供的数据处理方法、系统、装置及介质,本技术提供的数据处理方法,可以根据线程的类型来选择是否通过所述片内存储器来执行线程之间的上下文切换。当线程的类型为高效能线程时,通过所述片内存储器执行所述上下文切换。由于所述片内存储器具有高速处理的特点,从而实现加速数据处理的效果。
附图说明
41.图1是本发明一实施例所提供的数据处理方法的流程示意图。
42.图2是本发明一实施例所提供的数据处理系统示意图。
43.图3是本发明一实施方式提供的电子装置架构示意图。
具体实施方式
44.为了能够更清楚地理解本发明的所述目的、特征和优点,下面结合附图和具体实施例对本发明进行详细描述。需要说明的是,在不冲突的情况下,本技术的实施例及实施例
中的特征可以相互组合。在下面的描述中阐述了很多具体细节以便于充分理解本发明,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。
45.除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
46.请参阅图1,图1为本发明一个实施例提供的数据处理方法的流程示意图。根据不同的需求,所述流程图中步骤的顺序可以改变,某些步骤可以省略。为了便于说明,仅示出了与本发明实施例相关的部分。本发明实施例的数据处理方法应用在电子装置中。所述对于需要进数据处理的电子装置,可以直接在电子装置上集成本发明的方法所提供的数据处理功能,或者安装用于实现本发明的数据处理方法的客户端。再如,本发明所提供的数据处理方法还可以以软件开发工具包(software development kit,sdk)的形式运行在服务器等设备上,以sdk的形式提供数据处理功能的接口,电子装置或其他设备通过提供的接口即可实现数据处理功能。所述数据处理方法包括以下步骤。
47.步骤s1、选择下一个执行的线程。
48.在本实施例中,当中断服务结束时或系统调用时,启动调度器来调度线程执行任务,所述调度器选择下一个执行的线程。
49.步骤s2、判断当前执行的线程是否为最高优先级线程。当所述当前执行的线程为最高优先级线程时,流程进入步骤s3;当所述当前执行的线程不是最高优先级线程时,流程进入步骤s4。
50.在调度器调度线程的过程中,可以根据线程的优先级来选择下一个执行的线程。所述优先级作为可供调度器调度使用的参数。在本实施方式中,通过判断当前执行的线程是否为最高优先级线程,来确认当前执行的线程是否为选择的线程。若当前执行的线程为最高优先级线程时,确认当前执行的线程是所述选择的线程,流程进入步骤s3;若当前执行的线程不是最高优先级线程时,确认当前执行的线程不是所述选择的线程,流程进入步骤s4。
51.步骤s3、继续执行当前的线程。
52.在本实施方式中,若当前执行的线程不是最高优先级线程时,继续执行当前的线程。
53.步骤s4、存入当前cpu寄存器中的内容至所述当前执行的线程的堆栈内存中。
54.由于可能当前执行的线程的任务并没有执行完毕,所以在后文进行切换时需要保存线程的运行状态,以便下次重新切换回来时能够继续切换之前的状态运行。举个简单的例子:比如一个线程a正在读取一个文件的内容,正读到文件的一半,此时需要暂停线程a,转去执行线程b,当再次切换回来执行线程a的时候,我们不希望线程a又从文件的开头来读取。因此,需要保存当前执行的线程的内容。
55.当线程在上下文切换的过程中需要保存当前线程id、线程状态、堆栈、寄存器状态等信息。其中寄存器主要包括sp、pc和eax等寄存器,其主要功能如下:sp为堆栈指针,指向当前栈的栈顶地址;pc为程序计数器,存储下一条将要执行的指令;eax为累加寄存器,用于加法乘法的缺省寄存器。
56.在本实施方式中,当前cpu寄存器中的内容包括堆栈指针和寄存器状态。
57.步骤s5、判断选择的线程是否为高效能线程。当所述选择的线程不是高效能线程时,进入步骤s6;当所述选择的线程是高效能线程时,进入步骤s8。
58.在本实施方式中,一个任务可以包括多个线程,所述多个线程中包括多个高效能线程和非高效能线程。所述高效能线程是指在线程活动期间需要加速局部变量访问的线程。开发人员需要在线程初始化期间定义哪些线程是高效能线程。具体地,在创建线程时,根据线程执行内容确认创建的线程是否为高效能线程。当确认创建的线程为高效能线程时,标记创建的线程为高效能线程,并将标记后的高效能线程添加至线程列表;当确认创建的线程不是高效能线程时,添加创建的线程至线程列表。
59.在本实施方式中,通过查看所述选择的线程是否存在标记来确认所述下一个执行的线程是否为高效能线程。当所述选择的线程中存在标记时,确认下一个执行的线程是高效能线程;当所述选择的线程中不存在标记时,确认下一个执行的线程不是高效能线程。
60.步骤s6、将所述选择的线程的堆栈内存中的内容存入所述cpu寄存器中。
61.当所述选择的线程不是高效能线程时,将所述选择的线程的内容(如pc、sp和其他寄存器等)从所述选择的线程的堆栈内存中复制到所述cpu寄存器中,以完成上下文切换。
62.步骤s7、执行所述选择的线程。
63.在本实施方式中,当确认选择的线程不是高效能线程时,完成当前的线程与选择的线程之间的上下文切换后,执行所述选择的线程。
64.步骤s8、确认所述片内存储器的使用者是否为所选择的高效能线程。当所述片内存储器的使用者是所选择的高效能线程时,流程进入步骤s9;当所述片内存储器的使用者不是所选择的高效能线程时,流程进入步骤s10。
65.在本实施方式中,当所述选择的线程为高效能线程时,需要通过片内存储器对选择的线程进行上下文切换。但是在切换前,需要确认所述片内存储器的使用者是否为所选择的高效能线程。
66.步骤s9、将片内存储器中的内容存入所述cpu寄存器中,之后流程进入步骤s7。
67.在本实施方式中,当所述片内存储器的使用者是所选择的高效能线程时,直接将所述片内存储器中的内容存入cpu寄存器中,以完成所述上下文切换,之后执行所选择的高效能线程。
68.步骤s10、备份所述片内存储器中的内容至所述使用者对应的线程的堆栈内存中。
69.在本实施方式中,当所述片内存储器的使用者不是所选择的高效能线程时,需要将所述片内存储器中的内容备份至当前片内存储器的使用者对应的线程的堆栈内存中。需要说明的是,每一个线程都有自身的堆栈内存。为了保证数据不丢失,需要先备份所述片内存储器中的内容至所述使用者对应的线程的堆栈内存中。
70.步骤s11、备份所述选择的线程的堆栈内存中的内容至所述片内存储器中。
71.在本实施方式中,所述片内存储器具有小而高速的特点,可以作为多个线程共享的堆栈内存。当所述选择的线程为高效能线程时,需要所述片内存储器来执行,可以加速数据存取。将片内存储器中的内容备份至所述使用者对应的线程的堆栈内存中后,将选择的线程的内容载入到所述片内存储器中,以通过所述片内存储器处理所述选择的线程。
72.步骤s12、更新所述片内存储器的使用者为所述选择的线程,之后流程进入步骤s9。
73.在本实施方式中,在备份所述选择的线程的堆栈内存中的内容至所述片内存储器中后,还需要更新所述片内存储器的使用者为所述选择的线程。再将所述片内存储器中的内容存入cpu寄存器中以完成上下文切换,之后再执行所述选择的线程。
74.在本实施方式中,可以通过更新所述片内存储器的占用参数为所述选择的线程对应的参数。
75.在本实施例中,所述片内存储器包括占用参数,所述占用参数与线程对应。当载入所述选择的线程的内容至所述片内存储器中后,更新所述片内存储器的占用参数为所述选择的线程对应的参数,以确认所述片内存储器被所述选择的线程占用。
76.举例而言,若当前执行的线程c为非高效能线程,而下一个执行的线程n为高效能线程时,先确认片内存储器中当前的使用者p是否为高效能线程。若所述片内存储器中当前的使用者p是高效能线程时,则需要将所述片内存储器中的内容存入cpu寄存器以完成上下文切换。若所述片内存储器中当前的使用者p不是高效能线程时,需要先将所述片内存储器中的内容备份至所述使用者p对应的线程的堆栈内存中。再将线程n的堆栈内存中的内容备份到所述片内存储器中,并更新所述片内存储器的使用者为所述线程n,之后将所述片内存储器中的内容存入cpu寄存器中以完成上下文切换。如此,可以根据线程的类型来选择是否通过所述片内存储器来执行。例如,当线程的类型为高效能线程时,通过所述片内存储器来执行。由于所述片内存储器具有高速处理的特点,从而实现加速数据处理的效果。
77.图1详细介绍了本发明的数据处理方法,通过所述方法,能够提高数据处理速度。下面结合图2和图3,对实现所述数据处理方法的软件系统的功能模块以及硬件装置架构进行介绍。应所述了解,所述实施例仅为说明之用,在专利申请范围上并不受此结构的限制。
78.图2为本发明一实施方式提供的数据处理系统的功能模块图。
79.在一些实施方式中,所述数据处理系统20可以包括多个由程序代码段所组成的功能模块。所述数据处理系统20中的各个程序段的程序代码可以存储于电子装置的存储器中,并由电子装置中的至少一个处理器所执行,以实现快速处理数据的功能。
80.参考图2,本实施方式中,数据处理系统20根据其所执行的功能,可以被划分为多个功能模块,所述各个功能模块用于执行图1对应实施方式中的各个步骤,以实现加速数据处理的功能。本实施方式中,所述数据处理系统20的功能模块包括:选择模块201、判断模块202、备份模块203、更新模块204和处理模块205。各个功能模块的功能将在下面的实施例中进行详述。
81.所述选择模块201用于选择下一个执行的线程。
82.在本实施例中,当中断服务结束时或系统调用时,启动调度器来调度线程执行任务,所述调度器选择下一个执行的线程。
83.所述判断模块202用于判断当前执行的线程是否为最高优先级线程。
84.在调度器调度线程的过程中,可以根据线程的优先级来选择下一个执行的线程。所述优先级作为可供调度器调度使用的参数。在本实施方式中,通过判断当前执行的线程是否为最高优先级线程,来确认当前执行的线程是否为选择的线程。若当前执行的线程为最高优先级线程时,确认当前执行的线程是所述选择的线程;若当前执行的线程不是最高优先级线程时,确认当前执行的线程不是所述选择的线程。
85.处理模块205用于继续执行当前的线程。
86.在本实施方式中,若当前执行的线程不是最高优先级线程时,继续执行当前的线程。
87.处理模块205还用于存入当前cpu寄存器中的内容至所述当前执行的线程的堆栈内存中。
88.由于可能当前执行的线程的任务并没有执行完毕,所以在后文进行切换时需要保存线程的运行状态,以便下次重新切换回来时能够继续切换之前的状态运行。举个简单的例子:比如一个线程a正在读取一个文件的内容,正读到文件的一半,此时需要暂停线程a,转去执行线程b,当再次切换回来执行线程a的时候,我们不希望线程a又从文件的开头来读取。因此,需要保存当前执行的线程的内容。
89.当线程在上下文切换的过程中需要保存当前线程id、线程状态、堆栈、寄存器状态等信息。其中寄存器主要包括sp、pc和eax等寄存器,其主要功能如下:sp为堆栈指针,指向当前栈的栈顶地址;pc为程序计数器,存储下一条将要执行的指令;eax为累加寄存器,用于加法乘法的缺省寄存器。
90.在本实施方式中,当前cpu寄存器中的内容包括堆栈指针和寄存器状态。
91.判断模块202用于判断选择的线程是否为高效能线程。
92.在本实施方式中,一个任务可以包括多个线程,所述多个线程中包括多个高效能线程和非高效能线程。所述高效能线程是指在线程活动期间需要加速局部变量访问的线程。开发人员需要在线程初始化期间定义哪些线程是高效能线程。具体地,在创建线程时,根据线程执行内容确认创建的线程是否为高效能线程。当确认创建的线程为高效能线程时,标记创建的线程为高效能线程,并将标记后的高效能线程添加至线程列表;当确认创建的线程不是高效能线程时,添加创建的线程至线程列表。
93.在本实施方式中,通过查看所述选择的线程是否存在标记来确认所述下一个执行的线程是否为高效能线程。当所述选择的线程中存在标记时,确认下一个执行的线程是高效能线程;当所述选择的线程中不存在标记时,确认下一个执行的线程不是高效能线程。
94.所述处理模块205还用于将所述选择的线程的堆栈内存中的内容存入所述cpu寄存器中。
95.当所述选择的线程不是高效能线程时,将所述选择的线程的内容(如pc、sp和其他寄存器等)从所述选择的线程的堆栈内存中复制到所述cpu寄存器中,以完成上下文切换。
96.所述处理模块205还用于执行所述选择的线程。
97.在本实施方式中,当确认选择的线程不是高效能线程时,完成当前的线程与选择的线程之间的上下文切换后,执行所述选择的线程。
98.所述判断模块202还用于确认所述片内存储器的使用者是否为所选择的高效能线程。
99.在本实施方式中,当所述选择的线程为高效能线程时,需要通过片内存储器对选择的线程进行上下文切换。但是在切换前,需要确认所述片内存储器的使用者是否为所选择的高效能线程。
100.所述处理模块205还用于将片内存储器中的内容存入所述cpu寄存器中。
101.在本实施方式中,当所述片内存储器的使用者是所选择的高效能线程时,直接将所述片内存储器中的内容存入cpu寄存器中,以完成所述上下文切换,之后执行所选择的高
效能线程。
102.所述备份模块203用于备份所述片内存储器中的内容至所述使用者对应的线程的堆栈内存中。
103.在本实施方式中,当所述片内存储器的使用者不是所选择的高效能线程时,需要将所述片内存储器中的内容备份至当前片内存储器的使用者对应的线程的堆栈内存中。需要说明的是,每一个线程都有自身的堆栈内存。为了保证数据不丢失,需要先备份所述片内存储器中的内容至所述使用者对应的线程的堆栈内存中。
104.所述备份模块203用于备份所述选择的线程的堆栈内存中的内容至所述片内存储器中。
105.在本实施方式中,所述片内存储器具有小而高速的特点,可以作为多个线程共享的堆栈内存。当所述选择的线程为高效能线程时,需要所述片内存储器来执行,可以加速数据存取。将片内存储器中的内容备份至所述使用者对应的线程的堆栈内存中后,将选择的线程的内容载入到所述片内存储器中,以通过所述片内存储器处理所述选择的线程。
106.所述更新模块204用于更新所述片内存储器的使用者为所述选择的线程。
107.在本实施方式中,在备份所述选择的线程的堆栈内存中的内容至所述片内存储器中后,还需要更新所述片内存储器的使用者为所述选择的线程。再将所述片内存储器中的内容存入cpu寄存器中以完成上下文切换,之后再执行所述选择的线程。
108.在本实施方式中,可以通过更新所述片内存储器的占用参数为所述选择的线程对应的参数。
109.在本实施例中,所述片内存储器包括占用参数,所述占用参数与线程对应。当载入所述选择的线程的内容至所述片内存储器中后,更新所述片内存储器的占用参数为所述选择的线程对应的参数,以确认所述片内存储器被所述选择的线程占用。
110.图3为本发明一实施方式提供的电子装置的功能模块示意图。所述电子装置1包括存储器11、处理器12以及存储在所述存储器11中并可在所述处理器12上运行的计算机程序13,例如数据处理的程序。
111.在本实施方式中,所述电子装置1可以是但不限于智能手机、平板电脑、计算机设备、服务器等。
112.所述处理器12执行所述计算机程序13时实现所述方法实施例中数据处理方法的步骤。或者,所述处理器12执行所述计算机程序13实现所述系统实施例中各模块/单元的功能。
113.示例性的,所述计算机程序13可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器11中,并由所述处理器12执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,所述指令段用于描述所述计算机程序13在所述电子装置1中的执行过程。例如,所述计算机程序13可以被分割成图2中的模块201-205。
114.所述选择模块201用于选择下一个执行的线程;
115.所述判断模块202用于判断选择的线程是否为高效能线程;
116.所述判断模块,还用于当所述选择的线程是高效能线程时,确认片内存储器的使用者是否为所选择的高效能线程;
117.所述备份模块203用于当所述片内存储器的使用者不是所述选择的高效能线程时,备份所述片内存储器中的内容至所述使用者对应的线程的堆栈内存中;
118.所述备份模块203还用于备份所述选择的线程的堆栈内存中的内容至所述片内存储器中;
119.所述更新模块204用于更新所述片内存储器的使用者为所述选择的线程;
120.所述处理模块205用于将所述片内存储器中的内容存入cpu寄存器中完成上下文切换;及
121.所述处理模块205还用于执行所述选择的线程。
122.本领域技术人员可以理解,所述示意图3仅仅是电子装置1的示例,并不构成对电子装置1的限定,电子装置1可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述电子装置1还可以包括输入输出设备等。
123.所称处理器12可以是中央处理单元(central processing unit,cpu),还可以包括其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者所述处理器也可以是任何常规的处理器等,所述处理器12是所述电子装置1的控制中心,利用各种接口和线路连接整个电子装置1的各个部分。
124.所述存储器11可用于存储所述计算机程序13和/或模块/单元,所述处理器12通过运行或执行存储在所述存储器11内的计算机程序和/或模块/单元,以及调用存储在存储器11内的数据,实现所述电子装置1的各种功能。存储器11可以包括外部存储介质,也可以包括内存。此外,存储器11可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
125.所述电子装置1集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现所述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,所述计算机程序在被处理器执行时,可实现所述各个方法实施例的步骤。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
126.最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献