日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

linux算法设计,嵌入式Linux平台下随机序列算法设计.doc

發(fā)布時(shí)間:2023/12/4 linux 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux算法设计,嵌入式Linux平台下随机序列算法设计.doc 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

嵌入式Linux平臺(tái)下隨機(jī)序列算法設(shè)計(jì)

嵌入式Linux平臺(tái)下隨機(jī)序列算法設(shè)計(jì)

【摘 要】本文以多媒體播放器的隨機(jī)不重復(fù)播放機(jī)能為切入點(diǎn),針對(duì)嵌入式平臺(tái)實(shí)時(shí)性要求高,處理速度不夠快,但系統(tǒng)存儲(chǔ)歌曲量大的特點(diǎn),進(jìn)行隨機(jī)序列產(chǎn)生算法的設(shè)計(jì)和實(shí)現(xiàn),并在ARM Linux平臺(tái)下進(jìn)行算法的設(shè)計(jì)檢證。

【關(guān)鍵詞】嵌入式;Linux;隨機(jī);序列;播放   0 背景   隨著近幾年嵌入式系統(tǒng)總體能力的提升,嵌入式多媒體應(yīng)用越來(lái)越豐富。從低端的MP3播放器,中端的workman,到高端的智能手機(jī),音樂(lè)播放功能已經(jīng)成為系統(tǒng)默認(rèn)具備的功能。   嵌入式系統(tǒng)的存儲(chǔ)能力已經(jīng)跨入G時(shí)代。隨身可攜帶的歌曲數(shù)量從幾十首,已經(jīng)上升至幾百首,甚至上萬(wàn)首。   隨機(jī)播放機(jī)能存在一種需求,要將播放列表中的歌曲隨機(jī)播放一遍,在所有歌曲都播放一遍之前,不能出現(xiàn)有重復(fù)播放的情況。   1 嵌入式系統(tǒng)的特點(diǎn)   嵌入式系統(tǒng)的能力現(xiàn)在雖然已經(jīng)提升不少,但和個(gè)人計(jì)算機(jī)相比較,運(yùn)算能力仍然無(wú)法匹敵個(gè)人計(jì)算機(jī)。并且還存在以下幾種嵌入式系統(tǒng)特有的特點(diǎn):   *運(yùn)算數(shù)據(jù)通常不能被交換到外部存儲(chǔ)設(shè)備上,程序可以使用的內(nèi)存無(wú)法超過(guò)物理內(nèi)存容量。   *人機(jī)交互需要快速的實(shí)時(shí)響應(yīng),耗時(shí)過(guò)長(zhǎng)的程序給用戶較差的性能體驗(yàn)。   *外部存儲(chǔ)器多為FLASH設(shè)備,寫入壽命有限制,程序設(shè)計(jì)需要盡可能減少FLASH的寫操作。   因此,在嵌入式系統(tǒng)中,隨機(jī)播放的算法需要在時(shí)間以及空間的設(shè)計(jì)中,獲得一個(gè)平衡,這樣才能讓用戶有最好的體驗(yàn)。   2 算法的目標(biāo)   *需要隨機(jī)播放的總數(shù)是可變化。   *在總數(shù)給定的情況下,隨機(jī)產(chǎn)生的序列不能出現(xiàn)重復(fù)。   *時(shí)間和空間使用是平衡的,滿足嵌入式系統(tǒng)的特點(diǎn)。   3 解決方案   為了能夠達(dá)成上述目標(biāo),主要采用下面幾種技術(shù)方案:   *將隨機(jī)序列的產(chǎn)生,分配到每一次歌曲切換的時(shí)候,而不是在初始化的過(guò)程中全部生成。   *將隨機(jī)序列中某一個(gè)隨機(jī)數(shù)的產(chǎn)生,分解為按照16進(jìn)制數(shù)位分別產(chǎn)生,避免因?yàn)楦枨偭康奶岣邔?dǎo)致時(shí)間出現(xiàn)指數(shù)級(jí)別的增長(zhǎng),盡可能控制為線性增長(zhǎng)。   *采用bitmap標(biāo)示已經(jīng)產(chǎn)生的隨機(jī)數(shù)。   *采用用時(shí)申請(qǐng)的方式動(dòng)態(tài)申請(qǐng)內(nèi)存。   *記錄隨機(jī)序列產(chǎn)生的結(jié)果,并提供回溯查詢功能。   基于上面的技術(shù)方案,在本設(shè)計(jì)中將整體算法劃分為兩個(gè)部分:   *隨機(jī)數(shù)列產(chǎn)生器,用于產(chǎn)生不重復(fù)的隨機(jī)數(shù)列。   *隨機(jī)數(shù)列記錄器,用于記錄已經(jīng)隨機(jī)數(shù)列,并向外部提供訪問(wèn)接口。   4 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)   4.1 頂層數(shù)據(jù)結(jié)構(gòu)   頂層數(shù)據(jù)結(jié)構(gòu)(shuffle_t)包含隨機(jī)數(shù)列產(chǎn)生器和隨機(jī)數(shù)列記錄器。   下面是數(shù)據(jù)結(jié)構(gòu)定義:   typedef struct _shuffle_t {   /* 隨機(jī)數(shù)列的最大值 */   int max;   /* 隨機(jī)數(shù)列產(chǎn)生器 */   random_t *random;   /* 隨機(jī)數(shù)列記錄器 */   sequence_t *sequence;   }shuffle_t;   在內(nèi)存中的數(shù)據(jù)關(guān)系如圖1所示。   圖1 頂級(jí)數(shù)據(jù)結(jié)構(gòu)示意圖   4.2 隨機(jī)數(shù)列產(chǎn)生器數(shù)據(jù)結(jié)構(gòu)   隨機(jī)數(shù)列產(chǎn)生器的數(shù)據(jù)結(jié)構(gòu)(random_t)包含三個(gè)部分:   *動(dòng)態(tài)增長(zhǎng)的bitmap池。   *優(yōu)化的16以內(nèi)的隨機(jī)數(shù)產(chǎn)生器。   *按數(shù)位順序產(chǎn)生,代有檢測(cè)功能的隨機(jī)數(shù)列控制器。   下面是數(shù)據(jù)結(jié)構(gòu)定義:   /*雙向循環(huán)鏈表 */   typedef struct _chain_t {   /* 前一個(gè)鏈表 */   struct _chain_t *prev;   /* 后一個(gè)鏈表 */   struct _chain_t *next;   }chain_t;   /* digit池的描述頭 */   typedef struct _pool_head_t {   /* 雙向循環(huán)鏈表 */   chain_t chain;   /* 當(dāng)前digit池的總數(shù) */   int total;   /* 當(dāng)前digit池已使用個(gè)數(shù) */   int used;   /* digit池首地址 */   char *data;   }pool_head_t;   /* digit池總?cè)肟?*/   typedef struct _pool_t {   /* bitmap池中,一個(gè)bitmap單位的大小 */   int block_size;   /* bitmap池雙向鏈表的表頭 */   chain_t chain;   }pool_t;   /* 16以內(nèi)隨機(jī)數(shù)產(chǎn)生器 */   typedef struct _hex_random_t {

總結(jié)

以上是生活随笔為你收集整理的linux算法设计,嵌入式Linux平台下随机序列算法设计.doc的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。