关于进程

创建进程

有4种事件导致进程的创建:
1、系统初始化
2、有一个执行中的进程所调用的进程创建系统调用
3、用户自己创建进程
4、一个批处理作业的初始化
(fork)

进程的状态

1、运行态
2、就绪态
3、阻塞态

进程的实现

操作系统有一张进程表。每一项记录每个进程的各种信息。也称为进程控制块

进程间通信

1、竞争条件
两个或多个进程读写某个共享数据,而最后的结果取决进程运行的精确时序,称为竞争条件
2、临界区
(1)任何两个进程不能同时进入临界区
(2)不能使进程无限期等待进入临界区
(3)在临界区外的进程不能阻塞其他进程
3、忙等待的互斥
1、屏蔽中断
进程进入临界区即屏蔽中断,离开时打开中断,CPU只有发生中断时才会进行进程切换
2、锁变量
设一个共享锁,初始化为0,如果锁为0,进程可以进入临界区,进入后设置锁为1,其他进程无法进入,等其出来才把锁设0
3、严格轮换法
整型变量turn,初始化为0,用于记录轮到哪个进程进入临界区,turn为0,进程0可以进入临界区,出来后把turn设1,然后进程1可以进入临界区
这里写图片描述
4、Peterson解法
进程0调用enter_region,通过设置数组元素和将turn设置0,表示希望进入临界区,由于进程1不想进入临界区,所以enter _region很快返回,如果,进程1现在调用enter _region会挂起,直到进程0调用leave——region退出临界区
这里写图片描述
4、睡眠与唤醒
生产者-消费者模式
http://blog.csdn.net/jyxmust/article/details/56834219
5、信号量
用一个整型变量来累计唤醒次数,两个操作,down和up,down操作,信号量减1,up操作信号量加1
6、互斥量
互斥量是处于两态之一的变量:加锁和解锁,而就在表示,0表示解锁,其他值表示加锁,解锁状态,进程可以调用mutex_lock进入临界区,加锁则被阻塞

enter _region和mutex _lock的区别,前者进入临界区失败,则一直在重复测试(忙等待),后者会调用thread _yield将CPU放弃给另一个进程

7、管程
任一时刻管程只有一个活跃进程,互斥由编译器负责,只需知道所有临界区转换为管程过程,使用条件变量wait和signal让生产者发现缓冲区满了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值