进程与线程
对于操作系统来说,进程是系统资源分配的最小单位,线程是CPU调度的最小单位。进程是一个运行中的程序,线程属于进程的一部分,是进程内部一段正在执行的序列,它在进程里面有单独的栈空间,进程调度的对象是线程,而不是进程。线程的切换不会引起进程的切换。他们两的联系相当于进程是一列火车,线程则是里面的一节节车厢,你可以在不同车厢之间走动但你仍旧在这辆火车上。
协程
协程是一种用户态的轻量级线程。一个进程可以有多个线程,而一个线程里面也可以有多个协程,协程是被程序所管理的,他的暂停完全是由程序控制的,而线程的阻塞状态是通过操作系统内核来切换的,所以协程的切换效率比线程还要高,开销比线程小
协程和线程的区别有:
1. 线程程是由CPU调度,而协程是由用户调度
2. 线程存在安全问题,协程比线程较安全
3. 线程使用同步机制,协程使用异步机制
管程
管程就是代表共享资源的数据结构以及由对该共享数据结构实施操作的一组过程所组成的资源管理程序共同构成的一个操作系统的资源管理模块。
一次只允许一个进程访问的资源或者多个进程只能互斥访问的资源,访问需进行同步操作,但大量的同步操作分散在各处,容易使用不当而产生死锁,为了解决这个问题出现了管程。