关系型(MySQL/PostgreSQL)vs 非关系型(Redis/MongoDB)
下面从核心差异 → 各数据库特点 → 选型对照 → 典型组合用法四个层面,系统对比 关系型(MySQL / PostgreSQL) 与 非关系型(Redis / MongoDB)。 一、核心差异一览表 维度关系型(MySQL / PostgreSQL)非关系型(Redis / MongoDB)数据模型表(行 + 列),强 SchemaRedis:K…
I/O 模型(阻塞/非阻塞/多路复用)
I/O 模型是操作系统处理“等待数据 + 拷贝数据”这两个阶段的不同策略,核心区别在于进程/线程在哪个阶段被卡住。下面按经典分类讲清楚,顺带把常见误解一次理清。 一、I/O 的两个阶段(必须先懂) 一次网络 I/O(比如 recv)通常分两步: 等待数据就绪:内核等待网卡收到数据,放入内核缓冲区 数据拷贝:内核把数据从内核缓冲区拷到用户缓冲区 不同…
CPU 调度算法
CPU 调度算法是操作系统决定“下一个该让哪个进程/线程占用 CPU”的核心机制,目标是在吞吐量、响应时间、公平性、周转时间之间做权衡。下面按经典到现代、单核到多核的脉络系统梳理。 一、基础概念先对齐 抢占式 vs 非抢占式 非抢占:进程主动放弃 CPU(阻塞、结束)才调度 抢占:时间片用完或更高优先级到来,强行切走 核心评价指标 周转时间(Tur…
死锁
死锁(Deadlock)是并发系统中多个进程/线程因互相持有对方所需资源且不释放,导致全体永久阻塞、无法继续推进的状态。 四个必要条件(Coffman 条件) 必须同时满足才会死锁,破任一即可避免: 互斥:资源只能被一个占用(如锁、打印机) 占有且等待:持有一资源的同时等待另一资源 不可抢占:已分配资源不能被强行夺走,只能主动释放 循环等待:A等B…
中断与系统调用
下面从概念、区别、联系、执行流程、常见误区几个层面,系统讲清楚「中断」与「系统调用」。 一、什么是中断(Interrupt) 1. 基本定义 中断是 CPU 对异步事件的一种响应机制: CPU 在执行当前程序时,被某个外部或内部事件“打断”,转去执行一段预先设定好的代码(中断处理程序),处理完后再回来继续执行原来的程序。 一句话:中断 = CPU …
文件系统
文件系统(File System)是 OS 用来在存储设备(磁盘、SSD、U盘等)上组织、存储、检索、保护和管理文件数据的一套机制与数据结构集合。它介于“裸块设备”和“用户/应用程序”之间,把物理扇区抽象成“目录—文件—字节流”的层次视图。 核心职责 命名与寻址:把人类可读的路径(/home/user/a.txt)映射到物理块地址。 空间管理:分配…
虚拟内存
虚拟内存是操作系统把磁盘空间临时当作内存用的机制,核心目的是让程序能用到比物理内存(RAM)更大的地址空间,同时隔离进程、简化内存管理。 它到底怎么工作 每个进程拿到的是独立的虚拟地址空间,CPU 通过 MMU(内存管理单元)把虚拟地址翻译成物理地址。 数据按页(通常 4KB)管理,正在用的页放物理内存,不常用的页换出(swap)到磁盘的页面文件/…