青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

引用自:http://www.sf.org.cn/Article/symbiandev/200508/26.html

symbian學(xué)習(xí)筆記二


第二部分:系統(tǒng)結(jié)構(gòu)

symbian os上運(yùn)行的四種軟件
應(yīng)用程序

服務(wù)

引擎

內(nèi)核

symbian
系統(tǒng)使用活動(dòng)對象與客戶-服務(wù)器對事件處理系統(tǒng)進(jìn)行了優(yōu)化

硬件資源
:
一個(gè)cpu,32
arm
一個(gè)rom(只讀存儲(chǔ)器),里面有操作系統(tǒng)與內(nèi)建的中間件和應(yīng)用程序

ROM
盤被映射到z:盤,所有的文件都可以通過Z:盤訪問。

系統(tǒng)RAM.系統(tǒng)RAM用于兩個(gè)方面,一是被當(dāng)前活動(dòng)的程序和系統(tǒng)核心使用,另一個(gè)是當(dāng)成”C”盤的磁盤空間。這兩個(gè)部分的大小是變化的,不可以保留某個(gè)的大小。由于RAM通常只有8MB16MB,所以內(nèi)存可能用完,因此經(jīng)常出現(xiàn)內(nèi)存越界錯(cuò)誤或是(寫文件時(shí))磁盤已滿錯(cuò)誤

IO
設(shè)備,包括帶數(shù)字筆輸入的觸摸屏,鍵盤,記憶卡(被當(dāng)成D)rs232串口,紅外口,藍(lán)牙。

電源,包括電池與外接電源


symbian os
pc系統(tǒng)的區(qū)別如下
:
資源限制:cpu太慢與太少內(nèi)存

沒有硬盤,不能使用寫到硬盤的虛擬內(nèi)存,不能保證有足夠的空間保存程序或是數(shù)據(jù)文件

電源條件嚴(yán)格
.

symbian
軟件環(huán)境如下
:

server | server| Application| Application | Application Dll
| | +
————–+————
- boundary
| | | |
| | | Enghine | Engine
——–+———+————+————–+————–
Privilege
boundary
Kernel

kernel
工作在高級別,管理機(jī)器所有硬件資源。對其它軟件模塊提供訪問這些硬件資源的接口

其它應(yīng)用程序工作在用戶模式

上面如果理解普通操作系統(tǒng)如linux的話,那跟普通操作系統(tǒng)沒有區(qū)別

應(yīng)用程序是一個(gè)有用戶界面的程序,在獨(dú)立的進(jìn)程中運(yùn)行

這與普通操作系統(tǒng)也沒有區(qū)別

服務(wù)是沒有用戶界面的程序.服務(wù)管理一個(gè)或多個(gè)資源,并提供api,讓客戶可以訪問它的服務(wù).服務(wù)的客戶可以是一個(gè)程序或是其它服務(wù).每個(gè)服務(wù)也運(yùn)行在獨(dú)立的進(jìn)程空間中。

symbian,使用服務(wù)的形式提供類似其它操作系統(tǒng)上用驅(qū)動(dòng)程序或是內(nèi)核程序提供的功能。如文件系統(tǒng)的訪問也是客戶/服務(wù)類型的。(微內(nèi)核
)
引擎是一個(gè)應(yīng)用程序中操作數(shù)據(jù)而不是與用戶交互的部分.通常你可以把一個(gè)程序分成引擎部分和一個(gè)GUI部分,多部symbian內(nèi)帶的程序都是這樣做的。
一個(gè)應(yīng)用程序引擎可以是一個(gè)獨(dú)立的代碼模塊或是一個(gè)獨(dú)立的dll,或是幾個(gè)
dll.
引擎和應(yīng)用程序間的邊界是模塊或dll的邊界。


所以在symbian中有四個(gè)組件類型與三個(gè)邊界類型。dll或是模塊組件對交叉引用來說很方便。它們使系統(tǒng)模塊化與保持封裝。

權(quán)限邊界對交叉引用比較費(fèi)資源,但是保證系統(tǒng)對用戶太程序隱藏內(nèi)核與設(shè)備

進(jìn)程邊界是所有的交叉中最昂貴的,它們保證在ram中分開每個(gè)程序


可執(zhí)行文件的格式

symbian中有兩種類型的可執(zhí)行文件
:
exe,
每個(gè)程序都有一個(gè)主入口E32main()(看上面的例子),它在獨(dú)立的進(jìn)程中運(yùn)行

dll,
提供多個(gè)入口,由系統(tǒng)或是已存在的線程(進(jìn)程)調(diào)用

有兩種類型的
dll,
共享庫dll,為一個(gè)或多個(gè)程序提供固定的api,這些dll多數(shù)后綴是.dll,當(dāng)程序啟動(dòng)時(shí)就被讀到內(nèi)存中。

多態(tài)dll,這些dll實(shí)現(xiàn)抽象的api,如一個(gè)打印機(jī)驅(qū)動(dòng),socket協(xié)議或是一個(gè)應(yīng)用程序。它們的擴(kuò)展名多不是.dll,而是.prn.prt.app等。它們從與dll相關(guān)的類繼承,并通常只有在程序需要它們時(shí)才讀入。


從技術(shù)上看起來與普通系統(tǒng)上動(dòng)態(tài)庫的靜態(tài)載入與動(dòng)態(tài)載入沒有區(qū)別

但是從功能上看就不一樣了,一種是實(shí)現(xiàn)某種特殊功能的,從某個(gè)相關(guān)類繼承的dll,另一個(gè)是普通
dll

代碼執(zhí)行

如果程序代碼在rom上,則直接執(zhí)行,不然需要讀到ram(與普通操作系統(tǒng)不同,普通操作系統(tǒng)都需要讀到ram

不能直接在硬盤上執(zhí)行
)
可執(zhí)行代碼包括三種類型的二進(jìn)制數(shù)據(jù)
:
程序代碼

只讀靜態(tài)數(shù)據(jù)

可寫靜態(tài)數(shù)據(jù)

symbian中對待.exe.dll是不同的

由于.exe是不可共享的,如果它在ram中執(zhí)行,那與普通pc系統(tǒng)沒有區(qū)別,如果在ram中執(zhí)行,那它在ram中為可寫靜態(tài)數(shù)據(jù)分配內(nèi)存

.dll是共享的,當(dāng)dll首次讀入內(nèi)存中時(shí),它被分配到一個(gè)特殊的地址,第二個(gè)線程需要這個(gè)dll時(shí)它只要訪問已經(jīng)存在的這份copy就可以。在所有使用它的進(jìn)程中dll的地址都是相同的。symbian系統(tǒng)維護(hù)一個(gè)引用計(jì)數(shù),當(dāng)沒有其它線程引用時(shí)才將它
unload.
rom上的dllrom上的exe一樣直接在rom上執(zhí)行


為了對dll的大小進(jìn)行優(yōu)化,symbbian進(jìn)行如下操作
;
多數(shù)系統(tǒng)支持通過名字與通過數(shù)字訪問dll提供的入口,由于名字太長,浪費(fèi)空間,所以symbian只提供通過數(shù)字訪問,當(dāng)然在link時(shí)可以通過名字link.也就是說在.dll中沒有名字訪問辦法,在.lib(引導(dǎo)庫,引導(dǎo)linker正確的link這個(gè)dll,這個(gè)是在windows中使用的概念,在win下每創(chuàng)建一個(gè)dll都會(huì)創(chuàng)建一個(gè)用戶引導(dǎo)鏈接的同名.lib)中有,你的程序link時(shí)link的是.lib,link完成后編譯器會(huì)自動(dòng)把引用dll的代碼變成數(shù)字引用

如果dll被讀到ram,那重定位信息(
dll
load
到什么地址)也必須包含在可執(zhí)行文件格式中,這個(gè)的影響就是你不能把一個(gè)在rom中執(zhí)行的程序放到ram中執(zhí)行的程序.(rom中執(zhí)行的多是oem廠家,所以普通開發(fā)者多不用關(guān)心
)

多數(shù)應(yīng)用程序有自己有exe來創(chuàng)建進(jìn)程,其它的程序使用動(dòng)態(tài)庫(DL)L的形式,在主服務(wù)線程中調(diào)用自己的線程

多數(shù)gui程序都是多態(tài)(polymorphic)dll,有一個(gè)主入口點(diǎn)NewApplication(),這個(gè)入口點(diǎn)創(chuàng)建并返回一個(gè)繼承自CEikAppication的對象.這樣的程序被apprun.exe調(diào)用,app文件名為參數(shù)傳入。


電源管理

電源必須高效使用

在系統(tǒng)已經(jīng)關(guān)機(jī)時(shí),確定程序仍然可以運(yùn)行。如鬧鈐,關(guān)機(jī)后,到時(shí)時(shí)仍然可以開機(jī)

電源突然關(guān)掉時(shí),關(guān)鍵數(shù)據(jù)應(yīng)該可以保存


設(shè)備驅(qū)動(dòng)

雖然一般不會(huì)了解它,但是理解一下還是很有用的

設(shè)備驅(qū)動(dòng)工作在兩個(gè)級別

第一個(gè)是中斷服務(wù)程序(ISR)ISR必須很短,并且不能做很多事情,因?yàn)樗赡茉谌魏螘r(shí)間出現(xiàn),甚至在內(nèi)核服務(wù)中。通常它只是通知設(shè)備產(chǎn)生了中斷并設(shè)置一個(gè)標(biāo)志,要求內(nèi)核為第二階段的處理運(yùn)行一個(gè)延遲的函數(shù)調(diào)用
(delayed function call DFC)
在方便的時(shí)候內(nèi)核調(diào)度DFC.DFC可以使用多數(shù)的核心api,通常只是工作了后向用戶線程通知io操作已經(jīng)完成


定時(shí)器

`
內(nèi)核支持真機(jī)上64hz的時(shí)鐘與模擬器上10hz的時(shí)鐘

時(shí)鐘中斷是最高優(yōu)先級中斷,它可以通過User::After或是RTime::After訪問。時(shí)鐘中斷在關(guān)機(jī)時(shí)停止,所以如果你請求5s后的定時(shí)操作,然后跑2s,關(guān)機(jī),再開機(jī)時(shí)它也要等
3s
內(nèi)核同時(shí)支持日期/時(shí)間時(shí)鐘,你可以使用User::At或是RTime::At。這個(gè)定時(shí)器很準(zhǔn)確。在關(guān)機(jī)時(shí),如果時(shí)間到了,那它會(huì)開機(jī),這對鬧鐘很合適。


內(nèi)存

symbian
使用內(nèi)存管理單元(memory management unit MMU)管理內(nèi)存

ROM
被映射到z:盤,被映射到一個(gè)固定的地址。

物理RAMMMU分在4k的頁,每個(gè)物理頁可以用于
:
用戶進(jìn)程的虛地址空間。

內(nèi)核服務(wù)的虛地址空間

ram
盤,盤符是c:,ram盤只可通過文件服務(wù)進(jìn)程訪問

如果dll不在rom中,那它被讀到ram,dll被讀到ram里面后頁面標(biāo)記為只讀只讀的。
MMU
的頁面轉(zhuǎn)換表.如果想理解的話學(xué)習(xí)一下操作系統(tǒng)原理

自由頁表


每個(gè)進(jìn)程的地址空間可以分成下面三類
:
系統(tǒng)范圍的內(nèi)存,如系統(tǒng)的rom或是讀到ram中的
dll
進(jìn)程范圍的內(nèi)存,如進(jìn)程的.exe映象和它的可寫的靜態(tài)數(shù)據(jù)

每個(gè)線程的內(nèi)存,包括線程的棧與線程默認(rèn)的堆(使用線程默認(rèn)堆的原因只是為了提高內(nèi)存分配與釋放的速度,從開發(fā)角度來看,它與系統(tǒng)里面的內(nèi)存沒有區(qū)別)

注意沒有交換文件,所以所有的內(nèi)存都是直接使用。同時(shí),也可能會(huì)發(fā)生內(nèi)存不夠或是磁盤
(c 已滿錯(cuò)誤
每個(gè)線程的默認(rèn)棧很小,只有12k,所以在symbian開發(fā)中,不要放太多東西到棧中,一般對象都是在堆中分配的。

線程創(chuàng)建后,它的棧大小就不可再改變。

線程可以使用new或是User::Alloc從線程默認(rèn)堆中分配內(nèi)存.如果希望從其它堆中分配內(nèi)存,只能使用
new

動(dòng)態(tài)庫
(DLL)
symbian
dll不支持可寫的靜態(tài)數(shù)據(jù),所以你在里面不可能使用可寫的全局變量或是靜態(tài)變量
.
為什么不支持呢?如果支持,那每個(gè)進(jìn)程調(diào)用這個(gè)dll時(shí),都需要為這個(gè)進(jìn)程分配一個(gè)獨(dú)立的堆,而堆最小單位是4k,系統(tǒng)中有很多堆,并且有很多程序,所以內(nèi)存消費(fèi)基金是很大的。所以就不支持了

這樣開發(fā)時(shí)不是很不方便?因?yàn)樵?SPAN lang=EN-US>dll
中有時(shí)需要保存自己的狀態(tài),進(jìn)行交互
為了解決這個(gè)問題,symbian中引入了線程本地?cái)?shù)據(jù)
(thread-local storage
TLS)
概念(查看
Dll::Tls
Dll;;SetTls)
。但是調(diào)用TLS性能比較慢.tls的最大大小是1.8k 通常這夠用了。


文件
:
c: flash ram

z: rom

d:
記憶棒之類的外掛盤


事件處理

事件處理模型如下圖
:

keyborad |
—————————

|interrupt
|
kernel/driver
+-isr/dfc
|
key event
|
|
window serv
—–handle key event———–
+update window
| |
|key event draw |request
application +
—————– handle ———
-+
key event

symbian中使用活動(dòng)對象(active object)來處理事件

symbian os中,所有的
symbian
os
線程都是事件處理器,每個(gè)線程有一個(gè)活動(dòng)調(diào)度對象,加上一個(gè)或多個(gè)活動(dòng)對象來處理從設(shè)備或其它程序發(fā)過來的事件。


每個(gè)活動(dòng)對象都有一個(gè)虛擬的成員函數(shù)RunL(),在這個(gè)函數(shù)里面處理事件。


多任務(wù)與搶占式

symbian os
實(shí)現(xiàn)搶占式多線程。

活動(dòng)對象用于在單個(gè)線程內(nèi)實(shí)現(xiàn)非搶占式多任務(wù)

 

posted on 2006-02-25 05:26 移動(dòng)開發(fā) 閱讀(505) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美一区2区三区4区公司二百 | 欧美视频中文字幕| 亚洲少妇中出一区| 久久蜜桃香蕉精品一区二区三区| 1024成人网色www| 亚洲免费中文字幕| 亚洲免费在线视频| 欧美成人精品在线观看| 久久尤物电影视频在线观看| 欧美午夜电影在线| 亚洲人成网站777色婷婷| 伊人久久成人| 久久亚洲一区二区| 欧美成人一区在线| 亚洲精品女av网站| 欧美精品一区二| 欧美福利精品| 亚洲三级视频| 欧美日韩成人在线观看| 夜夜嗨一区二区| 欧美一区二区三区另类| 国产精品视频yy9299一区| 欧美激情性爽国产精品17p| 国产精品一区二区久激情瑜伽| 久久久一区二区| 韩国久久久久| 欧美成人中文| 久久亚洲欧洲| 国产欧美精品在线观看| 亚洲深夜福利在线| 一区二区三区视频在线| 欧美.www| 亚洲国产一区二区三区a毛片 | 亚洲性线免费观看视频成熟| 在线日韩av片| 久久综合网色—综合色88| 中文精品在线| 国产精品乱子久久久久| 亚洲一二三区在线| 亚洲淫性视频| 国产精品一区在线观看你懂的| 久久免费黄色| 韩国av一区二区三区在线观看 | 美女黄色成人网| 国产日韩精品一区| 午夜精品久久久久久99热软件 | 亚洲人妖在线| 久久精品国内一区二区三区| 久久深夜福利免费观看| 亚洲激情女人| 欧美日韩爆操| 午夜久久美女| 久久精品在线免费观看| 亚洲欧美日韩人成在线播放| 午夜精品一区二区三区在线播放| 亚洲国产精品久久91精品| 日韩一级大片在线| 亚洲第一区中文99精品| 国产精品伊人日日| 极品裸体白嫩激情啪啪国产精品| 香蕉乱码成人久久天堂爱免费| 亚洲一级黄色| 久久久五月天| 99国产精品| 亚洲二区在线视频| 欧美日韩播放| 欧美在线免费观看视频| 欧美成人国产| 亚洲精一区二区三区| 国产精品自拍在线| 欧美乱妇高清无乱码| 免费在线看一区| 久热成人在线视频| 欧美二区视频| 亚洲美女毛片| 亚洲一区视频| 麻豆久久婷婷| 亚洲免费观看在线观看| 午夜在线成人av| 欧美国产日韩一区二区三区| 国产精品久久999| 精品91免费| 尤物九九久久国产精品的分类| 亚洲欧洲日本在线| 国产日韩专区| 久久久福利视频| 一区二区三区精品| 一本久道久久综合婷婷鲸鱼| 国产欧美一区二区视频| 国产精品免费观看在线| 亚洲久久视频| 午夜在线a亚洲v天堂网2018| 国产精品男gay被猛男狂揉视频| 欧美一区不卡| 国产精品欧美日韩一区| 亚洲私人影院| 午夜精品视频一区| 国产精品日韩欧美一区| 亚洲影视综合| 欧美亚洲综合网| 国产精品你懂的在线欣赏| 亚洲午夜视频| 欧美一区视频| 好看的av在线不卡观看| 久久精品一二三| 欧美激情一区二区三区成人| 91久久久在线| 欧美片在线播放| 亚洲区免费影片| 夜夜狂射影院欧美极品| 欧美紧缚bdsm在线视频| 亚洲经典视频在线观看| 99国产精品私拍| 国产精品www| 午夜精品久久久久久久久久久久| 午夜视频一区二区| 国产亚洲精品久| 蜜臀av国产精品久久久久| 亚洲国产精品悠悠久久琪琪| 一区二区三区毛片| 国产精品二区二区三区| 久久av在线| 亚洲伦理精品| 久久精品日韩欧美| 亚洲理论在线观看| 国产精品五区| 美女精品在线| 亚洲视频一二三| 免费久久99精品国产自| 中文精品视频| 伊人久久大香线| 欧美视频日韩视频| 久久久久成人精品| 亚洲美女av在线播放| 久久国产婷婷国产香蕉| 亚洲麻豆av| 国产视频一区三区| 欧美日韩国产免费| 久久久久免费观看| 一区二区三区高清| 久久综合伊人77777| 亚洲主播在线观看| 亚洲欧洲精品成人久久奇米网| 欧美精品电影| 久久国产一区二区| 亚洲视频在线观看网站| 亚洲国产精品成人久久综合一区| 亚洲一区观看| 亚洲欧洲日韩女同| 激情欧美一区| 国产精品免费观看视频| 欧美精品综合| 每日更新成人在线视频| 欧美在线观看视频| 亚洲综合清纯丝袜自拍| 亚洲精品一区二区在线| 欧美寡妇偷汉性猛交| 久久久精品一区二区三区| 亚洲欧美高清| 亚洲一级黄色| 夜夜爽www精品| 最新成人av在线| 亚洲国产1区| 亚洲福利视频在线| 好吊妞这里只有精品| 国产一区二区三区四区| 国产精品丝袜91| 国产精品护士白丝一区av| 欧美日韩免费观看一区二区三区| 久久伊人亚洲| 久久久久一区| 久久久免费av| 久久久久久久一区二区| 欧美一区激情视频在线观看| 亚洲欧美视频| 性欧美大战久久久久久久久| 亚洲男人的天堂在线| 亚洲校园激情| 亚洲香蕉视频| 性8sex亚洲区入口| 久久精品视频免费播放| 久久精品最新地址| 久久亚洲综合色| 欧美大片免费久久精品三p| 毛片一区二区| 欧美日韩国内自拍| 国产精品激情电影| 国产精品一级在线| 国产日韩av在线播放| 国产在线观看精品一区二区三区 | 久久综合成人精品亚洲另类欧美| 午夜亚洲视频| 久久精品99国产精品| 久久深夜福利免费观看| 欧美成黄导航| 欧美三级免费| 国产视频在线观看一区| 影音先锋在线一区| 日韩视频在线观看免费| 亚洲永久在线观看|