计算机基础-面试-OS-1
操作系统基础
用户态-内核态: 1. 系统调用 2. 中断 3. 异常
进程与线程
线程同步的方式: 1. 互斥锁 2. 信号量 3. 读写锁 4. 屏障 5. 事件,通知
操作系统进程状态 1. 创建 2. 就绪 3. 等待 4. 运行 5. 终止 注意,Java中等待有两种,而把就绪与运行合并为 runnable 了
进程间通信方式 1. 管道/匿名管道:在磁盘中 2. 有名管道 3. 消息队列:通信数据先进先出,但是可以随机读取 4. 信号 用于通知事件 5. 信号量,计数器,用于同步 6. 共享内存 7. 套接字:CS架构中
进程调度算法: 1. 先来先服务 2. 短作业优先 3. 时间片轮转 4. 优先级调度 5. 多级反馈队列调度算法
僵尸进程:子进程终止,但是父进程没有调用获取紫禁城信息,紫禁城的PCB仍然存在。 孤儿进程:父进程死了,但是子进程还在运行,一般是因为父进程意外终止,没能及时调用 wait 或者 waitpid 导致的。操作系统会将孤儿进程的父进程设置为 init,进程号1,统一回收。
死锁
死锁: 1. 互斥 2. 占有并等待 3. 非抢占 4. 循环等待
预防: - 破坏互斥,一般不可行 - 破坏非抢占:剥夺式调度算法,一般用于贮存或者处理器,会导致资源利用率下降 - 破坏 占有等待:静态分配,一次性分配好 - 破环循环等待:层次分配,只能申请更高层次的资源。
避免: 银行家算法: 每个进程维护 需求矩阵M,已经分配矩阵A,还需要矩阵N 每次尝试将资源分配给某个进程,之后执行安全性算法,判断分配后是否在安全性状态。是否存在一个安全序列
检测 进程资源分配图:方框表示资源,进程采用圆圈。 每次找到及不阻塞又不独立的进程,消除,归还资源,重复,检查是否能消除所有的额边。
解除 重启系统 撤销所有死锁进程 逐个撤销 抢占资源
内存
外部碎片:没分配,分配不出去。 内部碎片:已经分配,但是无法使用
连续内存 非连续内存管理 1. 页式 2. 段式 3. 段页式 减少外部碎片,同时拥有段式共享与保护的特性
虚拟内存,逻辑化的物理内存
程序采用虚拟内存的虚拟地址
CPU给出逻辑地址,通过MMU进行欸村地址转换为物理地址。
多级页表:页表开销太大,每次没必要存入所有的页表。
页缺失: 硬件页缺失:物理内存中没有对应的物理页,也就是还没从磁盘里面读进来。 软件性:物理内存有,但是虚拟也与页表的映射没建立。 如果直接访问无效地址,那就是无效缺页错误。
页面置换算法: 最佳置换:现实情况不太可能 先进先出,比较差。频繁换出,Belady现象。随着分配的页面数增加,但是缺页率反而上升的情况。 最近最久未使用 最少使用 时钟页面置换:最近没用的
因为 LRU 存储使用频率高的,FIFO 存储后来的页
文件系统
硬链接:inode节点 软链接:文件路径、快捷方式
磁盘调度算法: 先来先服务 最短寻道时间优先 扫描 村换扫面 LOOK CLOOK