I/O请求转发方法及装置与流程

文档序号:31929729发布日期:2022-10-25 23:58阅读:75来源:国知局
I/O请求转发方法及装置与流程
i/o请求转发方法及装置
技术领域
1.本技术涉及数据存储技术领域,尤其涉及一种输入/输出(input/output,i/o)请求转发方法及装置。


背景技术:

2.快照(snapshot)是某个数据集在某一特定时刻的镜像。snapshot具有广泛的应用,例如,可以通过snapshot实现对i/o请求的转发。
3.相关技术中,电子设备可以基于磁盘设备的磁盘分区生成snapshot。当电子设备检测到触发的用于写入数据或读取数据的操作时,电子设备可以根据触发的操作生成i/o请求,并通过snapshot对该i/o请求进行转发,从而可以避免对磁盘设备直接进行访问。
4.但是,电子设备可以向用户展示磁盘设备的各个磁盘分区,无需通过snapshot即可根据用户触发的操作对磁盘设备的每个磁盘分区进行访问,并对每个磁盘分区触发i/o操作。


技术实现要素:

5.本技术提供一种i/o请求转发方法及装置,解决了现有技术中电子设备无需通过snapshot即可根据用户触发的操作对磁盘设备的每个磁盘分区进行访问,并对每个磁盘分区触发i/o操作的问题。
6.为达到上述目的,本技术采用如下技术方案:
7.第一方面,提供一种输入/输出i/o请求转发方法,所述方法包括:
8.响应于第一操作,生成i/o请求;
9.确定所述i/o请求对应的类型和/或磁盘分区;
10.根据所述i/o请求对应的类型和/或磁盘分区,向第一设备对应的队列或第二设备对应的队列下发所述i/o请求。
11.在第一方面的第一种可能的实现方式中,所述根据所述i/o请求对应的类型,向第一设备对应的队列或第二设备对应的队列下发所述i/o请求,包括:
12.当所述i/o请求对应的类型与预先设置的类型相匹配时,确定所述i/o请求对应的i/o数据量;
13.当所述i/o数据量指示所述i/o请求不会对所述磁盘设备写入数据时,向所述第一设备对应的队列下发所述i/o请求;
14.当所述i/o数据量指示所述i/o请求会对所述磁盘设备写入数据时,向所述第二设备对应的队列下发所述i/o请求,或者,根据所述i/o请求对应的磁盘分区,向所述第一设备对应的队列或所述第二设备对应的队列下发所述i/o请求。
15.基于第一方面的上述任意一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述确定所述i/o请求对应的类型,包括:
16.确定所述i/o请求中的操作指令,所述操作指令用于表示所述i/o请求对应的i/o
操作;
17.根据所述操作指令,确定所述i/o请求对应的类型。
18.基于第一方面的上述任意一种可能的实现方式,在第一方面的第三种可能的实现方式中,所述根据所述i/o请求对应的磁盘分区,向第一设备对应的队列或第二设备对应的队列下发所述i/o请求,包括:
19.获取所述i/o请求对应的磁盘分区的名称信息;
20.当所述名称信息指示所述磁盘分区是所述第一设备的第一分区时,向所述第一设备对应的队列下发所述i/o请求;
21.当所述名称信息指示所述磁盘分区是所述第一设备的第二分区时,则向所述第二设备对应的队列下发所述i/o请求,或者,根据所述i/o请求对应的类型,向所述第一设备对应的队列或所述第二设备对应的队列下发所述i/o请求。
22.基于第一方面的上述第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述获取所述i/o请求对应的磁盘分区的名称信息,包括:
23.根据所述i/o请求打开所述i/o请求对应的磁盘分区;
24.获取所述磁盘分区的名称信息。
25.基于第一方面的上述第四种可能的实现方式,在第一方面的第五种可能的实现方式中,在所述确定所述i/o请求对应的类型和/或磁盘分区之前,所述方法还包括:
26.在所述i/o请求中备份所述i/o请求对应的磁盘分区号;
27.所述根据所述i/o请求打开所述i/o请求对应的磁盘分区,包括:
28.根据备份的所述磁盘分区号,打开所述i/o请求对应的磁盘分区。
29.基于第一方面的上述第四种或第五种可能的实现方式,在第一方面的第六种可能的实现方式中,所述方法还包括:
30.当打开所述i/o请求对应的磁盘分区失败时,向所述第二设备对应的队列下发所述i/o请求,或者,根据所述i/o请求对应的类型,向所述第一设备对应的队列或所述第二设备对应的队列下发所述i/o请求。
31.基于第一方面的上述任意一种可能的实现方式,在第一方面的第七种可能的实现方式中,在所述确定所述i/o请求对应的类型和/或磁盘分区之前,所述方法还包括:
32.调用所述第二设备对应的队列函数,将所述i/o请求加入所述第二设备对应的队列;
33.所述根据所述i/o请求对应的类型和/或磁盘分区,向第一设备对应的队列或第二设备对应的队列下发所述i/o请求,包括:
34.根据所述i/o请求对应的类型和/或磁盘分区,调用所述第一设备对应的队列函数,将所述i/o请求加入所述第一设备对应的队列,或者,将所述i/o请求保留在所述第二设备对应的队列。
35.基于第一方面的上述任意一种可能的实现方式,在第一方面的第八种可能的实现方式中,在所述响应于用户触发的操作,生成i/o请求之前,所述方法还包括:
36.当检测到电子设备状态异常时,根据所述电子设备的内存建立所述虚拟设备。
37.基于第一方面的上述任意一种可能的实现方式,在第一方面的第九种可能的实现方式中,在电子设备的操作系统的通用块层中,所述i/o请求为bio描述符。
38.在第一方面的第十种可能的实现方式中,在电子设备的操作系统的通用块层中,所述i/o请求为bio描述符;
39.在所述响应于用户触发的操作,生成i/o请求之前,所述方法还包括:
40.当检测到电子设备状态异常时,根据所述电子设备的内存建立所述第二设备;
41.在所述确定所述i/o请求对应的类型和/或磁盘分区之前,所述方法还包括:
42.调用所述第二设备对应的队列函数,将所述i/o请求加入所述第二设备对应的队列;
43.所述根据所述i/o请求对应的类型和/或磁盘分区,向第一设备对应的队列或第二设备对应的队列下发所述i/o请求,包括:
44.根据所述i/o请求对应的类型和/或磁盘分区,调用所述第一设备对应的队列函数,将所述i/o请求加入所述第一设备对应的队列,或者,将所述i/o请求保留在所述第二设备对应的队列;
45.所述确定所述i/o请求对应的类型,包括:
46.确定所述i/o请求中的操作指令,所述操作指令用于表示所述i/o请求对应的i/o操作;
47.根据所述操作指令,确定所述i/o请求对应的类型;
48.所述根据所述i/o请求对应的类型,向第一设备对应的队列或第二设备对应的队列下发所述i/o请求,包括:
49.当所述i/o请求对应的类型与预先设置的类型相匹配时,确定所述i/o请求对应的i/o数据量;
50.当所述i/o数据量指示所述i/o请求不会对所述第一设备写入数据时,向所述第一设备对应的队列下发所述i/o请求;
51.当所述i/o数据量指示所述i/o请求会对所述第一设备写入数据时,向所述第二设备对应的队列下发所述i/o请求,或者,根据所述i/o请求对应的磁盘分区,向所述第一设备对应的队列或所述第二设备对应的队列下发所述i/o请求;
52.所述根据所述i/o请求对应的磁盘分区,向第一设备对应的队列或第二设备对的应队列下发所述i/o请求,包括:
53.获取所述i/o请求对应的磁盘分区的名称信息;
54.当所述名称信息指示所述磁盘分区是所述第一设备的第一分区时,向所述第一设备对应的队列下发所述i/o请求;
55.当所述名称信息指示所述磁盘分区是所述第一设备的第二分区时,向所述第二设备对应的队列下发所述i/o请求,或者,根据所述i/o请求对应的类型,向所述第一设备对应的队列或所述第二设备对应的队列下发所述i/o请求;
56.所述获取所述i/o请求对应的磁盘分区的名称信息,包括:
57.根据所述i/o请求打开所述i/o请求对应的磁盘分区;
58.获取所述磁盘分区的名称信息;
59.在所述确定所述i/o请求对应的类型和/或磁盘分区之前,所述方法还包括:
60.在所述i/o请求中备份所述i/o请求对应的磁盘分区号;
61.所述根据所述i/o请求打开所述i/o请求对应的磁盘分区,包括:
62.根据备份的所述磁盘分区号,打开所述i/o请求对应的磁盘分区;
63.所述方法还包括:
64.当打开所述i/o请求对应的磁盘分区失败时,向所述第二设备对应的队列下发所述i/o请求,或者,根据所述i/o请求对应的类型,向所述第一设备对应的队列或所述第二设备对应的队列下发所述i/o请求。
65.第二方面,提供一种输入/输出i/o请求转发装置,所述装置包括:
66.生成模块,用于响应于第一操作,生成i/o请求;
67.确定模块,用于确定所述i/o请求对应的类型和/或磁盘分区;
68.下发模块,用于根据所述i/o请求对应的类型和/或磁盘分区,向第一设备对应的队列或第二设备对应的队列下发所述i/o请求。
69.在第二方面的第一种可能的实现方式中,所述下发模块,具体用于当所述i/o请求对应的类型与预先设置的类型相匹配时,确定所述i/o请求对应的i/o数据量;当所述i/o数据量指示所述i/o请求不会对所述磁盘设备写入数据时,向所述第一设备对应的队列下发所述i/o请求;当所述i/o数据量指示所述i/o请求会对所述磁盘设备写入数据时,向所述第二设备对应的队列下发所述i/o请求,或者,根据所述i/o请求对应的磁盘分区,向所述第一设备对应的队列或所述第二设备对应的队列下发所述i/o请求。
70.基于第二方面的上述任意一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述确定模块,具体用于确定所述i/o请求中的操作指令,所述操作指令用于表示所述i/o请求对应的i/o操作;根据所述操作指令,确定所述i/o请求对应的类型。
71.基于第二方面的上述任意一种可能的实现方式,在第二方面的第三种可能的实现方式中,所述下发模块,具体用于获取所述i/o请求对应的磁盘分区的名称信息;当所述名称信息指示所述磁盘分区是所述第一设备的第一分区时,向所述第一设备对应的队列下发所述i/o请求;当所述名称信息指示所述磁盘分区是所述第一设备的第二分区时,则向所述第二设备对应的队列下发所述i/o请求,或者,根据所述i/o请求对应的类型,向所述第一设备对应的队列或所述第二设备对应的队列下发所述i/o请求。
72.基于第二方面的上述第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述下发模块,还具体用于根据所述i/o请求打开所述i/o请求对应的磁盘分区;获取所述磁盘分区的名称信息。
73.基于第二方面的上述第四种可能的实现方式,在第二方面的第五种可能的实现方式中,所述装置还包括:
74.备份模块,用于在所述i/o请求中备份所述i/o请求对应的磁盘分区号;
75.所述下发模块,还具体用于根据备份的所述磁盘分区号,打开所述i/o请求对应的磁盘分区。
76.基于第二方面的上述第四种或第五种可能的实现方式,在第二方面的第六种可能的实现方式中,所述下发模块,还具体用于当打开所述i/o请求对应的磁盘分区失败时,向所述第二设备对应的队列下发所述i/o请求,或者,根据所述i/o请求对应的类型,向所述第一设备对应的队列或所述第二设备对应的队列下发所述i/o请求。
77.基于第二方面的上述任意一种可能的实现方式,在第二方面的第七种可能的实现方式中,所述装置还包括:
78.调用模块,用于调用所述第二设备对应的队列函数,将所述i/o请求加入所述第二设备对应的队列;
79.所述下发模块,具体用于根据所述i/o请求对应的类型和/或磁盘分区,调用所述第一设备对应的队列函数,将所述i/o请求加入所述第一设备对应的队列,或者,将所述i/o请求保留在所述第二设备对应的队列。
80.基于第二方面的上述任意一种可能的实现方式,在第二方面的第八种可能的实现方式中,所述装置还包括:
81.建立模块,用于当检测到电子设备状态异常时,根据所述电子设备的内存建立所述虚拟设备。
82.基于第二方面的上述任意一种可能的实现方式,在第二方面的第九种可能的实现方式中,在电子设备的操作系统的通用块层中,所述i/o请求为bio描述符。
83.在第二方面的第十种可能的实现方式中,在电子设备的操作系统的通用块层中,所述i/o请求为bio描述符;
84.所述装置还包括:
85.建立模块,用于当检测到电子设备状态异常时,根据所述电子设备的内存建立所述第二设备;
86.所述装置还包括:
87.调用模块,用于调用所述第二设备对应的队列函数,将所述i/o请求加入所述第二设备对应的队列;
88.所述下发模块,具体用于根据所述i/o请求对应的类型和/或磁盘分区,调用所述第一设备对应的队列函数,将所述i/o请求加入所述第一设备对应的队列,或者,将所述i/o请求保留在所述第二设备对应的队列;
89.所述确定模块,具体用于确定所述i/o请求中的操作指令,所述操作指令用于表示所述i/o请求对应的i/o操作;根据所述操作指令,确定所述i/o请求对应的类型;
90.所述下发模块,还具体用于当所述i/o请求对应的类型与预先设置的类型相匹配时,确定所述i/o请求对应的i/o数据量;当所述i/o数据量指示所述i/o请求不会对所述第一设备写入数据时,向所述第一设备对应的队列下发所述i/o请求;当所述i/o数据量指示所述i/o请求会对所述第一设备写入数据时,向所述第二设备对应的队列下发所述i/o请求,或者,根据所述i/o请求对应的磁盘分区,向所述第一设备对应的队列或所述第二设备对应的队列下发所述i/o请求;
91.所述下发模块,还具体用于获取所述i/o请求对应的磁盘分区的名称信息;当所述名称信息指示所述磁盘分区是所述第一设备的第一分区时,向所述第一设备对应的队列下发所述i/o请求;当所述名称信息指示所述磁盘分区是所述第一设备的第二分区时,向所述第二设备对应的队列下发所述i/o请求,或者,根据所述i/o请求对应的类型,向所述第一设备对应的队列或所述第二设备对应的队列下发所述i/o请求;
92.所述下发模块,还具体用于根据所述i/o请求打开所述i/o请求对应的磁盘分区;获取所述磁盘分区的名称信息;
93.所述装置还包括:
94.备份模块,用于在所述i/o请求中备份所述i/o请求对应的磁盘分区号;
95.所述下发模块,还具体用于根据备份的所述磁盘分区号,打开所述i/o请求对应的磁盘分区;
96.所述下发模块,还具体用于当打开所述i/o请求对应的磁盘分区失败时,向所述第二设备对应的队列下发所述i/o请求,或者,根据所述i/o请求对应的类型,向所述第一设备对应的队列或所述第二设备对应的队列下发所述i/o请求。
97.第三方面,提供一种电子设备,包括:处理器,所述处理器用于运行存储器中存储的计算机程序,以实现如第一方面中任一项所述的i/o请求转发方法。
98.第四方面,提供一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面中任一项所述的i/o请求转发方法。
99.第五方面,提供一种芯片系统,其特征在于,所述芯片系统包括存储器和处理器,所述处理器执行所述存储器中存储的计算机程序,以实现如第一方面中任一项所述的i/o请求转发方法。
100.其中,所述芯片系统可以为单个芯片,或者多个芯片组成的芯片模组。
101.本技术提供的i/o请求转发方法及装置,电子设备可以建立虚拟设备,并根据用户触发的操作,生成bio描述符,再将bio描述符加入虚拟设备对应的队列。之后,确定bio描述符所对应的i/o请求的类型、以及该i/o请求对应的磁盘分区,确定该i/o请求是否会对电子设备中用户存储的数据造成破坏。当该i/o请求会对电子设备中用户存储的数据造成破坏时,电子设备可以通过操作系统的内核将bio描述符保留在虚拟设备对应的队列中,以使该i/o请求对应的i/o操作不会对用户存储的数据触发i/o操作;当该i/o请求不会对电子设备中用户存储的数据造成破坏时,电子设备可以重新将该bio描述符加入磁盘设备对应的队列,以便操作系统的内核根据该i/o请求对磁盘设备触发相对应的i/o操作,从而可以实现先通过操作系统的内核拦截i/o请求;再根据i/o请求的类型和磁盘分区,向不同的队列下发相对应的bio描述符,可以提高电子设备中用户存储的数据的安全性。
附图说明
102.图1是本技术实施例提供的一种i/o请求转发方法所涉及的操作系统的内核架构的系统架构图;
103.图2是本技术实施例提供的一种操作系统的内核架构对i/o请求进行转发的示意性流程图;
104.图3是本技术实施例提供的一种i/o请求转发方法的示意性流程图;
105.图4是本技术实施例提供的一种紧急备份界面的界面示意图;
106.图5是本技术实施例提供的一种电子设备识别i/o请求所指示的磁盘分区的示意性流程图;
107.图6是本技术实施例提供的一种i/o请求转发装置的结构框图;
108.图7是本技术实施例提供的另一种i/o请求转发装置的结构框图;
109.图8是本技术实施例提供的又一种i/o请求转发装置的结构框图;
110.图9是本技术实施例提供的又一种i/o请求转发装置的结构框图;
111.图10是本技术实施例提供的又一种i/o请求转发装置的结构框图;
112.图11是本技术实施例提供的电子设备的结构示意图。
具体实施方式
113.以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本技术实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本技术。在其它情况中,省略对众所周知的方法、i/o请求、i/o操作和电子设备的详细说明,以免不必要的细节妨碍本技术的描述。
114.以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本技术的限制。如在本技术的说明书和所附权利要求书中所使用的那样,单数表达形式“一个”、“所述”、“上述”和“该”旨在也包括例如“一个或多个”这种表达形式,除非其上下文中明确地有相反指示。
115.首先,对本技术实施例所涉及的电子设备的存储空间进行介绍,电子设备的存储空间可以包括:第一设备和第二设备。
116.其中,第一设备和第二设备均可以为电子设备的块设备(block device),块设备是i/o设备的一类,用于存储数据。
117.例如,当电子设备同时包括磁盘设备和虚拟内存盘(ramdisk,下述简称为虚拟设备)时,第一设备可以为电子设备的磁盘设备,第二设备可以为电子设备的虚拟设备;当电子设备包括磁盘设备,但是不包括虚拟设备时,第一设备可以为磁盘设备的某个磁盘分区,第二设备可以为磁盘设备的另一个磁盘分区;当电子设备包括至少两个磁盘设备时,第一设备可以为电子设备的一个磁盘设备,第二设备可以为电子设备的另一个磁盘设备;当电子设备包括虚拟设备,但是不包括磁盘设备时,第一设备可以为虚拟设备的某个虚拟分区,第二设备可以为虚拟设备的另一个虚拟分区;当电子设备包括至少两个虚拟设备时,第一设备可以为电子设备的一个虚拟设备,第二设备可以为电子设备的另一个虚拟设备,本技术实施例对第一设备和第二设备不做限定。
118.在实际应用中,电子设备的磁盘设备可以包括至少两个磁盘分区,如第一分区和第二分区。第一分区为电子设备的特殊分区,用于存储电子设备的系统文件、日志和更新数据等。第二分区为电子设备的非特殊分区,用于存储用户在电子设备中所保存的数据。例如,磁盘设备的第一分区可以为面向产品生命周期的设计(design for x,dfx)分区,用于存储电子设备的日志等数据。
119.在电子设备检测到异常时,电子设备可以进入紧急备份模式,以便用户可以对第二分区中所存储的数据进行备份。在备份完毕之后,电子设备可以根据用户触发的操作,恢复出厂设置,以使电子设备恢复正常。
120.而在电子设备进入紧急备份模式后,电子设备可能会由于用户误触发的操作或其他原因,对第二分区中存储的数据进行破坏,导致无法对用户存储的数据进行备份,造成用户存储的数据丢失等问题。
121.因此,本技术实施例提出一种i/o请求转发方法,可以在电子设备异常时,对用户存储的数据进行保护,避免用户存储的数据遭到破坏。
122.下述以第一设备为电子设备的磁盘设备,第二设备为电子设备的虚拟设备为例进行说明。
123.下述对本技术实施例提供的一种i/o请求转发方法所涉及的操作系统的内核架构进行介绍,下述以linux操作系统为例进行说明。参见图1,图1中示出的内核架构可以包括:通用块层110、驱动层120和设备层130。
124.其中,通用块层110用于完成i/o请求的合并和调度等操作;驱动层120包括电子设备的驱动程序,用于将i/o请求转换为对电子设备的寄存器的操作;设备层130可以是电子设备的磁盘设备,也可以是通过软件模拟的虚拟设备。
125.电子设备在检测到用户触发的操作时,可以通过操作系统生成相对应的bio描述符。例如,电子设备可以通过操作系统为用户触发的操作分配一个bio描述符,并对该bio描述符进行初始化,以便初始化后的bio描述符可以对i/o请求进行描述。
126.其中,bio描述符是通用块层110中用来描述单一的i/o请求的数据结构,记录了一次i/o操作所必需的相关信息。例如,bio描述符可以包括:i/o操作的操作类型,也即是该i/o操作是读操作还是写操作、i/o操作的数据缓存位置、以及i/o操作的块设备起始扇区等数据。
127.参见图2,图2示出了操作系统的内核架构对i/o请求进行转发的示意性流程图,通用块层110可以接收以bio描述符的形式所表现的i/o请求,并对该bio描述符进行识别。再根据识别结果,确定通过磁盘设备对应的队列函数下发该i/o请求,或者,通过虚拟设备对应的队列函数下发该i/o请求,以便驱动层120和设备层130可以根据该bio描述符,对磁盘设备或虚拟设备进行i/o操作,从而可以对磁盘设备中的第二分区执行可读不可写的i/o操作,进而可以对磁盘设备中存储的数据实现保护。
128.需要说明的是,上述内核架构、以及通过该内核架构转发i/o请求的方式可以应用在多个场景。例如,可以应用在数据备份和数据保护等多个场景。下述以电子设备进入紧急备份模式为例,说明电子设备转发i/o请求的方法,也即是电子设备根据bio描述符,向不同的队列函数发送bio描述符的方法。
129.图3是本技术实施例提供的一种i/o请求转发方法的示意性流程图,作为示例而非限定,该方法可以应用于上述电子设备中,参见图3,该方法包括:
130.步骤301、进入紧急备份模式,建立虚拟设备。
131.电子设备若检测到多次无法正常启动,说明电子设备当前处于异常状态,电子设备可以进入紧急备份模式,以便用户可以在紧急备份模式下对电子设备中存储的数据进行备份,避免在对电子设备恢复出厂设置后丢失用户存储在电子设备中的数据。
132.电子设备在进入紧急备份模式后,可以根据电子设备的内存建立虚拟设备,以便在后续步骤中,电子设备可以调用虚拟设备对应的队列函数下发i/o请求。
133.步骤302、根据用户触发的第一操作,生成bio描述符。
134.电子设备在进入紧急备份模式后,可以检测用户触发的第一操作。若检测到用户触发的用于输入或输出数据的第一操作,则电子设备可以通过操作系统的内核为该第一操作分配一个新的bio描述符,并对该bio描述符的参数值进行设置,完成对bio描述符的初始化。之后,电子设备可以向操作系统中内核的通用块层发送该初始化后的bio描述符,以便通用块层可以根据该bio描述符执行相对应的i/o操作。
135.例如,若电子设备为手机,手机在检测到多次开机异常后,可以进入紧急备份模式,并向用户展示如图4所示的紧急备份界面,参见图4,该紧急备份界面中可以包括:数据
备份401、恢复出厂设置402、重启403和关机404等多个选项。当手机检测到用户对数据备份401触发了备份操作时,即第一操作为备份操作,手机可以根据为该备份操作分配bio描述符,对该bio描述符进行初始化,并向内核的通用块层发送初始化后的bio描述符。
136.需要说明的是,电子设备的i/o请求在内核架构的不同层级之间具有不同的表现形式。例如,在内核的通用块层,i/o请求可以采用bio描述符的形式进行表示;在驱动层和设备层,i/o请求可以采用i/o操作的形式进行表示,本技术实施例对i/o请求的表现形式不做限定。
137.步骤303、在bio描述符中备份i/o请求对应的磁盘分区号。
138.其中,磁盘分区号用于标识磁盘设备的各个分区。例如,电子设备可以根据用户触发的操作,对磁盘设备进行分区,得到多个磁盘分区,每个磁盘分区可以对应一个磁盘分区号,以便通过各个磁盘分区号标识各个磁盘分区。
139.电子设备在通过操作系统的内核对磁盘设备执行i/o操作时,内核根据bio描述符对完整的磁盘设备执行i/o操作,并不会根据磁盘分区对应的磁盘分区号执行i/o操作。而在后续步骤中,电子设备需要根据磁盘分区号确定i/o请求对应的磁盘分区,以便根据确定的磁盘分区采用不同的队列函数下发bio描述符。因此,电子设备在生成bio描述符后,可以在bio描述符中对i/o请求对应的磁盘分区号进行备份。
140.例如,电子设备可以在bio描述符中新增数据结构,通过新增的数据结构对磁盘分区号进行备份。
141.步骤304、通过虚拟设备对应的队列函数将bio描述符加入队列。
142.在对磁盘分区号备份完毕后,电子设备可以先通过虚拟设备对应的队列函数下发bio描述符,以便在后续步骤中,操作系统的内核可以在虚拟设备对应的队列中判断是否需要将该bio描述符重新下发至磁盘设备对应的队列。
143.例如,操作系统的内核可以调用虚拟设备对应的队列函数q-》make_request_fn,将bio描述符插入虚拟设备对应的请求队列q中。
144.步骤305、识别i/o请求的类型。
145.i/o请求具有多种不同的类型,电子设备在将i/o请求加入虚拟设备对应的队列函数后,可以先确定i/o请求的类型,从而可以根据i/o请求的类型确定是否需要重新将i/o请求下发至磁盘设备对应的队列中。
146.在一种可能实施方式中,电子设备可以获取bio描述符中所包括的操作指令,再对获取的操作指令进行识别,将该操作指令对应的类型与预先设置的各个类型进行比较,从而可以确定该i/o请求的类型是否与预先设置的类型相匹配。其中,该操作指令用于表示i/o请求对应的i/o操作。相应的,电子设备可以根据i/o操作的类型确定i/o请求的类型。
147.当i/o请求的类型与预先设置的类型相匹配时,电子设备可以执行步骤306;当i/o请求的类型与预先设置的类型不匹配时,电子设备可以执行步骤308,以便分别采用不同的方式继续对bio描述符中的其他数据进行识别,从而确定是否需要重新下发该bio描述符。
148.例如,操作系统的内核可以获取bio描述符中“bi_flags”对应的操作指令,当“bi_flags”指示i/o请求对应的操作指令为“flush”+“write”时,说明该i/o请求用于将缓冲区缓存的数据清空并落盘,则i/o请求的类型与预先设置的类型相匹配,电子设备可以执行步骤306。其中,“flush”指令用于清空电子设备的缓冲区数据,“write”指令用于将数据写入
缓冲区,“flush”+“write”指令用于清空缓冲区的数据,并将缓冲区缓存的数据落盘。
149.步骤306、当i/o请求的类型与预先设置的类型相匹配时,确定i/o请求是否会对磁盘设备写入数据。
150.在确定i/o请求的类型与预先设置的类型相匹配之后,电子设备需要进一步确定i/o请求是否会对磁盘设备写入数据,也即是,该i/o请求除了将缓冲区缓存的数据落盘,是否会继续对磁盘设备写入数据,从而可以根据判断结果确定是否需要重新下发bio描述符。
151.若该i/o请求并不会对磁盘设备写入数据,则电子设备可以执行步骤307,重新下发bio请求;若该i/o请求会对磁盘设备写入数据,则电子设备可以执行步骤310,使得该bio描述符保留在虚拟设备对应的队列中。
152.例如,操作系统的内核可以获取bio描述符中“bi_size”对应的数据,该“bi_size”用于描述bio描述符的i/o数据量的大小,以字节为单位。若该“bi_size”对应的数据指示i/o数据量的大小为0,则可以确定该i/o请求并不会向磁盘设备写入数据。相应的,操作系统的内核可以执行步骤307。但是,若该“bi_size”对应的数据指示i/o数据量的大小不为0,则可以确定该i/o请求会向磁盘设备写入数据。相应的,操作系统的内核可以执行步骤310,使得该bio描述符保留在虚拟设备对应的队列中。
153.步骤307、当i/o请求不会对磁盘设备写入数据时,通过磁盘设备对应的队列函数重新将bio描述符加入队列。
154.在确定i/o请求的类型与预先设置的类型相匹配、且不会对磁盘设备写入数据后,电子设备确定可以重新下发bio描述符,无需通过虚拟设备对应的队列对该bio描述符进行处理。
155.相应的,操作系统的内核可以调用磁盘设备对应的队列函数,对该bio描述符重新进行下发,使得该bio描述符加入磁盘设备对应的队列,以便电子设备可以根据该bio描述符对磁盘设备执行i/o操作。
156.本步骤307将bio描述符加入磁盘设备对应的队列的过程,与步骤304将bio描述符加入虚拟设备对应的队列的过程类似,在此不再赘述。
157.步骤308、当i/o请求的类型与预先设置的类型不匹配时,确定i/o请求所指示的磁盘分区。
158.当电子设备确定i/o请求的类型与预先设置的类型不匹配时,电子设备可以继续确定i/o请求所指示的磁盘分区,从而根据i/o请求对应的磁盘分区,确定是否需要重新下发bio描述符到磁盘设备对应的队列。
159.在一种可能实施方式中,参见图5,图5示出了电子设备识别i/o请求所指示的磁盘分区的示意性流程图,电子设备可以分别执行如下步骤:
160.步骤308a、判断i/o请求对应的磁盘分区号是否为0。
161.步骤308b、当磁盘分区号为0时,根据bio描述符中备份的磁盘分区号打开相对应的磁盘分区。
162.步骤308c、当磁盘分区号不为0时,根据原有的磁盘分区号打开相对应的磁盘分区。
163.步骤308d、当成功打开相对应的磁盘分区时,获取磁盘分区对应的名称信息。
164.其中,该名称信息用于标识磁盘分区。例如,电子设备的磁盘设备包括第一分区和
第二分区,第一分区对应的磁盘名称为“os”,第二分区对应的磁盘名称为“data”,则第一分区的名称信息可以为“os”,第二分区的名称信息可以为“data”。
165.步骤308e、确定i/o请求对应的磁盘分区是否为磁盘设备的第一分区。
166.步骤308f、当i/o请求对应的磁盘分区为磁盘设备的第一分区时,电子设备通过磁盘设备对应的队列函数下发该i/o请求。
167.步骤308g、当打开i/o请求相对应的磁盘分区失败时,或者,当i/o请求对应的磁盘分区为磁盘设备的第二分区时,将bio描述符保留在虚拟设备对应的队列中。
168.其中,步骤308f即为步骤309,步骤308g即为步骤310,详见下述内容,在此不再赘述。
169.步骤309、当i/o请求对应的磁盘分区为磁盘设备的第一分区时,通过磁盘设备对应的队列函数重新将bio描述符加入队列。
170.本步骤309将bio描述符加入磁盘设备对应的队列的过程,与步骤307将bio描述符加入磁盘设备对应的队列的过程类似,在此不再赘述。
171.步骤310、当i/o请求会对磁盘设备写入数据时、当打开i/o请求相对应的磁盘分区失败时,或者,当i/o请求对应的磁盘分区为磁盘设备的第二分区时,将bio描述符保留在虚拟设备对应的队列中。
172.当i/o请求会对磁盘设备写入数据时、当电子设备无法打开i/o请求对应的磁盘分区时,或者,当i/o请求对应的磁盘分区为磁盘设备的第二分区时,为了避免用户触发的操作会对电子设备中用户存储的数据造成删除、覆盖等破坏原有数据情况,电子设备可以控制bio描述符继续保留在虚拟设备对应的队列中,防止对磁盘设备进行i/o操作。
173.需要说明的是,本技术实施例以先执行步骤304,电子设备先通过虚拟设备对应的队列函数将bio描述符加入队列为例进行示例性说明。在实际应用中,电子设备也可以不执行步骤304,而是执行步骤305至步骤309,确定bio描述符需要加入的队列后,调用磁盘设备对应的队列函数或虚拟设备对应的队列函数将bio描述符加入相对应的队列。
174.另外,本技术实施例以先根据确定的i/o请求对应的类型对i/o请求进行转发,再根据确定i/o请求对应的磁盘分区,对i/o请求的转发流程为例进行说明。在实际应用中,电子设备也可以先根据i/o请求对应的磁盘分区,确定是否需要对i/o请求进行转发。当不需要对i/o请求进行转发时,电子设备可以再根据i/o请求对应的类型,确定是否需要对i/o请求进行转发,本技术实施例对根据i/o请求对应的类型和磁盘分区,转发i/o请求的顺序不做限定。
175.综上所述,本技术实施例提供的i/o请求转发方法,电子设备在进入紧急备份模式后,建立虚拟设备,并根据用户触发的操作,生成bio描述符,再将bio描述符加入虚拟设备对应的队列。之后,确定bio描述符所对应的i/o请求的类型、以及该i/o请求对应的磁盘分区,确定该i/o请求是否会对电子设备中用户存储的数据造成破坏。当该i/o请求会对电子设备中用户存储的数据造成破坏时,电子设备可以通过操作系统的内核将bio描述符保留在虚拟设备对应的队列中,以使该i/o请求对应的i/o操作不会对用户存储的数据触发i/o操作;当该i/o请求不会对电子设备中用户存储的数据造成破坏时,电子设备可以重新将该bio描述符加入磁盘设备对应的队列,以便操作系统的内核根据该i/o请求对磁盘设备触发相对应的i/o操作,从而可以实现先通过操作系统的内核拦截i/o请求,再根据i/o请求的类
型和磁盘分区,向不同的队列下发相对应的bio描述符,可以提高电子设备中用户存储的数据的安全性。
176.而且,通过对i/o请求的磁盘分区号进行备份,可以在操作系统的内核针对完整磁盘设备执行i/o操作的情况下,根据备份的磁盘分区号确定i/o请求对应的磁盘分区,以提高确定磁盘分区号的效率和灵活性。
177.另外,通过在确定i/o请求的类型的基础上,继续确定bio描述符中i/o数据量,可以进一步对i/o请求进行区分,从而可以识别会对磁盘设备写入数据的i/o请求,提高数据的安全性。
178.此外,本技术实施例提供的i/o请求转发方法,通过在操作系统的内核中实现i/o请求的转发,并且不实现i/o请求的恢复功能,以使转发i/o请求的过程不可逆,电子设备无法向磁盘设备的部分分区写入数据,从而可以提高数据的安全性。
179.应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,而且可以对上述实施例中各步骤进行删减和增加,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
180.对应于上文实施例所述的i/o请求转发方法,图6是本技术实施例提供的一种i/o请求转发装置的结构框图,为了便于说明,仅示出了与本技术实施例相关的部分。
181.参照图6,该装置包括:
182.生成模块601,用于响应于第一操作,生成i/o请求;
183.确定模块602,用于确定该i/o请求对应的类型和/或磁盘分区;
184.下发模块603,用于根据该i/o请求对应的类型和/或磁盘分区,向第一设备对应的队列或第二设备对应的队列下发该i/o请求。
185.可选的,该下发模块603,具体用于当该i/o请求对应的类型与预先设置的类型相匹配时,确定该i/o请求对应的i/o数据量;当该i/o数据量指示该i/o请求不会对该磁盘设备写入数据时,向该第一设备对应的队列下发该i/o请求;当该i/o数据量指示该i/o请求会对该磁盘设备写入数据时,向该第二设备对应的队列下发该i/o请求,或者,根据该i/o请求对应的磁盘分区,向该第一设备对应的队列或该第二设备对应的队列下发该i/o请求。
186.可选的,该确定模块602,具体用于确定该i/o请求中的操作指令,该操作指令用于表示该i/o请求对应的i/o操作;根据该操作指令,确定该i/o请求对应的类型。
187.可选的,该下发模块603,具体用于获取该i/o请求对应的磁盘分区的名称信息;当该名称信息指示该磁盘分区是该第一设备的第一分区时,向该第一设备对应的队列下发该i/o请求;当该名称信息指示该磁盘分区是该第一设备的第二分区时,则向该第二设备对应的队列下发该i/o请求,或者,根据该i/o请求对应的类型,向该第一设备对应的队列或该第二设备对应的队列下发该i/o请求。
188.可选的,该下发模块603,还具体用于根据该i/o请求打开该i/o请求对应的磁盘分区;获取该磁盘分区的名称信息。
189.可选的,参见图7,该装置还包括:
190.备份模块604,用于在i/o请求中备份该i/o请求对应的磁盘分区号;
191.该下发模块603,还具体用于根据备份的该磁盘分区号,打开该i/o请求对应的磁盘分区。
192.可选的,该下发模块603,还具体用于当开启该i/o请求对应的磁盘分区失败时,向该第二设备对应的队列下发该i/o请求,或者,根据该i/o请求对应的类型,向该第一设备对应的队列或该第二设备对应的队列下发该i/o请求。
193.可选的,参见图8,该装置还包括:
194.调用模块605,用于调用该第二设备对应的队列函数,将该i/o请求加入该第二设备对应的队列;
195.该下发模块603,具体用于根据该i/o请求对应的类型和/或磁盘分区,调用该第一设备对应的队列函数,将该i/o请求加入该第一设备对应的队列,或者,将该i/o请求保留在该第二设备对应的队列。
196.可选的,参见图9,该装置还包括:
197.建立模块606,用于当检测到电子设备状态异常时,根据该电子设备的内存建立该虚拟设备。
198.可选的,在电子设备的操作系统的通用块层中,该i/o请求为bio描述符。
199.可选的,在电子设备的操作系统的通用块层中,该i/o请求为bio描述符;
200.参见图10,该装置还包括:
201.建立模块606,用于当检测到电子设备状态异常时,根据该电子设备的内存建立该第二设备;
202.该装置还包括:
203.调用模块605,用于调用该第二设备对应的队列函数,将该i/o请求加入该第二设备对应的队列;
204.该下发模块603,具体用于根据该i/o请求对应的类型和/或磁盘分区,调用该第一设备对应的队列函数,将该i/o请求加入该第一设备对应的队列,或者,将该i/o请求保留在该第二设备对应的队列;
205.该确定模块602,具体用于确定该i/o请求中的操作指令,该操作指令用于表示该i/o请求对应的i/o操作;根据该操作指令,确定该i/o请求对应的类型;
206.该下发模块603,还具体用于当该i/o请求对应的类型与预先设置的类型相匹配时,确定该i/o请求对应的i/o数据量;当该i/o数据量指示该i/o请求不会对该第一设备写入数据时,向该第一设备对应的队列下发该i/o请求;当该i/o数据量指示该i/o请求会对该第一设备写入数据时,向该第二设备对应的队列下发该i/o请求,或者,根据该i/o请求对应的磁盘分区,向该第一设备对应的队列或该第二设备对应的队列下发该i/o请求;
207.该下发模块603,还具体用于获取该i/o请求对应的磁盘分区的名称信息;当该名称信息指示该磁盘分区是该第一设备的第一分区时,向该第一设备对应的队列下发该i/o请求;当该名称信息指示该磁盘分区是该第一设备的第二分区时,向该第二设备对应的队列下发该i/o请求,或者,根据该i/o请求对应的类型,向该第一设备对应的队列或该第二设备对应的队列下发该i/o请求;
208.该下发模块603,还具体用于根据该i/o请求打开该i/o请求对应的磁盘分区;获取该磁盘分区的名称信息;
209.该装置还包括:
210.备份模块604,用于在i/o请求中备份该i/o请求对应的磁盘分区号;
211.该下发模块603,还具体用于根据备份的该磁盘分区号,打开该i/o请求对应的磁盘分区;
212.该下发模块603,还具体用于当打开该i/o请求对应的磁盘分区失败时,向该第二设备对应的队列下发该i/o请求,或者,根据该i/o请求对应的类型,向该第一设备对应的队列或该第二设备对应的队列下发该i/o请求。
213.综上所述,本技术实施例提供的i/o请求转发装置,电子设备在进入紧急备份模式后,建立虚拟设备,并根据用户触发的操作,生成bio描述符,再将bio描述符加入虚拟设备对应的队列。之后,确定bio描述符所对应的i/o请求的类型、以及该i/o请求对应的磁盘分区,确定该i/o请求是否会对电子设备中用户存储的数据造成破坏。当该i/o请求会对电子设备中用户存储的数据造成破坏时,电子设备可以通过操作系统的内核将bio描述符保留在虚拟设备对应的队列中,以使该i/o请求对应的i/o操作不会对用户存储的数据触发i/o操作;当该i/o请求不会对电子设备中用户存储的数据造成破坏时,电子设备可以重新将该bio描述符加入磁盘设备对应的队列,以便操作系统的内核根据该i/o请求对磁盘设备触发相对应的i/o操作,从而可以实现先通过操作系统的内核拦截i/o请求,再根据i/o请求的类型和磁盘分区,向不同的队列下发相对应的bio描述符,可以提高电子设备中用户存储的数据的安全性。
214.下述介绍本技术实施例涉及的电子设备。请参阅图11,图11是本技术实施例提供的一种电子设备的结构示意图。
215.电子设备可以包括处理器1110,外部存储器接口1120,内部存储器1121,通用串行总线(universal serial bus,usb)接口1130,充电管理模块1140,电源管理模块1141,电池1142,天线1,天线2,移动通信模块1150,无线通信模块1160,音频模块1170,扬声器1170a,受话器1170b,麦克风1170c,耳机接口1170d,传感器模块1180,按键1190,马达1191,指示器1192,摄像头1193,显示屏1194,以及用户标识模块(subscriber identification module,sim)卡接口1195等。其中传感器模块1180可以包括压力传感器1180a,陀螺仪传感器1180b,气压传感器1180c,磁传感器1180d,加速度传感器1180e,距离传感器1180f,接近光传感器1180g,指纹传感器1180h,温度传感器1180j,触摸传感器1180k,环境光传感器1180l,骨传导传感器1180m等。
216.可以理解的是,本发明实施例示意的结构并不构成对电子设备的具体限定。在本技术另一些实施例中,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
217.例如,上述图6至图10中所示的生成模块601、确定模块602、下发模块603、备份模块604和调用模块605,可以为图11中所示的电子设备的处理器1110;上述图6至图10中所示的建立模块606,可以为图11中所示的电子设备的内部存储器1121。
218.处理器1110可以包括一个或多个处理单元,例如:处理器1110可以包括应用处理器(application processor,ap),调制解调处理器,图形处理器(graphics processing unit,gpu),图像信号处理器(image signal processor,isp),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,dsp),基带处理器,和/或神经网络处理器(neural-network processing unit,npu)等。其中,不同的处理单元可以是独立的器件,
也可以集成在一个或多个处理器中。
219.其中,控制器可以是电子设备的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
220.处理器1110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器1110中的存储器为高速缓冲存储器。该存储器可以保存处理器1110刚用过或循环使用的指令或数据。如果处理器1110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器1110的等待时间,因而提高了系统的效率。
221.在一些实施例中,处理器1110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,i2c)接口,集成电路内置音频(inter-integrated circuit sound,i2s)接口,脉冲编码调制(pulse code modulation,pcm)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,uart)接口,移动产业处理器接口(mobile industry processor interface,mipi),通用输入输出(general-purpose input/output,gpio)接口,用户标识模块(subscriber identity module,sim)接口,和/或通用串行总线(universal serial bus,usb)接口等。
222.usb接口1130是符合usb标准规范的接口,具体可以是mini usb接口,micro usb接口,usb type c接口等。usb接口1130可以用于连接充电器为电子设备充电,也可以用于电子设备与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如ar设备等。
223.可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备的结构限定。在本技术另一些实施例中,电子设备也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
224.电子设备的无线通信功能可以通过天线1,天线2,移动通信模块1150,无线通信模块1160,调制解调处理器以及基带处理器等实现。
225.天线1和天线2用于发射和接收电磁波信号。电子设备中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
226.移动通信模块1150可以提供应用在电子设备上的包括2g/3g/4g/5g等无线通信的解决方案。移动通信模块1150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,lna)等。移动通信模块1150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块1150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块1150的至少部分功能模块可以被设置于处理器1110中。在一些实施例中,移动通信模块1150的至少部分功能模块可以与处理器1110的至少部分模块被设置在同一个器件中。
227.调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器1170a,受话器1170b等)输出声音信号,或通过显示屏1194显示图像或视频。在一些实施例中,调制解调处理器可以
是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器1110,与移动通信模块1150或其他功能模块设置在同一个器件中。
228.无线通信模块1160可以提供应用在电子设备上的包括无线局域网(wireless local area networks,wlan)(如无线保真(wireless fidelity,wi-fi)网络),蓝牙(bluetooth,bt),全球导航卫星系统(global navigation satellite system,gnss),调频(frequency modulation,fm),近距离无线通信技术(near field communication,nfc),红外技术(infrared,ir)等无线通信的解决方案。无线通信模块1160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块1160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器1110。无线通信模块1160还可以从处理器1110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
229.在一些实施例中,电子设备的天线1和移动通信模块1150耦合,天线2和无线通信模块1160耦合,使得电子设备可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,gsm),通用分组无线服务(general packet radio service,gprs),码分多址接入(code division multiple access,cdma),宽带码分多址(wideband code division multiple access,wcdma),时分码分多址(time-division code division multiple access,td-scdma),长期演进(long term evolution,lte),bt,gnss,wlan,nfc,fm,和/或ir技术等。所述gnss可以包括全球卫星定位系统(global positioning system,gps),全球导航卫星系统(global navigation satellite system,glonass),北斗卫星导航系统(beidou navigation satellite system,bds),准天顶卫星系统(quasi-zenith satellite system,qzss)和/或星基增强系统(satellite based augmentation systems,sbas)。
230.电子设备通过gpu,显示屏1194,以及应用处理器等实现显示功能。gpu为图像处理的微处理器,连接显示屏1194和应用处理器。gpu用于执行数学和几何计算,用于图形渲染。处理器1110可包括一个或多个gpu,其执行程序指令以生成或改变显示信息。
231.显示屏1194用于显示图像,视频等。显示屏1194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,lcd),有机发光二极管(organic light-emitting diode,oled),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode,amoled),柔性发光二极管(flex light-emitting diode,fled),miniled,microled,micro-oled,量子点发光二极管(quantum dot light emitting diodes,qled)等。在一些实施例中,电子设备可以包括1个或n个显示屏1194,n为大于1的正整数。
232.外部存储器接口1120可以用于连接外部存储卡,例如micro sd卡,实现扩展电子设备的存储能力。外部存储卡通过外部存储器接口1120与处理器1110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
233.内部存储器1121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器1110通过运行存储在内部存储器1121的指令,从而执行电子设备的各种功能应用以及数据处理。内部存储器1121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备使用过程中所创建的数据(比如音频数据,电话本等)等。此外,
内部存储器1121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,ufs)等。
234.压力传感器1180a用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器1180a可以设置于显示屏1194。压力传感器1180a的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器1180a,电极之间的电容改变。电子设备根据电容的变化确定压力的强度。当有触摸操作作用于显示屏1194,电子设备根据压力传感器1180a检测所述触摸操作强度。电子设备也可以根据压力传感器1180a的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。
235.陀螺仪传感器1180b可以用于确定电子设备的运动姿态。在一些实施例中,可以通过陀螺仪传感器1180b确定电子设备围绕三个轴(即,x,y和z轴)的角速度。陀螺仪传感器1180b可以用于拍摄防抖。示例性的,当按下快门,陀螺仪传感器1180b检测电子设备抖动的角度,根据角度计算出镜头模组需要补偿的距离,让镜头通过反向运动抵消电子设备的抖动,实现防抖。陀螺仪传感器1180b还可以用于导航,体感游戏场景。
236.触摸传感器1180k,也称“触控面板”。触摸传感器1180k可以设置于显示屏1194,由触摸传感器1180k与显示屏1194组成触摸屏,也称“触控屏”。触摸传感器1180k用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏1194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器1180k也可以设置于电子设备的表面,与显示屏1194所处的位置不同。
237.按键1190包括开机键,音量键等。按键1190可以是机械按键。也可以是触摸式按键。电子设备可以接收按键输入,产生与电子设备的用户设置以及功能控制有关的键信号输入。
238.马达1191可以产生振动提示。马达1191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。作用于显示屏1194不同区域的触摸操作,马达1191也可对应不同的振动反馈效果。不同的应用场景(例如:时间提醒,接收信息,闹钟,游戏等)也可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。
239.指示器1192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
240.sim卡接口1195用于连接sim卡。sim卡可以通过插入sim卡接口1195,或从sim卡接口1195拔出,实现和电子设备的接触和分离。电子设备可以支持1个或n个sim卡接口,n为大于1的正整数。sim卡接口1195可以支持nano sim卡,micro sim卡,sim卡等。同一个sim卡接口1195可以同时插入多张卡。所述多张卡的类型可以相同,也可以不同。sim卡接口1195也可以兼容不同类型的sim卡。sim卡接口1195也可以兼容外部存储卡。电子设备通过sim卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,电子设备采用esim,即:嵌入式sim卡。esim卡可以嵌在电子设备中,不能和电子设备分离。
241.所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本技术的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
242.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
243.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
244.在本技术所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
245.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
246.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
247.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到电子设备的任何实体或装置、记录介质、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质。例如u盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
248.最后应说明的是:以上所述,仅为本技术的具体实施方式,但本技术的保护范围并
不局限于此,任何在本技术揭露的技术范围内的变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1