进程process与线程thread
3分钟搞清楚进程与线程的区别
计算机
>工厂
CPU
>工厂的电力
进程(CPU能处理的单个任务,一个进程可以包含多个线程)
>工厂的车间
线程
>工厂的车间的工人(工人们协同完成一个任务)
单个CPU一次只能运行一个进程
> 工厂的电力一次只能给一个车间使用
一个进程的内存空间是共享的,每个线程都可以使用这些共享内存
>工厂的车间是共享的,许多房间每个工人都能进出
① 一个线程使用某些共享内存时,其他线程必须等其结束
>每个房间大小不同,有的只能容纳一人,like厕所
② 防止多个线程同时读写同一块内存区域,“互斥锁” Mutex
>为防止他人进入,先到的人锁上门,后到的就排队,等锁开了再进
① n个线程使用某些共享内存时,其他线程必须等其结束
>每个房间大小不同,有的能容纳n人,like厨房
② 防止多个线程互相冲突,“信号量” Semaphore
>为防止他人进入,挂n把钥匙,后到的就排队,等钥匙架空了再进
操作系统的设计,归结为三点
- 以多进程,允许多个任务同时进行
- 以多线程,允许当任务分成不同部分运行
- 以协调机制,防止进程与线程冲突,进程与线程共享资源