什么是进程?
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的独立单位。进程拥有一个完整的虚拟空间地址,并不依赖线程而独立存在。
什么是线程?
线程是进程的一个实体,是cpu调度和分配的基本单位。它是进程更小的能独立运行的基本单位。线程本身并不拥有系统资源,运行是只是暂用一些计数器、寄存器和栈。
进程与线程之间的关系
简单来说,一个程序至少拥有一个进程,而一个进程至少拥有一个线程。
一个线程可以创建和撤销另外一个线程,同一个进程中可以有多个线程并发的执行。
线程更加接近于执行体的概念,它可以同进程中的其他线程共享数据,但是拥有独立的栈空间,拥有独立的执行序列。
进程与线程的区别
进程与线程的主要区别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃之后,在保护模式对其他进程没有影响,线程只是进程的不同执行路径。线程有自己独立的堆栈和局部变量,但是没有独立的地址空间,一个线程死掉那么整个进程也就死掉了,所以多进程的应用要比多线程的应用更加健壮。但是进程在切换时耗费的资源也比较多,效率也要更差,所以在并发性要求高又要共享变量数据,只能靠线程,而不是进程。
在执行过程中,每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多线程执行控制。
从逻辑上看,多线程的意义在于在一个应用程序当中,有多个执行部分可以同时执行。但是操作系统并没有将多个线程看作多个独立的应用,来实现进程的调度和管理以及资源分配。