操作系统相关原理

50 阅读2分钟

👆如题先画个饼,最近打算整理一下操作系统相关的知识,以操作系统 / 虚拟化为主要内容吧,也涉及一些编译器体系结构的知识。不得不说东西是真的多且杂,先写个目录放这里来提醒自己,但可能很难坚持下去并整理得完,预计内容涵盖以下几个方面:

1. Linux系统

1.1 内存管理

分为两部分来介绍虚拟内存 + 物理内存

虚拟内存:用户和内核的虚拟地址空间、VMA数据结构、malloc实现、mmap、sbrk

lazy-allocation、多级页表映射、大页等

物理内存:zone、page数据结构、内存模型、UMA/NUMA、伙伴系统、slab、水位线

内存碎片、内存迁移等

1.2 进程管理

一些概念说明:进程、线程、纤程、协程

fork、exec等系统调用、上下文切换、写时复制

内核调度器:CFS、EEVDF、DL、RT

组调度、负载跟踪、负载均衡、进程迁移和绑定

中断嵌套对调度的影响等

1.3 驱动程序

简单字符设备(I2C、tty、SPI等)、块设备(NVME、NBD)

网络设备(e1000)及其驱动

(平台)总线驱动模型、设备树、BSP、热插拔

中断上半部和下半部

设备节点、设备号、驱动程序与系统调用的关系

1.4 文件系统

superblock、inode、GPT、MBR、磁盘存储布局、硬链接、符号链接

page-cache、有名/匿名文件映射

虚拟文件系统VFS、ramdisk、基于内存的文件系统、网络文件系统、根文件系统

fat、ext2、ext4文件系统等

1.5 虚拟化

两类虚拟化:KVM + QEMU 和 Xen、Xvisor

完全的虚拟化、半虚拟化

CPU虚拟化、内存虚拟化、设备虚拟化

virtio、vfio、sriov等相关技术

影子页表、二级MMU映射(IOMMU/SMMU)、执行/异常级别

1.6 杂项

ELF格式、库函数、系统调用、RCU、同步原语、cgroup、docker、热启动kexec等

2. 体系结构

3. 编译器

写完目录感觉真的要写很久,随缘更新吧。