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

麒麟子

~~

導(dǎo)航

<2008年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

統(tǒng)計(jì)

常用鏈接

留言簿(12)

隨筆分類

隨筆檔案

Friends

WebSites

積分與排名

最新隨筆

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

[導(dǎo)入]Symbian系統(tǒng)體系結(jié)構(gòu)

Symbian系統(tǒng)體系結(jié)構(gòu)

在symbian os上運(yùn)行的四種軟件 

應(yīng)用程序 application

服務(wù)     server

引擎     engine

內(nèi)核     kernel

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

硬件資源: 

    一個(gè)CPU32RAM 

    一個(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通常只有8MB到16MB,所以內(nèi)存可能用完,因此經(jīng)常出現(xiàn)內(nèi)存越界錯(cuò)誤或是(寫文件時(shí))磁盤已滿錯(cuò)誤 

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

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

Symbian OSPC系統(tǒng)的區(qū)別如下: 

資源限制:CPU太慢內(nèi)存太少 

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

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

Symbian系統(tǒng)結(jié)構(gòu)分為三層,內(nèi)核層、引擎層、應(yīng)用層。如下圖所示

boundary

Boundary

Kernel(內(nèi)核):工作在高級(jí)別,管理機(jī)器所有硬件資源。對(duì)其它軟件模塊提供訪問這些硬件資源的接口 

引擎層:提供應(yīng)用層與內(nèi)核層的一個(gè)橋梁,相當(dāng)于API接口,但引擎層可以將內(nèi)核提供的API進(jìn)行再次封裝,而不是將內(nèi)核API直接暴露,這樣可以將多種API實(shí)現(xiàn)的功能寫成模塊,而只向第三方軟件開發(fā)商提供簡單易用的接口。它主要負(fù)責(zé)應(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或是模塊組件對(duì)交叉引用來說很方便。它們使系統(tǒng)模塊化與保持封裝。 

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

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

應(yīng)用層:應(yīng)用程序工作在用戶模式,不能直接訪問內(nèi)核和硬件資源,只能通過引擎來間接訪問。 

   應(yīng)用層的理解與普通操作系統(tǒng)沒有很大的區(qū)別應(yīng)用程序是一個(gè)有用戶界面的程序,在獨(dú)立的進(jìn)程中運(yùn)行 服務(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)核 )   

可執(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中對(duì)待.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í)行 

為了對(duì)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的對(duì)象.這樣的程序被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è)級(jí)別 

    第一個(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)先級(jí)中斷,它可以通過User::After或是RTime::After訪問。時(shí)鐘中斷在關(guān)機(jī)時(shí)停止,所以如果你請(qǐng)求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ī),這對(duì)鬧鐘很合適。 

內(nèi)存 

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

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

    物理RAM被MMU分在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ā)中,不要放太多東西到棧中,一般對(duì)象都是在堆中分配的。 線程創(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)樵赿ll中有時(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記憶棒之類的外掛盤 

事件處理 

事件處理模型如圖: 

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

    SymbianOS中,所有的Symbian OS線程都是事件處理器,每個(gè)線程有一個(gè)活動(dòng)調(diào)度對(duì)象,加上一個(gè)或多個(gè)活動(dòng)對(duì)象來處理從設(shè)備或其它程序發(fā)過來的事件。 每個(gè)活動(dòng)對(duì)象都有一個(gè)虛擬的成員函數(shù)RunL(),在這個(gè)函數(shù)里面處理事件。 

多任務(wù)與搶占式 

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

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

結(jié)束語:

可以看出,對(duì)于不同的平臺(tái),操作系統(tǒng)都有相似之處。如進(jìn)程的調(diào)度,資源的管理,程序的執(zhí)行方式,IO,文件系統(tǒng)等等。但對(duì)于不同的平臺(tái),又有其各自的特點(diǎn)。如Symbian OS中的DLL EXE的區(qū)別與Linux中的是不一樣的。而對(duì)于事件的處理也不一樣。程序的執(zhí)行與其在存儲(chǔ)設(shè)備中的位置也是有區(qū)別的。總之,不管對(duì)應(yīng)于哪種平臺(tái),其自身的操作系統(tǒng)總是實(shí)現(xiàn)對(duì)資源的有效管理,并維持秩序,確保效率,同時(shí)又提供一個(gè)方便的接口供用戶使用。這也是操作系統(tǒng)的本質(zhì)所在。 

 

PS:這是Symbian的大眾理解,大部分資源來自于網(wǎng)上.沒有什么特別之處.系統(tǒng)分層結(jié)構(gòu)圖也無法貼上來.汗~~!


文章來源:http://ly-weiwei.blog.163.com/blog/static/7297528320081126115920274

posted on 2008-12-26 23:59 麒麟子 閱讀(167) 評(píng)論(0)  編輯 收藏 引用


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(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>
            欧美黄色片免费观看| 亚洲人成人99网站| 国产日韩专区在线| 最新亚洲视频| 亚洲一二三区视频在线观看| 亚洲精品中文字幕在线观看| 欧美亚洲成人精品| 香蕉国产精品偷在线观看不卡| 久久精品国产精品亚洲| 欧美在线一区二区| 男人天堂欧美日韩| 午夜精品区一区二区三| 欧美一区二区大片| 久久精品国产欧美亚洲人人爽| 亚洲精品视频在线| 国产精品乱子久久久久| 欧美www在线| 性久久久久久久久| 久久久精品五月天| 欧美日韩国产高清| 国产人成精品一区二区三| 亚洲国产精品123| 国内在线观看一区二区三区| 亚洲国产一区二区三区高清 | 暖暖成人免费视频| 国产精品二区在线观看| 另类欧美日韩国产在线| 欧美日韩情趣电影| 国户精品久久久久久久久久久不卡 | 日韩视频免费观看高清在线视频| 久久精品日韩一区二区三区| 好吊日精品视频| 欧美三级视频在线播放| 国产精品视频导航| 一色屋精品视频在线观看网站| 国产精品一级久久久| 伊人春色精品| 亚洲国产欧美一区| 性欧美videos另类喷潮| 亚洲精品综合精品自拍| 亚洲精品乱码久久久久久日本蜜臀 | 欧美日韩黄色大片| 免费在线成人| 国产精品美女久久久久aⅴ国产馆| 欧美激情一区二区三级高清视频| 国产精品视频观看| 99精品免费视频| 日韩视频在线观看国产| 久久综合影音| 欧美激情在线狂野欧美精品| 亚洲男人第一网站| 亚洲一区亚洲| 欧美日韩xxxxx| 国产精品久久久久av免费| 亚洲国产成人在线| 欧美福利网址| 亚洲国产cao| 老司机精品久久| 欧美国产精品va在线观看| 激情视频一区二区| 一级成人国产| 亚洲一区二区三区免费在线观看| 一区二区三区免费在线观看| 一区二区三欧美| 亚洲黄色小视频| 亚洲午夜免费福利视频| 午夜欧美大片免费观看| 国产精品视频一区二区高潮| 午夜亚洲视频| 亚洲欧美久久久| 久久另类ts人妖一区二区| 国产婷婷精品| 欧美伊人久久大香线蕉综合69| 一本久久知道综合久久| 欧美日韩在线观看一区二区| 亚洲欧美日韩一区| 欧美91大片| 欧美国产一区在线| 国产专区精品视频| 久久伊伊香蕉| 亚洲高清网站| 久久一日本道色综合久久| 亚洲级视频在线观看免费1级| 美女黄毛**国产精品啪啪| 亚洲日本电影在线| 9l国产精品久久久久麻豆| 国产精品亚洲精品| 亚洲肉体裸体xxxx137| 欧美国产日韩一区二区在线观看| 欧美大片18| 国模套图日韩精品一区二区| 亚洲伦理一区| 久久久天天操| 亚洲精品国产精品乱码不99| 欧美一区二区在线免费观看 | 99re国产精品| 亚洲一区日韩| 欧美日韩成人综合| 亚洲综合电影| 免费日韩av电影| 性视频1819p久久| 美女免费视频一区| 亚洲自拍16p| 欧美成人精品在线| 久久久久久久一区二区| 欧美日韩在线视频观看| 乱码第一页成人| 久久精品国产91精品亚洲| 亚洲人成久久| 久久精品国产v日韩v亚洲| 亚洲天堂免费观看| 久久久久久亚洲精品中文字幕 | 亚洲免费在线| 亚洲精品国久久99热| 国产婷婷一区二区| 亚洲美女91| 欧美日韩一区二区精品| 亚洲人成在线播放| 午夜在线成人av| 亚洲欧美国产高清| 欧美激情一区三区| 免费看av成人| 激情久久一区| 欧美顶级少妇做爰| 国产精品久久久久9999吃药| 亚洲精品一区二区三区av| 欧美日韩天堂| 亚洲视频图片小说| av72成人在线| 国产精品久久午夜夜伦鲁鲁| 亚洲午夜精品久久| 亚洲美女黄网| 国产精品欧美在线| 久久黄金**| 久久精品国产第一区二区三区| 国产人成精品一区二区三| 一本色道久久综合一区| 夜夜嗨av色一区二区不卡| 欧美国产一区视频在线观看| 亚洲国产三级| 国产精品理论片在线观看| 一区二区高清在线观看| 极品尤物一区二区三区| 欧美不卡激情三级在线观看| 国产香蕉久久精品综合网| 麻豆av一区二区三区久久| 国产视频一区在线| 亚洲国产精品视频一区| 亚洲精品1234| 欧美精品七区| 99国产一区| 欧美怡红院视频| 免费中文日韩| 91久久在线观看| 国产欧美精品一区二区三区介绍| 亚洲一区一卡| 9久草视频在线视频精品| 欧美日韩mp4| 欧美激情精品久久久六区热门| 永久免费精品影视网站| 欧美激情按摩在线| 一区二区三区色| 亚洲黄色三级| 欧美日韩中文字幕精品| 欧美大成色www永久网站婷| 欧美日韩精品在线观看| 一区二区三区回区在观看免费视频| 欧美亚洲免费| 女女同性精品视频| 久久电影一区| 最新国产の精品合集bt伙计| 欧美午夜理伦三级在线观看| 久久成人综合视频| 欧美一区二区国产| 欧美日本一区| 亚洲午夜av电影| 亚洲午夜一区二区| 国产精品福利久久久| 亚洲精品在线看| 91久久久久久国产精品| 欧美午夜精品理论片a级大开眼界 欧美午夜精品理论片a级按摩 | 亚洲免费在线视频| 在线视频中文亚洲| 国产精品主播| 欧美日韩a区| 噜噜噜躁狠狠躁狠狠精品视频| 在线视频一区二区| 亚洲一区二区三区高清不卡| 国产麻豆9l精品三级站| 欧美激情bt| 老鸭窝91久久精品色噜噜导演| 久久久综合香蕉尹人综合网| 国产精品vvv| 一区二区三区**美女毛片| 免费成人av| 久久国产直播| 在线观看成人网| 国产欧美综合一区二区三区| 欧美三级中文字幕在线观看| 一区二区三区精品久久久|