热搜关键词: Protel 99SE欧姆龙PLCGD32变压器

pdf

操作系统导论-OSTEP (王海鹏 译)

  • 1星
  • 2022-05-23
  • 20.66MB
  • 需要1积分
  • 9次下载
  • favicon收藏
  • rep举报
  • free评论
标签: 操作系统

操作系统

这是一本关于现代操作系统的书。全书围绕虚拟化、并发和持久性这3个主要概念展开,介绍了所有现代系统的主要组件(包括调度、虚拟内存管理、磁盘和I/O子系统、文件系统)。

本书共50章,分为3个部分,分别讲述虚拟化、并发和持久性的相关内容。本书大部分章节均先提出特定的问题,然后通过书中介绍的技术、算法和思想来解决这些问题。笔者以对话形式引入所介绍的主题概念,行文诙谐幽默却又鞭辟入里,力求帮助读者理解操作系统中虚拟化、并发和持久性的原理。

本书内容全面,并给出了真实可运行的代码(而非伪代码),还提供了相应的练习,适合高等院校相关专业教师教学和高校学生自学。

第1章  关于本书的对话  1

第2章  操作系统介绍  3

2.1  虚拟化CPU  4

2.2  虚拟化内存  6

2.3  并发  7

2.4  持久性  9

2.5  设计目标  11

2.6  简单历史  12

2.7  小结  15

参考资料  15

第1部分  虚拟化

第3章  关于虚拟化的对话  18

第4章  抽象:进程  19

4.1  抽象:进程  20

4.2  进程API  20

4.3  进程创建:更多细节  21

4.4  进程状态  22

4.5  数据结构  24

4.6  小结  25

参考资料  25

作业  26

问题  26

第5章  插叙:进程API  28

5.1  fork()系统调用  28

5.2  wait()系统调用  29

5.3  最后是exec()系统调用  30

5.4  为什么这样设计API  32

5.5  其他API  34

5.6  小结  34

参考资料  34

作业(编码)  35

问题  35

第6章  机制:受限直接执行  37

6.1  基本技巧:受限直接执行  37

6.2  问题1:受限制的操作  38

6.3  问题2:在进程之间切换  40

6.4  担心并发吗  44

6.5  小结  45

参考资料  45

作业(测量)  47

第7章  进程调度:介绍  48

7.1  工作负载假设  48

7.2  调度指标  49

7.3  先进先出(FIFO)  49

7.4  最短任务优先(SJF)  50

7.5  最短完成时间优先(STCF)  51

7.6  新度量指标:响应时间  52

7.7  轮转  52

7.8  结合I/O  54

7.9  无法预知  54

7.10  小结  55

参考资料  55

作业  56

问题  56

第8章  调度:多级反馈队列  57

8.1  MLFQ:基本规则  57

8.2  尝试  #1:如何改变优先级  58

8.3  尝试  #2:提升优先级  60

8.4  尝试  #3:更好的计时方式  61

8.5  MLFQ调优及其他问题  61

8.6  MLFQ:小结  62

参考资料  63

作业  64

问题  64

第9章  调度:比例份额  65

9.1  基本概念:彩票数表示份额  65

9.2  彩票机制  66

9.3  实现  67

9.4  一个例子  68

9.5  如何分配彩票  68

9.6  为什么不是确定的  69

9.7  小结  70

参考资料  70

作业  71

问题  71

第10章  多处理器调度(高级)  73

10.1  背景:多处理器架构  73

10.2  别忘了同步  75

10.3  最后一个问题:缓存亲和度  76

10.4  单队列调度  76

10.5  多队列调度  77

10.6  Linux  多处理器调度  79

10.7  小结  79

参考资料  79

第11章  关于CPU虚拟化的总结对话  81

第12章  关于内存虚拟化的对话  83

第13章  抽象:地址空间  85

13.1  早期系统  85

13.2  多道程序和时分共享  85

13.3  地址空间  86

13.4  目标  87

13.5  小结  89

参考资料  89

第14章  插叙:内存操作API  91

14.1  内存类型  91

14.2  malloc()调用  92

14.3  free()调用  93

14.4  常见错误  93

14.5  底层操作系统支持  96

14.6  其他调用  97

14.7  小结  97

参考资料  97

作业(编码)  98

问题  98

第15章  机制:地址转换  100

15.1  假设  101

15.2  一个例子  101

15.3  动态(基于硬件)重定位  103

15.4  硬件支持:总结  105

15.5  操作系统的问题  105

15.6  小结  108

参考资料  109

作业  110

问题  110

第16章  分段  111

16.1  分段:泛化的基址/界限  111

16.2  我们引用哪个段  113

16.3  栈怎么办  114

16.4  支持共享  114

16.5  细粒度与粗粒度的分段  115

16.6  操作系统支持  115

16.7  小结  117

参考资料  117

作业  118

问题  119

第17章  空闲空间管理  120

17.1  假设  120

17.2  底层机制  121

17.3  基本策略  126

17.4  其他方式  128

17.5  小结  130

参考资料  130

作业  131

问题  131

第18章  分页:介绍  132

18.1  一个简单例子  132

18.2  页表存在哪里  134

18.3  列表中究竟有什么  135

18.4  分页:也很慢  136

18.5  内存追踪  137

18.6  小结  139

参考资料  139

作业  140

问题  140

第19章  分页:快速地址转换(TLB)  142

19.1  TLB的基本算法  142

19.2  示例:访问数组  143

19.3  谁来处理TLB未命中  145

19.4  TLB的内容  146

19.5  上下文切换时对TLB的处理  147

19.6  TLB替换策略  149

19.7  实际系统的TLB表项  149

19.8  小结  150

参考资料  151

作业(测量)  152

问题  153

第20章  分页:较小的表  154

20.1  简单的解决方案:更大的页  154

20.2  混合方法:分页和分段  155

20.3  多级页表  157

20.4  反向页表  162

20.5  将页表交换到磁盘  163

20.6  小结  163

参考资料  163

作业  164

问题  164

第21章  超越物理内存:机制  165

21.1  交换空间  165

21.2  存在位  166

21.3  页错误  167

21.4  内存满了怎么办  168

21.5  页错误处理流程  168

21.6  交换何时真正发生  169

21.7  小结  170

参考资料  171

第22章  超越物理内存:策略  172

22.1  缓存管理  172

22.2  最优替换策略  173

22.3  简单策略:FIFO  175

22.4  另一简单策略:随机  176

22.5  利用历史数据:LRU  177

22.6  工作负载示例  178

22.7  实现基于历史信息的算法  180

22.8  近似LRU  181

22.9  考虑脏页  182

22.10  其他虚拟内存策略  182

22.11  抖动  183

22.12  小结  183

参考资料  183

作业  185

问题  185

第23章  VAX/VMS虚拟内存系统  186

23.1  背景  186

23.2  内存管理硬件  186

23.3  一个真实的地址空间  187

23.4  页替换  189

23.5  其他漂亮的虚拟内存技巧  190

23.6  小结  191

参考资料  191

第24章  内存虚拟化总结对话  193

第2部分  并发

第25章  关于并发的对话  196

第26章  并发:介绍  198

26.1  实例:线程创建  199

26.2  为什么更糟糕:共享数据  201

26.3  核心问题:不可控的调度  203

26.4  原子性愿望  205

26.5  还有一个问题:等待另一个

线程  206

26.6  小结:为什么操作系统课要研究

并发  207

参考资料  207

作业  208

问题  208

第27章  插叙:线程API  210

27.1  线程创建  210

27.2  线程完成  211

27.3  锁  214

27.4  条件变量  215

27.5  编译和运行  217

27.6  小结  217

参考资料  218

第28章  锁  219

28.1  锁的基本思想  219

28.2  Pthread锁  220

28.3  实现一个锁  220

28.4  评价锁  220

28.5  控制中断  221

28.6  测试并设置指令(原子交换)  222

28.7  实现可用的自旋锁  223

28.8  评价自旋锁  225

28.9  比较并交换  225

28.10  链接的加载和条件式存储指令  226

28.11  获取并增加  228

28.12  自旋过多:怎么办  229

28.13  简单方法:让出来吧,宝贝  229

28.14  使用队列:休眠替代自旋  230

28.15  不同操作系统,不同实现  232

28.16  两阶段锁  233

28.17  小结  233

参考资料  233

作业  235

问题  235

第29章  基于锁的并发数据结构  237

29.1  并发计数器  237

29.2  并发链表  241

29.3  并发队列  244

29.4  并发散列表  245

29.5  小结  246

参考资料  247

第30章  条件变量  249

30.1  定义和程序  250

30.2  生产者/消费者(有界缓冲区)

问题  252

30.3  覆盖条件  260

30.4  小结  261

参考资料  261

第31章  信号量  263

31.1  信号量的定义  263

31.2  二值信号量(锁)  264

31.3  信号量用作条件变量  266

31.4  生产者/消费者(有界缓冲区)

问题  268

31.5  读者—写者锁  271

31.6  哲学家就餐问题  273

31.7  如何实现信号量  275

31.8  小结  276

参考资料  276

第32章  常见并发问题  279

32.1  有哪些类型的缺陷  279

32.2  非死锁缺陷  280

32.3  死锁缺陷  282

32.4  小结  288

参考资料  289

第33章  基于事件的并发(进阶)  291

33.1  基本想法:事件循环  291

33.2  重要API:select()(或poll())  292

33.3  使用select()  293

33.4  为何更简单?无须锁  294

33.5  一个问题:阻塞系统调用  294

33.6  解决方案:异步I/O  294

33.7  另一个问题:状态管理  296

33.8  什么事情仍然很难  297

33.9  小结  298

参考资料  298

第34章  并发的总结对话  300

第3部分  持久性

第35章  关于持久性的对话  302

第36章  I/O设备  303

36.1  系统架构  303

36.2  标准设备  304

36.3  标准协议  304

36.4  利用中断减少CPU开销  305

36.5  利用DMA进行更高效的数据

传送  306

36.6  设备交互的方法  307

36.7  纳入操作系统:设备驱动程序  307

36.8  案例研究:简单的IDE磁盘驱动

程序  309

36.9  历史记录  311

36.10  小结  311

参考资料  312

第37章  磁盘驱动器  314

37.1  接口  314

37.2  基本几何形状  314

37.3  简单的磁盘驱动器  315

37.4  I/O时间:用数学  318

37.5  磁盘调度  320

37.6  小结  323

参考资料  323

作业  324

问题  324

第38章  廉价冗余磁盘阵列(RAID)  326

38.1  接口和RAID内部  327

38.2  故障模型  327

38.3  如何评估RAID  328

38.4  RAID  0级:条带化  328

38.5  RAID  1级:镜像  331

38.6  RAID  4级:通过奇偶校验节省

空间  333

38.7  RAID  5级:旋转奇偶校验  336

38.8  RAID比较:总结  337

38.9  其他有趣的RAID问题  338

38.10  小结  338

参考资料  339

作业  340

问题  340

第39章  插叙:文件和目录  342

39.1  文件和目录  342

39.2  文件系统接口  343

39.3  创建文件  343

39.4  读写文件  344

39.5  读取和写入,但不按顺序  346

39.6  用fsync()立即写入  346

39.7  文件重命名  347

39.8  获取文件信息  348

39.9  删除文件  349

39.10  创建目录  349

39.11  读取目录  350

39.12  删除目录  351

39.13  硬链接  351

39.14  符号链接  353

39.15  创建并挂载文件系统  354

39.16  总结  355

参考资料  355

作业  356

问题  356

第40章  文件系统实现  357

40.1  思考方式  357

40.2  整体组织  358

40.3  文件组织:inode  359

40.4  目录组织  363

40.5  空闲空间管理  364

40.6  访问路径:读取和写入  364

40.7  缓存和缓冲  367

40.8  小结  369

参考资料  369

作业  370

问题  371

第41章  局部性和快速文件系统  372

41.1  问题:性能不佳  372

41.2  FFS:磁盘意识是解决方案  373

41.3  组织结构:柱面组  373

41.4  策略:如何分配文件和目录  374

41.5  测量文件的局部性  375

41.6  大文件例外  376

41.7  关于FFS的其他几件事  377

41.8  小结  378

参考资料  378

第42章  崩溃一致性:FSCK和日志  380

42.1  一个详细的例子  380

42.2  解决方案#1:文件系统检查

程序  383

42.3  解决方案#2:日志

(或预写日志)  384

42.4  解决方案#3:其他方法  392

42.5  小结  393

参考资料  393

第43章  日志结构文件系统  395

43.1  按顺序写入磁盘  396

43.2  顺序而高效地写入  396

43.3  要缓冲多少  397

43.4  问题:查找inode  398

43.5  通过间接解决方案:inode映射  398

43.6  检查点区域  399

43.7  从磁盘读取文件:回顾  400

43.8  目录如何  400

43.9  一个新问题:垃圾收集  401

43.10  确定块的死活  402

43.11  策略问题:要清理哪些块,

何时清理  403

43.12  崩溃恢复和日志  403

43.13  小结  404

参考资料  404

第44章  数据完整性和保护  407

44.1  磁盘故障模式  407

44.2  处理潜在的扇区错误  409

44.3  检测讹误:校验和  409

44.4  使用校验和  412

44.5  一个新问题:错误的写入  412

44.6  最后一个问题:丢失的写入  413

44.7  擦净  413

44.8  校验和的开销  414

44.9  小结  414

参考资料  414

第45章  关于持久的总结对话  417

第46章  关于分布式的对话  418

第47章  分布式系统  419

47.1  通信基础  420

47.2  不可靠的通信层  420

47.3  可靠的通信层  422

47.4  通信抽象  424

47.5  远程过程调用(RPC)  425

47.6  小结  428

参考资料  429

第48章  Sun的网络文件系统(NFS)  430

48.1  基本分布式文件系统  430

48.2  交出NFS  431

48.3  关注点:简单快速的服务器崩溃

恢复  431

48.4  快速崩溃恢复的关键:无状态  432

48.5  NFSv2协议  433

48.6  从协议到分布式文件系统  434

48.7  利用幂等操作处理服务器故障  435

48.8  提高性能:客户端缓存  437

48.9  缓存一致性问题  437

48.10  评估NFS的缓存一致性  439

48.11  服务器端写缓冲的隐含意义  439

48.12  小结  440

参考资料  440

第49章  Andrew文件系统(AFS)  442

49.1  AFS版本1  442

49.2  版本1的问题  443

49.3  改进协议  444

49.4  AFS版本2  444

49.5  缓存一致性  446

49.6  崩溃恢复  447

49.7  AFSv2的扩展性和性能  448

49.8  AFS:其他改进  450

49.9  小结  450

参考资料  451

作业  452

问题  452

第50章  关于分布式的总结对话  453

附录A  关于虚拟机监视器的对话  454

附录B  虚拟机监视器  455

附录C  关于监视器的对话  466

附录D  关于实验室的对话  467

附录E  实验室:指南  468

附录F  实验室:系统项目  478

附录G  实验室:xv6项目  480

致本书读者
欢迎阅读本书!我们希望½阅读本书时,就像我们撰写它时一样开心。本书的英文书
名为《Operating
Systems:Three Easy Pieces》
,这显然是向理查德·费曼(Richard
Feynman)
针对物理学主题创½的、最了不起的一套讲义[F96]致敬。½然本书不½达到这½著名物理
学家设定的高标准,½也许足够让½了解什么是操½系统(以及更一般的系统)
本书围绕
3
个主题元素展开讲解:虚拟化(virtualization)
、并发(concurrency)和持久
。对于这些概念的讨论,最终延伸到讨论操½系统所做的大多数重要事情。
性(persistence)
希望½在这个过程中½会到一些乐趣。学习新事物很有趣,对吧?
每个主要概念在若干章节中加以阐释,其中大部分章节½提出了一个特定的问题,然
后展示了解决它的方法。这些章节很简短,尝试(½可½地)引用½为这些想法真正来源
的源材料。我们写这本书的目的之一就是厘清操½系统的发展脉络,因为我们认为这有助
于学生更清楚地理解过去是什么、现在是什么、将来会是什么。在这种情况下,了解香肠
的制½方法几乎与了解香肠的优点一样重要。
我们在整本书中采用了几种结构,值得在这里介绍一下。
无论½时,在试图解决问题时,我们首先要说明最重要的问题是什么。我们在书中明
确提出关键问题(crux
of the problem)
,并希望通过本书其½部分提出的技术、算法和思
想来解决。
在许多地方,我们将通过显示一段时间内的行为来解释系统的工½原理。这些时间线
(timeline)是理解的本质。如果½知道会发生什么,例如,½进程出现页故障时,½就可以
真正了解虚拟内存的运行方式。如果½理解日志文件系统将块写入磁盘时发生的情况,就
已经迈出了掌握存储系统的第一步。
整本书中有许多“补充”和“提示”
,为主线讲解增添了一些趣味性。
“补充”倾向于
讨论与主要文本相关的内容(½可½不是必要的)“提示”往往是一般经验,可以应用于
所构建的系统。
在整本书中,我们½用最古老的教学方法之一——对话(dialogue)
。这些对话用于介绍
主要的主题概念,并不时地复习这些内容。这也让我们得以用更½默的方式写½。½吧,
½觉得它们是有用还是½默,完全是另一回事。
在每一个主要部分的开头,我们将首先呈现操½系统提供的½象(abstraction)
,然后在
后续章节中介绍提供½象所需的机制、策略和其他支持。½象是计算机科学各个方面的基
础,因此它在操½系统中也是必不可少的。
2
在所有的章节中,
我们尝试½用可½的真实代码
(real
code)
而非伪代码
(pseudocode)
因此书中几乎所有的示例,½应该½够自己输入并运行它们。在真实系统上运行真实代码
是了解操½系统的最½方式,因此建议½½可½这样做。
在本书的各个部分,
我们提供了一些½业
(homework) 确保½进一步理解书中的内容。
其中许多½业½是对操½系统的一些模拟(simulation)程序。½应该下½½½业,并运行它
们,以此来测验自己。½业模拟程序具有以下特征:通过给它们提供不同的随机种子,½
可以产生几乎无限的问题,也可以让模拟程序为½解决问题。因此,½可以一次又一次地
自测,直至很½地理解了这些知识。
本书最重要的附½是一组项目(project)
,可供½通过设计、测试和实现自己的代码,
来了解真实系统的工½原理。所有项目(以及上面提到的代码示例)½是½用
C
编程语言
(C
programming language)[KR88]编写的。C
是一种简单而强大的语言,是大多数操½系统
的基础,因此值得添加到½的工具库中。附½中含有两种类型的项目(请参阅在线附½中
的想法)
。第一类是系统编程(system
programming)项目。这些项目非常适合那些不熟悉 C
UNIX,
并希望学习如½进行底层
C
编程的人。
第二类基于在麻省理工学院开发的实际操
½系统内核,称为
xv6 [CK+08]。这些项目非常适合已经有一些 C
的经验并希望深入研究操
½系统的学生。在威斯康星大学,我们以
3
种不同的方式开课:系统编程、xv6 编程,或两
者兼而有之。
致½用本书½为教材的教师
这门课程很适合
15
周的学期,
因此授课教师可以在合理的深度范围内讲授大部分主题。
如果是
10
周的学期,那么可½需要从每个部分中删除一些细节。还有一些章节是关于虚拟
机监视器的,我们通常会在学期的某个时候插入这些章节,或者在虚拟化部分的结尾处,
抑或在接近课程结束时½为补充。
本书中的并发主题比较特别。它是许多操½系统书籍中靠前的主题,而在本书中是直
到学生了解了
CPU
和内存的虚拟化之后才开始讲解的。根据我们近
15
年来教授本课程的经
验,学生很难理解并发问题是如½产生的,或者很难理解人们试图解决它的原因。那是因
为他们还不了解地址空间是什么、进程是什么,或者为什么上下文切换可以在任意时间点
发生。然而,一旦他们理解了这些概念,那么再引入线程的概念和由此产生的问题就变得
相½容易,或者至少比较容易。
我们½可½½用黑板(或½板)来讲课。在着重强调概念的时候,我们会将一些主要
的想法和例子带进课堂,并在黑板上展示它们。讲义有助于为学生提供需要解决的具½问
题。在着重强调实践的时候,我们就将笔记本电脑连上投½仪,展示实际代码。这种授课
风格特别适用于并发的内容以及所有的讨论部分。在这些部分中,教师可以向学生展示与
其项目相关的代码。我们通常不½用幻灯片来讲课,½现在我们已经为那些喜欢这种演示
风格的人提供了一套教学
PPT。
如果½想要任½这些教学辅助材料,请给
contact@epubit.com.cn
发电子邮件。
最后一个请求:如果½½用免费在线章节,请直接访问½者½站。这有助于我们跟踪
3
½用情况(过去几年中,本书英文版下½½超过
100
万次!,并确保学生获得最新和最½的
版本。
致½用本书上课的学生
如果½是读这本书的学生,那么我们很荣幸½够提供一些材料来帮助½学习操½系统的
知识。我们至今还½够回想起我们½用过的一些教科书(例如,Hennessy 和
Patterson
的著½
[HP90],这是一本关于计算机架构的经典著½)
,并希望这本书½够成为½美½的回忆之一。
½可½已经注意到,这本书英文版的在线版本是免费的,并且可在线获取
。有一个
主要原因:教科书一般½太贵了。我们希望,这本书是新一波免费材料中的第一本(指电
子版)
,以帮助那些寻求知识的人—— 无论他们来自哪个½家,或者他们愿意花多少钱购
买一本书。
我们也希望,在可½的情况下,向½指出书中大部分材料的原始资料—— 多年来的优
秀论文和人物,他们让操½系统领域成为现在的样子。想法不会凭空产生,它们来自聪明
勤奋的人(包括众多图灵奖获得者
,因此如果有可½,我们应该赞美这些想法和人。我
们希望这样做½有助于更½地理解已经发生的变革,而不是说½像我们写这本书时那些思
想一直就存在一样[K62]。此外,也许这样的参考文献½够鼓励½深入挖掘,而阅读该领域
的著名论文无疑是良½的学习方法之一。
致谢
这里感谢帮助我们编写本书的人。重要的是,½的名字可以出现在这里!½是,½必
须提供帮助。请向我们发送一些反馈,帮助完善本书。½可½会出名!或者,至少在某本
书中有½的名字。
到目前为止,提供帮助的人包括
Abhirami Senthilkumaran*, Adam Drescher* (WUSTL),
Adam Eggum, Aditya Venkataraman, Adriana Iamnitchi and class (USF), Ahmed Fikri*,
Ajaykrishna Raghavan, Akiel Khan, Alex Wyler, Ali Razeen (Duke), AmirBehzad Eslami, Anand
Mundada, Andrew Valencik (Saint Mary’s), Angela Demke Brown (Toronto), B. Brahmananda
Reddy (Minnesota), Bala Subrahmanyam Kambala, Benita Bose, Biswajit Mazumder (Clemson),
Bobby Jack, Björn Lindberg, Brennan Payne, Brian Gorman, Brian Kroth, Caleb Sumner
(Southern Adventist), Cara Lauritzen, Charlotte Kissinger, Chien-Chung Shen (Delaware)*,
Christoph Jaeger, Cody Hanson, Dan Soendergaard (U. Aarhus), David Hanle (Grinnell), David
Hartman, Deepika Muthukumar, Dheeraj Shetty (North Carolina State), Dorian Arnold (New
① 这里的题外话:我们在这里所说的“免费”并不意味着开源,也不意味着该书没有受到通常保护的版权——它是受到保护的!
我们的意思是½可以下½½章节,并½用它们来了解操½系统。为什么不是一本开源的书,不像
Linux
一样是一个开源内核?
½½阅读它时,这本书应该像一次对话,某人向½解释某事。因此,这就是我们的方法。
② 图灵奖是计算机科学的最高奖项。它就像诺贝尔奖,½½可½从未听说过。
4
Mexico), Dustin Metzler, Dustin Passofaro, Eduardo Stelmaszczyk, Emad Sadeghi, Emily
Jacobson, Emmett Witchel (Texas), Erik Turk, Ernst Biersack (France), Finn Kuusisto*, Glen
Granzow (College of Idaho), Guilherme Baptista, Hamid Reza Ghasemi, Hao Chen, Henry Abbey,
Hrishikesh Amur, Huanchen Zhang*, Huseyin Sular, Hugo Diaz, Itai Hass (Toronto), Jake
Gillberg, Jakob Olandt, James Perry (U. Michigan-Dearborn)*, Jan Reineke (Universität des
Saarlandes), Jay Lim, Jerod Weinman (Grinnell), Jiao Dong (Rutgers), Jingxin Li, Joe Jean
(NYU), Joel Kuntz (Saint Mary’s), Joel Sommers (Colgate), John Brady (Grinnell), Jonathan
Perry (MIT), Jun He, Karl Wallinger, Kartik Singhal, Kaushik Kannan, Kevin Liu*, Lei Tian (U.
Nebraska-Lincoln), Leslie Schultz, Liang Yin, Lihao Wang, Martha Ferris, Masashi Kishikawa
(Sony), Matt Reichoff, Matty Williams, Meng Huang, Michael Walfish (NYU), Mike Griepentrog,
Ming Chen (Stonybrook), Mohammed Alali (Delaware), Murugan Kandaswamy, Natasha Eilbert,
Nathan Dipiazza, Nathan Sullivan, Neeraj Badlani (N.C. State), Nelson Gomez, Nghia Huynh
(Texas), Nick Weinandt, Patricio Jara, Perry Kivolowitz, Radford Smith, Riccardo Mutschlechner,
Ripudaman Singh, Robert Ordòñez and class (Southern Adventist), Rohan Das (Toronto)*, Rohan
Pasalkar (Minnesota), Ross Aiken, Ruslan Kiselev, Ryland Herrick, Samer Al-Kiswany, Sandeep
Ummadi (Minnesota), Satish Chebrolu (NetApp), Satyanarayana Shanmugam*, Seth Pollen,
Sharad Punuganti, Shreevatsa R., Sivaraman Sivaraman*, Srinivasan Thirunarayanan*,
Suriyhaprakhas Balaram Sankari, Sy Jin Cheah, Teri Zhao (EMC), Thomas Griebel, Tongxin
Zheng, Tony Adkins, Torin Rudeen (Princeton), Tuo Wang, Varun Vats, William Royle (Grinnell),
Xiang Peng, Xu Di, Yudong Sun, Yue Zhuo (Texas A&M), Yufui Ren, Zef RosnBrick, Zuyu
Zhang。特别感谢上面标有星号的人,他们的改进建议尤其重要。
此外,衷心感谢
Joe Meehean
教授(Lynchburg)为每一章所做的详细注解,感谢
Jerod
Weinman
教授(Grinnell)和他的全班同学提供的令人难以½信的小册子,感谢
Chien-Chung
Shen
教授(Delaware)的细致阅读和建议,感谢
Adam Drescher(WUSTL)的细致阅读和
建议,感谢
Glen Granzow(College of Idaho)提供详细的评论和建议,感谢 Michael Walfish
(NYU)详细的改进建议。上述所有人½给予本书½者巨大的帮助,优化了本书的内容。
另外,
非常感谢这些年来参加
537
课程的数百名学生。
特别是
2008
年秋季课程的学生,
鼓励我们第一次以书面½式写下了这些讲义
(他们厌倦了没有任½类型的教科书可读——有
进取心的学生!,然后不吝称赞,让我们继续前行(一½同学在那一年的课程评估中喜不
自禁地说:
“老天爷!½们完全应该写一本教科书! )
” 。
我们也非常感谢那些参加
xv6
项目实验课程的少数人,这个实验课程大部分现已纳入
主要的
537
课程。2009 年春季班的
Justin Cherniak,Patrick Deline,Matt Czech,Tony
Gregerson,
Michael Griepentrog,
Tyler Harter,
Ryan Kroiss,
Eric Radzikowski,
Wesley Reardan,
Rajiv Vaidyanathan
Christopher Waclawik。2009
年秋季班的
Nick Bearson,Aaron Brown,
Alex Bird,
David Capel,
Keith Gould,
Tom Grim,
Jeffrey Hugo,
Brandon Johnson,
John Kjell,
Boyan Li,James Loethen,Will McCardell,Ryan Szaroletta,Simon Tso
Ben Yule。2010
年春季班的
Patrick Blesi,
Aidan Dennis-Oehling,
Paras Doshi,
Jake Friedman,
Benjamin Frisch,
Evan Hanson,Pikkili Hemanth,Michael Jeung,Alex Langenfeld,Scott Rick,Mike Treffert,
Garret Staus,Brennan Wall,Hans Werner,Soo -Young Yang
Carlos Griffin。
展开预览

推荐帖子 最新更新时间:2022-08-09 05:52

【DFRobot无线通信模块】+ DFRobot Gravity: UART A6 GSM & GPRS 无线通信模块评测
1 DFRobot Gravity: UART A6 GSM & GPRS 无线通信模块是一个非常精巧的扩展板,主要是基于GSM无线通信模块的快速开发. 2. 这个模块是安可信A9,和A9G兼容管脚的开发板,对于开发板的连接和控制是用UART串行接口实现的.    具体的参数参照WIKI,这里展示了具体的使用方法. 3. 按照手册上的使用方法连接arduino开发板的11和10引
北方 RF/无线
TLP3547评测--设计应用对比
       我是最后一批的通过名单,收到这个模块的时候,已经在网上看到很多测试,也基本囊括这个模块的性能和特点,本来也就没有什么动力来滥竽充数。但模块也到手了,总的会有一些个人的看法,希望能给大家带来收获。       说实在的,这个模块我觉得做出来的效果类似一个半成品的模组。就差没有塑封了。所以给人的感觉有点美中不足。因为这个想真真实实用来测试,毕竟做出测试勾的方式会比较好链接。  
fsyicheng 东芝光电继电器TLP3547评测
ESP32-S2-Saola-1 算圆周率
习惯上,我用算圆周率来比较MCU的性能。因为python支持大整数运算,圆周率计算正好用到大整数,可以初步体现出MCU的整数计算性能。   下面程序是在以前microython的圆周率计算程序上稍作修改,将时间函数ticks_ms()改为monotonic()。程序需要先保存到文件,然后import 执行(circuitpython 不支持 execfile函数)。如果直接粘贴,大概率
dcexpert MicroPython开源版块
国外电力电子方面的经典教程
Fundamentals of Power Electronics(Third Edition,2020) 电力电子基础,被视为电力电子课程的圣经,此书是第三版,2020年出版,共1081页。 下载:http://download.eeworld.com.cn/detail/sigma/616548   Power Electronics: Devices, Circuit
arui1999 下载中心专版
关于加速度计,你所应该知道的
本帖最后由 朵拉A萌 于 2016-12-2 13:45 编辑 本文转载于威惠智能微信公众号 F=ma,这是一个伟大的公式,牛顿的牛逼在于能从稀松平常的小事中发现宇宙的规律,让人知道了力、质量、加速度的相互关系。 最原始的加速度计,就是一个弹簧、一个重物,再标上刻度: 简简单单,却蕴含着一种神秘的真理(可能你小时候也想到过这个主意)。 后来,人们发明了很多方式来测量加速度,
朵拉A萌 MEMS传感器
由5G WIFI模块中的PA引出的一系列问题
大家好,初次发帖,望解惑。谢谢!    最近用一个5G WIFI模块,在5180到5885MHz的频段内分了三个段对应三个PA,可是感觉不是很好,单模块一致性不好不说,上到板子上,调匹配的话无法同时满足三个段的性能,最后只能折中让那么一两个点合格但不是最优。我想问的很多     1.最终输出10dBm,IC里一系列信号下来通过PA前功率会是多大呢?     2.集成在IC里的PA是由晶体管构成
haowen930 RF/无线

评论

登录/注册

意见反馈

求资源

回顶部
查找数据手册?

EEWorld Datasheet 技术支持

热门活动

相关视频

可能感兴趣器件

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
×