什么是进程,什么是线程?

什么是进程?什么是线程?

进程:进程是并发执行程序在执行过程中资源分配和管理的基本单位(资源分配的最小单位)。进程可以理解为一个应用程序的执行过程,应用程序一旦可执行,就是一个进程。每个进程都有自己独立的地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段。
线程:程序执行的最小单位。

为什么要有线程?

每个进程都有自己的地址空间,即进程空间。在网络或多用户换机下,一个服务器通常需要接受大量不确定数量用户的并发请求,为每一个请求都创建一个进程显然行不通(系统开销大相应用户请求效率低),因此操作系统中线程概念被引进。

进程与线程的区别?

  • 1.地址空间:同一进程的所有线程共享本进程的地址空间,而不同的进程之间的地址空间是独立的。
  • 2.资源拥有:同一进程的所有线程共享本进程的资源,如内存,cpu,io等。进程之间的资源是独立的,无法共享。
  • 3.执行过程:每一个进程可以说就是一个可执行的应用程序,每一个独立的进程都有一个程序执行的入口,顺序执行序列。但是线程不能独立执行,必须依存在应用程序中,由程序的多线程控制机制进行控制。
  • 4.健壮性:因为同一进程的所有线程共享此线程的资源,因此当一个线程发生崩溃时,此进程也会发生崩溃。但是各个进程之间的资源是独立的,因此当一个进程崩溃时,不会影响其他进程。因此进程比线层“健壮”。
  • 5.开销:线程执行开销小,但不利于资源的管理与保护。进程执行开销大,但可以进行资源的管理与保护。进程可以跨机器前移。
一个形象的例子解释进程和线程的区别

在这里插入图片描述
这副图是一个双向多车道的道路图,假如我们把整个道路看成是一个“进程”的话,那么图中的由白色虚线分隔凯来的各个车道就是进程中的各个“线程”了

  • 这些线程(车道)共享了进程(道路)的公共资源(土地资源)
  • 这些线程(车道)必须依赖于进程(道路),也就是说,线程不能脱离于进程而存在(就像离开了道路,车道也就没有意义了)
  • 这些线程(车道)之间可以并发执行(各个车道你走你的,我走我的),也可以互相同步(某些车道在交通灯亮时禁止继续前行或者转弯,必须等待其他车道的车辆通行完毕)。
  • 这些线程(车道)之间依靠代码逻辑(交通灯)来控制运行,一旦代码逻辑控制有误(死锁,多个线程同时竞争唯一资源),那么线程将陷入混乱,无序之中。
  • 这些线程(车道)之间谁先运行是未知的,只有在线程刚好被分配到cpu时间片(交通灯变化)的那一刻才能知道。

进程与线程选择取决条件?

因为进程是资源分配的基本单位,线程是执行的最小单位。以及进程与线程之间的健壮性来考虑。

  • 1.在程序中,如果需要频繁创建和销毁的使用线程。因为进程创建和销毁开销很大(需要不停地分配资源),但是线程频繁的调用只是改变CPU的执行,开销小。
  • 2.如果需要程序更加稳定安全时,可以选择进程。如果追求速度,就选择线程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值