首页 > 编程语言 >为什么并发明明只是多个指令在单个CPU上交替执行,但是却可以优化程序执行效率呢?

为什么并发明明只是多个指令在单个CPU上交替执行,但是却可以优化程序执行效率呢?

时间:2024-10-23 10:49:54浏览次数:8  
标签:多个 程序执行 并发 任务 时间 执行 CPU

并发虽然只是多个指令在单个CPU上交替执行,但它可以显著优化程序效率,这主要归因于以下几个方面的原因:

一、CPU与I/O操作的效率差异

  • CPU的高效性:CPU是计算机中的核心处理单元,其执行速度非常快,能够在极短的时间内完成大量的计算任务。
  • I/O操作的耗时性:相比CPU,I/O操作(如读写磁盘、网络通信等)的速度要慢得多。当程序执行到I/O操作时,CPU往往需要等待I/O操作完成才能继续执行后续的计算任务。

二、并发执行的原理

  • 时间片轮转:在并发执行中,操作系统将CPU的时间划分为一个个的时间片,并轮流分配给各个任务。当一个任务执行完其时间片后,CPU会切换到另一个任务继续执行。
  • 交替执行:由于CPU的执行速度非常快,多个任务在时间片轮转下交替执行,从用户的角度来看,仿佛这些任务是同时进行的。

三、并发优化程序效率的原因

  • CPU利用率提升:通过并发执行,CPU在等待I/O操作完成的时间内可以执行其他任务,从而提高了CPU的利用率。
  • 程序响应时间缩短:并发执行允许程序在I/O操作等待期间继续执行其他任务,从而缩短了程序的总体响应时间。
  • 资源合理利用:并发执行还可以使程序更合理地利用系统资源,如内存、磁盘等,因为多个任务可以共享这些资源并同时进行处理。

四、并发与并行的区别

  • 并发:指多个任务在同一时间段内交替执行,通常是在单个CPU上实现的。
  • 并行:指多个任务在同一时刻同时执行,这通常是在多核CPU或分布式系统中实现的。

虽然并发并不是真正的并行(即多个任务在同一时刻同时执行),但它通过时间片轮转和交替执行的方式,在单个CPU上模拟了并行的效果,从而优化了程序的效率。

总结:

在正常的程序执行过程中,由于各种原因(如I/O操作、资源竞争、系统调用等),程序往往会在某些时刻处于等待状态,无法继续执行。这些等待时间如果不加以利用,就会导致CPU资源的浪费。

并发执行正是为了解决这个问题而提出的。它利用操作系统的时间切片机制,将CPU的时间划分为多个短暂的时间段(即时间片),并轮流分配给不同的任务(或线程)。当一个任务执行完其分配的时间片后,如果它还没有完成,就会被挂起(即进入等待状态),而CPU则切换到另一个任务继续执行。这样,在单个CPU上就可以同时运行多个任务,从而提高了CPU的利用率。

在并发执行中,当某个任务处于等待状态时(比如等待I/O操作完成),CPU可以立即切换到另一个任务继续执行,而不会浪费等待时间。这样,即使只有一个CPU,也可以实现多个任务的同时处理(尽管不是真正的并行处理,但在用户看来,它们似乎是同时进行的)。

因此,并发执行通过充分利用CPU的等待时间,提高了程序的执行效率和响应速度。

标签:多个,程序执行,并发,任务,时间,执行,CPU
From: https://blog.csdn.net/weixin_71992340/article/details/143178561

相关文章

  • selenium单例模式下 docker-chrome 多线程并发代码
    最近需要写爬虫,在解决docker-standalone-chrome发现只能有一个chrome被执行。所以写了这个多线程并发控制类来管理。当模板记录下。#!/usr/bin/envpython3importthreadingimporttracebackfromloguruimportloggerfromseleniumimportwebdriverfromselenium.comm......
  • 论文-高并发下的高可用性技术
    摘要:2020年12月,某创业公司针对当前社交活动如爬山、运动、美食等活动开发一个社交APP,我被任命为项目负责人,负责整个项目的需求分析、系统设计、编码实现、架构设计的工作。该APP是基于同城的陌生人之间的多样社交活动,主要包括用户发布活动、用户抽奖、用户评论、好友互动等主......
  • 精通Java并发锁机制:24种锁技巧+业务锁匹配方案
    在Java并发编程中,锁是确保线程安全、协调多线程访问共享资源的关键机制。从基本的synchronized同步关键字到高级的ReentrantLock、读写锁ReadWriteLock、无锁设计如AtomicInteger,再到复杂的同步辅助工具如CountDownLatch、CyclicBarrier和Semaphore,每种锁都针对......
  • 国产CPU与操作系统:信创核心技术的中坚力量
    信创与国产化的技术支柱在中国推动信息技术应用创新(信创)的过程中,CPU和操作系统是其不可或缺的核心组成部分。国产化的CPU和操作系统为中国的信息安全和自主可控提供了坚实的技术保障,逐步实现了从政府到企业领域的信息技术替代。六大国产CPU门派:自主创新的力量中国在推动CPU......
  • Tokio信号量:掌握并发控制的艺术
    在现代并发编程中,合理控制任务的并发执行是确保系统稳定性和资源有效利用的关键。Tokio,作为Rust生态中强大的异步运行时,为我们提供了一系列的同步原语,其中信号量(Semaphore)尤为强大。它允许我们精确控制对共享资源的并发访问,是实现限流和防止资源耗尽的理想工具。本文将深入......
  • Linux使用nc(netcat)命令检测网络端口是否畅通以及Linux查看CPU架构命令arch及CentOS
    一、Linux使用nc(netcat)命令检测网络端口是否畅通    nc命令netcat的简写,netcat即是网络猫的意思,在linux系统中nc命令实际执行命令是ncat。nc命令是一个功能强大的网络工具。平常主要用于实现TCP/UDP端口的侦听和收发,nc可作为server以TCP或UDP方式侦听指定端口,也可作为cl......
  • 面试官:并发时,故意不加锁会怎么样?
    感谢Java面试教程关于并发锁的面试分享在并发编程中,如果不加锁,可能会导致以下问题:数据不一致:多个线程同时访问和修改共享资源时,如果没有加锁,可能会导致数据竞争,即一个线程在读取数据的同时,另一个线程修改了数据,从而导致最终的数据状态与预期不符。例如,在多线程环境下,多......
  • podman 无根用户分配系统CPU、内存等系统资源,提示cgroup相关权限不足
    问题:在使用Podman以无根用户(rootless)模式创建容器时,如果遇到分配系统CPU等资源时提示cgroup权限不足,这是因为无根用户没有直接访问cgroup相关资源的权限。以下是一些解决方法(目前采用的办法3临时解决,,主要是更改系统目录权限sudochown-R$USER:$USER/sys/fs/cgro......
  • 看看硬件工程师是如何写代码的(二),榨干CPU的性能
     更多电路设计,PCB设计分享及分析,可关注本人微信公众号“核桃设计分享”!目前本人已经不再写代码了,只是想把自己走过的弯路,踩过的坑分享出来,希望更多的小伙伴能看到,少走弯路,仅供参考哈!这章重点给新手们提供一个能最大利用CPU性能的程序架构思路,具体程序就不再展示了。前言......
  • 从多线程到 epoll:如何优雅地处理高并发请求?
    文章参考于:小林coding最近在学习操作系统,服务器与客户端之间的通信离不开socket编程。然而,基于TCP的socket编程在默认情况下只能实现一对一的通信,因为它采用同步阻塞模型。在服务器处理完当前客户端的请求之前,无法响应其他客户端的请求。这种方式效率不高,显然浪费了......