- 进程通信
- 管道
- 普通管道PIPE :半双工,亲缘关系
- 命名管道FIFO :无关进程
- 不是文件,不属于文件系统,只存在内存中
- IPC
- 消息队列 : 具有特定优先级,可以随机查询按类读取,独立于进程
- 信号量 : 控制多个进程对共享资源访问,如果传递数据需要共共享内存,实现进程互斥,基于PV操作
- 信号signal
- 共享内存
- 套接字
- 管道
- 线程同步
- 线程:系统可识别的最小执行和调度单位,每个线程独自占用虚拟处理器,独自的寄存器组,指令计数器和处理器状态。共享同一地址空间,文件队列,内核资源。
- 线程通信
- 临界区 : 通过串行化访问公共资源
- 互斥量 :只有拥有互斥对象的线程能访问公共资源的权限
- 信号量 :控制有限数量的用户资源
- 事件 :通过通知操作保持多线程同步
- 锁机制
- 互斥锁: mutex,用于保证在任何时刻都只能由一个线程访问该对象,失败进入睡眠等待锁释放
- 读写锁:rwlock,允许多个线程读,同一时刻只能有一个线程写。
- 自旋锁:spinlock,任何时刻都只能由一个线程访问,失败不睡眠,等待释放
- RCU:read-copy-update,
- 进程线程区别
- 一个线程属于一个进程,反之多个
- 进程有独立的内存单元,多个线程共享进程内存
- 进程是资源分配最小单元,线程是cpu调度最小单元
- 创建撤销进程需要分配回收资源,切换也需要移动资源,开销大。线程切换只要设置少量寄存器内容,开销小。
- 线程共享地址空间,通信容易。
- 进程编程调试可靠性高,线程开销小,调试复杂
- 进程适应于多核多机,线程适应多核
- 系统内存
【面试】操作系统
最新推荐文章于 2022-01-17 22:33:57 发布