当前位置: 首页 > news >正文

计算机操作系统之并行性与并发性笔记

目录

在计算机操作系统中,并行性与并发性是两个既相似又有区别的重要概念

并行性:

并发性:

可以通过多任务处理和资源共享来具体说明

并发性的例子

并行性的例子

总结


在计算机操作系统中,并行性与并发性是两个既相似又有区别的重要概念

并行性:

它指的是两个或多个事件在同一时刻发生。

这意味着,如果有足够的处理单元(如多核CPU或分布式系统中的多个节点),这些事件可以真正地同时执行,互不干扰。并行性强调的是物理上的同时性,能够显著提高性能,因为多个任务可以同时进行,减少了总体完成时间。

并发性:

它则是指两个或多个事件在同一时间间隔内发生。

虽然从宏观上看,这些事件似乎是在同时运行,但实际上在单核或多核CPU的某一瞬间,通常只能有一道程序执行,各道程序轮流交替地执行。并发性强调的是逻辑上的同时性,通过操作系统的任务调度和时间片轮转等技术,使多个任务交替执行,从而提高了系统的吞吐量和资源利用率。然而,每个任务的实际执行可能并不是连续的,因此可能会引入一些额外的开销,如上下文切换等。

并行性和并发性都是计算机系统中处理多任务的重要策略,但它们在实现方式、效率、性能以及所需资源方面有所不同。选择使用并行性还是并发性,通常取决于具体的应用场景、硬件条件以及性能需求。

可以通过多任务处理和资源共享来具体说明

并发性的例子

在计算机操作系统中,并发性通常体现在单个处理器上通过时间片轮转来同时处理多个任务。假设你正在使用一台个人电脑,同时运行着以下几个程序:

文字处理软件(如Word):你正在编写一篇文章。
网页浏览器:多个标签页同时打开,其中一个在播放在线视频,另一个在浏览新闻。
音乐播放器:在后台播放你喜欢的音乐列表。

尽管从宏观上看,这些程序似乎都在同时运行,但实际上,由于你的电脑只有一个处理器(或多个处理器但操作系统可能将它们视为一个统一的资源池来管理任务),这些程序是通过操作系统的任务调度机制交替执行的。操作系统为每个程序分配一定的时间片,在这个时间片内,程序可以执行其指令。当时间片用完时,程序会被挂起,操作系统将CPU控制权交给另一个程序。由于这个时间片的切换非常快,用户通常不会感觉到程序是在交替执行的。

并行性的例子

并行性在计算机系统中则更多地体现在多处理器或多核处理器环境中。假设你所在的实验室拥有一台高性能计算集群,该集群由多个节点组成,每个节点都有多个处理器核心。在这样的系统中,并行性可以得到充分的利用。

科学计算任务:研究人员提交了一个复杂的物理模拟任务,该任务被分解为多个较小的子任务,每个子任务都可以独立地在集群的一个或多个节点上并行执行。这些子任务之间可能通过消息传递接口(MPI)或其他并行通信机制来交换数据。

数据库查询:在一个大型数据库中,多个查询请求可以同时提交给数据库管理系统。数据库管理系统可以利用并行查询处理技术来同时处理这些查询请求,每个请求可能在不同的处理器核心上并行执行其计算密集型部分,如连接操作、排序操作等。

总结

在计算机操作系统中,并发性允许单个处理器上通过时间片轮转来同时处理多个任务,从而提高系统的吞吐量和资源利用率。而并行性则利用多处理器或多核处理器的计算能力来真正地同时执行多个任务,从而提高系统的整体性能。这两个概念都是现代计算机系统中处理多任务和提高性能的重要手段。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • NumPy 线性代数
  • CSS-3
  • Redis -- 全记录(面试)
  • 解决Matlab报错:MEX 文件 ‘D:\MATLAB\toolbox\maple\maplemex.mexw64‘ 无效: 缺少依赖共享库
  • erlang学习: Mnesia Erlang数据库4
  • windows10 python 解决鼠标右键菜单中没有Edit with IDLE(不使用注册表编辑器)
  • 如何评估一个RAG(检索增强生成)系统-上篇
  • 大数据新视界 --大数据大厂之Flink强势崛起:大数据新视界的璀璨明珠
  • 场外期权合法吗?
  • b√最大矩阵和
  • 深度学习的零碎知识点
  • C#读取应用配置的简单类
  • npm通过代理解决安装包无法下载问题
  • (web自动化测试+python)1
  • react18基础教程系列-- 框架基础理论知识mvc/jsx/createRoot
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • jquery ajax学习笔记
  • JS变量作用域
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • React中的“虫洞”——Context
  • vue.js框架原理浅析
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 简单易用的leetcode开发测试工具(npm)
  • 经典排序算法及其 Java 实现
  • 聚簇索引和非聚簇索引
  • 力扣(LeetCode)56
  • 如何合理的规划jvm性能调优
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 小程序 setData 学问多
  • 应用生命周期终极 DevOps 工具包
  • 怎么把视频里的音乐提取出来
  • ​Spring Boot 分片上传文件
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (arch)linux 转换文件编码格式
  • (NSDate) 时间 (time )比较
  • (阿里云万网)-域名注册购买实名流程
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (图文详解)小程序AppID申请以及在Hbuilderx中运行
  • (转)甲方乙方——赵民谈找工作
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • **《Linux/Unix系统编程手册》读书笔记24章**
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET 通过系统影子账户实现权限维持
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • //usr/lib/libgdal.so.20:对‘sqlite3_column_table_name’未定义的引用
  • @Autowired 与@Resource的区别