线程和进程的区别
- 格式:pdf
- 大小:77.84 KB
- 文档页数:1
线程和进程的区别
1、进程:进程在操作系统中可以独⽴运⾏,作为资源分配的基本单位。表⽰运⾏中的程序。
2、线程:线程是进程中的⼀个实例,作为系统调度和分派的基本单位。是进程中的⼀段序列,能够完成进程中的⼀个功能。
3、进程和线程的区别:
(1)同⼀个进程可以包含多个线程,⼀个进程中⾄少包含⼀个线程,⼀个线程只能存在于⼀个进程中。
(2)同⼀个进程下的所有线程能够共享该进程下的资源。(系统运⾏时会为每个进程分配不同的内存区域,但不会为线程分配内存。线程只能共享它所属进程的资源。)
(3)进程结束后,该进程下的所有线程将销毁,⽽⼀个线程的结束不会影响同⼀进程下的其他线程。
(4)线程是轻量级的进程,它的创建和销毁所需要的时间⽐进程⼩得多,所有操作系统的执⾏功能都是通过创建线程去完成的。
(5)线程在执⾏时是同步和互斥的,因为他们共享同⼀个进程下的资源。
(6)在操作系统中,进程是拥有系统资源的独⽴单元,它可以拥有⾃⼰的资源。⼀般⽽⾔,线程不能拥有⾃⼰的资源,但是它能够访问其⾪属进程的资源。
⼀个进程可以定义程序的⼀个实例。在Win32中,进程并不执⾏什么,它只是占据应⽤程序所使⽤的地址空间。为了让进程完成⼀定的⼯作,进程必须⾄少占有⼀个线程,正是这个线程负责包含进程地址空间中的代码。实际上,⼀个进程可以包含⼏个线程,它们可以同时执⾏进程地址空间中的代码。为了做到这⼀点,每个线程有⾃⼰的⼀组CPU寄存器和堆栈。每个进程中⾄少有⼀个线程在执⾏其地址空间中的代码。如果没有线程执⾏进程地址空间中的代码,进程也就没有继续存在的理由,系统将⾃动清除进程及其地址空间。4、⼀个进程是不是可以创建⽆限数量的线程?
不是。
操作系统给⼀个系统进程提供的空间是2GB ,⽽⼀个线程堆栈的空间默认在启动的时候是1MB,理论上最⼤线程数=2GB/1MB=2048。但是内存当然不可能完全拿来作线程的栈,所以实际数⽬要⽐这个值要⼩。你也可以通过连接时修改默认栈⼤⼩,将其改的⽐较⼩,这样就可以多开⼀些线程。如将默认栈的⼤⼩改成512K,这样理论上最多就可以开4096个线程。
如果是同⼀台机器内的话,能起多少线程也是受内存限制的。5、线程的数量会受到什么限制?
受内存限制。6、线程在内存中会占⽤什么资源?
线程拥有⾃⼰的私有内存。从深⼊理解虚拟机书中可知 JDK1.7中的线程私有内存包括JAVA虚拟机栈、本地⽅法栈、程序计数器,每当你创建⼀个新的线程那么它就拥有这⼀部分的空间。⽽系统分配给每个进程的内存是有限的,当创建的线程数过多,就会导致内存溢出。