Linux进程和进程边界
1. 进程和线程
2. 手机操作系统的发展
3. 进程的地址空间边界
4. 进程边界的安全围栏: Crash的不可扩延性
5. 进程边界的安全围栏: 全局数据和服务的不可访问性
http://www.jikexueyuan.com/course/25.html
---------------------------------
1. 进程和线程
可执行文件: 就是一个文件,不活动就是普通文件, binary
进程: 可执行文件的running,一次运行。
线程: CPU(核)的调度单位,进程的内部的 并发任务调度
单核CPU的并发: 伪并发,时间片的调度
多核CPU的并发:物理意义上的真正并发
资源和调度:进程 是资源的基本分配单位,独立的地址空间,堆,stack
线程:没有独立的地址空间,只有独立的stack,和独立的时间片调度
2. 手机操作系统的发展
Feature Phone时代: 单进程多任务(线程)的非智能系统, 一个线程就是一个应用。封闭的,应用只能通过J2ME扩展
Smart Phone时代: 多进程多任务 的智能系统,开放的,应用可扩展
3. 进程的地址空间边界
物理内存:一块固定的内存,如上图中最下方
每个进程都有 0~4G的虚拟内存(地址空间),其中3~4G的地址都映射到同一块物理内存(这块内存就是Kernel sapce)
0~3G(head, stack,..) 的映射的物理地址都是独立的,不一样的(但并不一定是连续的)
4. 进程边界的安全围栏: Crash的不可扩延性
地址空间的独立 的好处
一个进程的Crash 不会导致 其他进程 或者 系统 的Crash。
ANR: UI block 时间过长
Force Close: 进程意外终止
Kernel Crash 或者 Filesystem Crash那么整个 OS就crash了, 具有扩延性。手机蓝屏或重启
比Feature Phone好多了,Feature Phone 一个应用Crash整个系统Crash
5. 进程边界的安全围栏: 全局数据和服务的不可访问性
每个Application的0~3G的地址空间独立的,
别的Application即使知道了当前应用的函数地址,别的App也读不到,因为app地址映射到了不同的物理内存