基础

什么是系统调用

用户态通过系统调用切换到内核态

系统调用的过程

Trap中断

进程和线程

进程 vs 线程

进程可以有多个线程;执行开销;是否相互独立;通信是否需要内核

线程同步方式

互斥锁、读写锁、信号量、屏障、事件

PCB

管理和跟踪进程的数据结构;包含:进程描述信息、调度信息、对资源的需求情况、文件信息、处理机状态信息

进程状态

创建状态、就绪状态、运行状态、阻塞状态、结束状态

进程状态图转换图

进程通信方式

管道/匿名管道(Pipes)(父子或兄弟进程,内存)

有名管道(Named Pipes)(任何进程、磁盘介质或者文件系统)、

信号(Signal)(通知接收进程某个事件已经发生)/

消息队列(具有特定的格式、存在于内核中)

信号量(计数器,控制访问共享资源的进程数量)

共享内存、

套接字

进程的调度算法

先到先服务调度算法、短作业优先的调度算法、时间片轮转调度算法、多级反馈队列调度算法、优先级调度算法

僵尸进程和孤儿进程

fork

僵尸进程:子进程终止->PCB仍存在->父进程没有wait waitpid

孤儿进程:父进程终止,子进程存在->init进程

死锁4个条件

资源互斥、非抢占、占有并等待、循环等待

解决死锁

预防:破坏互斥、非抢占;静态分配;层次分配

避免:银行家算法(预分配->看剩余资源能否满足某个进程->能的话假设已完成,继续流程,否则不安全

检测:资源分配图是否存在环路(必要条件)、拓扑排序

解除:逐个or全部结束死锁进程

内存管理

内存管理主要做的事情

内部内存碎片 vs 外部内存碎片

已分配未使用vs未分配不能使用

连续内存管理

块式管理->内存碎片;

伙伴系统:2的幂次;分配内存:找到内存块->一分为2;回收内存:合并

非连续内存管理

段式管理

页式管理

段页式管理机制:结合了段式管理和页式管理的一种内存管理机制,把物理内存先分成若干段,每个段又继续分成若干大小相等的页

虚拟内存

作用:隔离进程;提升物理内存利用率;简化内存管理;多个进程共享物理内存;提供更大的可使用内存空间

虚拟地址 vs 物理地址

MMU->地址翻译,依靠分段、分页或段页管理

分段

段表映射段号和物理地址;虚拟地址:段号+偏移量

分段机制下的地址翻译过程

分页

页表映射页号和物理页号;虚拟地址:页号+偏移量

多级页表

多级页表解决页表占用空间大的问题。2^20 vs 2^10 + 若干2^10(二级页表按需加载)

TLB

硬件缓存。查询TLB->查询页表

换页机制

内存不够->利用磁盘存储物理页

页缺失

已映射但未加载

硬性页缺失 vs 软性页缺失

页面置换算法

最佳页面置换算法、先进先出页面置换算法、最近最久未使用页面置换算法、最少使用页面置换算法、

分页机制 vs 分段机制

同:非连续内存管理,地址映射

区别:单位不同:大小是否固定;物理单位vs逻辑单位;是否存在外部或内部内存碎片;页表 vs 段表

局部性原理

文件系统

硬链接 vs 软链接

硬链接:索引节点

软链接:指向文件路径,可以跨越文件系统

磁盘调度算法

磁盘调度器

先来先服务算法、最短寻道时间优先算法、扫描算法、循环扫描算法、边扫描边观察算法、均衡循环扫描算法