进程与线程的区别,特点比较区别与联系

定义

进程:进程是程序执行的实例,包括程序计数器和寄存器和变量的当前值
进程依赖于程序存在

线程:每个进程都拥有自己的数据段、代码段和堆栈的,这就造成了进程在创建、切换、撤销操作时,需要较大的系统开销。为了减小系统开销,从进程中演化出了线程

关系

1、线程存在于进程中,共享进程的资源、

2、线程是进程的一部分,一个线程只能属于一个进程,一个进程可以有多个线程,但至少有一个线程

请添加图片描述

比较

传统意义上的进程被称为重量级进程HWP,heavyweight process,从现代角度看,就是只拥有一个线程的进程。
线程习惯上被叫为轻量级进程或者迷你进程 LWP,lightweight process

对于系统调度来说:

也是本质区别
进程是系统中程序执行和资源分配的基本单位。
线程时CPU调度和分派的基本单位。

从拥有资源来说:

进程是拥有系统资源的一个独立单位,它可以拥有自己的资源。
线程一般不用有资源,除了不可少的程序计数器,但他可以去访问其所属进程的资源,如进程代码段、数据段以及系统资源。

并发性

提到并发性,不得不讲一下并行与并发的区别:
我们知道一个CPU内核只能在一个瞬间处理一个任务。
但在我们日常使用电脑时,会觉得哪怕单核的计算机也能同时做很多事情啊。那唯一的CPU是如何保证两个进程同时进行的呢?
就要提出时间片轮转的概念了,这个可能学习单片机的同学在操作系统中会听到过时间片的概念。

2 并行与并发
上面的例子提到了并发与并行,这里更精准地阐述一下。

一个基本的事实前提:一个CPU在一个瞬间只能处理一个任务。但为什么在我们人类视角,哪怕是单核心计算机也能同时做很多事情,比如同时听音乐和浏览网页,作为整个系统唯一可以完成计算任务的 CPU 是如何保证两个进程“同时进行”的呢?时间片轮转调度!

在操作系统中,每个进程会被操作系统分配一个时间片,即每次被 CPU 选中来执行当前进程所用的时间。时间一到,无论进程是否运行结束,操作系统都会强制将 CPU 这个资源转到另一个进程去执行。

CPU一会处理一个进程一会处理另外一个进程,可能大家觉得不对,但是cpu的执行速度已经快到让人么你感觉不到这种切换的顿挫感,就好像两个进程真的在并行运行哦
在这里插入图片描述

不仅进程间可以并发执行,在一个进程中的多个线程之间也可以并发执行。

上下文:

所谓的进程上下文,就是一个进程在执行的时候,CPU的所有寄存器中的值、进程的状态以及堆栈上的内容,当内核需要切换到另一个进程时,它 需要保存当前进程的所有状态,即保存当前进程的进程上下文,以便再次执行该进程时,能够恢复切换时的状态,继续执行

系统开销

系统开销通常体现在进程、线程创建 、调度、消亡过程中。
同一个进程中的多个进程可以共享同一地址空间,因此它们之间的同步和通信的实现也变得容易。

进程切换时,涉及到当前进程CPU环境的保存以及心被调度的运行进程的CPU环境的设置;
而线程切换只需要保存和设置少量寄存器的内容,并不涉及存储器管理方面的操作,从而能更有效地使用系统资源和提高系统的吞吐量。

使用多线程的主要目的:

1.多任务程序的设计
一个程序可能要处理不同的应用,要处理多种任务,如果开发不同的进程来处理,系统开销很大,是数据共享,程序结构都不方便,这时候可以使用多线程编程方法。
2.并发程序设计
3. 网络程序设计
4. 数据共享
5. 多CPU系统中实现真正的并行。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值