关于并发/并行,阻塞/非阻塞,同步/异步及进程/线程的理解

1. 阻塞,非阻塞

        一个线程/进程经历的5个状态,创建,就绪,运行,阻塞,终止。各个状态的转换条件如上图,其中有个阻塞状态,就是说当线程中调用某个函数,需要IO请求,或者暂时得不到竞争资源的,操作系统会把该线程阻塞起来,避免浪费CPU资源,等到得到了资源,再变成就绪状态,等待CPU调度运行。

        阻塞调用是指调用结果返回之前,调用者会进入阻塞状态等待。只有在得到结果之后才会返回。

        非阻塞调用是指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。

2. 并发,并行

        1,并发是指一个时间段内,有几个程序都在同一个CPU上运行,但任意一个时刻点上只有一个程序在处理机上运行。CPU在多个程序之间快速切换,微观上不是同时运行,任意一个时刻只有一个程序在运行,但宏观上看起来就像多个程序同时运行一样,因为CPU切换速度非常快。

        CPU调度策略(并发)

                1 先来先服务 - 时间片轮转调度,缺点是有些紧急的任务要很久才能得到运行。

                2 优先级调度

                3 最短作业优先

                4 最高响应比优先,用线程的等待时间除以服务时间,得到响应比

                5 多级反馈队列调度

         两种并发关系:

                互斥:进程间相互排斥的使用临界资源的现象,就叫互斥。

                同步(synchronous):进程之间的关系不是相互排斥临界资源的关系,而是相互依赖的关系。进一步的说明:就是前一个进程的输出作为后一个进程的输入,当第一个进程没有输出时第二个进程必须等待。具有同步关系的一组并发进程相互发送的信息称为消息或事件。

        2,并行是指一个时间段内,有几个程序都在几个CPU上运行,任意一个时刻点上,有多个程序在同时运行,并且多道程序之间互不干扰。

3. 同步和异步

        同步:在发出一个同步调用时,在没有得到结果之前,该调用就不返回。同步就是顺序执行,执行完一个再执行下一个,需要等待、协调运行。

        异步:在发出一个异步调用后,调用者不会立刻得到结果,该调用就返回了。异步就是彼此独立,在等待某事件的过程中继续做自己的事,不需要等待这一事件完成后再工作。线程就是实现异步的一个方式。异步是让调用方法的主线程不需要同步等待另一线程的完成,从而可以让主线程干其它的事情。(多线程只是我们实现异步的一种手段)

4.进程和线程

        进程(Process):包含着一个运行程序所需要的资源。一个正在运行的应用程序在操作系统中被视为一个进程,进程可以包括一个或多个线程。

          进程之间是相对独立的,一个进程无法访问另一个进程的数据(除非利用分布式计算方式),一个进程运行的失败也不会影响其他进程的运行,Windows系统就是利用进程把工作划分为多个独立的区域的。

       线程(Thread):线程是操作系统分配处理器时间的基本单元,是进程中的基本执行单元。

          在进程入口执行的第一个线程被视为这个进程的主线程。线程主要是由CPU寄存器、调用栈和线程本地存储器(Thread Local Storage,TLS)组成的。CPU寄存器主要记录当前所执行线程的状态,调用栈主要用于维护线程所调用到的内存与数据,TLS主要用于存放线程的状态信息。

        进程和线程的区别

             进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。

总结:

        同步与异步是对应的,它们是线程之间的关系,两个线程之间要么是同步的,要么是异步的。

        阻塞与非阻塞是对同一个线程来说的,在某个时刻,线程要么处于阻塞,要么处于非阻塞。

        阻塞是使用同步机制的结果,非阻塞则是使用异步机制的结果。

转载自:https://blog.csdn.net/sinat_35512245/article/details/53836580

              https://blog.csdn.net/jeffasd/article/details/51025618

猜你喜欢

转载自blog.csdn.net/qq_30422457/article/details/81450967