CN104461915A - 一种在线课堂系统中内存动态分配方法及设备 - Google Patents
一种在线课堂系统中内存动态分配方法及设备 Download PDFInfo
- Publication number
- CN104461915A CN104461915A CN201410655171.8A CN201410655171A CN104461915A CN 104461915 A CN104461915 A CN 104461915A CN 201410655171 A CN201410655171 A CN 201410655171A CN 104461915 A CN104461915 A CN 104461915A
- Authority
- CN
- China
- Prior art keywords
- queue
- thread
- sub
- memory block
- memory
- 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.)
- Granted
Links
Landscapes
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种在线课堂系统中内存动态分配方法及设备,上述方法包括以下步骤:主线程创建第一预设数目的子线程,并创建与所述子线程数目相同的内存块;所述主线程将所述内存块放入内存队列中,并按照所述内存块的时间戳的先后顺序将内存队列中的所述内存块进行排序,其中,排在所述内存队列中第一位置的为队首,排在所述内存队列中最后位置的为队尾;所述主线程将所述内存队列中的队尾位置的所述内存块分配给执行读取操作的子线程;所述主线程将所述内存队列中的队首位置的所述内存块分配给执行写入操作的子线程。
Description
技术领域
本发明属于内存分配方法领域,尤其涉及一种在线课堂系统中内存动态分配方法及设备。
背景技术
现有的软件开发过程中,需要同时使用多线程来快速完成任务。为了避免多线程执行任务中造成的一块内存同时被进行读取和写入操作,需要在读写过程中设置阻塞。但当读写线程过多时,会导致阻塞等待时间过长,从而影响画面流畅感。
现有的内存管理机制主要是根据统计到的内存的使用情况建立内存池,并将内存池划分为大小一致的内存块。在执行任务时,线程申请对应的内存空间,如果申请的空间大于实际所需要的,这会导致内存浪费;如果申请的内存太小,又会影响到线程的正常工作。因此需要内核对系统内存进行有效地管理,做到有效地申请合适大小的内存空间。
发明内容
本发明提供一种在线课堂系统中内存动态分配方法及设备,以解决上述问题。
本发明提供一种在线课堂系统中内存动态分配方法。上述方法包括以下步骤:主线程创建第一预设数目的子线程,并创建与所述子线程数目相同的内存块;所述主线程将所述内存块放入内存队列中,并按照所述内存块的时间戳的先后顺序将内存队列中的所述内存块进行排序,其中,排在所述内存队列中第一位置的为队首,排在所述内存队列中最后位置的为队尾;所述主线程将所述内存队列中的队尾位置的所述内存块分配给执行读取操作的子线程;所述主线程将所述内存队列中的队首位置的所述内存块分配给执行写入操作的子线程。
本发明还提供一种在线课堂系统中内存动态分配设备,上述设备包括:主线程管理模块和内存队列管理模块,所述主线程管理模块和所述内存队列管理模块相连接;其中所述主线程管理模块包括多个子线程,所述内存队列管理模块包括多个内存块;所述主线程管理模块,用于创建第一预设数目的子线程,并创建与所述子线程数目相同的内存块;还用于将所述内存块放入内存队列管理模块中,并按照所述内存块的时间戳的先后顺序将内存队列管理模块中的所述内存块进行排序,其中,排在所述内存队列管理模块中第一位置的为队首,排在所述内存队列管理模块中最后位置的为队尾;还用于将所述内存队列管理模块中的队尾位置的所述内存块分配给执行读取操作的子线程;还用于将所述内存队列管理模块中的队首位置的所述内存块分配给执行写入操作的子线程;所述内存队列管理模块用于存放所述内存块。
相较于先前技术,根据本发明提供的在线课堂系统中内存动态分配方法及设备,本发明采取动态分配的方法将内存资源分配给子线程,提高了数据存储和读取的速度。本发明采取动态分配的方法避免了因一次分配太少,子线程不能满足系统运行要求,同时避免了因一次分配过多,造成内存浪费,从而影响其它线程工作的问题。另外,本发明提供的方法能在保持通用内存管理的高效性和可靠性的同时,有效地降低、甚至解决了内存管理中存在的内存资源浪费的问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1所示为根据本发明的较佳实施例提供的在线课堂系统中内存动态分配方法的流程图;
图2所示为根据本发明的较佳实施例提供的在线课堂系统中内存动态分配设备结构图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
如图1所示为根据本发明的较佳实施例提供的在线课堂系统中内存动态分配方法的流程图。如图1所示,本发明的较佳实施例提供的在线课堂系统中内存动态分配方法包括步骤101-104。
步骤101:主线程创建第一预设数目的子线程,并创建与所述子线程数目相同的内存块;
所述创建的内存块的大小相等。
举例而言,主线程根据摄像头的分辨率来创建相应大小的内存块,具体创建的内存块的大小为摄像头一帧图像的大小,不同分辨率的摄像头的一帧图像的大小不同。如摄像头的分辨率为1920×1080,则内存块的大小为1920×1080×3。
步骤102:所述主线程将所述内存块放入内存队列中,并按照所述内存块的时间戳的先后顺序将内存队列中的所述内存块进行排序,其中,排在所述内存队列中第一位置的为队首,排在所述内存队列中最后位置的为队尾;
所述时间戳为所述执行写入操作的子线程在执行写入操作时记录在内存块中的。
所述方法还包括:根据所述子线程执行写入操作的时间和所述子线程执行读取操作的时间的比值与预设值的关系对放入所述内存队列中的所述内存块的数目进行调整,具体为:若存在所述子线程执行写入操作的时间与所述子线程执行读取操作的时间的比值小于第一预设值时,增加所述内存队列中所述内存块的数目;若存在所述子线程执行写入操作的时间与所述子线程执行读取操作的时间的比值大于第二预设值时,减少所述内存队列中所述内存块的数目,其中第一预设值小于第二预设值。
若存在所述子线程执行写入操作的时间与所述子线程执行读取操作的时间的比值小于第一预设值时,在所述内存队列中增加第二预设数目的内存块。
若存在所述子线程执行写入操作的时间与所述子线程执行读取操作的时间的比值大于第二预设值时,在所述内存队列中减少第三预设数目的内存块。
步骤103:所述主线程将所述内存队列中的队尾位置的所述内存块分配给执行读取操作的子线程;
步骤104:所述主线程将所述内存队列中的队首位置的所述内存块分配给执行写入操作的子线程。
所述子线程在执行写入操作时,对正在接受写入的内存块设置阻塞。
下面举例进行详细说明:
主线程创建4个子线程,分别为子线程1、子线程2、子线程3、子线程4。主线程创建4个大小分别为1920×1080×3的内存块:内存块1、内存块2、内存块3、内存块4。主线程将内存块1、内存块2、内存块3、内存块4放入内存队列中。假设当前时刻各内存块的时间戳的具体如表1所示:
表1
内存块 | 时间戳 |
内存块1 | 11:00 |
内存块2 | 10:00 |
内存块3 | 14:00 |
内存块4 | 13:00 |
主线程按照内存块的时间戳的先后顺序将上述内存块进行排序,得到内存队列的顺序为:内存块2、内存块1、内存块4、内存块3,其中内存块2位于内存队列中第一位置(即队首),内存块3位于内存队列中最后位置(即队尾)。
当主线程接收到新来的一帧(第11帧)需要写入的图像数据时,主线程分配子线程4执行该写入操作,并将内存块2作为子线程4的写入对象。子线程4接收到执行写入操作的指令后,对内存块2设置阻塞,将第11帧的图像数据写入内存块2,写入完毕后更新记录在内存块2中的时间戳。
子线程4在执行上述写入操作时,主线程发送读取操作的指令到子线程1,子线程1读取内存块3中的图像数据。
假设第一预设值为2,第二预设值为4,第二预设数目为2个,第三预设数目为1个,本发明的内存动态分配方法还包括:
当子线程执行写入操作的时间与子线程执行读取操作的时间的比值为3时,不对内存块的数目进行调整。
当子线程执行写入操作的时间与子线程执行读取操作的时间的比值为1时,在内存队列中增加2个的内存块。
当子线程执行写入操作的时间与子线程执行读取操作的时间的比值为5时,将内存队列中内存块的数目减少1个。
图2所示为根据本发明的较佳实施例提供的在线课堂系统中内存动态分配设备结构图。如图2所示,本发明的较佳实施例提供的在线课堂系统中内存动态分配设备,上述设备包括:主线程管理模块200和内存队列管理模块300,所述主线程管理模块200和所述内存队列管理模块300相连接;其中所述主线程管理模块200包括多个子线程,所述内存队列管理模块300包括多个内存块;所述主线程管理模块200用于创建第一预设数目的子线程,并创建与所述子线程数目相同的内存块;还用于将所述内存块放入内存队列管理模块300中,并按照所述内存块的时间戳的先后顺序将内存队列管理模块300中的所述内存块进行排序,其中,排在所述内存队列管理模块300中第一位置的为队首,排在所述内存队列管理模块300中最后位置的为队尾;还用于将所述内存队列管理模块300中的队尾位置的所述内存块分配给执行读取操作的子线程;还用于将所述内存队列管理模块300中的队首位置的所述内存块分配给执行写入操作的子线程;所述内存队列管理模块300用于存放所述内存块。
此外,关于上述设备的具体操作过程同上述方法所述,故于此不再赘述。
综上所述,根据本发明提供的内存动态分配方法及设备,采取动态分配的方法将内存资源分配给子线程,提高了数据存储和读取的速度。本发明采取动态分配的方法避免了因一次分配太少,子线程不能满足系统运行要求,同时避免了因一次分配过多,造成内存浪费,从而影响其它线程工作的问题。另外,本发明提供的方法能在保持通用内存管理的高效性和可靠性的同时,有效地降低、甚至解决了内存管理中存在的内存资源浪费的问题。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种在线课堂系统中内存动态分配方法,其特征在于,包括以下步骤:
主线程创建第一预设数目的子线程,并创建与所述子线程数目相同的内存块;
所述主线程将所述内存块放入内存队列中,并按照所述内存块的时间戳的先后顺序将内存队列中的所述内存块进行排序,其中,排在所述内存队列中第一位置的为队首,排在所述内存队列中最后位置的为队尾;
所述主线程将所述内存队列中的队尾位置的所述内存块分配给执行读取操作的子线程;
所述主线程将所述内存队列中的队首位置的所述内存块分配给执行写入操作的子线程。
2.根据权利要求1所述的方法,其特征在于,所述时间戳为所述执行写入操作的子线程在执行写入操作时记录在内存块中的。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:根据所述子线程执行写入操作的时间和所述子线程执行读取操作的时间的比值与预设值的关系对放入所述内存队列中的所述内存块的数目进行调整,具体为:若存在所述子线程执行写入操作的时间与所述子线程执行读取操作的时间的比值小于第一预设值时,增加所述内存队列中所述内存块的数目;若存在所述子线程执行写入操作的时间与所述子线程执行读取操作的时间的比值大于第二预设值时,减少所述内存队列中所述内存块的数目,其中第一预设值小于第二预设值。
4.根据权利要求3所述的方法,其特征在于,若存在所述子线程执行写入操作的时间与所述子线程执行读取操作的时间的比值小于第一预设值时,在所述内存队列中增加第二预设数目的内存块。
5.根据权利要求3所述的方法,其特征在于,若存在所述子线程执行写入操作的时间与所述子线程执行读取操作的时间的比值大于第二预设值时,在所述内存队列中减少第三预设数目的内存块。
6.根据权利要求1所述的方法,其特征在于,所述子线程在执行写入操作时,对正在接受写入的内存块设置阻塞。
7.根据权利要求1所述的方法,其特征在于,所述创建的内存块的大小相等。
8.一种在线课堂系统中内存动态分配设备,其特征在于,包括:主线程管理模块和内存队列管理模块,所述主线程管理模块和所述内存队列管理模块相连接;其中所述主线程管理模块包括多个子线程,所述内存队列管理模块包括多个内存块;
所述主线程管理模块,用于创建第一预设数目的子线程,并创建与所述子线程数目相同的内存块;还用于将所述内存块放入内存队列管理模块中,并按照所述内存块的时间戳的先后顺序将内存队列管理模块中的所述内存块进行排序,其中,排在所述内存队列管理模块中第一位置的为队首,排在所述内存队列管理模块中最后位置的为队尾;还用于将所述内存队列管理模块中的队尾位置的所述内存块分配给执行读取操作的子线程;还用于将所述内存队列管理模块中的队首位置的所述内存块分配给执行写入操作的子线程;
所述内存队列管理模块用于存放所述内存块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410655171.8A CN104461915B (zh) | 2014-11-17 | 2014-11-17 | 一种在线课堂系统中内存动态分配方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410655171.8A CN104461915B (zh) | 2014-11-17 | 2014-11-17 | 一种在线课堂系统中内存动态分配方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104461915A true CN104461915A (zh) | 2015-03-25 |
CN104461915B CN104461915B (zh) | 2017-06-20 |
Family
ID=52908002
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410655171.8A Active CN104461915B (zh) | 2014-11-17 | 2014-11-17 | 一种在线课堂系统中内存动态分配方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104461915B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109062513A (zh) * | 2018-08-06 | 2018-12-21 | 郑州云海信息技术有限公司 | 一种控制处理写操作的方法及装置 |
CN109977334A (zh) * | 2019-03-26 | 2019-07-05 | 浙江度衍信息技术有限公司 | 检索速度优化方法 |
CN111414138A (zh) * | 2020-03-19 | 2020-07-14 | 青岛镕铭半导体有限公司 | 一种固态硬盘磨损均衡方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08272621A (ja) * | 1995-03-31 | 1996-10-18 | Hitachi Ltd | 動的メモリ領域を確保する関数呼出しの処理方法 |
US6058460A (en) * | 1996-06-28 | 2000-05-02 | Sun Microsystems, Inc. | Memory allocation in a multithreaded environment |
CN101615143A (zh) * | 2008-06-27 | 2009-12-30 | 国际商业机器公司 | 用于内存泄漏诊断的方法和装置 |
CN101984417A (zh) * | 2010-11-01 | 2011-03-09 | 中兴通讯股份有限公司 | 内存管理方法及装置 |
CN102495763A (zh) * | 2011-11-18 | 2012-06-13 | 成都易我科技开发有限责任公司 | 计算机程序内存动态配置方法 |
-
2014
- 2014-11-17 CN CN201410655171.8A patent/CN104461915B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08272621A (ja) * | 1995-03-31 | 1996-10-18 | Hitachi Ltd | 動的メモリ領域を確保する関数呼出しの処理方法 |
US6058460A (en) * | 1996-06-28 | 2000-05-02 | Sun Microsystems, Inc. | Memory allocation in a multithreaded environment |
CN101615143A (zh) * | 2008-06-27 | 2009-12-30 | 国际商业机器公司 | 用于内存泄漏诊断的方法和装置 |
CN101984417A (zh) * | 2010-11-01 | 2011-03-09 | 中兴通讯股份有限公司 | 内存管理方法及装置 |
CN102495763A (zh) * | 2011-11-18 | 2012-06-13 | 成都易我科技开发有限责任公司 | 计算机程序内存动态配置方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109062513A (zh) * | 2018-08-06 | 2018-12-21 | 郑州云海信息技术有限公司 | 一种控制处理写操作的方法及装置 |
CN109062513B (zh) * | 2018-08-06 | 2021-10-15 | 郑州云海信息技术有限公司 | 一种控制处理写操作的方法及装置 |
CN109977334A (zh) * | 2019-03-26 | 2019-07-05 | 浙江度衍信息技术有限公司 | 检索速度优化方法 |
CN109977334B (zh) * | 2019-03-26 | 2023-10-20 | 浙江度衍信息技术有限公司 | 检索速度优化方法 |
CN111414138A (zh) * | 2020-03-19 | 2020-07-14 | 青岛镕铭半导体有限公司 | 一种固态硬盘磨损均衡方法和装置 |
CN111414138B (zh) * | 2020-03-19 | 2024-02-13 | 镕铭微电子(济南)有限公司 | 一种固态硬盘磨损均衡方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104461915B (zh) | 2017-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2016078008A1 (zh) | 调度数据流任务的方法和装置 | |
US8413158B2 (en) | Processor thread load balancing manager | |
DE112005001512T5 (de) | Vorrichtung und Verfahren für den hochschnellen Zugriff auf einen flüchtigen Plattenlaufwerkspeicher unter Einsatz einer integrierten Direkt-Speicherzugriffs-Einrichtung | |
CN106951488B (zh) | 一种日志记录方法和装置 | |
CN103049533A (zh) | 一种快速向数据库加载数据的方法 | |
CN104461915A (zh) | 一种在线课堂系统中内存动态分配方法及设备 | |
DE102013209643B4 (de) | Mechanismus für optimierte Nachrichtenaustauschdatenübertragung zwischen Nodelets innerhalb eines Plättchens | |
DE102012218269A1 (de) | Schnittstelle zur Verwaltung von Datenverschiebung in einem Speichersystem mit thin provisioning | |
CN104581353B (zh) | 一种视频的录制/播放方法及录制/播放装置 | |
DE102014116808A1 (de) | Realisieren einer dynamischen Virtualisierung eines Sriov-fähigen SAS-Adapters | |
US10496659B2 (en) | Database grouping set query | |
CN103713955A (zh) | 资源动态分配的管理方法和装置 | |
WO2018024214A1 (zh) | Io流调节方法与装置 | |
CN104199729A (zh) | 一种资源管理方法及系统 | |
CN104700255B (zh) | 多进程处理方法、装置和系统 | |
CN105741300A (zh) | 一种区域分割截图方法 | |
CN106855869A (zh) | 一种实现数据库高可用的方法、装置和系统 | |
CN105243003A (zh) | 内存分配的监测方法及装置 | |
CN105320466A (zh) | 固态硬盘安排操作的方法 | |
CN102521157B (zh) | 一种在fpga上实现板载存储资源管理的系统和方法 | |
CN103810258A (zh) | 基于数据仓库的数据汇聚调度方法 | |
AU2012201998B2 (en) | Dynamic disk redistribution | |
US20140052902A1 (en) | Electronic device and method of generating virtual universal serial bus flash device | |
CN114521252B (zh) | Iod ssd的传送与处理单位 | |
CN105353982A (zh) | 一种基于循环数组的数据访问处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
C53 | Correction of patent of invention or patent application | ||
CB02 | Change of applicant information |
Address after: Suzhou City, Jiangsu province 215121 Suzhou Industrial Park Road No. 8 only Weiting Technology Venture Building 7 floor Applicant after: Kuo Di education and science company limited Address before: Suzhou City, Jiangsu province 215121 Suzhou Industrial Park Road No. 8 only Weiting Technology Venture Building 7 floor Applicant before: Suzhou Kuodi Network Technology Co., Ltd. |
|
COR | Change of bibliographic data |
Free format text: CORRECT: APPLICANT; FROM: SUZHOU KUODI NETWORK TECHNOLOGY CO., LTD. TO: CODYY EDUCATION TECHNOLOGY CO., LTD. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |