并发性是进程的一个重要特征,既然是并发,那么,如何才能保证多个进程之间能够实现按照预定步骤完成操作呢?这就涉及到同步的问题,先不要纠结同步这个词是什么意思,可以暂时理解为保证并发进程的正确执行。
如果两个进程之间除了CPU时间片之外,没有任何交集,那么,可以理解为不存在同步的问题,因为它们之间无论怎么运行都不会影响对方的结果。但是,假设这两个进程都需要访问同一个资源,现在假定为一台打印机,两个进程同时使用该打印机,谁也不知道这两个进程的资源抢夺时间点,可能导致打印的结果出现混乱的情况。
同步的实质是对临界区访问的实现:
临界区入口
临界区;
临界区出口
1 软件实现手段
int turn=0;
...
while(turn!=0) do{};
turn=1;
临界区...
turn=0;
...
上述算法设置一个变量turn表示是否有进程正在占用临界区,如果turn=1,则临界区内有进程,只有当该进程释放临界区(即turn=0)时,其他进程才能进入临界区。
该算法存在一个问题:
当临界区内无进程,而且正好有2个以上的进程通过了turn==0的检测,则还是有多个进程进入了临界区,失去了临界区的意义。
2 Peterson算法
enter_region(i);
临界区;
leave_region(i);
当一个进程想进入临界区时,先调用enter_region函数,判断能否安全进入,不能则等待,当它从临界区退出后,调用leave_region函数,允许其他进程进入临界区。
存在的问题:
(1)忙等待
(2)编程复杂
分享到:
相关推荐
加深对并发协作进程同步与互斥概念的理解,观察和体验并发进程同步与互斥操作的效果,分析与研究经典进程同步与互斥问题的实际解决方案。了解Linux系统中IPC进程同步工具的用法,练习并发协作进程的同步与互斥操作的...
操作形同实验——进程同步和互斥 (1) 通过编写程序实现进程同步和互斥,掌握有关进程(线程)同步与互斥的原理,以及解决进程(线程)同步和互斥的算法,从而进一步巩固进程(线程)同步和互斥等有关的内容。 (2...
(1)了解操作系统进程同步的基本概念和准则。 (2)理解信号量机制及P、V操作含义。 (3)了解经典进程同步问题,掌握信号量方法解决进程同步问题的方法。 包括实验目的,截图,心得体会,代码
进程同步实验C语言代码
进程同步模拟设计——读者和写者问题 进程同步 报告书 操作系统 课程设计 读者和写者
有关于进程同步于互斥的C语言实现,希望对你们有帮助!
操作系统进程同步和互斥的实验报告。。。关于操作系统进程的同步与互斥问题的实验报告。
操作系统实验报告 北邮大三上 进程同步实验报告
操作系统实验报告_进程同步与互斥.doc
北邮操作系统第三次实验作业,进程同步。。C语言编写。。。windows环境下运行。。欢迎大家下载。。。↖(^ω^)↗。。附带实验报告哦。。亲
进程同步模拟设计--生产者和消费者问题 进程调度同步异步
进程同步(直接制约关系) 并发带来了异步性,有时需要进程同步解决异步问题 有的进程之间需要相互配合的完成工作,个进程的工作推进需要遵循一定的先后顺序 为完成某种任务而建立的两个或多个进程,这些进程...
操作系统课程设计 进程管理 进程同步与互斥 存储管理 内附ubuntu下调试成功的源码
这是一个利用信号量机制实现进程同步的模拟程序,如你有更好的方法或觉的我的可以修改欢迎交流学习。
这是操作系统的经典进程同步问题,这是源代码,大家通过源代码可以更清楚的了解进程同步问题,对读者与写者的问题也会有更深的认识
自己写的,不知道怎么样!大家看看吧。 是关于操作系统进程同步的问题,一般计算机系操作系统课程最后的大作业。 写的不好不要喷啊~!
进程同步,操作系统,C语言程序实验
共享内存,进程通信,进程同步 源代码 vs2005
这是我自己编写的一个进程同步中的经典问题——读者写者问题模拟程序,模拟了读者写者进程之间的同步机制,而且包含了并发执行、进程控制、阻塞、唤醒等问题,适合操作系统原理学习者,有助于对进程同步原理的理解。