阅读 119

linux下的线程与进程

这是我参与8月更文挑战的第15天,活动详情查看:8月更文挑战

两种线程设计模型

  • 核心级线程设计模型:

    由操作系统内核实现, 特点是: 速度快 windows系统采用的是这种设计模型

    可以比喻为用自己的大脑控制自己十根手指头

  • 用户级线程设计模型:

    操作系统核外实现的线程模式, 特点是: 线程调度在核外 速度不如核内 Linux系统采用的是这种

    可以比喻为自己的十根手指头需要借助外力才能动

    Linux系统下有真正意义的多线程么?

    由上面Linux采用的线程设计模型可知,Linux系统并没有真正意义上的多线程

    因此, Linux系统里处理多线程不如Windows强悍

    Linux系统的两个线程库

    • LinuxThreads线程库
    • RedHat的NPTL

    这两个线程库实际上并没有完全按照线程模式进行实现

    进程的生命周期

    进程的创建及回收

    在Android中, ActivityThead的创建预示着进程的创建

    进程的级别(由高到低)

    • 前台进程: 优先级最高, 正处于Activity Resume()状态, 杀死前台进程需要用户响应
    • 可见进程
    • 服务进程
    • 后台进程
    • 空进程: 无组件启动,做进程缓存使用, 恢复速度快

    当一个应用启动的时候, 它的进程级别不是保持固定的, Android内部通过Handler进行轮询检测当前进程的状态,ActivityThread掌控的Activity 的生命周期, 如果栈中无Activity存在, 但是有Service存在的情况下, 此时的进程级别就会从前台进程降为服务进程

    如果想要查询当前进程的级别, 可以通过ActivityManager .RuningAppProcessInfo进行查询,内部有对应的变量和方法

    进程级别的记忆方法

    前见服后空

    谐音: 权健服后空 (懂?)

文章分类
Android
文章标签