当前位置: 首页 > news >正文

公司建设网站申请温州seo排名公司

公司建设网站申请,温州seo排名公司,网页搜索框下记录删不掉,网站平台建设成本笔者希望做一个系列#xff0c;整理 Android 基础技术#xff0c;本章是关于 Framework 简述 Android 系统启动流程 当按电源键触发开机#xff0c;首先会从 ROM 中预定义的地方加载引导程序 BootLoader 到 RAM 中#xff0c;并执行 BootLoader 程序启动 Linux Kernel…笔者希望做一个系列整理 Android 基础技术本章是关于 Framework 简述 Android 系统启动流程 当按电源键触发开机首先会从 ROM 中预定义的地方加载引导程序 BootLoader 到 RAM 中并执行 BootLoader 程序启动 Linux Kernel 然后启动用户级别的第一个进程 init 进程(汇编调用。init 进程会解析 init.rc 脚本做一些初始化工作包括挂载文件系统、创建工作目录以及启动系统服务进程等其中系统服务进程包括 Zygote、service manager、media 等C层的。在 Zygote 中会进一步去启动 system_server进程JAVA 层然后在 system_server 进程中会启动 AMS、WMS、PMS 等服务等这些服务启动之后AMS 中就会打开 Launcher 应用的 home Activity最终就看到了手机的 桌面。 Android 系统中有多少种不同的进程 init进程  用户态的第一个进程。解析init.rc创建各自服务进程(media, 守护进程其中有一个叫zygote进程zygote进程  一个进程所需要的必要资源 preloadclass 虚拟机vmsystem_server进程: 从zygote进程fork 创建大量的服务AMSPMSWMS等加载Android framework所需要的资源context。app进程从zygote进程fork init 进程是什么作用是什么 init进程是Linux系统中用户空间的第一个进程进程号固定为1 是C进程. 由kernel启动 Kernel启动后在用户空间启动init进程并调用init中的main()方法执行init进程的职责。 1. 创建mkdir和挂载mount启动所需要的文件目录  初始化和启动属性服务 解析init.rc配置文件并启动Zygote进程是由init进程fork出来的。 zygote进程是什么作用是什么 Zgyote 是Android中的第一个art虚拟机 Android Runtime他通过socket的方式与其他进程进行通信。 作用1 zygote fork的第一个java进程 SystemServer 进程 SystemServer 会开启一系列服务AMS, WMS, PMS, PKMS等等 作用2从zygote fork子进程app Launcher进程 Launcher-appfork   app_main.cpp做了什么或者另外一种说法Zygote是如何被启动的 创建zygote进程走到app_main.cpp的main方法它是zygote进程的入口 app_main.cpp的main方法流程如下 首先是Native层 startVm 启动了虚拟机 这里就是启动JAVA虚拟机然后 调用startReg函数为java虚拟机注册JNI方法通过jni调用走到ZygoteInit.mainZygoteInit.main() 是java层方法 registerZygoteSocket() 注册一个Socket Server接收AMS请求socketName以ANDROID_SOCKET_开头preload()预加载资源例如常用类、颜色、drawable、JNI函数以预加载类为例读取/system/etc/preloaded-classes文件中配置的类名通过Class.forName反射加载常用类Activity、intent、String、Integer、TextView、ButtonstartSystemServer() 内部通过Zygote.forkSystemServer启动SystemServerrunSelectLoop() 循环等待处理请求 system_server 为什么要在 Zygote 中启动而不是由 init 直接启动呢 Zygote 作为一个孵化器可以提前加载一些资源这样 fork() 时基于 Copy-On-Write 机制创建的其他进程就能直接使用这些资源而不用重新加载。比如 system_server 就可以直接使用 Zygote 中的 JNI 函数、共享库、常用的类、以及主题资源。 使用 Zygote 进程去孵化应用进程有什么好处为什么不是让 system_server 去孵化  好处应用在启动的时候需要做很多准备工作包括启动虚拟机加载各类系统资源等等这些都是非常耗时的如果能在zygote里就给这些必要的初始化工作做好子进程在fork的时候就能直接共享那么这样的话效率就会非常高。 为什么不是 system_server 进行 fork 首先 system_server 相比 Zygote 多运行了 AMS、WMS、PMS 等服务这些对一个应用程序来说是不需要的。另外进程的 fork() 对多线程不友好仅会将发起调用的线程拷贝到子进程这可能会导致死锁而 system_server 中肯定是有很多线程的。  Zygote 为什么不采用 Binder 机制进行 IPC 通信  第一个原因我们可以设想一下采用binder调用的话该怎么做首先zygote要启用binder机制需要打开binder驱动获得一个描述符再通过mmap进行内存映射还要注册binder线程这还不够还要创建一个binder对象注册到serviceManager另外AMS要向zygote发起创建应用进程请求的话要先从serviceManager查询zygote的binder对象然后再发起binder调用这来来回回好几趟非常繁琐相比之下zygote和SystemServer进程本来就是父子关系对于简单的消息通信用管道或者socket非常方便省事。第二个原因如果zygote启用binder机制再fork出SystemServer那么SystemServer就会继承了zygote的描述符以及映射的内存这两个进程在binder驱动层就会共用一套数据结构这显然是不行的所以还得先给原来的旧的描述符关掉再重新启用一遍binder机制这个就是自找麻烦了。第三个原因Binder 机制中存在 Binder 线程池是多线程的如果 Zygote 采用 Binder 的话就存在上面说的 fork() 与 多线程的问题了。其实严格来说Binder 机制不一定要多线程所谓的 Binder 线程只不过是在循环读取 Binder 驱动的消息而已只注册一个 Binder 线程也是可以工作的比如 service manager 就是这样的。实际上 Zygote 尽管没有采取 Binder 机制它也不是单线程的但它在 fork() 前主动停止 了其他线程fork() 后重新启动了 多线程进程的fork调用会有什么问题 会发生死锁 在POSIX 标准中fork 的行为是这样的复制整个用户空间的数据通常使用 copy-on-write 的策略 所以可以实现的速度很快以及所有系统对象然后仅复制当前线程到子进程。这里所有父进程中别的线程到了子进程中都是突然蒸发掉的。 假设这么一个环境在 fork 之前有一个子线程 lock 了某个锁获得了对锁的所有权。fork 以 后在子进程中所有的额外线程都人间蒸发了。而锁却被正常复制了在子进程看来这个锁没有主人所以没有任何人可以对它解锁。当子进程想 lock 这个锁时不再有任何手段可以解开 了。程序发生死锁。 SystemServiceManager和service_manager的区别 SystemServiceManager 专门管理各种服务的启动  java层的各种服务AMS, PMS, WMS。SystemServiceManager 的ArrayListSystemService mServices 添加上面的服务service_manager 是C层的 它是0号 binder服务。 如果我们启动一个hello World安卓用于程序里面不另外启动其他线程这个里面最少要启动多少个线程 启动4个 线程  main线程只是程序的主线程也是日常用到的最多的线程也叫UI线程因为android的组件是非线程安全的所以只允许UI/MAIN线程来操作。 GC线程java有垃圾回收机制每个java程序都有一个专门负责垃圾回收的线程Binder1 就是我们的ApplicationThread这个类实现了Ibinder接口用于进程之间通信具体来说就是我们程序和AMS通信的工具 Binder2 就是我们的ViewRoot.W对象它也是实现了IBinder接口就是用于我们的应用程序和 wms通信的工具。 wms就是WindowManagerServicer 和ams差不多的概念不过它是管理窗口的系统服务。
http://www.yayakq.cn/news/5970/

相关文章:

  • 网站开发设计师的工作dede网站根目录标签
  • 做风险代理案源的网站静态网站做毕业设计
  • 武冈企业建站电商平台网站制作
  • 濮阳哪里做网站合购WordPress
  • 美术培训学校网站模板太原企业网站怎么优化
  • 做灯箱到哪个网站找业务两学一做网站是多少钱
  • 网页设计与网站建设标准数据wordpress二次开发难吗
  • 网站建设脚本宽创国际的展馆设计案例
  • 网站的底部设计网络公司网站开发案例
  • 什么网站可以用手机做兼职赚钱吗青岛编程培训机构排名前十
  • 受雇去建设网站类网站最好建设网站
  • 网站源码中国有限公司wordpress调用插件吗
  • 全栈网站开发工程师门户网站建设方案ppt
  • 山东教育行业网站建设推荐南京学习做网站
  • 贵阳做网站好的公司有哪些深圳网站建设怎么办
  • 做网站需要vps吗找装修公司去哪个网站
  • 做团购网站wordpress 导航栏
  • 外贸网站系统苏州百度seo关键词优化市场
  • 网站名称备案网站文章结构变更怎么做301
  • 网站建设一年多少钱网络营销模式下品牌推广研究论文
  • 做网站付多少定金如何搭建个人博客网站
  • 企业建设网站的步骤网站备案有什么风险
  • 个人做淘宝客网站有哪些开发建设信息的网站
  • 做网站和优化共多少钱?wordpress优化版源码
  • 南京网站优化步骤营销型网站分类
  • 内网网站建设的步骤过程做网站的点子
  • 男人女人做那事网站网站开发 业务流程图
  • 网站站长登录方式虚拟机安装wordpress
  • 做视频网站怎么对接云盘wordpress 安装量
  • 新农村建设投诉网站wordpress加速服务