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

麒麟子

~~

導航

<2013年4月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

統計

常用鏈接

留言簿(12)

隨筆分類

隨筆檔案

Friends

WebSites

積分與排名

最新隨筆

最新評論

閱讀排行榜

評論排行榜

[導入]Symbian系統體系結構

Symbian系統體系結構

在symbian os上運行的四種軟件 

應用程序 application

服務     server

引擎     engine

內核     kernel

Symbian系統使用活動對象與客戶-服務器(C/S)對事件處理系統進行了優化 

硬件資源: 

    一個CPU32RAM 

    一個ROM(只讀存儲器),里面有操作系統與內建的中間件和應用程序 

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

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

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

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

Symbian OSPC系統的區別如下: 

資源限制:CPU太慢內存太少 

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

電源條件嚴格. 

Symbian系統結構分為三層,內核層、引擎層、應用層。如下圖所示

boundary

Boundary

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

引擎層:提供應用層與內核層的一個橋梁,相當于API接口,但引擎層可以將內核提供的API進行再次封裝,而不是將內核API直接暴露,這樣可以將多種API實現的功能寫成模塊,而只向第三方軟件開發商提供簡單易用的接口。它主要負責應用程序中操作數據而不是與用戶交互的部分.通常你可以把一個程序分成引擎部分和一個GUI部分,多部Symbian內帶的程序都是這樣做的。一個應用程序引擎可以是一個獨立的代碼模塊或是一個獨立的DLL或是幾個DLL引擎和應用程序間的邊界是模塊或DLL的邊界。所以在Symbian中有四個組件類型與三個邊界類型。DLL或是模塊組件對交叉引用來說很方便。它們使系統模塊化與保持封裝。 

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

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

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

   應用層的理解與普通操作系統沒有很大的區別應用程序是一個有用戶界面的程序,在獨立的進程中運行 服務是沒有用戶界面的程序服務管理一個或多個資源,并提供API讓客戶可以訪問它的服務。享受服務的客戶可以是一個程序或是其它服務每個服務也運行在獨立的進程空間中。 

   在Symbian,服務的形式類似其它操作系統上用驅動程序或是內核程序提供的功能。如文件系統的訪問也是客戶/服務類型的。(微內核 )   

可執行文件的格式 

    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)中有,你的程序link時link的是.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:盤,被映射到一個固定的地址。 

    物理RAM被MMU分在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記憶棒之類的外掛盤 

事件處理 

事件處理模型如圖: 

    Symbian中使用活動對象(active object)來處理事件 

    SymbianOS中,所有的Symbian OS線程都是事件處理器,每個線程有一個活動調度對象,加上一個或多個活動對象來處理從設備或其它程序發過來的事件。 每個活動對象都有一個虛擬的成員函數RunL(),在這個函數里面處理事件。 

多任務與搶占式 

Symbian OS實現搶占式多線程。 

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

結束語:

可以看出,對于不同的平臺,操作系統都有相似之處。如進程的調度,資源的管理,程序的執行方式,IO,文件系統等等。但對于不同的平臺,又有其各自的特點。如Symbian OS中的DLL EXE的區別與Linux中的是不一樣的。而對于事件的處理也不一樣。程序的執行與其在存儲設備中的位置也是有區別的。總之,不管對應于哪種平臺,其自身的操作系統總是實現對資源的有效管理,并維持秩序,確保效率,同時又提供一個方便的接口供用戶使用。這也是操作系統的本質所在。 

 

PS:這是Symbian的大眾理解,大部分資源來自于網上.沒有什么特別之處.系統分層結構圖也無法貼上來.汗~~!


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

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

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美午夜不卡影院在线观看完整版免费 | 欧美成人xxx| 亚洲国产成人av| 欧美国产日韩一区| 欧美精品日韩综合在线| 亚洲男同1069视频| 欧美一区二区三区免费视频| 伊人久久综合97精品| 欧美激情中文字幕一区二区| 欧美理论片在线观看| 亚洲欧美视频在线观看视频| 欧美中文字幕在线视频| 亚洲国产视频a| 一本一道久久综合狠狠老精东影业| 国产精品免费在线| 免费观看亚洲视频大全| 欧美欧美天天天天操| 亚洲欧美中文字幕| 狼人天天伊人久久| 亚洲欧美日韩人成在线播放| 久久国产精品久久精品国产 | 欧美日韩视频不卡| 久久久久久久久久久久久久一区 | 亚洲新中文字幕| 在线观看久久av| 一本色道久久综合亚洲精品小说| 狠狠v欧美v日韩v亚洲ⅴ| 在线综合+亚洲+欧美中文字幕| 亚洲女人小视频在线观看| 亚洲成色777777女色窝| 中国成人亚色综合网站| 亚洲激情成人网| 欧美一级欧美一级在线播放| 亚洲少妇在线| 蜜臀久久99精品久久久画质超高清| 亚洲婷婷国产精品电影人久久| 久久黄色小说| 性一交一乱一区二区洋洋av| 欧美国产一区二区在线观看 | 一区二区三区在线高清| 亚洲一区在线播放| 一区二区三区欧美日韩| 另类尿喷潮videofree| 久久国产加勒比精品无码| 欧美日韩一区二区在线观看| 麻豆freexxxx性91精品| 国产亚洲精久久久久久| 亚洲网友自拍| 亚洲综合国产| 欧美日韩中文精品| 亚洲精品欧美一区二区三区| 亚洲第一精品福利| 久久精品国语| 久久蜜臀精品av| 国产一区二区三区在线观看免费视频| 亚洲校园激情| 欧美亚洲综合久久| 国产精品日韩在线播放| 亚洲影院一区| 香蕉免费一区二区三区在线观看| 欧美偷拍另类| av成人老司机| 亚洲免费中文| 国产精品二区在线| 亚洲一区二区在线视频| 午夜精品婷婷| 国产日韩亚洲欧美| 久久不见久久见免费视频1| 久久久久久有精品国产| 国外成人在线视频网站| 久久女同精品一区二区| 欧美成人国产va精品日本一级| 精品91免费| 欧美顶级艳妇交换群宴| 亚洲精品在线观看免费| 亚洲自拍偷拍色片视频| 国产农村妇女精品| 久久人人97超碰精品888| 欧美大片在线看| 一区二区三区国产在线| 国产精品视频免费观看| 欧美在线视频一区| 欧美激情一区二区| 亚洲视频一区在线| 国产一区二区激情| 免费在线成人av| 亚洲视频免费| 猛干欧美女孩| 亚洲免费在线视频一区 二区| 国产视频在线一区二区| 免费欧美视频| 亚洲欧美另类国产| 欧美国产一区二区三区激情无套| 一区二区三区四区五区视频| av72成人在线| 国产喷白浆一区二区三区 | 蜜乳av另类精品一区二区| 国产视频一区在线| 欧美激情视频一区二区三区在线播放| 一区二区三区精品视频| 女人天堂亚洲aⅴ在线观看| 亚洲一区二区三区成人在线视频精品| 国产农村妇女精品| 欧美日韩国产综合视频在线| 欧美一区二区在线免费观看| 亚洲精品国产欧美| 久久久91精品国产| 中文久久精品| 亚洲国产二区| 国精产品99永久一区一区| 欧美日韩国产一中文字不卡| 久久国产精品亚洲va麻豆| 夜夜嗨av一区二区三区网页 | 欧美一区二区三区的| 亚洲毛片在线观看| 一区免费视频| 国产精品一区一区三区| 欧美日本高清| 欧美寡妇偷汉性猛交| 久久九九国产精品怡红院| 亚洲一区免费网站| aa国产精品| 亚洲精品综合久久中文字幕| 欧美福利在线| 免费高清在线视频一区·| 久久久综合视频| 欧美一区永久视频免费观看| 亚洲一区二区成人| 亚洲毛片在线| 9色精品在线| 亚洲国产精品成人综合| 在线观看视频日韩| 黄色成人在线网址| 狠狠色2019综合网| 国产一区二区三区无遮挡| 国产日韩在线视频| 国产精品香蕉在线观看| 国产精品视频不卡| 国产精品视频一二| 国产精品亚洲第一区在线暖暖韩国| 国产精品r级在线| 国产精品a久久久久久| 国产精品福利片| 国产精品久久久久久久久久尿| 欧美性猛交xxxx免费看久久久 | 国产亚洲aⅴaaaaaa毛片| 国产麻豆日韩欧美久久| 国产精品一区免费观看| 国产一区欧美| 亚洲第一网站免费视频| 亚洲国产成人porn| 日韩一级在线观看| 亚洲愉拍自拍另类高清精品| 午夜激情亚洲| 久久一区二区三区国产精品| 老司机成人在线视频| 欧美国产日韩xxxxx| 日韩一级欧洲| 午夜精品久久久久久久99樱桃 | 午夜在线观看免费一区| 久久精品国产一区二区三区| 另类天堂av| 欧美色另类天堂2015| 国产亚洲欧美一区二区三区| 一区二区三区在线视频观看| 亚洲国产三级| 亚洲天堂男人| 亚洲欧美变态国产另类| 欧美主播一区二区三区美女 久久精品人| 欧美一区二区三区视频免费| 浪潮色综合久久天堂| 国产精品久久久久影院亚瑟| 红桃视频国产精品| 中文在线资源观看视频网站免费不卡| 欧美一区二区三区成人| 欧美激情一区在线观看| 亚洲欧美日韩精品一区二区| 免费人成精品欧美精品| 国产精品婷婷| 日韩一级免费| 久久综合中文字幕| 一区二区三区免费观看| 久久午夜精品| 国产热re99久久6国产精品| 亚洲精品之草原avav久久| 久久久久www| 99精品久久久| 久久久久久成人| 国产精品毛片a∨一区二区三区| 亚洲国产精品高清久久久| 午夜免费在线观看精品视频| 男男成人高潮片免费网站| 亚洲一区欧美一区| 欧美日韩999| 91久久国产综合久久| 久久激情一区| 亚洲午夜激情在线| 欧美日韩hd| 日韩一区二区免费高清| 久久久久国产精品厨房|