Linux进程管理

进程

进程就是处于执行期的程序(目标码存放在某种存储介质上),还包含像打开的文件、挂起的信号、内核内部数据、处理器状态等。实际上,进程就是正在执行的程序代码的实时结果。内核需要有效而透明地管理所有细节。

阅读更多

Android消息处理机制

Android应用程序使用消息来驱动。Android应用程序的每一个线程在启动时,都可以首先在内部创建一个消息队列,然后进入一个无限循环中,不断检查它的消息队列中是否有新的消息需要处理,那么线程就会将它从消息队列中取出,并对它进行处理,否则线程就会进入休眠等待状态。

阅读更多

Linux文件描述符

概述

在Linux系统中的一切都可以看成文件。对于内核而言,所有打开的文件都通过文件描述符引用。文件描述符是一个非负整数,当打开一个现有文件或是创建一个新的文件时,内核向进程返回一个文件描述符。

阅读更多

I/O多路转换select、poll、epoll

构造一张我们感兴趣的描述符的列表,然后调用一个函数,直到这些描述符中的一个已经准备好进行I/O操作时,该函数才返回。

阅读更多

Android应用程序进程启动

ActivityManagerService(AMS)在启动一个应用程序组件时,如果发现这个组件所需要的应用程序进程还没有启动起来,AMS就会请求Zygote进程将这个应用进程启动起来。

阅读更多

AMS启动

startBootstrapServices

在SystemServer.run方法中startBootstrapServices()

阅读更多

Zygote和SystemServer

Zygote

Android中所有的应用程序进程都是由Zygote进程通过复制自身的方式创建的,因此将它称为进程孵化器。Zygote进程是Android系统的第一个进程init启动的。

阅读更多

编译时注解Kapt

注解

一个注解允许你把额外的元数据关联到一个声明上。然后元数据就可以被相关的源代码工具访问,通过编译好的类文件或是在运行时,取决于这个注解是如何配置的。 –《Kotlin in Action》

阅读更多

Linux内存映射

概述

内存映射简单来说就是将内核空间的一段内存区域映射到用户空间,这样用户对这段内存区域的修改可以直接反映到内核空间,相反,内核空间对这段区域的修改也可以反映到用户空间。在这样对于内核空间和用户空间之间需要大量数据传输等操作的话效率非常高。

阅读更多