进程和线程的关系

  1. 电脑的cpu是核心,它处理所有的计算任务,相当于一个工厂
  2. 假设一个工厂里面只能允许运作一个车间,也就是说单个cpu只能运行一个进程,这时候其他进程处于非运行状态,这时候车间就相当于进程
  3. 但是一个车间里面,可以有很多工人,很多工人协同运行车间里面的东西,这就是多线程协成进程运行任务,一个进程可以有多个线程
  4. 车间有些房间是可以允许多个工人进去的,也就是说,进程的内存是可以共享的,每个线程都可以使用这些共享内存
  5. 有些房间容纳的人多,而厕所只允许一个人进去,也就是说,共享内存时,只允许一个线程的操作,其他线程等待(阻塞)
  6. 防止别人进去测试,用的是加锁,这把锁就是互斥锁(Mutual exclusion,缩写Mutex),防止多个线程同时读取某一块内存地址
  7. 但是也有房间是允许多个人的,也就是说,某些内存区域,只能供给固定数目的线程使用,在门口放几把钥匙,进去一个人拿一把钥匙,这叫做信号量(Semaphore)

操作系统的设计,因此可以归结为三点:

(1)以多进程形式,允许多个任务同时运行;

(2)以多线程形式,允许单个任务分成不同的部分运行;

(3)提供协调机制,一方面防止进程之间和线程之间产生冲突,另一方面允许进程之间和线程之间共享资源。

原文地址:https://www.cnblogs.com/thouger/p/5559845.html