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. ubuntu 安装软件(apt源)

    最近使用docker 构建python3的环境: 进入容器发现 连个vi命令多没有... 1.安装一个呗: apt-get 报错:root@22f41d59e3b2:~# apt-get instal ...

  2. action使用大全

    1.Intent的用法: (1)Action跳转 1. 使用Action跳转,当程序AndroidManifest.xml中某一个 Activity的IntentFilter定义了包含Action, ...

  3. 使用PHPmailer发送邮件的详细代码

    一.使用PHPMailer发送邮件的原因 PHP有内置的mail()方法,但是由于一些主机空间不支持该方法,所以经常会遇到无法发送邮件的情况. 所以,可以下载PHPMailer类,实现邮件发送. 二. ...

  4. 三种排序算法python源码——冒泡排序、插入排序、选择排序

    最近在学习python,用python实现几个简单的排序算法,一方面巩固一下数据结构的知识,另一方面加深一下python的简单语法. 冒泡排序算法的思路是对任意两个相邻的数据进行比较,每次将最小和最大 ...

  5. 使用val()方法设置表单中的默认选中项

    有时候我们展示给用户的表单中的checkbox,radio,selec等标签的一些项是默认选中的.比方:当用户改动文章的时候,假设相应的栏目为下拉框的话,那么它的默认选中值应该是原来的栏目位置. 能够 ...

  6. Cocos2d-x 在缓存创建图片

    /* 加载图片资源到SpriteFrame缓存池*/     CCSpriteFrameCache *cache=CCSpriteFrameCache::sharedSpriteFrameCache( ...

  7. Android中配置JDK和SDK的环境变量

    JDK环境变量的配置: 右击"计算机"或"我的电脑",选择"属性"-->"高级"或"高级系统设置&quo ...

  8. 1032 - Intersecting Dates

    A research group is developing a computer program that will fetch historical stock market quotes fro ...

  9. PHPExcel的读取excel的操作

    首先导入类库: require_once 'PHPExcel.php'; require_once 'PHPExcel\IOFactory.php'; require_once 'PHPExcel\R ...

  10. 基于VMware为CentOS 6.5配置两个网卡

    为CentOS 6.5配置两块网卡,一块是eth0,一块是eth1,下面以master为例 1.选择“master”-->“编辑虚拟机设置”,如下所示 2.单击“添加”,如下 3.选择“网络适配 ...