不知道是否是我本身自己就有那么一丝丝的密集恐惧,把这么一大堆看起来很类似很相关的概念放在一块儿,看起来是有点麻,捋一捋感受舒服多了。算法
在进程的概念出现以前,进程有着这样的称谓。编程
为了使多个程序可以并发(同一时刻只有一个在运行,但感受起来像多个同时运行;并行(同一时刻真的多个在运行,不是感受像多个))的执行,操做系统须要一个结构来抽象和表示这个程序的运行。数据结构
进程是资源分配的基本单位,进程的调度涉及到的内容比较多(存储空间,CPU,I/O资源等,进程现场保护),调度开销较大,在并发的切换过程效率较低。为了更高效的进行调度,提出了比进程更轻量的独立运行和调度的基本单位。并发
代码易移植性一直是平台间交互考虑的重点,在将引用程序从Unix移植到Windows的过程当中,会存在一些相似于线程栈管理的不一致、结构和异常处理等问题,增长移植难度和成本。spa
为了帮助各公司更快、更正确地将他们的代码移植到Windows,Microsoft 在操做系统中增长了纤程(Fiber)。纤程与纤程对比,有以下的特性:操作系统
把管程放最后还加了一道分割线缘由是管程跟上面的几个概念不是同一类东东,虽然长得很像,就像Car和Bar同样。线程
临界资源的概念:设计
临界资源的访问须要同步操做,好比信号量就是一种方便有效的进程同步机制。但信号量的方式要求每一个访问临界资源的进程都具备wait和signal操做。这样使大量的同步操做分散在各个进程中,不只给系统管理带来了麻烦,并且会因同步操做的使用不当致使死锁。管程就是为了解决这样的问题而产生的。协程
操做系统中管理的各类软件和硬件资源,都可用数据结构抽象地描述其资源特性,即用少许信息和对该资源所执行的操做来表征该资源,而忽略它们的内部结构和实现细节。利用共享数据结构抽象地表示系统中的共享资源。而把对该共享数据结构实施的操做定义为一组过程,如资源的请求和释放过程request和release。进程对共享资源的申请、释放和其余操做,都是经过这组过程对共享数据结构的操做来实现的,这组过程还能够根据资源的状况接受或阻塞进程的访问,确保每次仅有一个进程使用该共享资源,这样就能够统一管理对共享资源的全部访问,实现临界资源互斥访问。进程
管程就是表明共享资源的数据结构以及由对该共享数据结构实施操做的一组过程所组成的资源管理程序共同构成的一个操做系统的资源管理模块。管程被请求和释放临界资源的进程所调用。
管程定义了一个数据结构和能为并发进程所执行(在该数据结构上)的一组操做,这组操做能同步进程和改变管程中的数据。
这个也是一个跟上面的概念不是一类事的概念,超线程是Intel CPU设计上的一种技术。
一个CPU物理核在同一时间只能执行一个线程,而线程的切换会消耗掉上万的始终周期,效率还不够高。超线程就是在实现同一个CPU物理核在同一时间能几乎执行两个线程的技术。这就是咱们在Intel CPU的机子上的任务管理器中常常看到double的CPU物理核心的原因。