进程和线程的区别

进程和线程的区别

要弄清楚进程和线程的区别,首先得搞清楚进程和线程的定义

进程

计算机中,应用程序以进程的形式运行在操作系统中,它是操作系统资源分配的最小单位,一般来说,进程由三个部分组成
1.代码段 :即进程中所有指令在内存中的位置
2.数据段 :即进程中操作的数据在内存中的位置
3.进程控制块:包含了进程的一些基本信息
进程的描述信息:进程id,进程名,进程状态(就绪,阻塞,运行等),进程优先级
进程的调度信息:主要包含了进程起始指令的内存地址以及进程通信的信息
进程的资源信息:包含了内存信息,io设备信息,打开的文件信息等
进程的上下文信息(PCB):用来在进程的调度切换时保存进程的上下文,以便在下一次执行时
能够恢复之前的环境,主要包括运行时的cpu寄存器,程序计数器,栈的值等

线程

线程是从进程内部演变而来,为了高并发情况下能充分发挥cpu的计算性能而存在进程内部,是进程代码段的一次顺序执行,一个进程内部可以存在多个线程,且由于进程是操作系统资源分配的最小单位,所以进程中的所有线程共享该进程的系统资源,而线程是操作系统调度的最小单位。
一般来说,一个标准的线程由以下三个部分:
1.线程基本信息:线程id,线程名,线程状态,优先级,是否守护线程等基本信息
2.程序计数器 : 用来指向线程下一条指令的内存地址
3.栈内存: 堆内存是线程共享的,而栈内存是线程私有的,用来保存线程运行时的局部变量。

举例:JVM就是一个进程,JVM的启动至少包含了两条线程,一就是我们用户编写的用户线程,即main方法,二就是jvm维护的垃圾回收线程,作为一个守护线程,它时刻监听着jvm堆内存中对象的生命周期以便进行内存释放。而jvm的堆内存就是被所有线程所共享的,而每个线程都有一个私有的栈内存,用来保存局部变量,而java栈内存的分配单位是一个“栈帧”,即方法帧,它包含了一个方法中的局部变量,返回值地址等信息,栈内存是不受gc垃圾回收线程管理的

进程和线程的区别:

1.线程是从进程内部演变而来的,一个进程中可以有多个线程且至少有一个线程
2.进程是操作系统资源分配的最小单位,线程是操作系统调度的最小单位
3.进程之间是相互独立的,而线程之间并不完全独立,它们共享了进程所分配的系统资源
4.切换速度不同,线程的切换要远远快于进程的切换,是轻量级的,弥补了进程切换笨重的问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值