• 进程 线程 协程


    进程(Process)

      我们知道操作系统可以管理计算机的资源(IO,处理器,文件,存储器),那么如果没有操作系统那么该如何管理计算机?

       在没有操作系统之前,计算机只能运行一个程序,所有的资源只属于当前运行的程序。但是当前程序不能完全合理的去运用资源,因此在配置操作系统之后就引入了多道程序的概念。这样可以合理的隔离资源,运行环境,提升资源利用率。在引入多道程序的概念,操作系统可以对每个程序进行资源的分配,那么进程就是资源分配的基本单位。

    为什么需要进程

      1. 进程是操作系统进行资源分配和调度的基本单位。

        2. 进程昨晚程序独立运行的载体来保障程序的正常执行。

        3. 进程可以使操作系统的利用率大大提升。

    进程分类

        1. 守护进程

        2. 孤儿进程

        3. 僵尸进程

    查看进程

      Linux命令:ps

      

       使用“活动监视器”来查看 Mac 上所运行进程

      

     进程的状态

      进程的状态反映进程执行过程的变化。这些状态随着进程的执行和外界条件的变化而转换。进程的状态有三态模型(运行,就绪,等待)也有五态模型(新建,就绪,运行,等待,终止)。

      1. 运行:正占用处理器。  
      2. 就绪:只要获得处理器即可运行。  
      3. 等待(阻塞):正等待某个事件(如I/O完成)的发生。
      4. 新建状态:一个进程刚刚建立,但还未将它送入就绪队列时的状态。  
      5. 终止状态:当一个进程已经正常结束或异常结束,系统已将它从就绪队列中移出,但尚未将它撤消时的状态。

    线程(Thread)

      线程有时被称为轻量级进程(Lightweight Process,LWP),是操作系统进行运行调度的最小单位。线程是被包含在进程中的,是进程实际运行的的工作单位。一个进程可并发多个线程,每个线程可以执行不同的任务。

    进程里的资源是被线程共享的。

       查看线程的方法

       因为线程是从属于进程的,我们先找到一个进程的Pid,在命令行中我们可以使用命令lsof -i -P找到进程所属的Pid。我系统中火狐浏览器的Pid是1132。

      

      在使用命令ps -M 1132查看Pid为1132下的线程情况。

      

    协程(Coroutines

      是一种用户态下的线程,但是比线程更加轻量,也可以理解为优化过后的线程。正如一个进程可以拥有多个线程一样,一个线程也可以拥有多个协程。进程和线程是由操作系统内核所管理,而协程不会,而是完全是由程序所控制(也就是在用户态执行)。

      协程的优点:

        1. 协程的内存消耗更小,举例来说,生成一个线程需要8M的内存,那么生成一个协程则只需要2kb的内存空间。

        2. 上下文切换更快,这也是最重要的一点,因为协程在上下文切换中,比线程切换少了一个步骤,线程在申请内存是需要经过系统内核的,而协程不需要。这样少了一个流程自然就更快了。

  • 相关阅读:
    Android 2.2 r1 API 中文文档系列(11) —— RadioButton
    Android API 中文 (15) —— GridView
    Android 中文 API (16) —— AnalogClock
    Android2.2 API 中文文档系列(7) —— ImageButton
    Android2.2 API 中文文档系列(6) —— ImageView
    Android 2.2 r1 API 中文文档系列(12) —— Button
    Android2.2 API 中文文档系列(8) —— QuickContactBadge
    [Android1.5]TextView跑马灯效果
    [Android1.5]ActivityManager: [1] Killed am start n
    Android API 中文(14) —— ViewStub
  • 原文地址:https://www.cnblogs.com/songgj/p/13140021.html
Copyright © 2020-2023  润新知