进程与线程 并发与并行

进程与线程 并发与并行

进程与线程

  首先要理解的是,我们的软件都是运行在操作系统之上,操作系统再控制硬件,比如 处理器内存IO设备等。操作系统为了向上层应用程序提供 简单一致机制来控制复杂而又大相径庭的低级硬件设备 抽象出 进程 的概念。进程是比较重量级的操作系统资源,它拥有独立的内存空间,而在 现代操作系统中为了实现在一个进程中执行多种任务,因此实现了 线程。 一个 进程 可以由多个 线程组成,每个 线程 是一个执行单元,线程 运行在 进程 的上下文环境中,并共享 同样的代码和全局数据。
我们经常说的 多线程 就是指的 在一个进程内有多个线程在执行任务,在实际开发中,开发者写的代码其实都是在线程的环境中执行的,而在多线程开发中,经常涉及到 一些 线程安全的问题,简单的看下进程 和 线程占有的资源情况

进程占有的资源线程占有的资源
地址空间
全局变量寄存器
打开的文件状态
等…程序计数器

  简单的理解 线程安全 的问题:多线程程序在运行时候,可能会同时对一个变量进行操作,操作的时候,一般线程会将这个变量的值 copy 到 自身线程的巨变变量中,再进行操作,此时可能就会发生 读写时数据不同步(数据已经被其他线程操作了,自身线程操作时读取的值已经是旧的了)的问题。

并发与并行  

  进程 可以申请和拥有系统资源,进程是一个实体,程序的执行依赖于、主存(存放程序和程序处理的数据) CPU(执行代码) 等…(比如IO),而进程相当于一个环境,是控制这些操作系统硬件的实体,在操作系统中,一个系统上可以运行多个进程,运行的进程一般是多于运行它们的CPU 个数的, 所以通常一个CPU 可能需要运行多个进程任务,一个CPU 就像是一个工人,他一个时间节点只能做一件事情,所以 CPU 得频繁的在多个 进程中切换(上下文切换),这种现象就是并发执行。
  并行执行的概念是指 多个程序在多个CPU上同时执行,“并行” 概念是 并发 概念的一个子集,我们可以编写一个 并行程序,但是如果没有足够的 CPU 来执行,那么最终就变成了并发执行

并发:同时有很多任务需要做,可以串行执行也可以并行执行
并行:可以同时(严格意义上的)做多个任务

参考

知乎

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卓修武

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值