进程 线程 简单理解说明

线程与进程
  • 两者都是操作系统的基本概念
  • 操作系统 (Operating System,简称OS)
    • 定义
      • 管理计算机硬件与软件资源的计算机程序
  • CPU
    • 定义
      • 是计算机的核心,承担了所有的计算任务
        • 就像是一座工厂,时刻在运行
    • 单个CPU一次只能运行一个任务
      • 假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。
  • 进程 (process)
    • 定义
      • 代表CPU所能处理的单个任务
        • 就好比工厂的车间
    • 任意时刻,CPU总是运行一个进程,其余进程处于非运行状态
      • 一个车间工作,其余车间必须停工
  • 线程 (thread)
    • 定义
      • 一个进程包括多个线程
        • 就好比一个车间里的工人
    • 一个进程的任务由多个线程合作完成
      • 多个工人合作完成同个任务
    • 一个进程的内存空间是共享的,每个线程都可以使用这些共享内存
      • 车间空间是工人共享的,允许每个工人进出
    • 一个线程使用某些共享内存时,其他线程必须等它结束,才能使用这一块内存
      • 每个房间大小不同,有些房间最多只能容纳一人,比如厕所,有人时,其他人就得等
    • 某些内存区域,只能供给固定数目的线程使用
      • 有些房间只能同时容纳n个人,超过的只能在外等候
  • 互斥锁 (Mutual exclusion,缩写 Mutex)
    • 定义
      • 给内存上锁,防止多个线程同时读写某体块内存区域
        • 宣誓房间暂时使用权,那就门口加把锁,其余人只能排队等锁打开再进入
  • 信号量 (Semaphore)
    • 定义
      • 用来保证多个线程不会互相冲突
        • 门口挂n把钥匙,进入去一把钥匙,出来再挂回原处
        • 钥匙空了,那就只能排队等候
    • mutex是semaphore的一种特殊情况(n=1时)。也就是说,完全可以用后者替代前者。但是,因为mutex较为简单,且效率高,所以在必须保证资源独占的情况下,还是采用这种设计
  • 操作系统的设计
    • 以多进程的形式,允许多个任务同时运行
    • 以多线程形式,允许单个任务分成不同的部分运行
    • 提供协调机制,一方面防止进程之间和线程之间产生冲突
    • 一方面允许进程之间和线程之间共享资源
 
参考阮一峰老师的文章[进程与线程的一个简单解释](https://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html)
 
posted @ 2020-04-23 10:15  littlebob  阅读(166)  评论(0编辑  收藏  举报