深入理解计算机:并发编程

并发编程
简介
  • 并发

    • 如果逻辑控制流,在时间上重叠,那么它们就是并发的
  • 应用级并发的作用

    • 访问慢速I/O设备
    • 与人交互
    • 通过推迟工作以降低延迟
    • 服务多个网络服务
    • 在多核机器上进行并行计算
  • 三种构造并发程序的方法

    • 进程
      • With this approach, each logical control flow is a process that is scheduled and maintained by the kernel. Since processes have separate virtual address spaces, flows that want to communicate with each other must use some kind of explicit interprocess communication (IPC) mechanism.
    • I/O多路复用
      • This is a form of concurrent programming where applications explicitly schedule their own logical flows in the context of a single process. Logical flows are modeled as state machines that the main program explicitly transitions from state to state as a result of data arriving on file descriptors. Since the program is a single process, all flows share the same address space.
    • 线程
      • Threads are logical flows that run in the context of a single process and are scheduled by the kernel. You can think of threads as a hybrid of the other two approaches, scheduled by the kernel like process flows and sharing the same virtual address space like I/O multiplexing flows.
基于进程的并发编程
  • base knowldge

    • 线程是最小执行的单位,进程是最小资源分配的单位
  • 概念

    • 使用fork()、exec()、waitpid()等函数,对进程进行控制
    • 一个构造并发服务器的自然方法是,在父进程中接受客户端连接请求,然后创建一个新的子进程来为每个客户端提供服务
  • 过程

    • 第一步:服务器接受客户端的连接请求
    • 第二步:服务器派生一个子进程为这个客户端服务
    • 第三步:服务器接受另一个连接请求

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

  • 优劣
    • 进程有独立的地址空间,不会覆盖另一进程的虚拟存储器,避免许多令人迷惑的错误。
    • 独立的地址空间使得进程共享状态信息变得更加的困难,为了共享信息,必须使用显示的IPC(进程间通信)机制。
    • 另一个缺点是,速度较慢,因为进程控制和IPC的开销很高。
基于I/O多路复用的并发编程
  • 描述
    • 创建自己的逻辑流,并利用I/O多路复用来显示地调度流,因为只有一个进程,所有的流共享整个地址空间。
    • 使用select函数,要求内核挂起进程,只有一个或多个I/O事件发生后,才将控制返回给应用程序。
基于线程的并发编程
  • 线程

    • 就是运行在进程上下文中的逻辑流
    • 一个进程可以有多个线程
    • 线程由内核调度
    • 每个线程都有它自己的线程上下文,包括一个唯一的整数线程ID、栈、栈指针、程序计数器、通用目的寄存器和条件码
    • 所有运行在一个进程里的线程共享该进程的整个虚拟地址空间
  • 线程执行模型

    • 主线程、对等线程、对等池(线程池)
    • 一个线程的上下文比进程的上下文小得多,也比进程的上下文切换快得多
    • 和一个进程相关的线程组成一个对等池,独立于其他线程创建的线程
    • 主线程和其他线程的区别仅仅在于它总是进程中第一个运行的线程
    • 一个线程可以杀死它的任何对等线程,或者等待它的任何对等线程终止
    • 每个对等线程读写相同的共享数据
      在这里插入图片描述
  • Posix线程
    在这里插入图片描述

  • 创建线程
    在这里插入图片描述

  • 终止线程
    在这里插入图片描述

  • 回收已终止的线程
    在这里插入图片描述

  • 分离线程
    在这里插入图片描述

  • 初始化线程
    在这里插入图片描述

共享变量
信号量
并行性
竞争与死锁
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
深入理解计算机系统(CSAPP)」是一本经典的计算机系统教材,其英文名称是《Computer Systems: A Programmer's Perspective》。本书以程序员的视角出发,从底层的硬件到高层的应用层,系统地介绍了计算机系统的各个方面,包括机器级代码、处理器体系结构、操作系统、网络和并发等内容。 这本书的核心理念是将计算机系统作为一个层次化的系统进行学习和理解。它从计算机硬件的基本组成部分开始,如处理器、存储器和I/O设备,介绍了它们的工作原理和与程序员的交互方式。接着,它讲解了机器级码和汇编语言,帮助读者理解程序是如何被机器执行的。然后,本书逐步深入介绍了处理器的功能和设计、虚拟存储器的概念和管理、链接和加载等内容。此外,还涵盖了操作系统原理、网络编程并发编程等高级概念。 通过阅读「深入理解计算机系统」,读者能够获得对计算机系统的更深入和全面的认识。它强调了程序员和底层硬件之间的交互,使读者不仅能够编写高效的代码,还能够理解和调试底层的机器代码。这对于提高代码质量、性能和调试效率都非常重要。 此外,本书的内容结构清晰,语言简明扼要,兼具理论和实践,为读者提供了理论基础和实践指导。它不仅适用于计算机科学相关专业的学生,也适用于任何对计算机系统感兴趣的人。无论是想要提升编程技能,还是对计算机底层原理感兴趣的读者,「深入理解计算机系统」都是一本值得推荐的书籍。 总之,「深入理解计算机系统」以其全面深入的内容和理论结合实践的特点,成为计算机系统教材中的经典之作。它帮助读者全面理解计算机系统的工作原理和设计思想,提高编程技能和系统调试能力。对于热爱计算机科学和计算机系统的人来说,这本书是必不可少的参考资料。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值