一. 进程概念
1 进程引入,程序顺序执行、并发执行定义和特点
程序的顺序执行---一个程序由若干程序段组成,而这些程序段的执行必须按照严格的先后次序顺序的执行
特点:顺序性,封闭性,执行结果可再现性
并发执行:一定时间内物理机器上有两个或两个以上的程序同处于开始运行但尚未结束的状态,并且次序不是事先确定
特点:失去程序的封闭性
程序与计算不在一一对应
并发执行的相互制约: 直接的相互制约关系----公共变量
间接的相互制约关系---资源共享
进程的引入:
操作系统特性 之一 并发和共享。要解决这些问题,程序的概念不能描述程序在内存的运行状态,引入新的概念 进程
2 与时间有关的错误:定义、誊抄实例
有关的错误 就是两个buffer情况下 ,copy put get操作的协调问题
3 进程状态 三个基本状态、状态变迁图
运行状态
就绪状态
等待状态
4 进程描述 pcb结构与作用、进程的组成、Unix进程控制块结构、Unix进程的组成
描述一个进程在各个不同时期所处的状态,与其他进程及系统资源的关系的数据结构成为进程控制块pcb
进程与pcb是一一对应的
pcb结构与作用
pcb是系统感知进程存在的唯一标志
进程控制块主要内容
1 进程标识符
2 进程当前状态
3 当前队列指针next
4总链队列指针all_q_next
进程的组成
1)进程控制块
2)程序与数据
二 进程控制
1 进程控制的功能
进程创建,撤销,阻塞,唤醒
改变优先级,调度进程,进程延迟
2 基本进程控制原语
创建原语 :create
撤销原语:
等待原语
唤醒原语
3 进程控制原语的主要功能及结构变化
描述一个进程在各个不同时期所处的状态,与其他进程及系统资源的关系的数据结构成为进程控制块pcb
进程与pcb是一一对应的
pcb结构与作用
pcb是系统感知进程存在的唯一标志
进程控制块主要内容
1 进程标识符
2 进程当前状态
3 当前队列指针next
4总链队列指针all_q_next
进程的组成
1)进程控制块
2)程序与数据
二 进程控制
1 进程控制的功能
进程创建,撤销,阻塞,唤醒
改变优先级,调度进程,进程延迟
2 基本进程控制原语
创建原语 :create
创建一个指定标识符的进程(形成该进程的进程控制块pcb)。
撤销原语:
撤销当前运行的进程。将该进程所占用的资源归还给父进程,从总链队列中摘除pcb结构,归还到pcb资源池,然后转进程调度程序。
等待原语
中止调用进程的执行,并加入到等待chan的等待队列中,最后使控制转向进程调度
唤醒原语
当进程等待的事件发生时,唤醒等待该事件的所有进程或等待该事件的首进程。
3 进程控制原语的主要功能及结构变化
三. 进程同步机构
1. 锁 上锁原语、开锁原语
锁:用变量w代表某种资源的状态,w称为锁
上锁 原语 lock
开锁原语 unlock
2 信号灯和p,v操作
信号灯是整型变量
p(s)不可分割原语,信号灯值减去1
v(s)不可分割原语,+1
锁:用变量w代表某种资源的状态,w称为锁
上锁 原语 lock
开锁原语 unlock
2 信号灯和p,v操作
信号灯是整型变量
信号灯是一个确定的二元组(s,q),s是一个具有
非负初值的整型变量,q是一个初始状态为空的队列。操作系统利用信号灯的值对并发进程和共享资源进行控制和管理。
v(s)不可分割原语,+1
四. 进程互斥
1. 临界资源
把一次只允许一个进程使用的资源
把一次只允许一个进程使用的资源
2. 临界区
每个进程访问临界资源的那段程序段
每个进程访问临界资源的那段程序段
3. 互斥
某一进程正在访问某一存储区域时,就不允许其他进程来读出或者修改存储区的内容,否则就会发生后果无法估计的错误
某一进程正在访问某一存储区域时,就不允许其他进程来读出或者修改存储区的内容,否则就会发生后果无法估计的错误
4. 用信号灯的P、V操作实现进程互斥
对于生产者进程 ;产生一个数据,进入缓冲区,必须检查是否已满,未满送入,并通知消费者否则等待
对于消费者进程:取数据,看缓冲区是否有数据可取,若有则取走一个数据,并通知生产者进程否则等待
五. 进程同步
1. 同步概念
并发进程在一些关键点上可能需要相互等待与互通信息
并发进程在一些关键点上可能需要相互等待与互通信息
2. 合作进程的执行次序
包括串行执行或并行,串并执行
包括串行执行或并行,串并执行
3. 共享缓冲区的合作进程的同步
必须遵循:cp把结果送入buffer ,然后iop才能从buffer里取,否则iop等待
iop从buffer中取走数据后,cp才能将新产生的数据送到buffer,否则必须等待
必须遵循:cp把结果送入buffer ,然后iop才能从buffer里取,否则iop等待
iop从buffer中取走数据后,cp才能将新产生的数据送到buffer,否则必须等待
4. 生产者-消费者问题
对于消费者进程:取数据,看缓冲区是否有数据可取,若有则取走一个数据,并通知生产者进程否则等待