跳到主要内容
SUN / 笔记
← 全部文章

操作系统面试速记

从求职材料中拆出的通用知识,覆盖进程、线程、协程、IPC 与死锁。

进程和线程区别

项目 进程 线程
定义 资源分配单位 CPU调度单位
地址空间 独立 共享
创建开销 大 小
切换开销 大 小
通信 IPC 共享内存

协程

协程是 用户态线程。

特点:

  • 由程序调度
  • 非抢占式

协程 vs 线程

项目 协程 线程
调度 用户态 操作系统
切换开销 极小 较大
上下文 少 多
并发能力 高 较低

协程优势

  • 切换成本低
  • 可以创建大量协程
  • 适合高并发 IO

常见应用:

  • 网络服务器
  • 高并发框架

进程通信方式

常见 IPC:

管道

  • 匿名管道
  • 命名管道

特点:

  • 半双工

消息队列

特点:

  • 按消息传递

共享内存

特点:

  • 速度最快

信号

特点:

  • 异步通知

Socket

特点:

  • 可以跨主机通信

共享内存优势

共享内存是 最快的 IPC。

原因:

其他 IPC:

text
用户态 → 内核 → 用户态

共享内存:

text
直接访问

优点:

  • 无需数据复制
  • 速度最快

缺点:

  • 需要同步机制

信号进行进程同步

信号是 异步通知机制。

常见信号:

text
SIGINT
SIGTERM
SIGKILL

同步方式:

  1. 进程注册信号处理函数
  2. 收到信号
  3. 执行处理逻辑

信号常用于:

  • 终止进程
  • 通知事件

死锁

死锁定义

多个进程互相等待资源,导致永远无法执行。


死锁产生条件

必须同时满足:

  1. 互斥
  2. 占有并等待
  3. 不可抢占
  4. 循环等待

解决方法

预防

破坏四个条件之一。

例如:

  • 一次申请所有资源

避免

动态判断资源分配。

例如:

银行家算法。


检测与恢复

系统检测死锁并终止进程。


银行家算法

银行家算法用于 死锁避免。

思想:

系统只有在 安全状态 时才分配资源。


核心概念

最大需求

进程最多需要多少资源。

已分配

当前已占资源。

剩余需求

text
need = max - allocation

安全状态

如果存在一个 安全序列

例如:

text
P1 → P3 → P2

所有进程都能完成。

系统就是安全的。


相关笔记

相关文章

第六章作业 →操作系统 →第四章作业 →