久久精品在这里_成人99免费视频_国产激情视频一区二区在线观看_国产伦精品一区二区三区免费 _亚洲午夜免费福利视频_色狠狠色狠狠综合_av在线综合网_91毛片在线观看_欧美视频一区二区在线观看_极品美女销魂一区二区三区免费_国产亚洲欧美激情_在线免费观看不卡av_日韩不卡一区二区三区_91精品国产麻豆国产自产在线_亚洲国产精品一区二区久久恐怖片_a4yy欧美一区二区三区

以文本方式查看主題

-  曙海教育集團論壇  (http://www.rfoamep.cn/bbs/index.asp)
--  Symbian開發(fā)  (http://www.rfoamep.cn/bbs/list.asp?boardid=46)
----  Symbian基礎(chǔ)類知識  (http://www.rfoamep.cn/bbs/dispbbs.asp?boardid=46&id=2061)

--  作者:wangxinxin
--  發(fā)布時間:2010-12-3 15:45:30
--  Symbian基礎(chǔ)類知識
〖SymbianOS 簡介〗

1.1 SymbianOS的六大特性

1、操作系統(tǒng)是運行在ROM上的
2、系統(tǒng)是運行在電池驅(qū)動的設(shè)備上的
3、完全是面向?qū)ο蟮?
4、基于組件的設(shè)計
5、被設(shè)計成確保用戶的數(shù)據(jù)不會丟失
6、簡單的UI系統(tǒng)

Symbian 是真正的微核操作系統(tǒng),所謂“微核”,就是說操作系統(tǒng)
只有很小的一部分是運行在最高優(yōu)先級的,其他的功能都是以Client-
Server的方式提供。下面是Symbian系統(tǒng)的內(nèi)部結(jié)構(gòu)圖:

應(yīng)用層:Shell, OPL, 及其他應(yīng)用程序
------------------------------------------------
系統(tǒng)層:Dialogs, Menu, Toolbar, Icons, Resources, JavaVM,
Grid, Rich Text, Edit Control, List Control, Application Framework,
Jave Class Libraries.
------------------------------------------------
服務(wù)層:Window Server, Process Server, Socket Server, Sound Server,
Wireless Server, Database Server, File Server, Alarm Server, Comms
Server, 以及無線協(xié)議
------------------------------------------------
內(nèi)核:euser.dll, ekern.exe, 服務(wù)控制(supervisor server),
HAL(設(shè)備抽象層)
------------------------------------------------
驅(qū)動程序?qū)樱喊ㄒ纛l驅(qū)動,顯示驅(qū)動,MMC驅(qū)動,鍵盤驅(qū)動,串并口驅(qū)動
,DSP驅(qū)動,時鐘控制器驅(qū)動等等

1.2 Symbian UI系統(tǒng)命名

使用過Symbian UI系統(tǒng)的同志們一定都聽說過一些奇怪的名字,比如:
Eikon, Cone, Apparc, Avkon等等,這么多kon字輩的東東到底有什么關(guān)系呢?

首先,大家要明白,在kon字輩的同志們中,Cone和Apparc是老大,其他kon們
都是從這兩個kon繼承來的。

先說說Cone。Cone就是Control Environment(控制環(huán)境)的縮寫。Cone是Client
端的控制環(huán)境。這個東東定義了Graphic UI中一些基礎(chǔ)的東西,沒什么代碼,
但是是一種Design pattern

Apparc是Application Architecture的縮寫。Application architecture定義了
Symbian應(yīng)用程序的框架。主要是定義了CApaApplication, 以及CApaDocument
這兩個類,也就是d&v結(jié)構(gòu)。然后還定義了程序啟動以及數(shù)據(jù)控制流等等。

kon們其實就是控件組,關(guān)于控件的用法以后再說。Series60用的是Avkon,
Series90用的是Ckon,大家可以理解為不同的kon是專為不同屏幕大小的手機設(shè)
計的不同的控件庫。

以Series60為例:

Avkon
-----
Eikon
-----
Uikon
-----
Cone + Apparc

===================================================
〖Symbian OS內(nèi)存管理介紹〗

在Symbain OS中內(nèi)存管理的主要任務(wù)是:如何為程序分配內(nèi)存以及如何在程序的內(nèi)部分配內(nèi)存。
Symbian OS 程序最根本和基礎(chǔ)的東西就是內(nèi)存,作為一個有限的資源,必須小心細致地處理,特別是當有錯誤或異常發(fā)生的時候。正是由于這樣的原因,在支持清理機制的API中,異常處理和內(nèi)存管理幾乎是綁在一起的。
Uikon核心框架使用這些支持清理機制的API來管理內(nèi)存,使GUI程序的基礎(chǔ)架構(gòu)具有良好的性能和表現(xiàn)。GUI程序還支持異常情況下內(nèi)存清理,以及調(diào)試模式下的內(nèi)存泄露檢測。

一、Symbian OS的清理機制(cleanup)
清理機制是Symbain OS 程序?qū)τ诔绦虍惓L幚淼囊环N特有方式。當異常發(fā)生時,清理機制將清理錯誤的內(nèi)存區(qū)域。Symbian OS的清理策略和它所有類的基類CBase類有著密切關(guān)系。要了解Symbian OS清理機制就必須清楚以下三個概念:異常處理(exception handling)、清理棧(cleanup stack)以及通用清理項(general cleanup item)。

1、異常處理 (Exception Handling)
Symbian OS沒有使用C++的try…catch異常處理方式,而是使用了它自己所特有的方式:leave。在Symbian OS中,異常以 leave 的形式出現(xiàn),trap harness可以在程序中設(shè)置一個點,使程序發(fā)生leave時回跳到這個點上,宏TRAP和TRAPD 可以在程序中設(shè)置這個點。調(diào)用系統(tǒng)API User 類的一些靜態(tài)函數(shù)可以觸發(fā)Leave ,例如 User:圖片點擊可在新窗口打開查看eave()方法,這就相當于主動地拋出異常,當然某些系統(tǒng)函數(shù)或是用戶代碼,也有可能發(fā)生leave。

2、清理棧(Cleanup Stack)
當 leave 發(fā)生時,任何分配了資源的heap內(nèi)存,例如通過new()方法創(chuàng)建的對象,他們將被孤立,因為leave一旦發(fā)生已指向他們的指針就不存在了,這樣就導致了內(nèi)存泄漏。為了防止內(nèi)存泄漏發(fā)生,程序就有要記錄那些已經(jīng)被創(chuàng)建的對象,如果程序運行發(fā)生leave,那么系統(tǒng)可以自動找到并清理他們所占用的內(nèi)存。這些工作可以通過清理棧來完成。CleanupStack類是支持清理棧的一個類。GUI應(yīng)用程序擁有一個由應(yīng)用程序框架所提供的清理棧,其他的應(yīng)用程序必須用CTrapCleanup 類自己構(gòu)建一個清理棧。

3、通用清理項(General Cleanup Item)在默認情況下,清理棧只處理那些 CBase-based 類(也就是它所處理的類必須是由 CBase類繼承下來的)和那些untyped 類型對象(用一個簡單的內(nèi)存釋放語句就可以釋放的對象)。通用清理項(General Cleanup Item)使其他類型的對象也可以放到清理棧中。TCleanupItem類是支持通用清理項的一個類。

二、Symbian OS的內(nèi)存分配
內(nèi)存分配管理的目的在于 能夠使Symbian OS 進程通過底層函數(shù)訪問和操縱內(nèi)存區(qū)域。絕大多數(shù)的客戶端程序不需要直接使用這些函數(shù),那些在進程間共享內(nèi)存區(qū)域以及在一個進程的線程間共享內(nèi)存區(qū)域的程序會使用這些底層函數(shù)來管理內(nèi)存。這里有兩個概念需要了解 chunk(塊) 和 heap(堆)。
1、Chunk(塊)chunk 是一組線性相鄰的內(nèi)存地址在RAM 中的映射。進程創(chuàng)建以后,它的地址空間包括1到3個chunk:
(1)stack/heap chunk:這里包括了進程的主線程所要使用的stack 和 heap。所以這個chunk 通常是進程所必須的。
(2)code chunk:這個chunk 只有當進程被加載到RAM時才出現(xiàn)。
(3)data chunk:只有當進程擁有靜態(tài)數(shù)據(jù)的時候才會有這個chunk。

當然,程序可以還創(chuàng)建額外的chunk。 一個全局的chunk可以被其他進程訪問,這樣就實現(xiàn)了大量內(nèi)存的共享。RChunk 類提供了對chunk的支持。TFindChunk 類可以用來查找其他進程創(chuàng)建的全局chunk。

2、Heap(堆)
heap 通常用于顯式的動態(tài)內(nèi)存分配 。Symbian OS定義了C++中new操作符創(chuàng)建對象到當前線程的heap中。Heap的功能可以是:
?監(jiān)控內(nèi)存泄漏:對于一個GUI程序來說,這個是經(jīng)常發(fā)生的。
?在同一進程的線程間進行共享。
?在單元一級上進行訪問和操作。
RHeap類提供了對heap的支持。如果heap 是當前線程的 heap,那么使用等價系統(tǒng)靜態(tài)方法API 的User 類 將更加方便。這些系統(tǒng)靜態(tài)方法API 同樣也提供了宏來管理內(nèi)存,以防止內(nèi)存泄漏。

三、進程和地址空間
Symbian OS 的程序可以包含若干進程,每個進程包含若干在概念上并發(fā)執(zhí)行的線程。每一個用戶進程都有他自己私有的地址空間。一個用戶進程不可以直接訪問另外一個用戶進程的地址空間。進程包括若干線程,他們運行在進程的特權(quán)級。
Kernel 進程是一個比較特殊的進程,它的線程運行在超級訪問者級別,這個進程通常包括兩個線程。
Kernel server 線程:是一個原始的進程,在系統(tǒng)啟動時就已經(jīng)存在。它可以在heap執(zhí)行核心函數(shù)請求的內(nèi)存分配或重新分配。
null 線程:當系統(tǒng)中沒有其他可運行的線程時這個線程就開始運行,null 線程使處理器處于空閑狀態(tài),減少耗電

線程的地址空間包括若干chunk,在剛創(chuàng)建的時候,進程只有一個線程和1到3個chunk。如果進程創(chuàng)建了新的線程,那么一個新的chunk將被創(chuàng)建被分配給這個線程。每一個chunk都包括一個了stack,如果線程沒有共享當前heap,那么在chunk中也將包括heap。

四、Chunks(塊)
Chunk 把RAM映射到一個連續(xù)的虛擬地址。一個chunk中包括了一個保留區(qū)(reserved region)和和委托區(qū)(committed region)。保留區(qū)是一個連續(xù)的虛地址區(qū)域,它的大小可能是整個chunk的大小。在委托區(qū)中存放了真正映射到RAM的地址。chunk的大小是可以被動態(tài)修改的,允許委托區(qū)也可以修改大小,他的范圍是從0一直到保留區(qū)大小,是處理器頁面大小的整數(shù)倍。這樣,就允許進程獲得更多的內(nèi)存空間。通常,委托區(qū)起始地址位于保留區(qū)底部。另外還可以創(chuàng)建 double-ended chunk ,那么委托區(qū)將是保留區(qū)的任意連續(xù)子集,他的大小也是處理器頁面大小的整數(shù)倍,這種Chunk的委托區(qū)可以有兩個頂端和底端,并且它們的大小也是可變的。
在chunk創(chuàng)建時可以指定chunk的最大空間,保留區(qū)大小應(yīng)該小于這個最大值。.盡管這樣,如果保留區(qū)請求比當前chunk更大的空間,那么chunk可以被重新分配空間,以允許保留區(qū)擴大。保留區(qū)可以擴大到撐滿整個chunk.。

Local chunks(本地 chunk)
如果一個chunk對于創(chuàng)建它的進程是私有的,不允許被其他用戶進程訪問,那么那么這個chunk就是本地chunk,本地chunk是沒有名字的。

Global chunks(全局chunk)
如果一個chunk可以被其他進程訪問,那么這個chunk就是全局chunk。全局chunk是有名字的,這樣,進程可以根據(jù)chunk的名字來訪問他們。當進程打開一個全局chunk的時候,他把chunk映射到自己的地址空間,這樣就可以對chunk進行直接訪問和數(shù)據(jù)共享了。如果已經(jīng)知道了chunk的名稱,那么使用 RChunk::OpenGlobal() 可以直接打開chunk.。如果只知道了chunk的部分名字,那么可以使用帶 TFindChunk 型參數(shù)的 RChunk::Open()方法來打開chunk.。

五、Heaps(堆)

Each thread has a chunk which contains that thread\'s program stack. For the main thread of a process, this chunk also contains the thread\'s heap. A program\'s request for memory is allocated from this heap. For example, a code fragment such as:

每一個線程都有一個包含了自身程序棧(program stack)的chunk。.對于進程的主線程來說,這個chunk中同樣也包含了線程heap。程序?qū)τ趦?nèi)存的請求都是從這個heap的地址空間來分配的,例如有以下代碼:

CArrayFixFlat<...>* fixflat;
...
fixflat = new (ELeave) CArrayFixFlat<...>(3);

程序請求了heap中部分的內(nèi)存地址,并把地址返回給調(diào)用者。請求heap中的內(nèi)存必須是顯式的,同樣,釋放這些內(nèi)存時也必須進行顯式調(diào)用。

Structure of a heap(heap 結(jié)構(gòu))
heap包括兩個單元列表。一個是已經(jīng)分配的內(nèi)存單元列表,一個是還未分配的內(nèi)存單元列表。兩個列表都在heap對象上。內(nèi)存單元由單元頭和單元體組成,單元體實際上就是一個內(nèi)存區(qū)。單元頭是在e32std.h 中定義的 RHeap::SCell 結(jié)構(gòu)體,他是RHeap類的一部分。

如何共享heap
heap通常被同一個進程的線程所共享當一個線程創(chuàng)建時:
?它可以和父線程使用同一個heap。
?父線程同時為新線程創(chuàng)建一個新的heap。
?新線程使用系統(tǒng)為它創(chuàng)建的heap。
這里,只有第一和第二中情況可以認為是heap的共享。
久久精品在这里_成人99免费视频_国产激情视频一区二区在线观看_国产伦精品一区二区三区免费 _亚洲午夜免费福利视频_色狠狠色狠狠综合_av在线综合网_91毛片在线观看_欧美视频一区二区在线观看_极品美女销魂一区二区三区免费_国产亚洲欧美激情_在线免费观看不卡av_日韩不卡一区二区三区_91精品国产麻豆国产自产在线_亚洲国产精品一区二区久久恐怖片_a4yy欧美一区二区三区
国产成人三级在线观看| 欧美在线观看视频在线| 欧美一区二区在线不卡| 日本大香伊一区二区三区| 日韩精品电影网站| 久久偷窥视频| 久久综合久久久| 欧美日韩在线精品一区二区三区| 美女黄毛**国产精品啪啪| 久久99精品久久久久子伦| 2022国产精品| 国产女人水真多18毛片18精品| 国产高清一区二区三区| 精品国产第一页| 三区精品视频| 在线视频综合导航| 91精品午夜视频| 精品国产伦一区二区三区免费| xf在线a精品一区二区视频网站| 久久看人人爽人人| 国产精品第一页第二页第三页| 亚洲精品乱码久久久久久黑人| 亚洲一区在线视频观看| 久久精品国产久精国产| 国产精品一品二品| 成人aa视频在线观看| 91精品国产一区二区三区动漫 | 日韩精品一区二区三区在线播放| 91精品国产91久久综合桃花| 久久久久久**毛片大全| 综合久久国产九一剧情麻豆| 亚洲一区免费观看| 国产真实乱子伦精品视频| 成人妖精视频yjsp地址| 97se视频在线观看| 西游记1978| 欧美一区二区三区视频免费| 国产日产精品一区| 视频一区中文字幕| 成人福利视频在线看| 久久精品国产第一区二区三区最新章节 | 国产日韩精品一区| 亚洲自拍偷拍网站| 国产在线播放一区二区三区| 97se在线视频| 中文字幕一区综合| 2021国产精品久久精品| 亚洲永久精品国产| 粉嫩一区二区三区性色av| 精品视频在线观看| 欧美男男青年gay1069videost| 久久精品一二三| 亚洲成av人影院| 成人av在线资源网站| 亚洲电影一二三区| 久久尤物电影视频在线观看| 欧洲av在线精品| 亚洲国产精华液网站w| 久久不见久久见中文字幕免费| 99在线首页视频| 91久久人澡人人添人人爽欧美| 久久老女人爱爱| 精品无人码麻豆乱码1区2区| 久久久久综合一区二区三区| 欧美日韩国产精选| 一区二区三区免费| 波波电影院一区二区三区| 亚洲欧美久久234| 欧美激情综合五月色丁香小说| 久久成人免费电影| 鲁丝片一区二区三区| 制服.丝袜.亚洲.另类.中文| 亚洲伊人色欲综合网| 99久久精品国产观看| 在线观看一区二区精品视频| 亚洲欧美另类综合偷拍| 大桥未久av一区二区三区中文| 亚洲综合首页| 亚洲人成网站在线| 99国产超薄丝袜足j在线观看| 欧美福利视频导航| 免费成人结看片| 欧美精品国产精品久久久| 久久久天堂av| 国产盗摄一区二区三区| 在线观看中文字幕不卡| 亚洲一区二区免费视频| 国语精品中文字幕| 久久久精品天堂| 成人性生交大片免费看视频在线| 91成人免费网站| 亚洲成人激情自拍| 麻豆成人av| 国产精品久久久久久久久免费丝袜 | 一区二区三区国| 亚洲欧美日韩在线不卡| 91蝌蚪porny九色| 日韩一区二区三区电影| 精品亚洲国产成人av制服丝袜| 日本乱人伦一区| 日韩高清在线观看| 亚洲精品9999| 亚洲成人av资源| 亚洲精品影院| 亚洲成在线观看| 午夜视频久久久| 亚洲国产人成综合网站| 欧美日韩一区在线播放| 亚洲女爱视频在线| 欧美成人综合一区| 亚洲精品美腿丝袜| 日本一区二区三区四区高清视频 | 欧美mv日韩mv国产网站app| 国产精品1区2区| 欧美一区二区三区喷汁尤物| 国产精品911| 7777精品伊人久久久大香线蕉| 久久99精品久久久久久国产越南 | 亚州欧美一区三区三区在线| 亚洲在线视频免费观看| 一区二区精品在线| 青娱乐精品视频在线| 在线日韩av片| 韩国中文字幕2020精品| 666欧美在线视频| 成人aa视频在线观看| 国产日本亚洲高清| 国产欧美日韩在线播放| 亚洲视频你懂的| 亚洲一区二区四区| 久久成人久久鬼色| 在线综合+亚洲+欧美中文字幕| 高清国产午夜精品久久久久久| 欧美电影免费提供在线观看| 97人人模人人爽人人少妇| 中文字幕在线不卡| 亚洲日本无吗高清不卡| 精品一区中文字幕| 欧美精品一区二区在线播放| 国产精品一级久久久| 亚洲成人免费av| 欧美一区二区三区在线看| 97国产超碰| 一区二区成人在线| 欧美三级乱人伦电影| 国产一区二区三区在线观看精品 | 日本午夜精品视频在线观看| 欧美男同性恋视频网站| 91在线视频18| 亚洲国产一区二区三区青草影视| 欧美三级乱人伦电影| 91视频.com| 亚洲国产视频一区| 日韩一区二区免费在线观看| 精品综合在线| 捆绑调教美女网站视频一区| 久久综合资源网| 亚洲国产精品综合| 成人午夜激情视频| 亚洲精品视频免费看| 欧美日韩一二区| 国产亚洲第一区| 国产一区二区三区免费看| 欧美日韩一级片网站| 国内视频一区| 国产高清无密码一区二区三区| 中文字幕一区二区三| 欧美日韩高清不卡| 国产精品手机在线| 国内不卡的二区三区中文字幕 | 久久久一区二区三区捆绑**| 日韩在线观看电影完整版高清免费| 国产乱人伦偷精品视频免下载| 国产精品福利一区二区三区| 3d成人h动漫网站入口| 欧美日韩国产综合视频在线| 成人午夜激情影院| 美国毛片一区二区| 亚洲自拍偷拍图区| 中文字幕成人在线观看| 制服丝袜亚洲精品中文字幕| 一本色道久久综合亚洲二区三区| 99理论电影网| 成人福利视频在线| 黑人巨大精品欧美一区| 亚洲精品中文字幕在线观看| 久久久久久麻豆| 欧美一区二区视频免费观看| 一本一本久久a久久精品综合麻豆| 精品国产一区二区三区免费| 暴力调教一区二区三区| 国产精品一区二区在线观看网站| 五月激情六月综合| 夜夜嗨av一区二区三区四季av| 欧美高清一级片在线观看| 日韩欧美综合一区| 欧美日韩亚洲综合在线| 自拍另类欧美| 小说区图片区图片区另类灬| 久久99九九|