基础
什么是系统调用
用户态通过系统调用切换到内核态
系统调用的过程
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 软链接
硬链接:索引节点
软链接:指向文件路径,可以跨越文件系统
磁盘调度算法
磁盘调度器
先来先服务算法、最短寻道时间优先算法、扫描算法、循环扫描算法、边扫描边观察算法、均衡循环扫描算法