文章目录
- 硬件结构
- CPU是如何执行程序的?
- 磁盘比内存慢几万倍?
- 如何写出让CPU跑得更快的代码?
- CPU缓存一致性
- 操作系统结构
- Linux内核 VS Winodws内核
- 内存管理
- 为什么要有虚拟内存?
- malloc是如何分配内存的?
- 内存满了,会发生什么?
- 在4G物理内存的机器上,申请了8G内存会怎么样?
- 如何便预读失效和缓存污染的问题?
- 深入理解Linux虚拟内存管理
- 深入理解Linux物理内存管理
- 进程管理
- 进程、线程基础知识
- 进程间有哪些通信方式?
- 多线程冲突了怎么办?
- 怎么避免死锁?
- 什么是悲观锁、乐观锁?
- 一个进程最多可以创建多少个线程?
- 线程崩溃了,进程也会崩溃吗?
- 调度算法
- 进程调度算法
- 内存页面置换算法
- 磁盘调度算法
- 文件系统
- 设备管理
- 网络系统
- Linux命令
- 学习心得
硬件结构
CPU是如何执行程序的?
图灵机的工作方式:
冯诺依曼模型:
内存:
存储数据的基本单位是字节byte。
CPU中央处理器:
32位CPU一次可以计算4个字节;
64位CPU一次可以计算8个字节;
总线:
地址总线
数据总线
控制总线
磁盘比内存慢几万倍?
如何写出让CPU跑得更快的代码?
CPU缓存一致性
操作系统结构
Linux内核 VS Winodws内核
内核:让内核作为应用连接硬件设备的桥梁,应用程序只需要关心与内核交互,不用关心硬件的细节。
内存管理
为什么要有虚拟内存?
malloc是如何分配内存的?
malloc() 分配的是虚拟内存。
内存满了,会发生什么?
在4G物理内存的机器上,申请了8G内存会怎么样?
日志里报错了 Out of memory,也就是发生 OOM(内存溢出错误)
如何便预读失效和缓存污染的问题?
LRU(Least recently used)算法
LRU 算法一般是用「链表」作为数据结构来实现的,链表头部的数据是最近使用的,而链表末尾的数据是最久没被使用的。那么,当空间不够了,就淘汰最久没被使用的节点,也就是链表末尾的数据,从而腾出内存空间。
Linux 是如何避免预读失效带来的影响?
MySQL 是如何避免预读失效带来的影响?
深入理解Linux虚拟内存管理
深入理解Linux物理内存管理
没看懂
进程管理
进程、线程基础知识
进程 Process
当我们运行这个可执行文件后,它会被装载到内存中,接着CPU会执行程序中的每一条指令,那么运行中的程序,就被成为进程。
线程 Tread
线程 是进程中的一条执行流程。
线程是调度的基本单位,而进程是资源拥有的基本单位。
进程间有哪些通信方式?
多线程冲突了怎么办?
怎么避免死锁?
什么是悲观锁、乐观锁?
一个进程最多可以创建多少个线程?
线程崩溃了,进程也会崩溃吗?
调度算法
进程调度算法
内存页面置换算法
磁盘调度算法
文件系统
文件系统的基本组成:
Linux最经典的一句话:一切皆文件。