进程空间划分
一个进程分为 用户空间 / 内核空间。进程间用户空间数据不可共享,内核空间数据可以共享。
Android 进程间是相互独立隔离的,保证安全,进程间交互是通过系统调用进行的
画图。
那跨进程通信的基本原理是?
发送进程通过系统调用,将需要发送的数据copy到linux进程的内核空间中的缓存区中(copy_from_user,copy一次)
内核服务进程唤醒接收线程,通过系统调用将数据发送到接收进程的用户空间中,(copy_to_user,又copy一次)
缺点:效率低,copy两次;接受数据的缓存要由接收方提供,但是接收方不知道到底多大满足要求,尽可能大。
浪费内存空间,还有就是通过调取api获取消息头信息体大小,浪费时间。
进程的概念主要有什么?
进程的概念主要有两点:第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。