进程和线程的关系
- 电脑的cpu是核心,它处理所有的计算任务,相当于一个工厂
- 假设一个工厂里面只能允许运作一个车间,也就是说单个cpu只能运行一个进程,这时候其他进程处于非运行状态,这时候车间就相当于进程
- 但是一个车间里面,可以有很多工人,很多工人协同运行车间里面的东西,这就是多线程协成进程运行任务,一个进程可以有多个线程
- 车间有些房间是可以允许多个工人进去的,也就是说,进程的内存是可以共享的,每个线程都可以使用这些共享内存
- 有些房间容纳的人多,而厕所只允许一个人进去,也就是说,共享内存时,只允许一个线程的操作,其他线程等待(阻塞)
- 防止别人进去测试,用的是加锁,这把锁就是互斥锁(Mutual exclusion,缩写Mutex),防止多个线程同时读取某一块内存地址
- 但是也有房间是允许多个人的,也就是说,某些内存区域,只能供给固定数目的线程使用,在门口放几把钥匙,进去一个人拿一把钥匙,这叫做信号量(Semaphore)
操作系统的设计,因此可以归结为三点:
(1)以多进程形式,允许多个任务同时运行;
(2)以多线程形式,允许单个任务分成不同的部分运行;
(3)提供协调机制,一方面防止进程之间和线程之间产生冲突,另一方面允许进程之间和线程之间共享资源。