CSAPP 读书笔记:异常控制流

在计算机的运行过程中,程序计数器依次指向一系列的值:$a_0, a_1, …, a_n$。其中,$a_k$ 是其对应指令 $I_k$ 的地址。从 $a_k$ 到 $a_{k+1}$ 的转换被称为控制转移(Control Transfer),一系列的控制转移则被称为处理器的控制流 …

CSAPP 读书笔记:存储系统的层级结构

存储系统(Memory System)包含多个层级(Hierarchy),每个层级的存储设备(Storage Device)具有不同的容量、成本和访问时间。层级越低,存储设备的容量就越大,成本也越低,但访问速度却越慢。存储系统的层级结构对应用性能有着显著的影响 …

CSAPP 读书笔记:处理器架构

我们将处理器支持的指令及其对应的字节编码方式称为指令集架构(Instruction Set Architecture,ISA)。不同的处理器系列,例如 Intel IA32/x86-64,IBM/Freescale Power 和 ARM 等,均使用不同的 ISA。为一种机器编译得到的程序,无法在 ISA 不同的机器上运行 …

【译】从零开始编写一个时序数据库

Prometheus 是一个包含了自定义时间序列数据库的监控系统,其查询语言、操作模型以及一些概念性决策使得它易于与 Kubernetes 集成。然而,Kubernetes 集群中的工作负载是动态变化的,有可能给它带来一定的压力 …

通过安装 CoreOS 系统了解 Linux 启动流程

OpenShift 4.X 版本要求安装在操作系统为 CoreOS 的机器上,因此官方文档给出了使用 PXE 或 IPXE 引导 CoreOS 系统的方法。我们可以参考其操作流程,将一台 CentOS 7.X 的机器改写为 CoreOS 系统,步骤如下 …

CSAPP 读书笔记:程序的机器级表示

在使用高级语言,如 C、Java 编程时,我们无法了解程序在机器级别的实现。而使用汇编语言编写程序时,程序员则只能引用低级指令。由高级语言编写的程序可以在多种不同的机器上编译运行,而汇编语言则与机器特性高度相关 …

CSAPP 读书笔记:信息的表示和处理

大多数机器使用字节(8 位的块)作为存储器中的最小寻址单元,而非访问单独的位。内存中的每一个字节都对应一个唯一的数字,即它的地址,所有可能的地址集合构成了虚拟内存。它是由 DRAM、闪存(Flash Memory) 和磁盘存储共同实现的,而在程序看来则只是一个统一的字节数组 …

CSAPP 读书笔记:计算机系统之旅

一堆 bit 可以表示系统中的所有信息,包括磁盘中的文件、内存中的程序和用户数据以及网络中传输的数据,区分它们的唯一方式便是我们查看这些数据对象时所处的上下文(Context)。例如,相同的一串 bit 在不同的 Context 中可能代表一个整数,也可能代表一个浮点数,甚至字符串 …

对 Openshift SDN 网络模型的一些探索

在《Kubernetes Pod 是如何跨节点通信的?》中,我们简单地介绍了 Kubernetes 中的两种 SDN 网络模型:Underlay 和 Overlay。而 Openshift 中的 SDN 则是由 Overlay 网络 OVS(Open vSwitch)实现的,其使用的插件如下 …

Kubernetes Pod 是如何跨节点通信的?

《A Guide to the Kubernetes Networking Model》一文生动形象地介绍了 Kubernetes 中的网络模型,然而受篇幅所限,作者并没有对 Pod 跨节点通信时数据包在节点之间传递的细节进行过多讨论 …