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地址映射到了不同的物理内存

Linux进程和进程边界的更多相关文章

  1. Linux系统编程@进程通信(一)

    进程间通信概述 需要进程通信的原因: 数据传输 资源共享 通知事件 进程控制 Linux进程间通信(IPC)发展由来 Unix进程间通信 基于System V进程间通信(System V:UNIX系统 ...

  2. linux(六)__进程与任务控制

    一.程序.进程.线程 1.程序是一个普通文件,是一系列指令和数据的集合,是一个静态的实体,是程序员写好之后存储于外设之上的代码.它是"死"的,而进程和程序都是"活&quo ...

  3. Linux内核笔记——进程管理之执行体

    内核版本:linux-2.6.11 在Linux中,有多种执行体(指令流.执行单位),它们是CPU调度和分配资源的基本单位,它们是内核态可见的,即内核态下,每一种执行体都有对应的唯一数据结构task_ ...

  4. Linux下java进程CPU占用率高分析方法

    Linux下java进程CPU占用率高分析方法 在工作当中,肯定会遇到由代码所导致的高CPU耗用以及内存溢出的情况.这种情况发生时,我们怎么去找出原因并解决. 一般解决方法是通过top命令找出消耗资源 ...

  5. linux下对进程按照内存使用情况进行排序

    linux下对进程按照内存使用情况进行排序的命令为:ps aux --sort -rss 详细解说参见 http://alvinalexander.com/linux/unix-linux-proce ...

  6. Linux如何查看进程、杀死进程、启动进程等常用命令

    Linux如何查看进程.杀死进程.启动进程等常用命令 关键字: linux 查进程.杀进程.起进程1.查进程    ps命令查找与进程相关的PID号:    ps a 显示现行终端机下的所有程序,包括 ...

  7. LINUX退出当前进程——比较return、exit()

    1.在Linux中任何让一个进程退出 进程退出表示进程即将结束.在Linux中进程退出分为了正常退出和异常退出两种. 1>正常退出 a. 在main()函数中执行return . b.调用exi ...

  8. linux下查看进程占用端口和端口占用进程命令

    Linux下查看进程占用端口: 查看程序对应进程号:ps –ef|grep 进程名 REDHAT :查看进程号所占用的端口号:netstat –nltp|grep 进程号 ubuntu:查看进程占用端 ...

  9. python实现Linux启动守护进程

    python实现Linux启动守护进程 DaemonClass.py代码: #/usr/bin/env python # -*- coding: utf-8 -*- import sys import ...

随机推荐

  1. array_column php 函数

    今天想从二维数组中取某个列成一维数组 结果发现 array_column需要php5.5支持才行 然后自己写了一个仿造版本的array_column 两种思路 1.直接遍历 取值给追加数组 返回 2. ...

  2. Oracle学习.Windows 命令行 启动ORACLE服务与实例

    使用数据库前要先打开数据库的实例和监听器! --总结启动命令如下: lsnrctl  [start|stop|status]                  --启动监听器,停止监听器,查看监听器的 ...

  3. jQuery获取鼠标事件源(万能)

    //任意位置 $(document).ready(function(){ $(document).click(function(){ $("#id_").hide(); }); } ...

  4. Win7 下安装RabbitMQ

    RabbitMQ依赖erlang,所以先安装erlang,然后再安装RabbitMQ; 下载RabbitMQ,下载地址: rabbitmq-server-3.5.6.exe和erlang,下载地址:o ...

  5. jquerymobile知识点三:弹出层popup

    弹出层popup很简单,主要就是弹出验证,登陆注册,提交信息之类的,下面是我写好的一个demo... <div data-role="popup" id="popu ...

  6. Android开发_SharedPreferences

    SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstanceState保存一般使 ...

  7. 如何在客户端配置ODBC来访问远程DB2 for Windows服务器

    如何在客户端配置ODBC来访问远程DB2 for Windows服务器                                  马根峰                    (广东联合电子服 ...

  8. oracle1

    引言: 数据保存问题? 可使用文件保存和数据库保存. 使用文件保存数据存在几个缺点: 1.文本的安全性问题: 2.文件不利于查询和对数据的管理: 3.文件不利于存放海量数据: 4.文件在程序中控制不方 ...

  9. 基于事件的 NIO 多线程服务器--转载

    JDK1.4 的 NIO 有效解决了原有流式 IO 存在的线程开销的问题,在 NIO 中使用多线程,主要目的已不是为了应对每个客户端请求而分配独立的服务线程,而是通过多线程充分使用用多个 CPU 的处 ...

  10. 蓝灯官网下载,蓝灯最新版下载,Lantern(蓝灯)

    蓝灯官网下载,蓝灯最新版下载,Lantern(蓝灯)下载 >>>>>>>>>>>>>>>>>> ...