1.并行和并发
并行性是指两个或多个时间在同一时刻发生,而并发性是指两个或多个事件在同一时间间隔内发生。在多道程序环境下,并发性是指在一段时间内宏观有多个程序在同时运行,但在单处理机系统中每一时刻却仅能有一道程序执行,故微观上这些程序只能是分时地交替执行。倘若在计算机系统中有多个处理机,则这些可以并发执行的程序便可分配到多个处理机上,实现并行执行,即利用每个处理机来处理一个可并发执行的程序,这样,多个程序便可同时执行。
2.进程
通常的程序是静态实体(PassiveEntity),在多道程序系统中,它们是不能独立运行的,更不能和其它程序并发执行。在操作系统中引入进程的目的,就是为了使多个程序能并发执行。例如,在一个未引入进程的系统中,在属于同一个应用程序的计算程序和I/O程序之间,两者只能是顺序执行,即只有在计算程序执行告一段落后,才允许I/O程序执行;反之,在程序执行I/O操作时,计算程序也不能执行,这意味着处理机处于空闲状态。但在引入进程后,若分别为计算程序和I/O程序各建立一个进程,则这两个进程便可并发执行。由于在系统中具备使计算程序和I/O程序同事运行的硬件条件,因而可将系统中的CPU和设备同时开动起来,实现并行工作,从而有效提高资源的利用率和系统吞吐量,并改善系统的性能。事实上可以在内存中存放多个用户程序,分别为他们建立进程后,这些进程可以并发执行,亦即实现前面所说的多道程序运行。这样便能极大的提高了系统资源的利用率,增加系统的吞吐量。
为使多个程序能并发执行,系统必须分别为每个程序建立进程(Process)。简单说来,进程是指在系统中能独立运行并作为资源分配的基本单位,它是由一组机器指令、数据和堆栈等组成的,是一个能独立运行的活动实体。多个进程之间可以并发执行和交换信息。一个进程在运行时需要一定的资源,如CPU\存储空间及I/O设备等。
3.线程
进程是操作系统中可以拥有资源并作为独立运行的基本单位。当一个进程因故不能继续运行时,操作系统便调度另一进程运行。由于进程拥有自己的资源,故使调度付出的开销较大。线程是比进程更小的单位。 通常一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源。在引入了线程的OS中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销会小得多,能更有效的提高系统内多个程序间并发执行的程度。
4.进程与线程的区别
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。
线程是进程的一个实体, 是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。
5.线程和异步的合理用途。
当需要执行I/O操作时,使用异步操作比使用线程+同步I/O操作更合适。I/O操作不仅包括了直接的文件、网络的读写,还包括数据库操作、Web Service、HttpRequest以及.Net Remoting等跨进程的调用。
6.线程同步与异步区别
线程同步是多个线程同时访问同一资源,等待资源访问结束,浪费时间,效率低。
线程异步是访问资源时在空闲等待时同时访问其他资源,实现多线程机制。
异步处理就是,你现在问我问题,我可以不回答你,等我有时间了再处理你这个问题。同步处理就反之了,同步信息被立即处理 -- 直到信息处理完成才返回消息句柄;异步信息收到后将在后台处理一段时间 -- 而早在信息处理结束前就返回消息句柄。
来源:oschina
链接:https://my.oschina.net/u/1757002/blog/736643