操作系统

PerfBook Chapt. 2 - Introduction

2020-04-28 23:00 CST
2020-04-29 00:06 CST
CC BY-NC 4.0

2.1 Historic Parallel Programming Difficulties

历史中遇到的并发编程困难:

  • 并发系统价格过高。
  • 缺乏并发编程经验。
  • 缺少并发运行的代码。
  • 没有并发编程的工程准则。
  • 进程通信开销太大。

前四个问题目前都已经基本解决了。

2.2 Parallel Programming Goals

并发编程的三个主要目的:

  • Performance:充分利用规模和效率
  • Productivity:提高生产力
  • Generality:提高通用性

最多只能实现两个,无法同时实现三个。

正确性、可维护性、鲁棒性不是并发编程的目的,因为对于顺序执行的程序他们也很重要。

2.3 Alternatives to Parallel Programming

并发只是一种提高性能的方式。其他方法有:

  • 运行多个顺序执行的应用的实例。
  • 让应用程序使用已有的并发软件。
  • 对应用程序进行性能优化。

2.4 What Makes Parallel Programming Hard

  • Work Partitioning:
    • 如何分配工作给不同进程
    • 进程间的通信和同步
    • 进程过多导致CPU Cache Miss
    • 极大的增加程序状态数量
  • Parallel Access Control
    • 隐式/显式传递消息
    • 访问资源需要同步导致的死锁、活锁、事务撤销
  • Resource Partitioning and Replication
    • 如何分配硬件资源?
    • 不同数据结构、不同应用场景
  • Interacting With Hardware
    • 充分利用硬件,榨干所有性能