关于进程
来源:互联网 发布:java http请求框架 编辑:程序博客网 时间:2024/06/06 02:59
创建进程
有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让生产者发现缓冲区满了
- 关于进程
- 关于进程
- 关于进程
- 关于进程
- 关于进程
- 关于进程
- 关于进程
- 关于进程
- 关于进程
- 关于进程和线程
- 关于进程和会话
- 关于进程的权限
- 关于进程wdfmgr.exe
- 关于进程wuauclt.exe
- 关于realsched.exe进程
- 关于linux 僵尸进程
- 关于linux 僵尸进程
- 关于僵尸进程
- 371. Sum of Two Integers
- 540. Single Element in a Sorted Array
- Linux-鸟菜-4-关机的正确姿势
- Java学习笔记33--ajax提交表单
- Eclipse将引用了第三方jar包的Java项目打包成jar文件的两种方法
- 关于进程
- Result Maps collection already contains value for Mapper.BaseResultMap错误原因
- SPOJ
- 图书管理系统2
- 2017第八届浪潮杯山东省赛 A.Return of the Nim 博弈
- HPU2016级暑期集训选拔赛 【题解】
- 从零开始学_JavaScript_系列(38)——对象的扩展(1)属性的简洁写法
- php设计模式之策略模式
- Kotlin 官方学习教程之可见性修饰符