摘要:
所有的网络应用程序都基于相同的基本编程模型,具有相似的整体逻辑结构,并且依赖于相同的编程接口。 客户端-服务器编程模型 每个网络应用程序都基于客户端-服务器模型(Client-Server Model),并由一个服务器进程和多个客户端进程组成。服务器管理资源,操作它们以向客户端提供服务。 客户端-服 阅读全文
摘要:
输入/输出 (I/O) 是在主存储器和外部设备(如磁盘驱动、终端和网络等)之间复制数据的过程。输入操作将数据从 I/O 设备复制到主存,输出操作则将数据从主存复制到设备。 Unix I/O Linux 文件是由 m 个字节组成的序列: $$B_0, B_1, ..., B_k, ..., B_{m- 阅读全文
摘要:
为了更加有效地管理内存并减少错误的发生,现代系统提供了一种对主存储器的抽象,即虚拟内存(Virtual Memory,VM)。虚拟内存是硬件异常、硬件地址转换、主存储器、磁盘文件和内核软件之间的优雅交互,它为每个进程提供了一个大的、统一的和私有的地址空间。 虚拟内存有以下三个重要功能: 将主存储器作 阅读全文
摘要:
链接(Linking)是将各部分代码和数据收集并组成单个文件的过程,该文件可以被加载(复制)到内存中执行。链接可以在编译时(即源代码被翻译成机器代码时)执行,也可以在加载时(即程序被加载到内存并由加载器执行时)执行,甚至还可以在运行时通过应用程序执行。链接是由称为链接器(Linker)的程序自动执行 阅读全文
摘要:
在计算机运行过程中,程序计数器将依次指向一系列的值:\(a_0, a_1, ..., a_n\)。其中,\(a_k\) 是其对应指令 \(I_k\) 的地址。每个从 \(a_k\) 到 \(a_{k+1}\) 的转换都称为控制转移(Control Transfer),一系列的控制转移则称为处理器的控 阅读全文
摘要:
前言 Thanos 已成为目前 Kubernetes 集群监控的标准解决方案之一。它基于 Prometheus 之上,可以为我们提供: 全局的指标查询视图 近乎无限的数据保留期限 包含 Prometheus 在内所有组件的高可用性 在拟定监控方案之前,阅读一些成熟的 用户案例 是十分必要的。这些博文 阅读全文
摘要:
存储系统(Memory System)可以分为多个层级(Hierarchy),每个层级的存储设备(Storage Device)具有不同的容量、成本和访问时间。层级越低,存储设备的容量就越大,成本也越低,但访问速度却越慢。存储系统的层次结构对应用性能有着显著的影响,而 CPU 与主存储器之间的高速缓 阅读全文
摘要:
原文链接:Fabian Reinartz. Writing a Time Series Database from Scratch. fabxc.org, 2017. Prometheus 是一个包含了自定义时间序列数据库的监控系统,其查询语言、操作模型以及一些概念性决策使得它易于与 Kuberne 阅读全文
摘要:
在使用高级语言,如 C、Java 编程时,我们无法了解程序具体的机器级实现。相比之下,使用汇编语言编写程序时,程序员必须指定程序使用的低级指令来执行计算。编译器提供的类型检查有助于检测许多程序错误,确保我们以一致的方式来引用和操作数据。最重要的是,用高级语言编写的程序可以在多种不同的机器上编译运行, 阅读全文
摘要:
前言 OpenShift 4.X 版本要求安装在操作系统为 CoreOS 的机器上,因此 官方文档 给出了使用 PXE 或 IPXE 引导 CoreOS 系统的方法。我们可以参考其操作流程,将一台 CentOS 7.X 的机器改写为 CoreOS 系统,步骤如下: 从 镜像下载页 下载安装所需版本的 阅读全文