美文网首页
进程与虚拟空间简单理解

进程与虚拟空间简单理解

作者: 梧叶已秋声 | 来源:发表于2020-04-08 11:57 被阅读0次

首先,对于一个32位的处理器, 在Linux系统中,其虚拟地址为32位,因此其虚拟地址空间的范围为


一个可执行文件运行起来的话它就变成了进程,系统会给每个进程分配一个4G大小的虚拟地址空间。如果一个Android设备是8g内存,给每个进程分配4g实际内存是不可能的。
Linux系统将虚拟地址空间按3:1比例划分,其中用户空间(user space)占3GB,内核空间(kernel space)占1GB。
https://blog.csdn.net/czc1997/article/details/81159126

其中前3G内存是用户空间,最后1G是内核空间。所有的进程有各自的用户空间,但所有的进程都共享一个内核空间。

出处:Android系统中的进程管理:进程的创建
在Android系统中,进程可以大致分为系统进程和应用进程两大类。
系统进程是系统内置的(例如:init,zygote,system_server进程),属于操作系统必不可少的一部分。
应用进程是指应用程序运行的进程。这些应用程序可能是系统出厂自带的(例如Launcher,电话,短信等应用),也可能是用户自己安装的(例如:微信,支付宝等)。

下面我们只看应用进程。
一般情况下来说,一个app,对应一个进程,系统会分配给这个进程分配一个4g(处理器是32位的情况下)的虚拟空间,如下所示。


但是,对于系统应用很常用的一个属性就是android:sharedUserId
android:sharedUserId的作用是多个应用程序,可以共享同一进程中的用户空间(如android.uid.phone或android.uid.system),例如下面的AndroidManifest,分别是3个应用中的AndroidManifest。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
        package="com.android.phone"
        coreApp="true"
        android:sharedUserId="android.uid.phone"
        android:sharedUserLabel="@string/phoneAppLabel"
>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.android.simmelock"
        android:sharedUserId="android.uid.phone">
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.android.stk"
        android:sharedUserId="android.uid.phone">

phone,simmelock以及stk这3个app,使用的sharedUserId都是android.uid.phone,因此这3个应用程序,在实际运行中,这种情况下app之间可以数据共享,因为都是运行在同一用户空间中。
虚拟空间如下所示。


参考链接:
Android进程管理机制和内存机制
虚拟地址空间布局——基于x86体系32位下Linux系统
Linux的进程地址空间[一]
Android系统中的进程管理:进程的创建

相关文章

  • 进程与虚拟空间简单理解

    首先,对于一个32位的处理器, 在Linux系统中,其虚拟地址为32位,因此其虚拟地址空间的范围为 一个可执行文件...

  • 进程与线程,并发与并行简单理解

    这里不管进程与线程的概念,先看看进程与线程的使用。现有代码如下,内含加法和减法函数,程序运行时按顺序调用加法和减法...

  • 高并发I/O

    准备知识 用户态与内核态 操作系统将虚拟空间分成用户空间与内核空间。用户进程不能访问内核空间。只有系统调用才可以访...

  • Linux中的进程之进程基本概念

    一、概念的理解 二、进程的属性 一、概念的理解 首先程序与进程是什么?程序与进程又有什么区别?程序(procedu...

  • 简单理解线程和进程

    线程是操作系统中最小的运算调度单位,它被包含在进程中,一个进程可以有多个线程。 进程是 资源分配 的基本单位。

  • 七、多线程

    一、线程概述 线程是在程序中独立并发的执行流,相比于进程,线程具有更高的性能,多个线程可以共享一个进程虚拟空间,线...

  • iOS GCD开发运用场景

    (一)、线程的概念和与生命周期 进程:可以简单理解为进程为一个应用程序 线程:是CPU调度和分派的基本单位 下图是...

  • 操作系统 进程简介

    进程 什么是进程?为什么要设立进程?进程有哪些特性进程可以简单的理解为执行中的程序,程序是我们放在硬盘中的一段代码...

  • 多进程

    多进程简单理解: 进程之间是独立的,是操作系统自己来维护和管理的,python通过C接口起了一个进程,多进程可以充...

  • 进程与线程(简单)

    什么是进程? 我们都知道一个程序运行最少需要一个进程,进程就是程序执行时的一个实例,每个进程都有自己独立的内存地址...

网友评论

      本文标题:进程与虚拟空间简单理解

      本文链接:https://www.haomeiwen.com/subject/ckjzphtx.html