操作系统_进程管理_进程的控制与同步
目录
1.进程控制的概念
2.进程的创建
3.进程间互斥与同步的概念
4.临界资源和临界区
5.同步机制应遵循的原则
6.信号量与P/V操作
7.生产者与消费者问题
1.进程控制的概念
进程由创建产生,由调度执行,由撤销消亡。
2.进程的创建
申请PCB空间,为新进程分配资源,把有关信息填入PCB,将PCB插入就绪队列中。
3.进程间互斥与同步的概念
因直接制约关系(各个程序段要求共享信息)而需要相互等待,相互合作,以达到各进程相互协调而执行的过程称为同步。
因间接制约关系(各个程序竞争使用同一个资源)而导致进程交替执行的过程称为互斥。
- 同步:多个进程按一定顺序执行;
- 互斥:多个进程在同一时刻只有一个进程能进入临界区。
4.临界资源和临界区
把某段时间只允许一个程序使用的资源称为临界资源。
把访问临界资源的代码段称为临界区。
5.同步机制应遵循的原则
空闲让进 忙则等待 有限等待 让权等待
6.信号量与P/V操作
信号量:表示临界资源可用的数目。
P/V操作:在信号量上定义了两个操作P原语和V原语。该信号量的值只能被P/V修改且不可被中断。
信号量(Semaphore)是一个整型变量,可以对其执行 down 和 up 操作,也就是常见的 P 和 V 操作。
- down : 如果信号量大于 0 ,执行 -1 操作;如果信号量等于 0,进程睡眠,等待信号量大于 0;
- up :对信号量执行 +1 操作,唤醒睡眠的进程让其完成 down 操作。
down 和 up 操作需要被设计成原语,不可分割,通常的做法是在执行这些操作的时候屏蔽中断。
如果信号量的取值只能为 0 或者 1,那么就成为了 互斥量(Mutex) ,0 表示临界区已经加锁,1 表示临界区解锁。
7.生产者与消费者问题
问题分析:
同步关系:直接制约关系。
当生产者速度大于消费者时,生产者会阻塞,等消费者消费后才能继续生产产品。
互斥关系:直接制约关系。
缓冲池中只能由消费者或生产者其中之一使用。
设变量:
设 mutex 公有信号量 初值为1 用于实现临界区互斥
设 empty 生产者私有信号量 初值为n 表示空缓冲区数目
设 full 生产者私有信号量 初值为0 表示满缓冲区数目
设 整型 i , j 分别为空缓冲区的头指针和满缓冲区的头指针
注:p操作顺序不可颠倒。
代码:
semaphore mutex = 1;
semaphore empty = n;
semaphore full = 0;
int i = 0;
int j = 0;
void P(){while(1){produce next product;p(empty);p(mutex);buf[i] = product;i=(i+1)%n;v(full);v(mutex);}
}
void C(){while(1){p(full);p(mutex);product = buf[j];j=(j+1)%n;v(empty);v(mutex);consume product;}
}
int main(){parbegin(p(),c());
}
操作系统_进程管理_进程的控制与同步相关推荐
- (王道408考研操作系统)第二章进程管理-第三节10:经典同步问题之哲学家进餐问题
本文接: (王道408考研操作系统)第二章进程管理-第三节6:经典同步问题之生产者与消费者问题 ((王道408考研操作系统)第二章进程管理-第三节7:经典同步问题之多生产者与多消费者问题 (王道408 ...
- (王道408考研操作系统)第二章进程管理-第三节8:经典同步问题之吸烟者问题
本文接: (王道408考研操作系统)第二章进程管理-第三节6:经典同步问题之生产者与消费者问题 ((王道408考研操作系统)第二章进程管理-第三节7:经典同步问题之多生产者与多消费者问题 文章目录 一 ...
- (王道408考研操作系统)第二章进程管理-第三节7:经典同步问题之多生产者与多消费者问题
注意:生产者与消费者问题Linux系统编程专栏有案例讲解 Linux系统编程39:多线程之基于阻塞队列生产者与消费者模型 Linux系统编程40:多线程之基于环形队列的生产者与消费者模型 本文接:(王 ...
- 广州大学2020操作系统实验一:进程管理与进程通信
相关资料 广州大学2020操作系统实验一:进程管理与进程通信 广州大学2020操作系统实验二:银行家算法 广州大学2020操作系统实验三:内存管理 广州大学2020操作系统实验四:文件系统 广州大学2 ...
- 【k8s】理解Docker容器的进程管理(PID1进程(容器内kill命令无法杀死)、进程信号处理、僵尸进程)
文章目录 概述 1. 容器的PID namespace(名空间) 2. 如何指明容器PID1进程 3. 进程信号处理 4. 孤儿进程与僵尸进程管理 5. 进程监控 6. 总结 参考 概述 简介: Do ...
- Linux进程管理:进程和线程基础知识
<Linux进程管理:进程和线程基础知识> <Linux-进程管理> <C语言进程的内存地址空间分配> <进程和线程模型> <(1)Linux进程 ...
- [转]QNX进程管理器-进程调度策略
如果你认为本系列文章对你有所帮助,请大家有钱的捧个钱场,点击此处赞助,赞助额0.1元起步,多少随意 声明:本文只用于个人学习交流,若不慎造成侵权,请及时联系我,立即予以改正 锋影 email:1741 ...
- 系统管理模块_部门管理_设计(映射)本模块中的所有实体并总结设计实体的技巧_懒加载异常问题_树状结构...
系统管理模块_部门管理_设计本模块中的所有实体并总结设计实体的技巧 设计实体流程 1,有几个实体? 一般是一组增删改查对应一个实体. 2,实体之间有什么关系? 一般是页面引用了其他的实体时,就表示与这 ...
- linux ps 进程组,linux进程管理(2)---进程的组织结构
一.目的 linux为了不同的进程管理目的,使用了不同的方法组织进程之间的关系,为了体现父子关系,使用了"树形"图:为了对同一信号量统一处理,使用了进程组:为了快速查找某个进程,使 ...
- Linux 进程管理之进程的终结
当一个进程终结时,内核必须释放掉它所占有的资源并把这一终结事件告知父进程. 进程的终结大部分都要靠 exit() 来完成的,最终的系统调用为 do_exit(). asmlinkage long sy ...
最新文章
- 免费获取验证码60秒倒计时
- Java:Random.nextInt()
- 游客显示的html代码,html5游客总数柱状图代码
- 使用 Swagger UI 与 Swashbuckle 创建 RESTful Web API 帮助文件
- SpringCloud-服务的消费者(rest+ribbon)
- mmap java_Java文件映射[Mmap]揭秘 | 学步园
- ubantu网络调试助手的安装以及打开
- Flutter 图片透明度(光暗程度)
- win7 共享计算机 网络密码怎么设置,Win7无线网络共享设置方法丨Win7无线网络共享设置方法图解...
- UE5 tiles 材质缩放平铺
- 泰山杯练习平台部分题目wp
- PMO和PM如何准备项目状态报告及进行项目进度汇报?【附项目状态表和进度跟踪表】
- 多元统计分析及R语言建模(第五版)——第3章多元数据的直观表示课后习题
- 计算机经典书籍电子书合集
- C语言程序设计期末考试A卷,C语言程序设计(B)期末考试A卷-试卷.doc
- 它来了!Flutter3.0新特性全接触
- L1-040. 最佳情侣身高差
- 【线性代数】正交向量与正交子空间
- Parsing error: No Babel config file detected for
- 转载-Android EventLog含义