资源预览内容
第1页 / 共36页
第2页 / 共36页
第3页 / 共36页
第4页 / 共36页
第5页 / 共36页
第6页 / 共36页
第7页 / 共36页
第8页 / 共36页
第9页 / 共36页
第10页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Symbian系统简介概述Symbian系统结构 Symbian线程 Symbian内存管理 Window Server Symbian系统性能优化 S60版本差异分析Symbian系统结构EKA2介绍 Symbian系统模块 Symbian硬件模块EKA2简史EPOC8操作系统 1984年第一款Psion掌上电脑诞生 基于8位处理器 封闭式操作系统 EPOC16 1990年开发完成 支持Intel8086 CPU 提供了基于C语言的软件接口 带来了诸多问题EKA2简史(2)EKA1 EPOC32_1 1997年Psion S5掌上电脑 32位操作系统 设计中考虑到了硬件平台移植性 硬件移植性问题未得到根本解决 新硬件的支持必须对内核代码从新编译 EKA2 2003年开发完成并被手机厂商应用 将硬件平台特性与内核彻底分离EKA2特性系统模块化 单用户系统 实际硬件几乎一致的模拟器 支持单核移动通讯平台 更好的内存管理 更灵活的设备驱动程序结构Symbian系统模块Nanokernel 初始内核 提供最基本的功能来启动GSM信号栈 硬件中断派发者 Symbian OS内核 线程与进程管理 动态库调用 等等、Symbian系统模块(2)ASSP和variant 硬件驱动 LDD: 逻辑硬件驱动程序 PDD: 物理硬件驱动程序 Extensions EUSER File Server Window ServerSymbian硬件模块Baseband Processor(BP) 手机modem管理 SIM卡管理 通话相关声音控制 Application Processor(AP) Symbian系统功能部分Symbian硬件模块(2)Symbian硬件(数据存储)RAM : 读写最快,成本高 SDRAM:低电耗,速度是RAM的1/4 Flash:成本低,读写相对较慢 NOR Flash NAND Flash线程与进程线程 执行(Execution)的最小单位 时间分片的受载体 进程 线程的集合 所属线程共享同段物理内存和其他系统资源用户模式线程iUserStackRunAddressiSupervisorStackNano-Thread用户栈内核栈Symbian线程分类初始线程 系统启动时第一个创建的线程 在系统中是唯一的 内核线程 只存在于内核模式 用户线程 大部分时间在用户模式线程创建RThread:Creat - DThread:Creat(SThreadInfo TInt iType; TThreadFunction iFunction; TAny* iPtr; TAny* iSupervisorStack; TInt iSupervisorStackSize; TAny* iUserStack; TInt iUserStackSize; TInt iInitialThreadPriority; TPtrC iName; TInt iTotalSize; ;线程状态Created Dead Ready WaitSemaphore WaitSemaphoreSuspended WaitMutex WaitMutexSuspended HoldMutexPendingSymbian线程-Cleanup队列每个线程拥有一个Cleanup队列 class TThreadCleanup : public TPriListLink public: IMPORT_C TThreadCleanup(); void ChangePriority(TInt aNewPriority); IMPORT_C void Remove(); virtual void Cleanup()=0; public: DThread* iThread; ;线程同步对象信号量(Semaphore) 标准信号量机制 Wait:计数器减,如果计数器为负,线程等待 Signal:计数器加,如果不为负,下一个等待线 程开始运行 互斥(Mutex) 用于多个线程共享资源 可多次复用线程同步对象(2)Condition Variable 用于等待某共享资源达到某一条件时触发 须与互斥联合使用 避免Polling, 提高效率 RConVar类线程同步对象(3)Condition Variables 实例: 发送线程与接受线程共享消息队列 发送线程在队列满时阻塞 接收线程在消息空时阻塞 mutex.Wait(); while(queue.empty()condvar.Wait(mutex); mutex.Signal线程间通讯ClientServer 消息队列(Message Queues) 异步消息传递机制 Publish/Subscribe 用户层和内核层数据交互机制 Shared Chunk 线程间内存共享Publish/SubscribeIdentityTypeSecurity1 WORD/多字节categorykey写读PublisherSubscriberPublisherTFileName n; RProcess().Filename(n); TInt r=RProperty:Set(KMyPropertyCat,EMyPropertyName,n); User:LeaveIfError(r); / retrieve the first 10 characters of the name value TBuf name; r=RProperty:Get(KMyPropertyCat,EMyPropertyName,name); if (r!=KErrOverflow) User:LeaveIfError(r); / retrieve and publish a new value using the attached counter / property TInt count; r=counter.Get(count); if (r=KErrNone) r=counter.Set(+count); User:LeaveIfError(r);Subscribervoid CPropertyWatch:RunL() / resubscribe before processing new value to prevent / missing updates iProperty.Subscribe(iStatus); SetActive(); / property updated, get new value TFileName n; if (iProperty.Get(n)=KErrNotFound) / property deleted, do necessary actions here. NameDeleted(); else / use new value . RHeap简单的内存分配实现 在一块线形内存区域里分块管理 内存分配与释放算法简单,但效率不是最 好 有内存碎片的问题,导致效率下降Window Server两大功能 屏幕显示管理 系统事件管理Window TreeRoot Window 树的起点 每个Screen Device都会有一个 Group Window 窗口分组的起始节点 不直接参与显示 Top Client Window Client WindowsWindow类Direct screen access绘制不经过Window Server 有可能污染屏幕上其他的窗口 CDirectScreenAccess实例效率优化优化目标 程序自身执行速度 程序对外部事件的响应速度 优化方法 避免小循环 优化通用代码 减少小调用 线程优先级调整 内存管理优化避免小循环TInt trivial_checksum(TInt8* aBlock, TInt aLen) TInt i=0; TInt8* j; for (j=aBlock; jaBlock+aLen; j+)i+=*j; return i; 慢避免小循环TInt trivial_checksum_unrolled(TInt8* aBlock, TInt aLen) TInt i=0; TInt8* j, endptr; endptr=aBlock+aLen; for (j=aBlock; jendptr; ) if (jendptr) i+=*j+; else break; if (jendptr) i+=*j+; else break; if (jendptr) i+=*j+; else break; if (jendptr) i+=*j+; else break; Return 1; 快线程优先级调整将执行代码分段处理 常用或耗时的任务调高优先级 将单线程改为多线程处理 以空间换时间内存管理优化方法对重要执行代码避免进行动态内存分配, 改以程序启动时分配静态内存 替换RHeap算法 固定大小内存块,提高分配速度S60版本差异分析Symbian VersionNew FeatureFlash LiteWeb RuntimeS60 v5.0Symbian 9.4Home Screen Publish API, Sensor API, new controls for Touch Screen, touch feedback APIFlash 3.0 + new ActionScript for native service accessSupport widget + JavaScript extension to access S60 services(Calendar, contacts, Logs and messaging)S60 v3.0Symbian 9.1SIP,DRM and IM API, Open C and Open C+, Location APIs, Web Services API, OMA DRM v2.0, OMA Data Synchronization 1.2, Light API, Bluetooth 1.2, Find Item API, Exchangeable Image File API.Flash Lite 1.1Web Browser for S60 is an optionS60 v3.0 FP1Symbian 9.2OCR, OpenGL V1.1, FOTA, Nokia Push to Talk, Gallary Content Listing API, Central Repository Notification Handler API, Profile Engine API, Screen Mode API, Telnet API, App Framework Animation APIFlash Lite 2.0Web browser becoming standard browserS60 v3.0 FP2Symbian 9.3Seamless connection transition, A unified message editor, Connection Setting and its UI API, Version Infor APIFlash Lite
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号