天道酬勤

Just do it!

排序:
默认
按更新时间
按访问量
RSS订阅

深入理解计算机系统之十: 并发编程(4)

七、使用线程提高并行性 到目前为止,在对并发的研究中,我们都假设并发线程是在单处理器系统上执行的。然而,大多数现代机器具有多核处理器。并发程序通常在这样的机器上运行更快。因为操作系统内核在多个核上并行地调度这些并发线程,而不是在单个核上顺序地调度。在像繁忙的Web服务器、数据库服务器和大型科学计...

2018-05-26 17:30:19

阅读数 61

评论数 0

深入理解计算机系统之十: 并发编程(3)

六、用信号量同步线程 共享变量是十分方便,但是它们也引入了同步错误(synchronization error)的可能性。 // /* WARING: This code is buggy */ #include "csapp.h" void *thre...

2018-05-26 16:29:56

阅读数 88

评论数 0

深入理解计算机系统之十: 并发编程(2)

四、基于线程的并发编程 1、线程的简介 (1)多进程并发编程中,我们为每个流使用了单独的进程。内核会自动调度每个进程,而每个进程有自己的私有地址空间,这使得流共享数据很困难。I/O复用并发编程中,我们创建自己的逻辑流,并利用I/O多路复用显式地调度流。因为只有一个进程, 所有的流共享整个地址...

2018-05-26 16:28:08

阅读数 59

评论数 0

深入理解计算机系统之十: 并发编程(信号量与互斥锁)

工程代码下载连接 一、信号量的介绍   Edsger Dijkstra,并发编程领域的先锋人物,提出了一种经典的解决同步不同执行线程问题的方法,该方法就是基于一种你叫做信号量(semaphore)的特殊类型变量的。信号量s是具有非负数值的全局变量,只能由两种特殊的操作来处理,这两种操作称为P...

2018-05-25 09:10:28

阅读数 166

评论数 0

深入理解计算机系统之十: 并发编程(代码示例)

一、代码 // #include <stdio.h> #include <stdlib.h> #include <pthread.h> /* define st...

2018-05-24 12:14:57

阅读数 61

评论数 0

深入理解计算机系统-- 并发编程(1)

一、基本介绍 1、如果逻辑控制流在时间上重叠,那么它们就是并发的。到目前为止,我们主要将并发看作是一种操作系统内核用来运行多个应用程序的机制。当然并发不仅仅局限于内核,应用级并发也属于并发。 (1)访问慢速I/O设备。当一个应用正在等待来自慢速I/O设备(如磁盘)的数据到达时,内核会运行其他进...

2018-05-21 00:10:18

阅读数 71

评论数 0

深入理解计算机系统--网络编程

一、客户端-服务器编程模型 每个网络应用都是基于客户端-服务器模型的。客户端-服务器模型中的操作是事物(transaction)。一个客户端-服务器事物由以下四步组成。 1、当一个客户端需要服务时,它向服务器发送一个请求,发起一个事务。例如,当Web浏览器需要一个文件时,它就发送一个请求给We...

2018-05-21 00:09:33

阅读数 72

评论数 0

深入理解计算机系统之七--链接

一、简介 1、链接(linking)是将各种代码和数据片段收集并组合成为一个单一文件的过程,这个文件可被加载(复制)到内存并执行。链接可以执行于编译时(compile time),也就是在源代码被翻译成机器代码时;也可以执行于加载时(load time),也就是在程序被加载器(loader)加载...

2018-05-21 00:05:23

阅读数 50

评论数 0

深入理解计算机系统之六--存储器层次结构

一、小结 1、存储器系统是一个具有不同容量、成本和访问时间的存储设备的层次结构。CPU寄存器保存着最常用的数据。靠近CPU的小的、快速的高速缓存存储器作为一部分存储在相对慢速的主存储器中数据和指令的缓冲区域。主存缓存存储在容量较大的、慢速磁盘上的数据,而这些磁盘常常作为存储在通过网络连接的其他机...

2018-05-20 19:35:27

阅读数 110

评论数 0

深入理解计算机系统之五--优化程序性能

一、介绍 1、写程序的最主要目标就是使它在所有可能的情况下都正确工作。在很多情况下,让程序运行得快也是一个重要的考虑因素,比如程序实时处理视频帧或者网络包。 2、编写高效程序需要做到以下几点: 第一、必须选择一组适当的算法和数据结构。 第二、必须编写出编译器能够有效优化以转换成高效可执行代码...

2018-05-20 17:23:53

阅读数 65

评论数 0

深入理解计算机系统之四--处理器体系结构

一、小结 1、处理器必须执行一系列指令,每条指令执行某个简单操作,例如两个数相加。指令被编码为由一个或多个字节序列组成的二进制格式。一个处理器支持的指令和指令的字节级编码称为它的指令集体系结构(ISA)。ISA在编译器编写者和处理器设计人员之间提供了一个概念抽象层,编译器编写者只需要知道允许哪些...

2018-05-20 17:06:00

阅读数 35

评论数 0

深入理解计算机系统之三--信息的表示和处理

一、程序的机器级表示 1、机器级程序和它们的汇编代码表示,与C程序的差别很大。各种数据类型之间的差别很小。 2、程序是以指令序列来表示的,每条指令都完成一个单位的操作。部分程序状态,如寄存器和运行时栈,对程序员来说时直接可见的。 3、编译器必须使用多条指令来产生和操作各种数据结构,以及实现像...

2018-05-20 16:41:11

阅读数 38

评论数 0

深入理解计算机系统之二--信息的表示和处理

一、小结 1、计算机将信息编码为位(比特),通常组织成字节序列。有不同的编码方式用来表示整数、实数和字符串。不同的 计算机模型在编码数字和多字节数据中的字节顺序时使用不同的约定。 2、大多数机器对整数使用补码编码,而对浮点数使用IEEE标准754编码。在位级上理解这些编码,并理解算术运算的数...

2018-05-20 16:18:40

阅读数 44

评论数 0

深入理解计算机系统之一--计算机系统简介

一、系统的硬件系统 (1)主存是一个临时存储设备(内存条),在处理器执行程序时,用来存放程序和程序处理的数据。   二、计算机中程序的表示、运行 1、示例代码 // #include <stdio.h> int main() { pr...

2018-05-20 10:51:02

阅读数 60

评论数 0

提示
确定要删除当前文章?
取消 删除