进程和线程的一些比较,欢迎大家一起讨论。
引入进程的目的:为了更好的执行多道程序并发执行,提高资源的利用率以及吞吐量。
引入线程的目的:为了减少程序在并发执行时的时空开销,提高并发性能。
线程理解:线程最直接的理解就是“轻量级进程”,是程序执行流的最小单元,是被系统独立调度和分派的基本单位,线程有就绪、阻塞、运行三种状态。而引入之后,进城便成了除CPU外的系统资源分配单元,线程则作为处理机的分配单元。
线程与进城的比较:
1.在只有进城的OS中,进城是拥有资源和独立调度的基本单位,每次调度都需要进行上下文切换,而引入线程之后,线程是独立调度的基本单位,切换代价很小。
2.在引入线程的OS中,不仅进程之间可以并发执行,同一个进程中的线程依然可以并发执行,甚至不同进程中的线程也可以并发执行。提高了系统的资源利用率和吞吐量。
3.进程是拥有资源的基本单位,而线程则不占有系统资源(仅仅有一些可以保证独立运行的资源)。
4.每个进程之间除了共享的全局资源外互相独立,不允许其他进程访问的,而每个进程中的线程也是对其他进程不可见,不同线程为了提高并发性以及合作而创建的。
5.在创建或者撤销进程时,OS都会分配/回收PC以及其他资源,为进程付出的开销肯定比进程大,此外同一进程中的不同线程共享进程的地址空间。