CN105630599B - 基于32/64位混合操作系统的显存分配方法及装置 - Google Patents

基于32/64位混合操作系统的显存分配方法及装置 Download PDF

Info

Publication number
CN105630599B
CN105630599B CN201410586856.1A CN201410586856A CN105630599B CN 105630599 B CN105630599 B CN 105630599B CN 201410586856 A CN201410586856 A CN 201410586856A CN 105630599 B CN105630599 B CN 105630599B
Authority
CN
China
Prior art keywords
memory
video card
operating system
kernel
reserved value
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
CN201410586856.1A
Other languages
English (en)
Other versions
CN105630599A (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.)
Loongson Technology Corp Ltd
Original Assignee
Loongson Technology Corp 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 Loongson Technology Corp Ltd filed Critical Loongson Technology Corp Ltd
Priority to CN201410586856.1A priority Critical patent/CN105630599B/zh
Publication of CN105630599A publication Critical patent/CN105630599A/zh
Application granted granted Critical
Publication of CN105630599B publication Critical patent/CN105630599B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Television Signal Processing For Recording (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

本发明提供一种基于32/64位混合操作系统的显存分配方法及装置,该方法包括:在所述混合操作系统启动时,通过BIOS设定内存预留值,并向内核传递所述内存预留值,以在所述混合操作系统的低32位内存中为显卡预留专用内存;通过所述内核对所述混合操作系统的低32位内存中除了所述内存预留值以外的内存进行初始化;向所述内核申明所述内存预留值对应的内存为所述显卡的专用内存;在接收到所述显卡的驱动发送的使用请求命令时,从所述显卡的专用内存中为所述显卡分配内存。本发明中,可以保证给显卡分配的内存都是操作系统内存中低于32位的内存,以实现分配给显卡的内存显卡都可以访问,避免了分配的内存显卡不能访问的问题,并避免了资源的浪费。

Description

基于32/64位混合操作系统的显存分配方法及装置
技术领域
本发明涉及计算机处理技术,尤其涉及一种基于32/64位混合操作系统的显存分配方法及装置。
背景技术
当前,对于常规的32位系统或64位系统,共享内存的显卡在需要分配内存时,直接从系统的剩余空间中分配一部分内存作为显卡的内存。
现有技术中,针对32/64位混合操作系统,特别是对于没有独立显存的集成显示芯片,继续沿用常规32位系统或64位系统的分配方式。但是,32/64位混合操作系统中,低于32位的地址段大部分被内核占用,大部分内存的物理地址被分配到了高于32位的地址段,而很多显卡是32位的,不具备64位的访存能力,即无法访问高于32位的地址段,因此这样的分配方式会导致很多分配的地址无法被显卡使用。
发明内容
本发明提供一种基于32/64位混合操作系统的显存分配方法及装置,用于解决现有技术中为显卡分配的内存显卡无法访问的问题。
本发明第一方面提供一种基于32/64位混合操作系统的显存分配方法,包括:
在所述混合操作系统启动时,通过基本输入输出系统BIOS设定内存预留值,并向内核传递所述内存预留值,以在所述混合操作系统的低32位内存中为显卡预留专用内存,所述内存预留值小于所述混合操作系统中低32位内存的总容量;
通过所述内核对所述混合操作系统的低32位内存中除了所述内存预留值以外的内存进行初始化;
向所述内核申明所述内存预留值对应的内存为所述显卡的专用内存;
在接收到所述显卡的驱动发送的使用请求命令时,从所述显卡的专用内存中为所述显卡分配内存。
本发明第二方面提供一种基于32/64位混合操作系统的显存分配装置,包括:
处理模块,用于在所述混合操作系统启动时,通过基本输入输出系统BIOS设定内存预留值,并向内核传递所述内存预留值,以在所述混合操作系统的低32位内存中为显卡预留专用内存,所述内存预留值小于所述混合操作系统中低32位内存的总容量;
初始化模块,用于通过所述内核对所述混合操作系统的低32位内存中除了所述内存预留值以外的内存进行初始化;
申明模块,用于向所述内核申明所述内存预留值对应的内存为所述显卡的专用内存;
分配模块,用于在接收到所述显卡的驱动发送的使用请求命令时,从所述显卡的专用内存中为所述显卡分配内存。
本发明提供的基于32/64位混合操作系统的显存分配方法及装置,在上述混合操作系统启动,通过BIOS设定内存预留值,以在上述混合操作系统的低32位内存中为显卡预留专用内存,通过上述内核对上述混合操作系统的低32位内存中除了上述内存预留值以外的内存进行初始化,向上述内核申明上述内存预留值对应的内存为上述显卡的专用内存,在接收到上述显卡的驱动发送的使用请求命令时,从上述显卡的专用内存中为所述显卡分配内存。这样可以保证给显卡分配的内存都是操作系统内存中低于32位的内存,以实现分配给显卡的内存显卡都可以访问,避免了分配的内存显卡不能访问的问题,并避免了资源的浪费。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的基于32/64位混合操作系统的显存分配方法实施例一的流程示意图;
图2为本发明提供的基于32/64位混合操作系统的显存分配方法实施例二的流程示意图;
图3为本发明提供的基于32/64位混合操作系统的显存分配装置实施例一的结构示意图;
图4为本发明提供的基于32/64位混合操作系统的显存分配装置实施例二的结构示意图;
图5为本发明提供的基于32/64位混合操作系统的显存分配装置实施例三的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明提供的基于32/64位混合操作系统的显存分配方法实施例一的流程示意图,该方法的执行主体可以是中央处理器(Central Processing Unit,简称CPU),如图1所示,该方法包括:
S101、在上述混合操作系统启动,通过基本输入输出系统(Basic Input OutputSystem,简称BIOS)设定内存预留值,以在上述混合操作系统的低32位内存中为显卡预留专用内存。其中,上述内存预留值小于上述混合操作系统中低32位内存的总容量。
为显卡预留专用内存之前,还可以接收显卡向该混合操作系统注册的该显卡的专用标识,以便在后续分配内存时知道专用内存具体是哪个显卡的专用内存。
S102、通过上述内核对上述混合操作系统的低32位内存中除了上述内存预留值以外的内存进行初始化。
具体地,可以BIOS向内存通知预留内存的大小。例如:上述混合操作系统的实际内存是256兆(M),BIOS通知内核预留内存为56M,然后内核初始化时只初始化除预留的56M之外的200M内存。
S103、向上述内核申明上述内存预留值对应的内存为上述显卡的专用内存。
S104、在接收到上述显卡的驱动发送的使用请求命令时,从上述显卡的专用内存中为所述显卡分配内存。
具体实现过程中,可以使用分配函数,例如dma_alloc_coherent(DEV,)函数,来分配这段内存。
本实施例中,在上述混合操作系统启动,通过BIOS设定内存预留值,以在上述混合操作系统的低32位内存中为显卡预留专用内存,通过上述内核对上述混合操作系统的低32位内存中除了上述内存预留值以外的内存进行初始化,向上述内核申明上述内存预留值对应的内存为上述显卡的专用内存,在接收到上述显卡的驱动发送的使用请求命令时,从上述显卡的专用内存中为所述显卡分配内存。这样可以保证给显卡分配的内存都是操作系统内存中低于32位的内存,以实现分配给显卡的内存显卡都可以访问,避免了分配的内存显卡不能访问的问题,并避免了资源的浪费。
具体地,上述向上述内核申明上述内存预留值对应的内存为上述显卡的专用内存,可以是在上述内核的驱动中的探针probe接口函数中调用声明函数,以向上述内核声明上述内存预留值对应的内存为上述显卡的专用内存。
例如,可以在内核驱动中的probe接口函数中调用dma_declear_coherent(DEV,)函数来向内核申明这段内存为专用内存。
具体实现过程中,上述从上述显卡的专用内存中为所述显卡分配内存,可以是在上述内核中使用分配函数从上述显卡的专用内存中为上述显卡分配内存。
更进一步地,在显卡使用完之后所分配的内存后,会释放这些内存。具体地,在另一实施例中,上述向上述内核申明上述内存预留值对应的内存为上述显卡的专用内存之后,还包括使用释放函数释放上述专用内存。
具体地,可以使用释放函数,例如dma_free_coherent(DEV,)函数,来释放上述专用内存。
图2为本发明提供的基于32/64位混合操作系统的显存分配方法实施例二的流程示意图,所述方法包括:
S201、在上述混合操作系统启动,通过BIOS设定内存预留值,以在上述混合操作系统的低32位内存中为显卡预留专用内存。
S202、通过上述内核对上述混合操作系统的低32位内存中除了上述内存预留值以外的内存进行初始化。
S203、向上述内核申明上述内存预留值对应的内存为上述显卡的专用内存。
S201~S203与前述S101~S103相同,在此不再赘述。
S204、在接收到用户程序发送的使用请求命令时,在上述内核中使用分配函数从上述显卡的专用内存中为上述显卡分配内存,得到为上述用户程序分配的内存地址。
需要说明的是,在用户也需要上述专用内存时,用户会先向内核发送请求,再由内核向显卡发送内存请求,显卡通过调用相关函数为用户分配内存。
S205、使用地址重映射函数将上述内存地址映射为用户态指针,得到对应的内存指令。
即使用地址重映射函数将所分配的地址段转换为用户可用地址。
S206、使用复制函数将上述内存指令传递给上述应用程序对应的用户态。
具体地,可以使用copy_to_usr函数将上述用户态指针传递给用户。
在用户使用完后,显卡会释放分配给该用户的内存,以免造成资源浪费。
需要说明的是,上述实施例中的BIOS、内核以及用户程序、驱动等,都可以是软件程序,这些软件程序通过CPU来实现程序目的。
与图1相对应的,图3为本发明提供的基于32/64位混合操作系统的显存分配装置的结构示意图,如图3所示,该装置包括:处理模块301、初始化模块302、申明模块303和分配模块304。其中:
处理模块301,用于在所述混合操作系统启动时,通过基本输入输出系统BIOS设定内存预留值,并向内核传递所述内存预留值,以在所述混合操作系统的低32位内存中为显卡预留专用内存,所述内存预留值小于所述混合操作系统中低32位内存的总容量。
初始化模块302,用于通过所述内核对所述混合操作系统的低32位内存中除了所述内存预留值以外的内存进行初始化。
申明模块303,用于向所述内核申明所述内存预留值对应的内存为所述显卡的专用内存。
分配模块304,用于在接收到所述显卡的驱动发送的使用请求命令时,从所述显卡的专用内存中为所述显卡分配内存。
另一实施例中,申明模块303,具体用于在所述内核的驱动中的探针probe接口函数中调用声明函数,以向所述内核申明所述内存预留值对应的内存为所述显卡的专用内存。
分配模块304,具体用于在所述内核中使用分配函数从所述显卡的专用内存中为所述显卡分配内存。
与图2相对应的,图4为本发明提供的基于32/64位混合操作系统的显存分配装置的结构示意图,在图3所述实施例的基础上,该装置还可以包括转换模块401和发送模块402,其中:
分配模块304,还用于在接收到用户程序发送的使用请求命令时,在所述内核中使用分配函数从所述显卡的专用内存中为所述显卡分配内存,得到为所述用户程序分配的内存地址。相应地,
转换模块401,用于使用地址重映射函数将所述内存地址映射为用户态指针,得到对应的内存指令。
发送模块402,用于使用复制函数将所述内存指令传递给所述应用程序对应的用户态。
图5为本发明提供的基于32/64位混合操作系统的显存分配装置实施例三的结构示意图,在图3所述实施例的基础上,该装置还可以包括:释放模块501,用于使用释放函数释放所述专用内存。
上述装置用于执行前述方法实施例,其实现原理和技术效果类似,在此不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (8)

1.一种基于32/64位混合操作系统的显存分配方法,其特征在于,包括:
在所述混合操作系统启动时,通过基本输入输出系统BIOS设定内存预留值,并向内核传递所述内存预留值,以在所述混合操作系统的低32位内存中为显卡预留专用内存,所述内存预留值小于所述混合操作系统中低32位内存的总容量;
通过所述内核对所述混合操作系统的低32位内存中除了所述内存预留值以外的内存进行初始化;
向所述内核申明所述内存预留值对应的内存为所述显卡的专用内存;
在接收到所述显卡的驱动发送的使用请求命令时,从所述显卡的专用内存中为所述显卡分配内存;
在向所述内核申明所述内存预留值对应的内存为所述显卡的专用内存之后,还包括:
在接收到用户程序发送的使用请求命令时,在所述内核中使用分配函数从所述显卡的专用内存中为所述显卡分配内存,得到为所述用户程序分配的内存地址;
使用地址重映射函数将所述内存地址映射为用户态指针,得到对应的内存指令;
使用复制函数将所述内存指令传递给所述用户程序对应的用户态。
2.根据权利要求1所述的方法,其特征在于,所述向所述内核申明所述内存预留值对应的内存为所述显卡的专用内存,包括:
在所述内核的驱动中的探针probe接口函数中调用声明函数,以向所述内核申明所述内存预留值对应的内存为所述显卡的专用内存。
3.根据权利要求1所述的方法,其特征在于,从所述显卡的专用内存中为所述显卡分配内存,包括:
在所述内核中使用分配函数从所述显卡的专用内存中为所述显卡分配内存。
4.根据权利要求1所述的方法,其特征在于,在向所述内核申明所述内存预留值对应的内存为所述显卡的专用内存之后,还包括:
使用释放函数释放所述专用内存。
5.一种基于32/64位混合操作系统的显存分配装置,其特征在于,所述装置包括:
处理模块,用于在所述混合操作系统启动时,通过基本输入输出系统BIOS设定内存预留值,并向内核传递所述内存预留值,以在所述混合操作系统的低32位内存中为显卡预留专用内存,所述内存预留值小于所述混合操作系统中低32位内存的总容量;
初始化模块,用于通过所述内核对所述混合操作系统的低32位内存中除了所述内存预留值以外的内存进行初始化;
申明模块,用于向所述内核申明所述内存预留值对应的内存为所述显卡的专用内存;
分配模块,用于在接收到所述显卡的驱动发送的使用请求命令时,从所述显卡的专用内存中为所述显卡分配内存;
还包括:转换模块和发送模块;
所述分配模块,还用于在接收到用户程序发送的使用请求命令时,在所述内核中使用分配函数从所述显卡的专用内存中为所述显卡分配内存,得到为所述用户程序分配的内存地址;
所述转换模块,用于使用地址重映射函数将所述内存地址映射为用户态指针,得到对应的内存指令;
所述发送模块,用于使用复制函数将所述内存指令传递给所述用户程序对应的用户态。
6.根据权利要求5所述的装置,其特征在于,所述申明模块,具体用于在所述内核的驱动中的探针probe接口函数中调用声明函数,以向所述内核申明所述内存预留值对应的内存为所述显卡的专用内存。
7.根据权利要求5所述的装置,其特征在于,所述分配模块,具体用于在所述内核中使用分配函数从所述显卡的专用内存中为所述显卡分配内存。
8.根据权利要求5所述的装置,其特征在于,还包括:
释放模块,用于使用释放函数释放所述专用内存。
CN201410586856.1A 2014-10-28 2014-10-28 基于32/64位混合操作系统的显存分配方法及装置 Active CN105630599B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410586856.1A CN105630599B (zh) 2014-10-28 2014-10-28 基于32/64位混合操作系统的显存分配方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410586856.1A CN105630599B (zh) 2014-10-28 2014-10-28 基于32/64位混合操作系统的显存分配方法及装置

Publications (2)

Publication Number Publication Date
CN105630599A CN105630599A (zh) 2016-06-01
CN105630599B true CN105630599B (zh) 2019-02-15

Family

ID=56045576

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410586856.1A Active CN105630599B (zh) 2014-10-28 2014-10-28 基于32/64位混合操作系统的显存分配方法及装置

Country Status (1)

Country Link
CN (1) CN105630599B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107688494B (zh) * 2016-08-05 2021-05-11 深圳中电长城信息安全系统有限公司 一种内存分配方法和装置
CN107145451B (zh) * 2017-05-09 2020-09-25 深圳市茁壮网络股份有限公司 一种JavaScript对象存储、回收方法及装置
CN107168887B (zh) * 2017-05-09 2020-09-04 深圳市茁壮网络股份有限公司 一种JavaScript对象存储、回收方法及装置
CN109977037B (zh) * 2017-12-28 2021-01-22 龙芯中科技术股份有限公司 一种dma数据传输方法及系统
CN109408407B (zh) * 2018-10-19 2021-08-03 龙芯中科技术股份有限公司 显示内存的分配方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103136105A (zh) * 2011-11-28 2013-06-05 广东新岸线计算机系统芯片有限公司 一种内存管理方法、嵌入式系统和视频数据处理系统
CN103455361A (zh) * 2013-09-06 2013-12-18 南京南自信息技术有限公司 一种在64位操作系统下调用32位解码库的设计方法
CN103914400A (zh) * 2012-12-31 2014-07-09 联想(北京)有限公司 内存分配方法和电子设备

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7437541B2 (en) * 2004-07-08 2008-10-14 International Business Machiens Corporation Atomically updating 64 bit fields in the 32 bit AIX kernel
US20060282606A1 (en) * 2005-06-08 2006-12-14 Dell Products L.P. System and method for automatically optimizing available virtual memory
US7555678B2 (en) * 2006-03-23 2009-06-30 Mediatek Inc. System for booting from a non-XIP memory utilizing a boot engine that does not have ECC capabilities during booting
US10372551B2 (en) * 2013-03-15 2019-08-06 Netlist, Inc. Hybrid memory system with configurable error thresholds and failure analysis capability
KR101852888B1 (ko) * 2013-03-26 2018-06-04 한화지상방산 주식회사 하이브리드 전력 공급 시스템의 동작 방법
CN103744736B (zh) * 2014-01-09 2018-10-02 深圳Tcl新技术有限公司 内存管理的方法及Linux终端

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103136105A (zh) * 2011-11-28 2013-06-05 广东新岸线计算机系统芯片有限公司 一种内存管理方法、嵌入式系统和视频数据处理系统
CN103914400A (zh) * 2012-12-31 2014-07-09 联想(北京)有限公司 内存分配方法和电子设备
CN103455361A (zh) * 2013-09-06 2013-12-18 南京南自信息技术有限公司 一种在64位操作系统下调用32位解码库的设计方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
《混合模式之痛》;李冬;《软件世界》;20070105;第42-43页

Also Published As

Publication number Publication date
CN105630599A (zh) 2016-06-01

Similar Documents

Publication Publication Date Title
CN105630599B (zh) 基于32/64位混合操作系统的显存分配方法及装置
US11036533B2 (en) Mechanism to dynamically allocate physical storage device resources in virtualized environments
KR101690109B1 (ko) 물리적 메모리의 동적 분할 기술
WO2018119951A1 (zh) Gpu虚拟化方法、装置、系统及电子设备、计算机程序产品
KR101057452B1 (ko) 스마트카드 임베디드 조작 시스템 및 작업처리 방법
US8286178B2 (en) Allocation and regulation of CPU entitlement for virtual processors in logical partitioned platform
CN105868028A (zh) 一种进程间共享数据的方法、装置及终端
CN106233269A (zh) 在存储器控制器中的精细粒度带宽供应
CN100570562C (zh) 显卡、应用该显卡的虚拟机系统及显示处理方法
KR102338849B1 (ko) 실시간 운영 체제에서 스택 메모리 관리를 제공하는 방법 및 시스템
CN102761469A (zh) 一种资源池的分配方法和装置
KR20120086322A (ko) 가상 머신 저장 공간 관리를 위한 방법 및 시스템, 및 물리적 호스트
CN102906726A (zh) 协处理加速方法、装置及系统
CN109712060A (zh) 一种基于gpu容器技术的云桌面显卡共享方法及系统
CN107077375B (zh) 用于多操作系统的显示方法、装置和电子设备
CN101707565A (zh) 零拷贝网络报文发送、接收方法和装置
CN104216781B (zh) 显存分配方法及系统
CN103049328A (zh) 计算机系统中内存资源分配方法
CN110162396A (zh) 内存回收方法、装置、系统和存储介质
CN104199699B (zh) 程序加载方法、芯片启动方法、装置及主控设备
CN110135589A (zh) 用于机器学习的系统和方法
CN113377529B (zh) 一种智能加速卡及基于智能加速卡的数据处理方法
CN113326149A (zh) 异构多核系统的核间通信方法和设备
CN115686782A (zh) 基于固态硬盘的资源调度方法、装置、电子设备及存储介质
CN111198747B (zh) 一种为虚拟机分配内存的方法和虚拟机

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing

Patentee after: Loongson Zhongke Technology Co.,Ltd.

Address before: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing

Patentee before: LOONGSON TECHNOLOGY Corp.,Ltd.

CP01 Change in the name or title of a patent holder