zoukankan      html  css  js  c++  java
  • 进程 线程 简单理解说明

    线程与进程
    • 两者都是操作系统的基本概念
    • 操作系统 (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)
     
  • 相关阅读:
    第5.3课.多输入之多线程和fork
    第5.2课多输入之select
    第5.1课,多输入之轮询
    第4课.编写通用的Makefile
    第3课.电子书框架
    2.3freetype矢量字体
    建立u-boot,内核的SI工程
    2.1/2.2字符的编码方式及显示
    1.0数码相框框架分析
    [数据结构]一些有意思题目(一)
  • 原文地址:https://www.cnblogs.com/littlebob/p/12758919.html
Copyright © 2011-2022 走看看