第三章:内存虚拟化
当我们描述地址空间时,所描述的是操作系统提供给运行程序的抽象。程序不在物理地址 0~16KB 的内存中,而是加载在任意的物理地址。当操作系统这样做时,我们说操作系统在虚拟化内存,因为运行的程序自认为它被加载到特定地址(例如 0)的内存中,并且具有非常大的地址空间
第二章:CPU虚拟化
作者用分配桃子举例说明虚拟化,为了让这个例子更加合理,我们假定拿到桃子的人并不食用,仅是占有就心满意足了(当我后面谈食用或品尝也只是占有的意思,享用完之后就会归还)。每个小朋友(进程)都希望得到一个完整的桃子,可现实情况是篮筐中只有一个桃子,我需要为这个篮筐遮上一层布,“欺骗”小朋友这里面有很多很多的桃子(虚拟化),好让他们齐聚于此。我对每个伸手要桃子的小朋友说,你手里现在已经被分配一个完整的桃子,等你真正想要占有实体的时候我会具体的分配到你的手里。每个小朋友不可能一口吃掉这颗桃,等他需要品尝的时候,我就用小刀切割一块他所需的桃子交到他手里面(这是实际分配的,至于允诺的其它部分的桃子由于他暂时没有申请,视为我的可调用资源),给他慢慢享用。这样,其它小朋友来请求吃桃子的时候,我依旧能够满足他们的需求,因为我还有可调用资源。只要我不让他们看到这块布之后的桃子数量,他们永远都以为自己占有一个桃子
第一章:操作系统概述
我们已经了解了操作系统实际上做了什么:它取得 CPU、内存或磁盘等物理资源,并对它们进行虚拟化。它处理与并发有关的麻烦且棘手的问题。它持久地存储文件,从而使它们长期安全
优化并发
本章将会讨论几个用于改善基于线程的并发程序的性能的技巧。我们假设读者已经基本掌握了线程级别的并发和同步原语,并正在寻找优化多线程程序的方法。线程级别的并发的基础知识并不是本书的主题
面向对象的设计原则
设计的目标:低耦合、高内聚
第五章:纯洁性--避免可变状态
我不认为这章节有什么可用于将来实践的地方,因为并不会让性能有多大的提高,反而会拖累程序。况且用 const 来表明不可变状态,事实是可变状态才是常态。
第四章:以旧函数创建新函数
偏函数、柯里化和函数提升的讲解
第三章:函数对象
如果你熟悉 C++11 新特性,此文并无太多需要学习的地方
tuple元组
它是一种可以包含多个不同类型元素的容器( 它是一个模板类,允许将多个不同类型的对象组合在一起)
auto 和 decltype
用于类型推断,auto 和 decltype 属于互补关系。auto 虽然比 decltype 方便,但有些场景还是需要 decltype 来