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地址映射到了不同的物理内存
Linux进程和进程边界的更多相关文章
- Linux系统编程@进程通信(一)
进程间通信概述 需要进程通信的原因: 数据传输 资源共享 通知事件 进程控制 Linux进程间通信(IPC)发展由来 Unix进程间通信 基于System V进程间通信(System V:UNIX系统 ...
- linux(六)__进程与任务控制
一.程序.进程.线程 1.程序是一个普通文件,是一系列指令和数据的集合,是一个静态的实体,是程序员写好之后存储于外设之上的代码.它是"死"的,而进程和程序都是"活&quo ...
- Linux内核笔记——进程管理之执行体
内核版本:linux-2.6.11 在Linux中,有多种执行体(指令流.执行单位),它们是CPU调度和分配资源的基本单位,它们是内核态可见的,即内核态下,每一种执行体都有对应的唯一数据结构task_ ...
- Linux下java进程CPU占用率高分析方法
Linux下java进程CPU占用率高分析方法 在工作当中,肯定会遇到由代码所导致的高CPU耗用以及内存溢出的情况.这种情况发生时,我们怎么去找出原因并解决. 一般解决方法是通过top命令找出消耗资源 ...
- linux下对进程按照内存使用情况进行排序
linux下对进程按照内存使用情况进行排序的命令为:ps aux --sort -rss 详细解说参见 http://alvinalexander.com/linux/unix-linux-proce ...
- Linux如何查看进程、杀死进程、启动进程等常用命令
Linux如何查看进程.杀死进程.启动进程等常用命令 关键字: linux 查进程.杀进程.起进程1.查进程 ps命令查找与进程相关的PID号: ps a 显示现行终端机下的所有程序,包括 ...
- LINUX退出当前进程——比较return、exit()
1.在Linux中任何让一个进程退出 进程退出表示进程即将结束.在Linux中进程退出分为了正常退出和异常退出两种. 1>正常退出 a. 在main()函数中执行return . b.调用exi ...
- linux下查看进程占用端口和端口占用进程命令
Linux下查看进程占用端口: 查看程序对应进程号:ps –ef|grep 进程名 REDHAT :查看进程号所占用的端口号:netstat –nltp|grep 进程号 ubuntu:查看进程占用端 ...
- python实现Linux启动守护进程
python实现Linux启动守护进程 DaemonClass.py代码: #/usr/bin/env python # -*- coding: utf-8 -*- import sys import ...
随机推荐
- array_column php 函数
今天想从二维数组中取某个列成一维数组 结果发现 array_column需要php5.5支持才行 然后自己写了一个仿造版本的array_column 两种思路 1.直接遍历 取值给追加数组 返回 2. ...
- Oracle学习.Windows 命令行 启动ORACLE服务与实例
使用数据库前要先打开数据库的实例和监听器! --总结启动命令如下: lsnrctl [start|stop|status] --启动监听器,停止监听器,查看监听器的 ...
- jQuery获取鼠标事件源(万能)
//任意位置 $(document).ready(function(){ $(document).click(function(){ $("#id_").hide(); }); } ...
- Win7 下安装RabbitMQ
RabbitMQ依赖erlang,所以先安装erlang,然后再安装RabbitMQ; 下载RabbitMQ,下载地址: rabbitmq-server-3.5.6.exe和erlang,下载地址:o ...
- jquerymobile知识点三:弹出层popup
弹出层popup很简单,主要就是弹出验证,登陆注册,提交信息之类的,下面是我写好的一个demo... <div data-role="popup" id="popu ...
- Android开发_SharedPreferences
SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstanceState保存一般使 ...
- 如何在客户端配置ODBC来访问远程DB2 for Windows服务器
如何在客户端配置ODBC来访问远程DB2 for Windows服务器 马根峰 (广东联合电子服 ...
- oracle1
引言: 数据保存问题? 可使用文件保存和数据库保存. 使用文件保存数据存在几个缺点: 1.文本的安全性问题: 2.文件不利于查询和对数据的管理: 3.文件不利于存放海量数据: 4.文件在程序中控制不方 ...
- 基于事件的 NIO 多线程服务器--转载
JDK1.4 的 NIO 有效解决了原有流式 IO 存在的线程开销的问题,在 NIO 中使用多线程,主要目的已不是为了应对每个客户端请求而分配独立的服务线程,而是通过多线程充分使用用多个 CPU 的处 ...
- 蓝灯官网下载,蓝灯最新版下载,Lantern(蓝灯)
蓝灯官网下载,蓝灯最新版下载,Lantern(蓝灯)下载 >>>>>>>>>>>>>>>>>> ...