/进程*/
背景:
- 没有OS之前,资源属于当前程序,只能单程序运行
- OS后,开始有多道程序设计
- 操作系统能够更好的管理资源
进程:
- 资源分配调度基本单位
- 保证程序正常运行
- 提升操作系统资源利用率
进程的实体:
- 标识符:区别进程
- 状态:进程状态
- 程序计数器:指向下条指令地址
- 内存指针:程序代码、进程数据相关指针
- 上下文数据:处理器存储的数据
- io状态信息:io操作所占用的文件列表
- 记账信息:cup时间、时钟数总和
进程控制块PCB:
- 描述控制进程运行数据结构
- 记录运行的信息
- 独立运行的基本单位
- 常驻内存
/进程与线程/
进程process:
- 有多个线程
- IPC通信
线程thread:
- 操作系统进行调度的最小单位
- 进程中实际的工作单位
- 并发多个线程,执行不同任务
- 线程共享进程资源,读写同一进程资源数据通信
进程五个状态
- 就绪状态:
分配到除CPU资源以外所有必要资源后
处于就绪状态的进程形成就绪队列 - 执行状态:
获取CPU
单处理机只有一个进程处于执行状态 - 阻塞状态:
放弃CPU的状态
多个阻塞进程形成阻塞队列 - 创建
分配PCB,插入就绪队列
拥有PCB,其他资源未就绪
fork函数接口创建进程 - 终止状态
系统清理,归还PCB
/进程同步/
- 消费者,生产者(多个)模型;
生产者往缓冲区生产产品,缓冲区+1
消费者取缓冲区取产品,缓冲区-1
操作缓冲区(3步):
临界资源
获取缓冲区数量到寄存器,寄存区增加数量,放回缓冲区
并发执行可能出错:导致数据不一致
- 哲学家问题:
拿筷子问题:死锁
原因:彼此间没有通信
- 同步:
控制进程间资源使用次序,进程相互合作
临界资源:
共享资源,但是无法被多个线程共同访问的共享资源;
依据操作系统同步机制等待占用资源释放,才能竞争使用
原则:
空闲让进:资源无占用,允许使用
忙则等待:资源占用,进程等待
有限等待;保证有限等待时间能够使用资源
让权等待:等待时,让出CPU
消息队列、共享存储、信号量
线程同步
互斥量、读写锁、自旋锁、条件变量