进程是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态的概念。每个进程都有自己的地址空间(进程空间)。进程空间的大小与处理机位数有关。进程至少有5种基本状态:初始态,执行态,等待状态,就绪状态,终止状态。
在多用户环境下,一个服务器通常需要接受大量的不学定数量用户的并发请求,而为每一个请求都创建一个进程非常不明智,无论从系统资源开销方面还是响应用户请求的效率上来看。这也是多线程诞生的一个原因。线程是进程的一部分,一个没有线程的进程可以看做是单线程。线程也是CPU调度的一个基本单位。
进程
线状执行
进程间资源保密
进程间通信通过系统层交互
进程的执行过程是线装的,中间可能会发生中断或暂停,但是这个进程所拥有的资源只有进程的内部才能使用。一旦进程发生上下文切换,进程里的资源就会被保护起来。所以说进程之间是资源保密的。如果要进程进程间的通信,那必须通过系统层才能实现,这个数据的交互过程是比较耗时,也很耗资源。
上面说了,进程间通信很耗时,也很耗资源。所以可以在一个进程中采用多线程技术。线程的改变只是表示CPU执行过程的改变,而不会发生进程资源的变化,换句话说就是,统一进程内,多个线程是资源共享的。进程有一个完整的虚拟空间。线程没有。多个线程在同一进程中共享这个进程的所有资源。
线程
适用于:多任务,多核
不适用于:进程调度少,切换少的实时系统
线程可以提高系统的执行效率,但不是所有的系统都适合用多线程。比如某系实时系统很少做进程调度,或者切换。那就没有必要用多线程。使用线程的好处就是有多个任务需要处理器处理时,减少处理器切换的时间。而且线程的创建与结束所需要的开销要比进程的创建于结束要小。最适合用线程的系统就是多核系统,网络系统,还有分布式系统。
1.线程执行额特性:
3个状态,5个操作
3个状态:就绪,执行,阻塞
5个操作:派生,阻塞,激活,调度,结束
线程与进程的区别
线程:没有地址空间,多线程共享资源,多线程的系统处理高并发操作的效率高
进程:有独立的地址空间,多个进程间资源保密,多进程的系统比较鲁棒
进程与线程的主要区别在于他们是不同的操作系统资源管理方式。
每个进程有自己独立的地址空间,也就是说进程之间是资源保密的。一个进程崩溃了,在保护模式下,并不会对其他的进程产生影响。而一个线程只是一个进程中不同的执行路径。每个线程都拥有自己的堆栈空间与局部变量。但是,线程之间没有独立的地址空间!一个线程死掉,那整个进程就死掉,所以多进程的程序要比多线程的程序鲁棒。但是进程间切换调度的时候,比较耗时耗内存,效率要差。所以对一些要求同时进行并且要共享某些变量的并发操作,只能用线程,不能用进程。
进程是一块包含了某写资源的内存区域。操作系统利用进程把它的工作划分为一些功能单元。
线程就是进程中的一个或多个的执行单元。
一般情况下,一个应用程序是由一个或者多个协作的进程组成的。比如VS开发环境,就是用一个进程编辑源文件,用另外一个进程完成编译工作
在win下,可以从资源管理器中看到所有的应用程序和进程。尽管只打开了几个应用程序,但是会有30多个进程同时运行。