重学操作系统:内存虚拟化 内存是操作系统需要管理的另一重要资源。同管理 CPU 类似,操作系统在管理物理内存时想要达到以下目的: 共享:多个进程可以同时使用物理内存,每个进程都感觉自己在独占内存空间。 安全:共享带来的另一个问题就是安全,操作系统要隔离不同进程的内存访问,确保它们访问的是属于进程本身的物理内存,而不可以随意读写其它进程的内存空间。 高效:尽可能减少时间空间资源的占用,以更高效的方式管理内存。 2024-05-24 操作系统 #内存虚拟化 #内存管理 #LRU
从 BusTub 看 Architecture of a Database System CMU 15-445/645 课程对应的项目 BusTub 以及数据库领域的经典综述论文 Architecture of a Database System 都可以说是入门数据库的必备材料。BusTub 通过几个 Project,让我们对数据库的缓冲区管理、索引、执行引擎、事务控制等关键模块有相对深入的了解;Architecture of a Database System 则介绍了数据 2024-05-13 数据库 #bustub #DBMS #CMU 15-445/645
信号与定时器 本文是《Linux 高性能服务器编程》阅读记录,供以后查阅参考。推荐阅读原书。 所有函数未标明需要包含什么头文件,可使用 man 命令自行查询。 1. 信号 信号是由用户、系统或者进程发送给目标进程的信息,以通知目标进程某个状态的改变或系统异常。服务器程序必须处理(或至少忽略)一些常见的信号,以免异常终止。 1.1 Linux 信号相关 API 1.1.1 发送信号 使用 2024-05-08 Linux > 网络编程 #信号 #定时器
I/O 复用 本文是《Linux 高性能服务器编程》阅读记录,供以后查阅参考。推荐阅读原书。 所有函数未标明需要包含什么头文件,可使用 man 命令自行查询。 1. select select 系统调用用于:在一段指定的时间内,监听用户感兴趣的文件描述符上的可读、可写和异常等事件。 1.1 select API select 函数原型: 123456789101112/* Check 2024-05-04 Linux > 网络编程 #select #poll #epoll
高级 I/O 函数 本文是《Linux 高性能服务器编程》阅读记录,供以后查阅参考。推荐阅读原书。 所有函数未标明需要包含什么头文件,可使用 man 命令自行查询。 1. pipe 函数声明: 12345/* Create a one-way communication channel (pipe). If successful, two file descriptors are stored 2024-05-02 Linux > 网络编程 #Linux
C++ 并发编程入门 本文介绍 Modern C++ 标准库提供的关于多线程编程的工具。如标题所示,本文定位是入门,不讨论内存序、无锁编程等并发编程的高级主题。本文内容主要参考《C++ 并发编程实战(第二版)》一书,对并发编程感兴趣推荐阅读原书。 1. 线程 C++ 中使用线程的方式非常简单,只需要包含 thread 头文件,然后向 thread 构造函数传入可调用函数和实参即可。一些示例如下: 1234 2024-04-19 编程语言 > C++ #并发 #多线程 #RAII #锁 #条件变量 #原子类型
DBMS for ANNS 一览 自 2023 年 ChatGPT 带动的大语言模型热以来,向量相似度检索得到了很多数据库系统的支持。实际上,早在 2023 年之前,就已经有很多 DBMS 支持了向量数据存储、索引、查询优化等功能。其中,最重要的功能就是提供支持近似最近邻检索(ANNS)的索引结构。在 ANN Benchmark 中,列出了许多支持 ANNS 的库或者 DBMS,并在主要的数据集上进行了性能测试。本文简 2024-03-26 数据库 > 向量数据库 #ANN #数据库 #向量数据库 #Vector Database
重学操作系统:CPU 虚拟化与进程 操作系统是每名程序员必须掌握的内容。回想大学时学习操作系统时,总是陷于一些算法方面的细节,习题则多为计算不同算法的性能指标,而忽略了从更高层面来看待和理解操作系统。因此,最近开始阅读备受好评的操作系统书籍:《操作系统导论》(英文版名称为:Operating Systems: Three Easy Pieces,OSTEP)。 OSTEP 从虚拟化、并发、持久化三大方面展开对操作系统的介绍,通 2024-03-09 操作系统 #CPU 虚拟化 #进程调度
C++ 对象模型 最近在看《深度探索 C++ 对象模型》一书,收获颇丰。如果你对 C++ 底层机制感兴趣、想知道编译器对我们的代码动了什么“手脚”,推荐阅读该书。 本文不打算整理或复述《深度探索 C++ 对象模型》一书的内容,因为这本书需要花费一定的时间心力阅读,一篇文章恐难覆盖全书内容。因此,本文仅展示部分代码及运行结果,加以必要的注释、解释等,以阐明 C++ 对象模型的部分知识点。代码在 64 位 WS 2024-02-19 编程语言 > C++ #对象模型
DB 论文阅读:Product Quantization for Nearest Neighbor Search 本文介绍论文《Product Quantization for Nearest Neighbor Search》,即 ANN 中乘积量化(Product Quantization,PQ)算法的主要内容。 1. 背景介绍 PQ 论文在 2011 年发表于 TPAMI,是针对欧式距离设计的一种 ANN 算法。当时,基于图的算法尚未提出,主流的算法包括:Euclidean Locality- 2024-01-29 数据库 > 读论文 #近似最近邻 #ANN #向量相似度检索 #K近邻 #索引