深入理解计算机系统 第十二章 并发编程

如果逻辑控制流在时间上重叠,那么它们就是并发的(concurrent)

这种常见的现象称为并发(concurrency),出现在计算机系统的许多不同层面上。

并发不仅仅局限于内核,它也可以在应用程序中扮演重要角色。

应用级并发在以下情况中都是很有用的:

1、访问慢速 I/O 设备

当一个应用正在等待来自慢速 I/O 设备(例如磁盘)的数据到达时,内核会运行其它进程,使 CPU 保持繁忙。每个应用都可以按照类似的方式,通过交替执行 I/O 请求和其他有用的工作来利用并发。

2、与人交互

和计算机交互的人要求计算机有同时执行多个任务的能力

3、通过推迟工作来降低延迟

4、服务多个网络客户端

一个并发服务器,可以为每个客户端创建一个单独的逻辑控制流。这就允许服务器同时为多个客户端服务,并且也避免了慢速客户端独占服务器

5、在多核机器上进行并行计算

被划分成并发流的应用程序通常在多核机器上比在单处理器机器上运行得快,因为这些流会并行执行,而不是交错执行

使用应用级并发的应用程序称为并发程序,现代操作系统提供了三种基本的构造并发程序的方法:

1、进程。

用这种方法,每个逻辑控制流都是一个进程,由内核来调度和维护。因为进程有独立的虚拟地址空间,想要和其他流通信,控制流必须使用某种显示的进程间通信(interprocess communication,IPC)机制

2、I/O 多路复用

在这种形式的并发编程中,应用程序在一个进程的上下文中显示地调用它们自己的逻辑流。逻辑流被模型化为状态机,数据到达文件描述符后,主程序显示地从一个状态转换到另一个状态。因为程序是一个单独的进程,所以所有的流都共享同一个地址空间

3、线程

线程是运行在一个单一进程上下文中的逻辑流,由内核进行调度。可以把线程看成是其他两种方式的混合体,像进程流一样由内核进行调度,而像 I/O 多路复用一样共享一样共享同一个虚拟地址空间

原文地址:https://www.cnblogs.com/stone94/p/10393162.html

时间: 2024-11-02 23:34:41

深入理解计算机系统 第十二章 并发编程的相关文章

深入理解计算机系统 第十二章 并发编程 (1)

现代操作系统提供了三种基本的构造并发程序的方法: 进程.用这种方法,每个逻辑控制流都是一个进程,由内核来调度和维护,因为进程有独立的虚拟地址空间,想要和其他流通信,控制流必须使用某种显式的进程间通信(interprocess communication,IPC)机制. I/O多路复用.在这种形式的并发编程中,应用程序在一个进程的上下文中显式的调度它们自己的逻辑流.逻辑流被模型化为状态机,数据到达文件描述符后,主程序显式的从一个状态转换到另一个状态.因为程序是一个单独的进程,所以所有的流都共享同一

深入理解计算机系统 第十二章 并发编程 part1 第二遍

三种构造并发程序的方法及其优缺点 1.进程 用这种方法,每个逻辑控制流都是一个进程,由内核来调度和维护.因为进程有独立的虚拟地址空间,想要和其他流通信,控制流必须使用某种显式的进程间通信机制. 优点: 由于进程有独立的地址空间,所以一个进程不可能不小心覆盖另一个进程的虚拟内存,这就消除了许多令人迷惑的错误 缺点: (1)还是由于进程有独立的地址空间,使得进程共享状态信息变得更加困难.为了共享信息,它们必须使用显式的 IPC(进程间通信)机制. (2)由于进程控制和 IPC 的开销很高,所以这种方

[CSAPP笔记][第十二章并发编程]

第十二章 并发编程 如果逻辑控制流在时间上是重叠,那么它们就是并发的(concurrent).这种常见的现象称为并发(concurrency). 硬件异常处理程序,进程和Unix信号处理程序都是大家熟悉的例子. 我们主要将并发看做是一种操作系统内核用来运行多个应用程序的机制. 但是,并发不仅仅局限于内核.它也可以在应用程序中扮演重要的角色. 例如 Unix信号处理程序如何允许应用响应异步事件 例如:用户键入ctrl-c 程序访问虚拟存储器的一个未定义的区域 其他情况 访问慢速I/O设备 当一个应

第十二章 并发编程

第十二章 并发编程 三种基本的构造并发程序 进程:每个逻辑控制流是一个进程,由内核进行调度,进程有独立的虚拟地址空间 I/O多路复用:逻辑流被模型化为状态机,所有流共享同一个地址空间 线程:运行在单一进程上下文中的逻辑流,由内核进行调度,共享同一个虚拟地址空间 常用函数: fork exec waitpid 基于I/O多路复用的并发事件驱动服务器 事件驱动程序:将逻辑流模型化为状态机. 状态机: 状态 输入事件 转移 对于状态机的理解,参考EDA课程中学习的状态转换图的画法和状态机. 整体的流程

第十二章 并发编程 学习笔记

第十二章 并发编程 进程是程序级并发,线程是函数级并发. 三种基本的构造并发程序的方法: 进程:每个逻辑控制流是个一个进程,由内核进行调度和维护. I/O多路复用:应用程序在一个进程的上下文中显式地调度他们自己的逻辑流. 线程:运行在单一进程上下文中的逻辑流,由内核进行调度. 12.1 基于进程的并发编程 构造并发程序最简单的方法就是用进程. 使用大家都很熟悉的函数例如: fork exec waitpid 关于在父.子进程间共享状态信息:共享文件表,但不共享用户地址空间. 进程又独立的地址空间

第十五章 并发编程

1.操作系统的发展史 参考:http://www.cnblogs.com/Eva-J/articles/8253521.html 知识点 输入输出 -- 大部分时间都不会占用CPU,但会降低你程序的效率 操作系统的三种基本类型:多道批处理系统.分时系统.实时系统. 现在操作系统 基于多道批处理系统和分时系统 多个程序.作业在遇到IO操作的时候,操作系统会帮助你进行切换 让CPU的利用率得到最大的提高 2.进程 初识进程 进程: 运行中的程序 操作系统 只负责管理调度进程 进程是操作系统中资源分配

第十二章-网络编程

1 TCP/IP IP协议赋值吧数据从一台计算机通过网络发送到另一台计算机. 数据是被分割成一个个小块, 然后通过IP包发送出去的. 其中如何在负载的网络链路中传送的是通过路由器进行转发达到最终的目的地 TCP协议是建立在IP协议之上的, TCP协议负责在两台计算机之间建立可靠连接, 而且保证数据包按照顺序到达, 主要是依靠握手协议和对数据包进行编号, 确保数据被对方收到 应用成的HTTP和SMTP等协议都是基于TCP协议的 IP包的组成: 源IP地址, 目的IP地址, 源端口, 目的端口, 数

【.NET Core项目实战-统一认证平台】第十二章 授权篇-深入理解JWT生成及验证流程

原文:[.NET Core项目实战-统一认证平台]第十二章 授权篇-深入理解JWT生成及验证流程 [.NET Core项目实战-统一认证平台]开篇及目录索引 上篇文章介绍了基于Ids4密码授权模式,从使用场景.原理分析.自定义帐户体系集成完整的介绍了密码授权模式的内容,并最后给出了三个思考问题,本篇就针对第一个思考问题详细的讲解下Ids4是如何生成access_token的,如何验证access_token的有效性,最后我们使用.net webapi来实现一个外部接口(本来想用JAVA来实现的,

Java学习笔记—第十二章 Java网络编程入门

第十二章  Java网络编程入门 Java提供的三大类网络功能: (1)URL和URLConnection:三大类中最高级的一种,通过URL网络资源表达方式,可以很容易确定网络上数据的位置.利用URL的表示和建立,Java程序可以直接读入网络上所放的数据,或把自己的数据传送到网络的另一端. (2)Socket:又称"套接字",用于描述IP地址和端口(在Internet中,网络中的每台主机都有一个唯一的IP地址,而每台主机又通过提供多个不同端口来提供多种服务).在客户/服务器网络中,当客