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

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

symbian學習筆記二


第二部分:系統結構

symbian os上運行的四種軟件
應用程序

服務

引擎

內核

symbian
系統使用活動對象與客戶-服務器對事件處理系統進行了優化

硬件資源
:
一個cpu,32
arm
一個rom(只讀存儲器),里面有操作系統與內建的中間件和應用程序

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

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

IO
設備,包括帶數字筆輸入的觸摸屏,鍵盤,記憶卡(被當成D)rs232串口,紅外口,藍牙。

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


symbian os
pc系統的區別如下
:
資源限制:cpu太慢與太少內存

沒有硬盤,不能使用寫到硬盤的虛擬內存,不能保證有足夠的空間保存程序或是數據文件

電源條件嚴格
.

symbian
軟件環境如下
:

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

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

其它應用程序工作在用戶模式

上面如果理解普通操作系統如linux的話,那跟普通操作系統沒有區別

應用程序是一個有用戶界面的程序,在獨立的進程中運行

這與普通操作系統也沒有區別

服務是沒有用戶界面的程序.服務管理一個或多個資源,并提供api,讓客戶可以訪問它的服務.服務的客戶可以是一個程序或是其它服務.每個服務也運行在獨立的進程空間中。

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


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

權限邊界對交叉引用比較費資源,但是保證系統對用戶太程序隱藏內核與設備

進程邊界是所有的交叉中最昂貴的,它們保證在ram中分開每個程序


可執行文件的格式

symbian中有兩種類型的可執行文件
:
exe,
每個程序都有一個主入口E32main()(看上面的例子),它在獨立的進程中運行

dll,
提供多個入口,由系統或是已存在的線程(進程)調用

有兩種類型的
dll,
共享庫dll,為一個或多個程序提供固定的api,這些dll多數后綴是.dll,當程序啟動時就被讀到內存中。

多態dll,這些dll實現抽象的api,如一個打印機驅動,socket協議或是一個應用程序。它們的擴展名多不是.dll,而是.prn.prt.app等。它們從與dll相關的類繼承,并通常只有在程序需要它們時才讀入。


從技術上看起來與普通系統上動態庫的靜態載入與動態載入沒有區別

但是從功能上看就不一樣了,一種是實現某種特殊功能的,從某個相關類繼承的dll,另一個是普通
dll

代碼執行

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

不能直接在硬盤上執行
)
可執行代碼包括三種類型的二進制數據
:
程序代碼

只讀靜態數據

可寫靜態數據

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

由于.exe是不可共享的,如果它在ram中執行,那與普通pc系統沒有區別,如果在ram中執行,那它在ram中為可寫靜態數據分配內存

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


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

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

多數應用程序有自己有exe來創建進程,其它的程序使用動態庫(DL)L的形式,在主服務線程中調用自己的線程

多數gui程序都是多態(polymorphic)dll,有一個主入口點NewApplication(),這個入口點創建并返回一個繼承自CEikAppication的對象.這樣的程序被apprun.exe調用,app文件名為參數傳入。


電源管理

電源必須高效使用

在系統已經關機時,確定程序仍然可以運行。如鬧鈐,關機后,到時時仍然可以開機

電源突然關掉時,關鍵數據應該可以保存


設備驅動

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

設備驅動工作在兩個級別

第一個是中斷服務程序(ISR)ISR必須很短,并且不能做很多事情,因為它可能在任何時間出現,甚至在內核服務中。通常它只是通知設備產生了中斷并設置一個標志,要求內核為第二階段的處理運行一個延遲的函數調用
(delayed function call DFC)
在方便的時候內核調度DFC.DFC可以使用多數的核心api,通常只是工作了后向用戶線程通知io操作已經完成


定時器

`
內核支持真機上64hz的時鐘與模擬器上10hz的時鐘

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


內存

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

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

物理RAMMMU分在4k的頁,每個物理頁可以用于
:
用戶進程的虛地址空間。

內核服務的虛地址空間

ram
盤,盤符是c:,ram盤只可通過文件服務進程訪問

如果dll不在rom中,那它被讀到ram,dll被讀到ram里面后頁面標記為只讀只讀的。
MMU
的頁面轉換表.如果想理解的話學習一下操作系統原理

自由頁表


每個進程的地址空間可以分成下面三類
:
系統范圍的內存,如系統的rom或是讀到ram中的
dll
進程范圍的內存,如進程的.exe映象和它的可寫的靜態數據

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

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

線程創建后,它的棧大小就不可再改變。

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

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

這樣開發時不是很不方便?因為在dll中有時需要保存自己的狀態,進行交互
為了解決這個問題,symbian中引入了線程本地數據
(thread-local storage
TLS)
概念(查看
Dll::Tls
Dll;;SetTls)
。但是調用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中使用活動對象(active object)來處理事件

symbian os中,所有的
symbian
os
線程都是事件處理器,每個線程有一個活動調度對象,加上一個或多個活動對象來處理從設備或其它程序發過來的事件。


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


多任務與搶占式

symbian os
實現搶占式多線程。

活動對象用于在單個線程內實現非搶占式多任務

 

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

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   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>
            欧美不卡一区| 国产欧亚日韩视频| 亚洲欧美激情诱惑| 亚洲欧美成aⅴ人在线观看| 亚洲女女女同性video| 亚洲综合色噜噜狠狠| 一区二区三区产品免费精品久久75| 91久久国产综合久久蜜月精品 | 在线亚洲一区观看| 亚洲视频综合| 久久麻豆一区二区| 欧美日韩国产一级片| 国产日韩一级二级三级| 国产婷婷精品| 亚洲另类一区二区| 久久爱www.| 亚洲第一视频| 午夜亚洲影视| 欧美日本精品| 伊人久久综合97精品| 一区二区激情| 麻豆成人小视频| 亚洲一区二区三区四区五区午夜| 久久九九免费视频| 国产精品女人网站| 日韩视频免费观看高清完整版| 香蕉成人久久| 亚洲国产欧美一区| 久久精品五月婷婷| 国产精品一区二区三区四区五区| 亚洲国产影院| 久久综合狠狠综合久久综青草| 99视频精品免费观看| 久久在线免费观看| 国产一区二区av| 亚洲午夜一区二区三区| 亚洲第一黄色| 久久精品国产一区二区三| 国产精品午夜av在线| 在线天堂一区av电影| 欧美激情免费在线| 久久综合国产精品| 影音先锋亚洲电影| 久久免费的精品国产v∧| 亚洲午夜日本在线观看| 欧美日韩精品不卡| 国产精品99久久久久久久女警 | 欧美a级片网站| 亚洲欧美精品在线观看| 在线精品视频免费观看| 国产又爽又黄的激情精品视频 | 亚洲无线一线二线三线区别av| 美女脱光内衣内裤视频久久影院| 一区二区亚洲精品国产| 久久综合久久美利坚合众国| 午夜精品短视频| 国产乱码精品一区二区三区av| 亚洲婷婷在线| 亚洲免费精彩视频| 国产精品成人一区二区三区吃奶 | 久久久久久久综合| 国产亚洲精品久久久久久| 亚洲欧美日韩区| 亚洲已满18点击进入久久| 国产乱码精品一区二区三区av| 欧美一区二区三区在线观看视频| 在线一区亚洲| 国产香蕉久久精品综合网| 久久久女女女女999久久| 久久久久九九九九| 亚洲精品欧洲精品| 国产精品99久久久久久久vr | 欧美一区成人| 一区精品在线播放| 亚洲承认在线| 欧美日韩午夜| 亚洲免费在线观看视频| 欧美一区高清| 亚洲精品在线免费| 亚洲天堂久久| 亚洲第一综合天堂另类专| 亚洲三级国产| 国产欧美日韩一区二区三区| 免费亚洲一区二区| 欧美日韩美女| 久久一日本道色综合久久| 欧美激情一区二区在线 | 久久久亚洲国产美女国产盗摄| 久久亚洲国产精品日日av夜夜| 亚洲精品乱码久久久久久黑人| 亚洲视频一二| 亚洲国产精品久久| 亚洲一区区二区| 亚洲人成毛片在线播放| 亚洲网站在线播放| 在线成人h网| 亚洲午夜电影网| 亚洲国产精品第一区二区三区| 亚洲一区二区三区视频播放| 亚洲精品国产精品久久清纯直播 | 欧美高清视频一区二区| 欧美日韩免费区域视频在线观看| 久久精品一区二区三区不卡牛牛| 欧美激情在线观看| 久久久精品国产一区二区三区| 欧美日本在线一区| 美女亚洲精品| 久久精品国产欧美激情 | 香蕉久久a毛片| 91久久国产自产拍夜夜嗨| 亚洲一区二区毛片| 亚洲日本在线观看| 久久久精品国产免大香伊| 亚洲一级电影| 蜜臀久久久99精品久久久久久| 久久国产加勒比精品无码| 欧美色123| 亚洲伦伦在线| 99国内精品久久| 蜜桃av一区二区在线观看| 久久婷婷成人综合色| 国产精品免费在线| 99精品欧美一区| 日韩视频精品在线观看| 久久久久久91香蕉国产| 久久国产精品一区二区三区| 欧美日韩在线观看一区二区三区 | 亚洲高清资源| 亚洲国产成人av好男人在线观看| 欧美在线视频二区| 久久av老司机精品网站导航| 国产精品日本一区二区| 亚洲午夜精品| 香蕉久久夜色精品国产| 国产精品黄视频| 亚洲深夜激情| 欧美一区二区视频97| 国产伦精品一区二区三区视频孕妇 | 国产精品99免费看 | 久久精品盗摄| 久久色在线观看| 在线播放中文字幕一区| 久久性色av| 亚洲国产精品久久久久| 亚洲另类自拍| 欧美视频在线免费| 亚洲欧美日本精品| 老牛嫩草一区二区三区日本| 亚洲国产视频一区| 欧美日韩国产色站一区二区三区| 亚洲天堂男人| 久久亚洲色图| 一本到12不卡视频在线dvd| 欧美三级网址| 欧美一级大片在线观看| 免费亚洲电影| 亚洲视频在线观看网站| 国产欧美综合一区二区三区| 亚洲欧美伊人| 国产精品视频网址| 久久av最新网址| 欧美激情 亚洲a∨综合| 一本色道久久综合精品竹菊 | 久久精品五月| 亚洲三级影院| 欧美一区二区三区在线观看视频| 黄色成人免费网站| 欧美sm视频| 亚洲影院在线观看| 欧美xxxx在线观看| 亚洲性夜色噜噜噜7777| 韩国精品久久久999| 欧美精品久久一区二区| 亚洲欧美视频在线观看视频| 欧美黑人国产人伦爽爽爽| 亚洲欧美综合网| 最新亚洲激情| 国产一区在线播放| 欧美日韩伦理在线免费| 久久久夜精品| 亚洲欧美激情视频在线观看一区二区三区 | 久久精品91久久久久久再现| 亚洲精品在线看| 麻豆成人综合网| 性欧美暴力猛交另类hd| 亚洲精品免费一区二区三区| 国产色综合久久| 国产精品爱久久久久久久| 蜜桃精品久久久久久久免费影院| 午夜久久美女| 亚洲一区二区三区免费在线观看| 91久久精品国产91久久性色| 久久只精品国产| 久久大逼视频| 性色av香蕉一区二区| 在线视频欧美日韩| 一本色道久久综合| 亚洲激情国产| 精品96久久久久久中文字幕无| 国产精品一区二区久久精品|