热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

进程并发执行问题

目的与要求:了解并行程序的高级语言表示与操作系统支持;了解并发(并行)执行引起的同步与互斥问题。重点与难点:可并行程序的同步与互斥。两个层次的并发需求:    应用编程要利用操作系

目的与要求:了解并行程序的高级语言表示与操作系统支持;了解并发(并行)执行引起的同步与互斥问题。

重点与难点:可并行程序的同步与互斥。

两个层次的并发需求:   

    应用编程要利用操作系统对并发的支持(进程或者线程),安排可并行事物并发执行。

    操作系统核心程序也要尽可能的并发运行。

并发编程:

   计算任务存在可并行的成分。(并行指的是进程或者线程在宏观或者微观上都在同时进行,并发指的是在宏观上进行同时运行,而在微观上是轮换运行。)

并发编程的三种方法:

    程序员写顺序程序,用自动识别工具识别可并行成分,组织使用操作系统的进程或线程实现并发。(对自动识别的工具要求很高,这个工具本身的开发难度很高,这个工具也不可能从顶级,也就是从算法上实现从串行到并行,只是从语言层面进行并行转换。)

    由程序员识别可并行成分,用并发程序设计语言设计并发程序,由编译系统安排使用进程或线程。

    在传统语言基础上,利用操作系统的进程或线程“系统调用”设计并发程序。(用的最多的方式,利用操作系统的函数来设计并发程序)

并发执行的机制:

    实现并发执行,必须通过操作系统支持的进程或者线程机制。

    操作系统提供了进程(线程)创建,结束和同步的系统调用,可直接提供给用户编写并行程序;或由并行语言编辑器将并发语言的语句转换为对操作系统的系统调用。

与进程相关的系统调用:

    Linux提供了如下的系统调用:

    -fork():创建了一个新进程。该系统调用执行完后,系统已创建了一个子进程,该子进程逻辑上复制(共享)了父进程的程序,复制了父进程的数据段和栈段(实际上是内存的共享)。也就是说不管是父进程还是子进程,在被调度后,都从操作系统调用的返回点开始运行,父进程系统调用的返回值是子进程的进程标识pid;子进程的返回值是0,子进程从trap指令后一条指令开始运行。

进程的同步(一个进程等另外一个进程结束,等待数据)与互斥(资源独占):

同步关系(也称直接制约关系):指完成同一任务的伙伴进程间,因需要某位置上协调他们的工作而等待、传递信息产生的制约关系(数据依赖的关系,也就是等待数据的关系)。

互斥关系(也称作制约关系):即进程间因相互竞争使用独占型资源(互斥资源)所产生的制约关系。

《进程并发执行问题》

同步的例子

《进程并发执行问题》

互斥的例子

临界资源(critical resource):一次仅允许一个进程使用的资源。

临界段:相关进程必须互斥执行的程序段。


推荐阅读
  • 本文深入探讨了 Delphi 中类对象成员的核心概念,包括 System 单元的基础知识、TObject 类的定义及其方法、TClass 的作用以及对象的消息处理机制。文章不仅解释了这些概念的基本原理,还提供了丰富的补充和专业解答,帮助读者全面理解 Delphi 的面向对象编程。 ... [详细]
  • 俗话说得好,“工欲善其事,必先利其器”。这句话不仅强调了工具的重要性,也提醒我们在任何项目开始前,准备合适的工具至关重要。本文将介绍几款C语言编程中常用的工具,帮助初学者更好地选择适合自己学习和工作的编程环境。 ... [详细]
  • 本文详细介绍了Java的安装、配置、运行流程以及有效的学习方法,旨在帮助初学者快速上手Java编程。 ... [详细]
  • 前言无论是对于刚入行工作还是已经工作几年的java开发者来说,面试求职始终是你需要直面的一件事情。首先梳理自己的知识体系,针对性准备,会有事半功倍的效果。我们往往会把重点放在技术上 ... [详细]
  • 初探Java编程:从入门到实践
    本文旨在为初学者提供Java编程的基础知识,涵盖程序、算法、流程图的概念,以及JDK环境的配置和Eclipse的使用方法。 ... [详细]
  • 字节跳动夏季招聘面试经验分享
    本文详细记录了字节跳动夏季招聘的面试经历,涵盖了一、二、三轮面试的技术问题及项目讨论,旨在为准备类似面试的求职者提供参考。 ... [详细]
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • java程序员_Java程序员最新职业规划,逆袭面经分享
    java程序员_Java程序员最新职业规划,逆袭面经分享 ... [详细]
  • 深入解析Spring Cloud微服务架构与分布式系统实战
    本文详细介绍了Spring Cloud在微服务架构和分布式系统中的应用,结合实际案例和最新技术,帮助读者全面掌握微服务的实现与优化。 ... [详细]
  • 本文探讨了 Linux 系统中的 Shell 架构及其如何处理环境变量,同时详细介绍了 Source 命令的作用和应用场景。 ... [详细]
  • 掌握Mosek矩阵运算,轻松应对优化挑战
    本篇文章继续深入探讨Mosek学习笔记系列,特别是矩阵运算部分,这对于优化问题的解决至关重要。通过本文,您将了解到如何高效地使用Mosek进行矩阵初始化、线性代数运算及约束域的设定。 ... [详细]
  • 本文详细探讨了Java中Volatile关键字的工作原理、优化技巧及其在实际开发中的应用场景,特别是在提高多线程环境下数据可见性和减少锁竞争方面的优势。 ... [详细]
  • 大数据基础:JavaSE_day06 ... [详细]
  • Spring Cloud学习指南:深入理解微服务架构
    本文介绍了微服务架构的基本概念及其在Spring Cloud中的实现。讨论了微服务架构的主要优势,如简化开发和维护、快速启动、灵活的技术栈选择以及按需扩展的能力。同时,也探讨了微服务架构面临的挑战,包括较高的运维要求、分布式系统的复杂性、接口调整的成本等问题。最后,文章提出了实施微服务时应遵循的设计原则。 ... [详细]
  • 随着机器人技术的不断进步,波士顿动力公司近期的创新成果再次吸引了公众的目光。特别是其Atlas机器人完成高难度后空翻动作,标志着机器人运动能力的重大突破。 ... [详细]
author-avatar
iz76mww
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有