进程同步的实现机制(通用6篇)
班 学 号:193121 指导教师:袁国斌
中国地质大学计算机学院 2013年 12 月 4 日 操作系统课程实验报告 实习题目:基于Windows进程互斥实现机制
【需求规格说明】
基于Microsoft Visual Studio环境的多线程编程验证互斥的原理,理解多线程编程中关键元素的定义与使用,通过使用Semaphore,mutex等控制元素,实现对生产者消费者模型的真实模拟。函数的功能与实现自己定义。
【算法设计】
(1)设计思想:
通过输入生产者消费者数量信息,以及缓冲区大小、循环次数来实现对生产者消费者模型的真实模拟。当缓冲区Buffer为空时,等待生产者生产,消费者停止消费;当缓冲区Buffer为满时,等待消费者消费,生产者停止生产。
(2)设计表示:
用Buffer_Size 定义缓冲区大小 用变量Thread[]数组来存储线程
使用函数调用ProducerPrintf()来输出生产的情况 使用函数调用ConsumerPrintf()来输出正在消费的情况 通过如下同步对象实现互斥:
设一个互斥量Mutex,实现生产者在查询和保留缓冲区的下一个空位置时进行互斥。
设置Semaphore信号量数组表示相应产品已经生产,实现生产者与消费者之间的同步。同时,用表示空缓冲区树木的信号量semephore指示是否存在空位置,实现类似的同步,以便开始下一个产品的生产。 设置临界区对象数组Critical实现每个缓冲区上消费者之间的互斥
(3)详细设计表示:
主要过程:
1.主函数
2.输入并读取消费者生产者数量信息 3.输入缓冲区大小及循环操作次数
4.创建生产线程和消费线程完成线程相关同步对象的初始化 5.创建线程,模拟生产者和消费者 6.等待所有线程结束 7.程序结束
消费者线程:
1.有无消费请求?有,则继续,无,则结束 2.进入临界区(请求同一产品的消费者之间互斥)3.消费产品,并判断是否应该释放产品所占缓冲区 4.退出临界区 5.结束消费者线程
生产者线程:
1.存在空缓冲区?有,则继续;无,则阻塞退出 2.进入临界区(请求同一产品的生产者之间互斥)3.在缓冲区中为本线程产品分配空间 4.退出临界区
5.写入产品到分配的缓冲区空间中 6.结束生产者线程
【调试报告】、【附录】
#include
int NUM=0;//定义缓冲区中产品数量的变量 int P_NUM=1;//生产次数计数
int C_NUM=1;//消费次数计数 int times=0;//循环次数
int Buffer_Size=0;//定义缓冲区大小的变量
HANDLE Mutex;//互斥信号量
HANDLE FullSemaphore;//当缓冲区满是使生产者等待 HANDLE EmptySemaphore;//当缓冲区空时使消费者等待 HANDLE Thread[N];//存储线程的数组
DWORD WINAPI producer(LPVOID);DWORD WINAPI consumer(LPVOID);DWORD Producer_ID[N/2];DWORD Consumer_ID[N/2];
void ProducerPrintf();//输出生产的情况 void ConsumerPrintf();//输出正在消费的情况
void main(){ int i=1;int P_thread=0,C_thread=0;//定义线程变量
int choice=0;printf(“t*****************************************n”);printf(“t*t欢迎进入P-C进程调度系统 *n”);printf(“t*t
1、进入模拟调度 *n”);printf(“t*t 0、退出本系统 *n”);printf(“t*****************************************n”);printf(“tt请选择:”);
//创建生产线程和消费线程 for(i=0;i
//创建信号量
Mutex=CreateMutex(NULL,FALSE,NULL);FullSemaphore=CreateSemaphore(NULL,Buffer_Size-1,Buffer_Size-1,NULL);EmptySemaphore=CreateSemaphore(NULL,0,Buffer_Size,NULL);WaitForMultipleObjects(P_thread+C_thread,Thread,TRUE,INFINITE);//while(P_NUM printf(“tt4、请输入循环操作次数:”);break;} DWORD WINAPI producer(LPVOID lpParameter){ } DWORD WINAPI consumer(LPVOID lpParameter){ } void ProducerPrintf(){ int i=0;{ if(P_NUM<=times)NUM++;printf(“n生产者正在生产n”); for(i=1;i<=NUM;i++) if(P_NUM==P_NUM-NUM+i)printf(“(%d)”,P_NUM-NUM+i);printf(“%d ”,P_NUM-NUM+i);else printf(“ <-n”);while(C_NUM } return 0;WaitForSingleObject(EmptySemaphore,INFINITE);WaitForSingleObject(Mutex,INFINITE);ConsumerPrintf();Sleep(500);ReleaseMutex(Mutex);ReleaseSemaphore(FullSemaphore,1,NULL);while(P_NUM } return 0;WaitForSingleObject(FullSemaphore,INFINITE);WaitForSingleObject(Mutex,INFINITE);ProducerPrintf();Sleep(500);//设置延迟时间 ReleaseMutex(Mutex);//释放互斥信号量 ReleaseSemaphore(EmptySemaphore,1,NULL);//释放信号量 } } P_NUM++;} void ConsumerPrintf(){ } int i=0;{ NUM--;printf(“n消费者正在消费n”);for(i=0;i<=NUM;i++) 关键词:进程管理,线程管理,被动监视,主动汇报,异常监测 0 引言 随着国内电网的快速发展[1,2], 对电网的安全运行提出了越来越高的要求, 作为电网监视、控制、调度的核心, 电网调度的重要性日益体现[3,4], 电网调度控制系统运行的稳定性、可靠性对电网的安全运行影响极大[5]。电网调度控制系统[6]包括SCADA、PAS、AGC等各类应用, 每一类应用由互相协作、耦合紧密的一组进程构成。电网调度控制系统运行过程中, 进程可能会出现异常退出、停滞等故障, 如果不及时发现和处理, 会影响整个系统的正常运行, 甚至会导致运行安全事故。电网调度控制系统亟需一套进程守护机制, 来监护不同重要程度的进程, 兼顾重要进程中的线程, 同时对异常退出、停滞进程及时重启, 确保电网调度控制系统稳定运行。 本文提出了基于被动监视和主动汇报的高效进程守护机制, 通过被动监视方法来检测进程异常退出的情况, 采用主动汇报来检测线程异常和进程停滞情况, 能够跨平台地支持进程管理, 同时能够监护关键线程。 有学者研究了基于/proc文件系统的进程监护方案[7], 通过/proc文件系统来监视进程的信息, 该方案能够监视HP true64、IBM AIX、LINUX、Solaris等操作系统下的进程。但是由于HPUX操作系统不支持/proc文件系统, 该方案无法对HPUX系统下的进程进行监控, 该方案不具备普遍性。有学者研究了基于进程配置表的方案[8], 通过进程展示命令ps获取运行进程列表, 然后将运行进程列表和静态配置进程列表比较, 来监视进程是否运行。这种方法每检测一个进程, 就需要调用ps命令, 并遍历所有运行进程, 算法的时间开销是O (n) , 性能较低, 而且无法检测进程停滞的情况。文献9提出的基于FIFO的主动检测机制[9], 能够检测进程停滞状态, 但是进程守护进程和每个被监护进程之间必须建立一条有名管道, 当系统新增一个进程后, 有名管道需对应增加, 即需要重新修改进程守护进程或者修改配置文件, 可扩展性不强。随着多线程技术[10]的发展, 智能电网调度控制系统中大量的进程采用多线程方式来实现, 但是上述文献中的进程管理技术均未提及对线程的监视和管理。 1 系统对进程守护机制的需求 进程守护机制为确保电网调度控制系统中各个进程安全稳定运行, 必须满足如下需求: (1) 进程状态检测 进程守护机制要能够实时地检测进程的运行状态, 并及时识别进程处于运行、退出、停滞等状态。 (2) 故障恢复 电网调度控制系统的安全性非常重要, 当进程出现故障后, 需及时将进程从故障状态恢复到正常运行状态。 (3) 线程监视 电网调度控制系统有大量的后台服务和关键业务采用多线程实现, 进程守护机制要能够对这些线程进行监控。当关键线程出现故障或者退出, 进程守护机制能够及时感知, 并通过重启进程的方式来恢复进程的运行状态。 (4) 实时性 进程状态的变化需要实时感知, 进程故障情况下需要实时处理, 及时纠正, 确保电网调度控制功能的连续和稳定。 (5) 跨平台 电网调度控制系统通常运行在LINUX、AIX、HPUX、WINDOWS、Solaris等主流操作系统环境中, 因此进程守护机制必须支持这些主流操作系统平台。 (6) 可扩展性 电网调度控制系统的功能在日益发展, 各个应用随时会增加新的进程以提供更全面的服务, 因此进程守护机制应该具备可扩展性, 确保新进程能在线增加, 并能被及时监视和管理。 2 进程守护机制的体系架构 进程守护机制的体系架构如图1所示, 它分为数据层、监护层、应用层三个层次。其中, 数据层和监护层是进程守护进程的核心, 应用层调用平台层接口注册进程信息, 进而接受进程监护机制的管理。下文以实体代指进程或者线程。 如图1所示, 数据层主要包括配置参数、实体注册信息和实体运行状态信息。配置参数包括监视间隔、进程启动次数。实体注册信息包含了所有实体的注册信息, 是进程守护进程监视和管理实体的载体。实体运行状态信息记录了实体状态发生变化时的运行信息。 监护层的功能包括实体状态监测功能、实体控制功能、日志功能、告警功能、历史记录存储功能。实体状态监测功能包括进程监视和线程监视, 即周期性的监视实体运行状态, 及时发现实体处于退出或者停滞状态;实体控制功能在实体出现退出、停滞状态时, 能够重启实体;日志、告警功能将异常信息写入日志以及发出告警。进程状态存储功能记录实体运行时的状态变化记录, 以供用户了解一段时间内的系统运行状况。 应用层的功能包括实体注册、实体汇报、实体退出和进程状态展示、历史状态查询。实体注册是实体向进程守护进程提交其注册信息, 以便让进程守护进程对其监护;实体汇报是实体周期性的向进程守护进程汇报, 表示其未运行停滞;实体退出是实体向守护进程报告注销信息, 不再接受守护进程的监护;进程状态展示功能实时地展示当前时间内各个实体的运行状态;历史状态查询功能支持查看任意时间内任意节点上的任意进程的运行状态。 3 进程守护机制的关键技术 为了满足系统对进程守护机制的需求, 进程守护机制的设计和实现采用了如下关键技术: 3.1 实体注册技术 实体注册就是被管理实体向进程守护进程提交其基本信息。这些实体信息包括:实体所属的态, 应用, 进程注册名, 线程注册名, 进程ID, 进程启动命令, 刷新时间。实体注册信息是进程守护的基础, 进程守护机制根据进程ID可以判断其实体是否异常退出, 根据刷新时间可以判断实体是否停滞。 实体注册技术还可以满足进程守护机制的可扩展性。当新的实体完成注册后, 进程守护进程可以根据其注册信息对其进行监护, 而不需要修改进程守护进程的功能或者配置文件。 3.2 进程状态监测技术 进程的状态主要包括进程运行、进程退出和进程停滞。进程状态检测通常采用进程展示命令ps来匹配进程启动名。这种方法效率低, 而且无法检测进程停滞的情况。进程守护机制使用被动监视的方法来检测进程运行、进程退出, 通过主动汇报的方法来感知进程停滞。 进程守护机制使用进程注册功能, 将进程的注册名、进程ID (PID) 记录到实体信息区域中。进程守护程序通过对实体信息区中每个进程发送询问信号 (UNIX/LINUX) 或者查看进程句柄 (WINDOWS) , 确定其是否退出。同时, 进程守护机制提供主动汇报功能。进程需要周期性地向进程守护进程主动汇报, 如果进程守护进程发现某个进程没有在规定的时间内及时汇报, 就确定其停滞。 由于被动监视采用发送询问信号或者查看句柄的方式, 使得进程状态检测的时间代价为O (1) , 满足了进程守护机制的实时性要求。同时, 这种监测进程状态的方法适用于UNIX/LINUX/WINDOWS系统, 满足了支持跨平台的需求。 3.3 基于主动汇报的线程异常监测技术 线程异常检测技术也可以通过被动监视的方法, 即每个进程具备线程管理功能, 主线程通过向其它线程发送询问信号的方式来监视其它线程。但是, 这种方法实现复杂, 功能冗余高。进程守护机制采用自动汇报方法, 将线程管理功能集中到进程守护进程中。线程周期性地向进程守护进程汇报, 如果进程守护进程发现线程没有在规定时间内及时汇报, 则判断其异常。 3.4 进程启停技术 当实体退出时, 需要启动进程;当实体停滞时, 需要先停止进程然后启动进程。进程启停技术主要根据实体注册信息进行。停止进程时, 守护进程根据实体的进程ID, 向其发送停止信号;启动进程时, 守护进程根据实体注册信息中的启动命令将进程启动。 4 进程守护机制的实现原理 4.1 实体注册和汇报 图2展示了进程守护机制的实现原理。如图所示, 系统中运行的实体在开始执行时需要向守护进程进行注册, 实体的注册信息将会记录到实体信息区内。 被动监视实体只需要注册;主动汇报实体除了注册, 还需要周期性地向守护进程汇报。主动汇报实体在汇报时需要提交执行周期 (T) , 以供进程守护进程判断其是否停滞。进程守护进程将其执行周期的2倍作为超时阈值, 即进程守护进程发现实体在2*T之内未汇报, 则认为其停滞。 如果实体不需要守护进程进行监视, 可以报告退出, 这样守护进程将不再监视和管理它。 4.2 进程守护实现 图2中进程守护进程通过遍历实体信息对每个实体进行监视, 如果被动监视实体异常退出或者主动汇报实体未及时汇报, 进程守护进程将重启实体, 确保实体的持续运行。 如果多次重启实体失败, 进程守护进程会判定实体故障。如果该故障实体是关键实体, 进程守护进程将应用切换到其它节点上运行, 确保系统的稳定运行。 同时, 守护进程监测到实体的运行状态发生变化时, 将实体的运行状态记录到商用库中, 以供用户查询和分析。 4.3 守护进程的监护实现 除了进程守护进程, 图2中还存在管理守护进程的进程。管理守护进程的进程只监控守护进程, 当守护进程异常退出时, 管理守护进程的进程将重启守护进程。同样, 管理守护进程的进程也接受守护进程的监护, 两个进程通过互相守护, 确保了进程守护机制的鲁棒性。 5 性能测试 进程守护机制的正确性主要包括实体异常是否发现和异常实体是否重启;性能主要体现在实时性上。本文主要从实体异常发现时间、实体异常恢复时间两个方面介绍性能测试。 5.1 实体异常的发现时间 在测试中, 进程的异常退出, 通过杀掉进程的方式来模拟。进程的停滞, 通过测试程序不汇报来模拟。线程的退出, 通过线程运行一段时间后自动退出来模拟。线程的停滞, 通过线程不汇报来模拟。表1展示了实体在异常退出、停滞等异常情况下的异常发现时间。 第1项是进程被动监测, 只要进程退出, 进程守护进程就能够立刻发现, 异常发现时间是毫秒级的;第2, 3, 4项是主动监测, 即实体如果没有在超时阈值 (2*T) 向守护进程汇报, 则守护进程会认为其停滞或者退出, 以上主动监测实体的异常发现时间也是毫秒级的。 从以上结果可以发现, 实体被动监测的异常发现时间是毫秒级的, 实体主动监视的异常发现时间最小是毫秒级的, 最大也是和实体的执行周期是同一个数量级的, 能够满足系统对进程守护机制实时性的要求。 5.2 实体异常恢复时间 实体异常恢复时间是实体退出或者停滞, 到实体被重启所花费的时间。该测试值通过实体异常发现时刻和实体重新注册时刻的时间差来计算。 表2展示了实体异常恢复的测试结果。从中可以发现, 实体异常恢复是毫秒级的, 满足了系统异常恢复的实时性要求。 6 结语 本文详细介绍和讨论了基于被动监视和主动汇报的线程级的进程守护机制。该机制通过被动监视和主动汇报相结合的方式来监测进程、线程的运行状态;当进程、线程出现异常时, 能够强制恢复进程到正常运行状态。该机制支持各种主流的操作系统平台, 支持线程管理, 实时性高, 已经广泛应用于国、网、省、地、县各级调度自动化系统, 有力保障了电网调度控制系统的安全稳定运行, 进而保障了大电网的安全。 参考文献 [1]肖世杰.构建中国智能电网技术思考[J].电力系统自动化, 2009 (9) . [2]胡学浩.智能电网——未来电网的发展态势[J].电网技术, 2009 (14) . [3]辛耀中.新世纪电网调度自动化技术发展趋势[J].电网技术, 2001 (12) . [4]WU F F, KHOSROW M, BOSE A.Power system control centers:past, present, and future[J].Proeedings of the IEEE, 2005 (11) . [5]张强, 张伯明, 李鹏.智能电网调度控制架构和概念发展述评[J].电力自动化设备, 2010 (12) . [6]严胜, 姚建国, 杨志宏, 等.智能电网调度关键技术[J].电力建设, 2009 (9) . [7]胡术.UNIX平台下进程定位与运行监控的实现[J].计算机应用, 2008 (28) . [8]万涛.信息系统进程监控[J].宝钢技术, 2010 (6) . [9]王伯天, 廖建新, 王纯, 等.UNIX环境下两种进程守护机制的比较分析[J].计算机系统应用, 2007 (10) . [10]David R.Butenhof.POSIX多线程程序设计[M].北京:中国电力出版社, 2013. 摘 要: 本文针对操作系统教学中的重点和难点——进程同步的学习,提出一个完整的进程同步教学模型。首先通过生活中的例子理解概念;其次通过游戏理解进程同步机制;最后通过教学模型实现进程同步的应用。通过在实际中的应用,该解决进程同步问题的思路和模型证明是有效的。 关键词: 进程同步 共享资源 相互合作 教学模型 P、V操作 操作系统是计算机系统中的核心软件之一,现代计算机离不开操作系统。操作系统课程是计算机应用人员深入了解和使用计算机的必备知识,是进行系统软件开发的理论基础,也是计算机科学与技术专业的一门理论性较强的主干课程,很多学校都将该门课程作为重点课程建设。因此,提高该门课程的教学质量对于培养合格的计算机专业人员是至关重要的,如何学好操作系统是每个教师学生所关心的。 长期以来,许多院校的师生都反映操作系统的课程看起来比较容易,但在学习过程中感觉枯燥、难讲、难学,尤其是进程同步方面的知识,是整个操作系统教学中的重点和难点,往往学完整个操作系统课程还是不理解、不会解决进程同步问题。很多教师在这方面都进行了探索。牛欣源[1]为进程同步问题构建了一个较通用的设计实现模型,主要分为三个方面:(1)分析独占资源的资源管理,利用信号量及其P、V操作实现资源管理;(2)利用资源管理基本方式,构建能够描述同步、互斥问题的模型;(3)应用该模型,解决经典同步案例。王文磊等[2]讨论了经典进程同步问题的研究与实现,并实现了多线程下的进程同步。笔者根据自身及整个教学团队多年的教学、教改经验,提出了一整套利用信号量机制解决进程同步问题的思路、模型,为教师提供了便利,减轻了初学者的负担。 一、通过生活实例理解进程同步的概念 在解决进程同步问题之前,首先要明确一个概念:进程同步。汤小丹[3]等在《计算机操作系统(第三版)》关于进程同步的描述:进程同步的主要任务是对多个相关进程在执行次序上进行协调,以使并发执行的诸进程之间能有效地共享资源和相互合作,从而使程序的执行具有可再现性。从以上定义可以看出,进程同步解决的是进程间的执行次序问题,目的是使各进程能有效地共享资源和相互合作。衍伸看,进程同步问题中存在两类问题:同步和互斥。同步是由于相互合作而产生的,互斥是因为共享资源而产生的。解决了同步和互斥,就解决了进程同步问题。 但是,由于操作系统本身的抽象性,学生理解同步和互斥并不是一件容易的事情,尤其是同步。将抽象变为具体,理解起来就容易得多。在实际教学中,我们会将现实生活中与学生关系密切的事件作为例子,帮助大家理解概念。对于同步,由于体现的是相互合作进程之间的关系,可以运动会中的接力比赛为例,第一棒的学生发令枪一响,按照各自的速度向前奔跑,而第二棒的学生也想早点跑,但没有接到棒之前,只能等待,只要接到棒,就可以按照自己的速度想跑多快就跑多快。在这个过程中既体现了相互合作学生(进程)之间的次序问题,又体现了进程的异步性。同步的提出就是为了解决进程执行过程中的异步性。第二棒的学生不管跑多快,他受到第一个学生的制约,即直接制约关系。同步进程的执行是有固定次序的,必须区分先后。不管什么时间执行,都必须按照既定的次序。 对于互斥,是由于共享资源而产生的,相对说好理解。但为了后面进程同步的应用,也可以举个实例。例如,学生宿舍共用水龙头的问题。水龙头属于临界资源,一段时间只允许一个同学(进程)访问。但是,对水龙头的使用是没有固定次序的,只要保证一段时间内只有一个同学(进程)使用就可以。在某个同学使用的过程中,其他同学可以SLEEP(或BLOCK)(同步进制中的忙则等待),不需要不断地看别人用完了没有,等别人用完可以将他WAKEUP。而且,当一个人用完后要让给别人,不能锁起来(同步机制中的空闲让进)。使用水龙头的学生尽量快,不要等到上课了还有学生没洗(同步进制中的有限等待)。如果一个同学在洗的过程中被人叫走,那么水龙头要让给别人。(同步机制中的让权等待)。这个例子因为非常贴近生活,学生可以在生活中注意观察、体会,以加深对互斥和进程同步的理解。 通过上面的与同学关系密切的生活片段,可以让学生更深刻地理解进程同步,同时理解相关的概念。最后总结:互斥是一种特殊的同步,虽没有固定的执行次序,但一旦某个进程使用临界资源,其他进程必须等待。同步是有固定次序的。 二、通过游戏理解进程同步机制 这里仍然以经典的进程同步机制—信号量机制讲起。 信号量本身不难理解,我们可以将它与生活中的红绿灯(信号灯)联系起来,红灯停,绿灯行。但是,在应用信号量的过程中,许多学生还是难以理解进程同步中的停和行是怎么回事,是如何控制的。枯燥的讲解不如做游戏掌握得快。为此,我们设计了一个课堂游戏帮助大家理解信号量的应用,以体验进程执行中的“停”和“行”。 游戏设置:(1)放苹果和取苹果的同学各一组,每组各三人(相当于两组进程);(2)两个空盒子,每个只能放一个苹果(相当于临界资源,可以认为是包含多个缓冲区的缓冲池);(3)一个S,用于取放苹果的同学互斥访问盒子,两个S1,用于控制放苹果的,两个S2,用于控制取苹果的;(4)初始状态:两个S1放在放苹果的一方的桌子上,两个S2放在盒子里,S放在另一张桌子上。 规则:(1)放苹果的学生必须先拿到一张S1后再去拿S,两张都拿到才能放苹果,其中任何一张拿不到都需要等(阻塞);(2)取苹果的学生必须先拿到一张S2再去拿S,两张都拿到才能取苹果,其中任何一张拿不到都需要等(阻塞);(3)放苹果的学生每次放完苹果将S1放到相应的盒子上,并将S放回原处,同时将该盒子上原有的S2放到取苹果的同学一端;(4)取苹果的学生每次取完苹果将S2放到相应的盒子上,并将S放回原处,同时将该盒子上原有的S1放到放苹果的同学一端;(5)在取放苹果的过程中,每个学生按照自己的速度向前行(体现并发进程的异步性)。 在这个游戏中,必须先放苹果才能取苹果(可以取苹果的S2初始放在盒子里),体现了进程之间的合作(同步);对盒子的访问必须先拿到S,一段时间只有一个学生能拿到,体现了对临界资源的互斥访问。另外,在游戏中还体现出当同步信号量和互斥信号量同时出现时,要先同步(先拿S1),后互斥(再拿S),以免死锁。 通过上述游戏,学生很容易理解信号量的使用,并进一步理解了进程的同步和互斥。该游戏可以多玩几次,每次完成后作为奖励将苹果送给参与的学生。 三、通过进程同步模型解决进程同步的应用 通过前面的讲解,同学们对进程同步的相关概念已经有了深入的了解,但是实际应用起来还是觉着无从下手。为此我们在实践的基础上建立了一个利用信号量机制解决进程同步问题的模型,通过这个模型,学生可以比较容易地实现进程同步的应用,对初学者有帮助。具体模型包括: (一)描述进程的执行过程。 这一步比较简单,可以用自然语言描述,也可以用伪代码描述。 (二)分析进程间的相关性。 进程同步所关注的是相关进程间的执行次序问题,进程间没有关系的动作,或者说属于进程自己的行为,不需要加以协调。同时,分析进程间哪些动作具有相关性,也是后面分析进程间存在哪些制约关系及将P、V操作放到合适位置的基础。 (三)分析相关进程存在的关系,定义信号量。 这一步需要分析相关进程之间存在的关系,根据关系定义信号量并给出信号量的初值。 1.分析进程间的关系。相关进程之间存在着两种关系:因相互合作而产生的直接制约关系和因共享资源而产生的间接制约关系。直接制约即同步,间接制约即互斥。那么,在具体的问题中,我们就从这两种关系入手,看看问题中到底存在着相互合作还是共享资源,或者二者兼有。判断相关进程之间是否存在着共享资源相对比较简单,也比较明显。只要这类资源是进程竞争的对象,就是共享资源,例如同宿舍同学对水龙头的竞争。 对于因相互合作而产生的直接制约关系,即同步,各进程之间一定存在着固定的执行次序,可分为两种情况。一种为简单的同步,即进程中的相关动作之间只存在简单的先后次序关系,可以通过前驱图来描述,谁在前驱位置,谁在后继位置一目了然。例如运动会中的接力赛。第二种为较复杂的同步,各进程间相关动作彼此影响,互相制约。这一过程通常是循环的过程。例如取放苹果的过程,取苹果受放苹果的制约,放苹果受取苹果的制约。 2.定义信号量。根据上述分析,对于因共享资源而产生的互斥,有几类资源就设置几个相应的信号量;对于因相互合作而产生的同步,对应在前驱图中,存在几对前驱关系,就设置几个信号量;对于比较复杂的前驱关系,除了上面设置的信号量之外,还要考虑处于前驱位置的动作的执行条件,即设置相应的信号量控制前驱位置的执行。需要注意的是,设置信号量时要明确指出信号量的物理含义。 3.定义信号量的初值。初值即信号量在问题中的初始状态的值,这里问题的初始状态是关键。信号量的初值可分为三类:1,0,n。1代表临界资源,0表示简单的前后次序,n表示需要n个这类的资源。如果是临界资源,初值为1,但如果问题中有多个同样的临界资源,初值即为相应的个数,例如三个打印机,信号量的初值即为3。如果问题中是描述简单的前驱关系(相互合作)的,信号量初值固定为0;对于复杂的前驱关系,控制前驱动作执行的信号量初值通常为资源的数量。 (四)将P、V操作放在合适的位置。 这是信号量的应用中较难的一个步骤,尤其是P操作的位置,如果不当,或者不能实现相互合作进程之间的同步或对临界资源的互斥访问,更严重的会造成死锁。 需要注意的是,P、V操作必须成对出现,有一个P操作就有一个V操作。当进程中涉及多个P操作的时候,要注意执行顺序。若同时出现关于同步的P操作和关于互斥的P操作,则同步P操作放在互斥P操作之前前面;执行V操作虽然不会造成死锁,在进程中的两个V操作的位置一般不需特别注意,但V操作的顺序可能会延迟进程的推进,因此在使用完互斥信号量后要及时执行相应的V操作。关于同步的P、V操作要放在不同的进程中,关于互斥的P、V操作要放在同一进程中。 对于互斥,只要在每个进程中访问临界资源之前加上相应的P操作即可,访问完加上相应的V操作;对于同步,由于可以用前驱图表示,那么在前驱图中后继位置的语句之前加上相应的P操作,而在前驱位置的语句之后加上V操作。 简单来说,进程中想控制哪条(或哪几条)语句就在之前加上P操作。这里的控制包括互斥进程对共享资源的访问控制及合作进程对执行的先后次序的控制。当一个进程中某个动作要执行的时候,只要需要判断能不能执行,就在之前加上P操作,由P操作帮助进程判断。 四、总结与展望 本文主要介绍了操作系统中课程中的一个重点和难点—进程同步的学习思路和解决问题的模型,学生使用该模型后,对相关概念的理解更深刻,利用信号量机制解决进程同步问题也有章可循。因为进程同步问题比较难懂,即使概念理解了应用起来也觉得较难,所以在介绍的过程中除了按上述步骤进行外,还可将该模型应用于现实生活中比较有趣或很贴近生活的例子。这样,学生在理解和掌握操作系统原理中的一些重要而抽象的概念和难点问题时就变得容易,也增加学习的乐趣。当然,进程同步毕竟是个难点,需要多做练习,在练习的过程中进一步升华。这种基于实例的教学方法可推广到操作系统的其他知识的学习中。 参考文献: [1]牛欣源.进程同步的资源管理模型构建与应用[J].计算机技术与发展,2010(6). [2]王文磊,徐汀荣.经典进程同步问题的研究与实现[J].计算机工程与设计,2006(12). 1 信号量的透彻理解 信号量:用于表示资源数目或请求使用某一资源的进程数, 以下用S代表信号量。信号量S是一整数, 当S大于等于零时代表可以使用资源的数量, 当S小于零时表示正在等待使用该临界区的进程数。牢记信号量的值要么是可用资源数 (S≥0) , 要么代表等待使用该资源的进程数 (S<0) 。信号量按用途可分为两种:公用信号量和私有信号量。公用信号量, 初值通常为1, 用于实现进程互斥。私有信号量, 初值通常为0或正整数 (代表可用资源数) , 多用于并发进程同步。给出信号量定义后, 多举例讲解信号量初值代表的含义, 这样有助于学生对进程同步及互斥关系的确定。 2 同步与互斥 进程互斥是指多个进程不能同时使用同一资源。进程同步指多个合作进程为了完成同一个任务, 使得一个进程的执行依赖于另一个进程的消息, 它们相互合作、相互等待, 使得各进程按一定的速度执行的过程称为进程间的同步。讲解进程关系时多举例说明, 进程互斥主要是因为两个或多个进程要竞争使用独享资源, 如:几个同学去图书馆借同一本书、交叉路口抢车道、争抢篮板球等;进程同步多指两个进程间需要交互信息, 协调才能完成, 如:4*100接力赛、工厂的流水线等。 3 PV原语操作 P原语操作功能:对S减1;若S减1后仍大于等于零, 则进程继续执行;若S减1后小于零, 则该进程被阻塞插入到等待S信号量使用的队列中, 然后转入进程调度。V原语操作功能:对S加1;若加1后S大于零, 进程继续执行;若S小于等于零, 则从该信号的等待队列中唤醒一个等待进程, 然后继续执行原进程或转进程调度。在讲解PV操作时反复对PV原语功能进行详细讲解, 结合实例让学生理解好P操作的作用及进程遇到P操作时可能的运行轨迹, 学生只有理解好P操作的功能, 才能很好地用PV操作来实现进程的同步与互斥。 4 进程间同步与互斥的确定 具有同步关系的进程间信号量是私有信号量, 且对同一个信号量的PV操作不在一个进程中;互斥关系所用信号量是公共信号量, 对同一个信号量的PV操作在一个进程中。经过多年总结, 作者按如下思路讲解, 学生听起来更容易理解和接受, 应用起来也不会觉得无从下手。归纳如下: (1) 先对问题进行分析, 确定共有几个进程? (2) 进程间所用信号量有几个? (3) 确定信号量初值; (4) 分析进程间的同步与互斥关系; (5) 进程同步与互斥的PV原语实现 例1:过独木桥问题。 依照解题思路分析共有两类进程, 从A端到B端的进程P1和从B端到A端的进程P2, 临界资源是独木桥, 信号量S=1 (当桥上没人时才可以通过, 只能一次一个人过) , 进程间属于互斥关系, PV操作实现如下: 例2:问题描述:计算进程和打印进程共同使用同一缓冲区Buf。计算进程反复地把每次计算结果放入Buf中, 而打印进程则把计算进程每次放入Buf中的数据通过打印机打印输出。Buf中每次可以存放一个数据。在这个问题中, (1) 有两个进程:计算进程;打印进程; (2) 当计算进程还未把新数据放入Buf之前, 要取数据的打印进程需等待;当打印进程还未把数据取走之前, 要放数据的计算进程需等待。因此, 在计算进程要往Buf中放数据前, 先要检测一下Buf中的数据是否已被打印进程取走;在放完数据后.要通知打印进程:Buf中已有数据。打印进程在从Buf中取数据之前, 要先检测一下Buf中是否有数据;在取走数据之后, 还要通知计算进程:数据已被取走。所以需要两个私有信号量:一个表示Buf状态empty, 一个表示是否有数据full。 (3) 经过分析, empty代表可用的缓冲区资源, 初值为l;full代表可用的数据资源 (计算进程计算出的数据) , 初值为0。 (4) 进程间有信息交互, 所以属于同步关系。 (5) 用PV原语描述如下: 计算进程:计算数据;P (empty) ;放入缓冲区;V (full) ;打印进程:P (full) ;从缓冲区中取数据;V (empty) ;打印数据。 这个问题是一个典型的进程同步问题:两个进程相互合作完成一个任务, 一个进程的执行受到另一进程的影响。在该问题中也暗含有互斥的关系:一个进程在放 (取) 数据时, 不允许另一进程同时进行。但在该问题题中不需要设置互斥信号量, 这是因为缓冲区或数据的数量最多是l, 在执行P操作时, 已起到了互斥的作用。如果缓冲区数是n (n>1) 时, 增设一个互斥信号量S=1, 而empty初值设置成n, 在放、取数据前对S进行P操作, 放、取数据后对S进行V操作即可。 在长期的教学经验中, 笔者按上述思路进行讲解进程同步问题, 循序渐进, 边分析边讲解, 再通过课堂讨论, 让学生自己分析解决问题的办法, 自己发现算法中存在的问题, 同时让学生课下练习大量题目, 课堂再讲解对照, 发现错误所在。通过这样的方法, 提高了学生学习的兴趣, 提高了课堂教学质量。 结束语 进程管理是操作系统课程中非常重要的一部分内容, 也是老师难讲、学生难学的内容。进程同步的概念较抽象, 学生掌握起来难度很大。在教学中作者用本文所述的教学方法, 重点强调信号量、P操作的含义, 从简单问题开始, 循序渐进举例分析, 使学生在分析中逐渐掌握进程同步与互斥问题的实现思路。实践证明:采用该方法, 教学效果良好, 学生更容易理解进程间的关系, 也很有兴趣学习该部分内容, 在遇到类似问题时, 能够具有了一定的解题思路, 教学效果良好。 摘要:对于操作系统课程, 进程同步与互斥的内容是其中一个重点和难点。进程概念较为抽象, 进程同步与互斥更是老师难讲、学生难学的内容。作者经过多年的教学总结, 在该文中阐述了如何用P、V原语实现进程同步与互斥的教学方法, 按该方法从易到难, 循序渐进, 边分析边讲解, 教学效果良好, 学生能够更好地理解进程同步与互斥关系的实现。 关键词:操作系统,进程,同步与互斥,原语,教学方法 参考文献 [1]张尧学, 史美林.计算机操作系统教程 (第3版) [M].北京:清华大学出版社, 2006. 关键词:牧区,工业化,城镇化,信息化,畜牧业现代化,机制设计 党的十七届五中全会提出,工业化、城镇化深入发展中同步推进农业现代化; 十八大提出,推动信息化和工业化深度融合、工业化和城镇化良性互动、城镇化和农业现代化相互协调,促进工业化、信息化、城镇化、农业现代化同步发展。工业化是一个国家或地区发展的动态目标和过程,是经济发展不可逾越的历史阶段,是衡量一个国家或地区发达水平的主要标志,也是欠发达地区摆脱落后状态、实现现代化的必由之路[1]。城镇化有利于产业结构调整,实现农村牧区经济的快速发展,有利于乡镇企业转型升级,吸收农村富余劳动力,避免向大中城市盲目流转,促进城乡协调发展[2]。加快发展畜牧业现代化,已成为实现农业结构调整、农村牧区发展、农牧民增收的战略性举措[3]。就“四化”的关系来讲,工业化创造供给,城镇化创造需求,工业化、城镇化带动和装备农业现代化,农业现代化为工业化、城镇化提供支撑和保障,而信息化推进其他“三化”发展[4]。 内蒙古牧区在工业化、城镇化、信息化和畜牧业现代化发展中存在着不协调、不衔接、不均衡、无秩序等问题。工业化、城镇化速度远快于信息化和畜牧业现代化速度,形成极不协调发展局面; 工业化和信息化融合度较低,而信息化水平停留在电话、电视普及水平,互联网和现代市场信息网络建设程度极低; 畜牧业发展未能形成产供销一体化经营格局,各自分离导致有生产无加工、有加工无市场状态时而发生; 制度环境未能彻底摆脱二元经济社会结构模式。要顺利推进牧区“四化”同步发展,就必须因地制宜地设计其发展机制,解决“四化”当中存在的问题。因此, 本文在分析内蒙古牧区“四化”同步发展中存在问题的基础上设计牧区“四化”同步发展的机制,最后提出牧区“四化”同步发展各项机制的保障措施。 1“四化”同步发展的内涵与机制设计理论 1.1“四化”同步发展的内涵 推进“四化”同步发展,不仅兼顾三次产业的协同发展,还能兼顾社会结构的演进。工业化、城镇化、 信息化和畜牧业现代化相互影响、相辅相成,既存在自我循环演进,又依靠良性互动的关系。“四化”同步发展中工业化起着主导作用,是城镇化的产业支撑,能够对畜牧业现代化提供现代管理手段和先进的物质装备; 城镇化是工业化的有效载体,能够促进农牧业产业结构优化升级; 畜牧业现代化是城镇化和工业化的坚实基础,为城镇化发展创造市场条件和要素条件,也能带动城镇规模的扩张和发展; 信息化对其他“三化”起着相互沟通作用,与工业化、城镇化和畜牧业现代化深度融合,从而提高生产力水平,合理配置生产要素,促进社会经济转型升级。 1.2机制设计理论 由于社会经济各个子系统之间难以自发进行组织协调,虽然各子系统可以进行自组协同,但通过自组系统从混沌变成有序结构[5],需要制度环境的改善或创新制度的过程。在“四化”同步发展过程中设计科学有效的机制,使外部干预转化成自组协同,从而有效地促进“四化”同步发展。机制设计理论是博弈论和社会选择理论的综合运用,对于任意给定的一个经济或社会目标,在自由选择、自愿交换、信息不完全等分散化决策条件下,设计出一个经济机制,使经济活动参与者的个人利益和设计者既定的目标一致。 机制设计通常会涉及信息效率和激励相容两个方面的问题,从信息的观点出发,把经济机制看成是信息交换和调整的过程,并针对想要实现的既定社会目标,寻求既能实现此目标,又要信息成本尽可能小的设计过程。 2牧区“四化”同步发展中存在问题 2.1不协调问题 从牧区“四化”发展总体看,工业化水平高于城镇化,信息化和畜牧业现代化水平远远落后于工业化和城镇化。2011年全盟9个牧业旗( 市) 中锡林浩特市和苏尼特右旗城镇化程度高于工业化,分别是85. 9% 和73. 1% ; 正镶白旗城镇化和工业化基本一致,分别是42. 6% 和42. 2% ,其他6个旗城镇化水平普遍落后于工业化水平( 见图1) 。其中锡林浩特市因城市历史较长,是全盟政治、经济、文化中心而信息化水平较高,但所辖苏木镇的信息化程度仍然较低。 近年来发展产业化经营和专业化生产,除锡林浩特市附近建设的现代畜牧业示范基地外其他牧区依然以传统畜牧业为主,在生产资料、市场对应、农畜产品加工、经营组织、理念等方面正向现代化方向迈进。同时,值得一提的是各旗( 市) 之间的发展水平不均等, 特别是“四化”同步发展极不协调。 牧区“四化”同步发展不协调主要表现在生产总值比例重工业高于畜牧业和服务业,2010年三次产业( 畜牧业 ∶ 重工业 ∶ 服务业) 产值平均 比例为10. 1∶67. 4∶22. 5,工业产值比重是畜牧业的6倍多, 服务业的3倍,三次产业产值之间的差距较大。从就业结构来看,最低的畜牧业就业人员的比例占据48. 6% ,而生产总值最多的工业就业率仅12. 5% ,服务业为38. 9% ,就业结构与产业结构极不协调。 2.2非衔接问题 城镇化是工业化的必然趋势,城镇化和工业化带动农牧业现代化,城镇化和工业化吸收农村牧区剩余劳动力,为农牧业提供现代物质装备和现代管理技术; 信息化和工业化深度融合是提升工业经济的有效途径,信息化在其他“三化”中普遍得到提升和应用, 从而实现生产、加工、流通领域以及全社会的现代化。 信息化主要体现在信息产业发展和经济社会的现代信息的利用程度,牧区信息产业发展滞后,应用现代信息手段提升和优化畜牧业经营落后,主要表现在投入力度不足,信息化的理解只停留在“三电”普及而不是在社会经济中普遍利用,见图2。 2.3无秩序问题 牧区推进工业化中地方政府片面追求GDP总量的增加,热衷于矿产资源开发,盲目上项目、扩大开发力度,轻视民族工业发展和基础产业的改造升级。同时,重视大型企业集团的引进,忽略了非公有制经济发展,从而阻碍了当地居民的就业机会和中小工业企业的发展。城镇建设热衷于规模扩大和新区建设,轻视城镇功能的建设和发展,信息化和工业化、城镇化进程未能深度融合,出现工业化和畜牧业现代化极度分离状态。 3建立“四化”同步发展机制 3.1协调机制 在“四化”同步发展中往往是速度最慢的一方制约和限制着其他“三化”发展的整体速度。而现代社会中信息化标志着社会经济的高度发展,信息化应在工业、农牧业各领域得到普及和应用。牧区应加大工业反哺农牧业力度,增强矿工业和重工业的社会责任心,提高当地牧民的就业机率和开采地区的基础设施建设能力,从而减轻地方政府的城镇化、信息化和畜牧业现代化建设中财力不足短板。同时,合理安排城镇人口聚集和非公有制中小企业发展,提高就业机率和第三产业发展。 3.2衔接机制 新型工业化和城镇化道路是解决“四化”之间不衔接问题的有效途径。牧区通过制定一系列与“四化”直接的联结机制,着力发展畜产品加工业,把工业化纳入畜牧业现代化重要环节,提升和优化畜牧业产业结构,实现工业化带动畜牧业现代化。城镇化进程中解决进城务工牧民的市民化问题和各项社会福利机制减少草地资源日趋紧缺,促进畜牧业规模化、 专业化经营,大力改进牧区信息设施建设,建立牧区信息化平台,通过畜产品加工业的推进把工业化和信息化深度融合,提高牧区信息化程度。 3.3导向机制 导向机制主要体现在政府部门规划、协调、示范 “四化”同步发展。正确认识“四化”发展的关系和相互作用,合理规划工业化和城镇化,协调四者之间的发展速度和协作关系,引领牧区“四化”同步发展。 导向机制首先要建立政策研究机构,进行动态监测和监督机制; 其次制定有关地方性政策促使工业化对其他“三化”带动机制; 第三因地制宜发展工业化和城镇化,提高信息化和畜牧业现代化全范围推进机制。 4机制保障措施 4.1转变发展方式 贯彻落实新型工业化和城镇化战略措施,转变发展方式,通过新型工业化带动畜牧业现代化和信息化,提高就业率和牧民收入。新型城镇化应以人为本,把进城务工牧民纳入城市体系,促进城镇化。 4.2加大投入力度 加大财政投入力度和转移支付机制,促进牧区畜牧业现代化和信息化建设是解决当前牧区“四化”不协调发展的重要途径。畜牧业现代化需要工业化提供的现代装备和技术管理,信息化需要资金扶持实现信息网络基础设施建设和利用技术的普及。只有牧区信息化和畜牧业现代化建设进一步提升,才能顺利实现“四化”同步发展。 4.3坚持因地制宜 一、河南省贫困地区分布状况 河南省是全国第一农业大省, 也是贫困人口大省, 截止到2013年底, 还有820多万农村贫困人口, 占全国农村贫困人口的十分之一, 占全省农村人口近10%。河南省贫困地区主要集中在大别山区、伏牛山区、太行深山区、滩区、沉陷区和限制开发的生态保护区等, 这些地区物质资源匮乏, 产业比较单一, 生态环境恶化, 公共服务落后, 交通也不便利, 不少地方粮食自给不足, 很多农民整体素质不高, 无一技之长。按照国家贫困标准, 河南省扶贫开发重点县共53个, 其中国家连片特殊困难县26个, 国家级扶贫开发工作重点县12个, 省定扶贫开发工作重点县15个。 二、中原经济区建设对扶贫开发机制的新要求 当前河南省发展已进入全面推进中原经济区建设、加快中原崛起振兴河南的新时期, 在这个新的历史时期, 面对新的挑战, 河南省也在不断创新扶贫开发机制, 2012年建立了中原经济区濮范台扶贫开发综合试验区, 参照国家对贫困山区集中连片的做法, 对濮范台试验区进行综合开发, 在政策上积极扶持, 体制上不断创新, 让这一试验区成为了河南省集中连片扶贫开发的先行区。扶贫开发改善了人居生态环境、加快贫困地区的脱贫致富、缩小与其他地区的发展差距、提高自我发展能力。但总体来说, 河南省贫困地区的扶贫任务还比较重, 扶持的力度和方法也存在着一些缺陷, 扶贫体制机制不够完善。目前河南省还没有建立统一的扶贫信息系统, 因此还一些贫困人口没有得到有针对性的帮助, 帮扶还存在盲点。对贫困地区领导的考核指标也存在不科学现象, 考核指标大多放在如何提高地区的GDP上, 而没有真正的把扶贫放在第一位, 甚至只作表面文章, 工作没有落到实处。扶贫开发资金的监管力度不够, 资金使用效果低, 还缺少对金融风险的补偿机制和信用担保机制, 另外动员社会力量参与扶贫的激励措施还不到位, 引导方法也存在不足。针对以上存在的问题, 要拓展新的思路, 树立新的观念, 积极探索有鲜明时代特征的、更加有效的扶贫开发新机制, 更好的促进河南经济社会的发展。 三、创新扶贫开发机制, 把扶贫开发事业融入中原经济区建设大局 1. 建立精准扶贫机制。 精准扶贫机制是扶贫开发工作的一个基础性问题, 也是目前扶贫工作中一个非常突出的问题, 建立精准扶贫机制第一要对扶贫对象建立统一的认定标准, 以统计部门统计的农村贫困发生率为基础, 由统计、民政和扶贫三个部门组成贫困人口的认定小组, 认真核定各地区的贫困人口, 认定标准要与国际接轨, 提高绝对贫困标准, 制定实行相对贫困标准。第二要建立精准识别机制。要充分发挥大学生村官、“三支一扶”工作人员的作用, 以县为单位, 通过民主评议、公告、入户调查等方法有效的识别出贫困人口, 提高识别的透明度。第三是要实施有差别化的扶贫政策。扶贫对象的家庭情况不尽相同, 为防止一刀切的扶贫政策措施将贫困人口排除在外, 要有针对性的制定具体的帮扶措施, 并指定帮扶责任人进行精准帮扶。最后要建立贫困人口的动态管理机制, 要建立贫困对象的信息网络系统, 将贫困人口的家庭资料, 生活状况和动态情况等信息输入系统, 尽快完成全省贫困户的建档立卡工作, 对贫困人口及时调整, 实行动态管理、分类指导, 防止扶贫错位, 使一些脱贫的及时退出, 应扶贫的对象及时纳入。建立统一、科学、及时、覆盖全部贫困人口的扶贫统计监测信息系统, 对贫困人口进行精准动态管理。 2. 改革扶贫考核机制。 改革扶贫考核机制重点是要调整考核的指标体系, 要由考核贫困地区的生产总值转向考核贫困地区的工作成效, 把提高贫困人口的生活水平和减少贫困人口的数量作为考核的主要指标。对实现减贫和率先达到小康县标准的党政主要负责人要优先提拔使用, 对一些有违规违纪或扶贫开发任务完成较差的要给予批评并依法追究有关人员的责任, 对一些减贫效果突出的县乡实行项目资金奖励, 同时要健全干部驻村帮扶机制, 把减贫的成效和驻村干部的政绩考核相结合, 把贫困地区干部的主要精力引导到扶贫开发上来。 3. 建立扶贫重点县动态退出机制。 建立重点县的动态退出机制, 首先要确定新的贫困程度指标体系, 指标体系除了考虑当地的经济发展程度外, 还要从社会文化事业发展水平、教育水平、健康情况等各方面综合考虑, 建立一套以经济收入指标为基础、数据来源真实可靠、权重分配合理的指标体系, 一些地方财力能够自己解决贫困人口问题的可考虑让其退出扶贫重点县。同时, 要设计一套反映县域贫困状况、经济发展水平和扶贫开发成效的动态监测体系, 在制定透明的退出条件和程序的基础上, 利用动态监测评估体系对现有重点县进行排序, 发展水平最高的县可以考虑先退出, 建立的指标体系以及重点县退出的程序要对外公开, 便于监督。动态监测体系一方面用于考核重点县的党政领导, 把提高贫困人口的生活水平和减少贫困人口的数量作为重点县主要考核指标。另一方面通过动态体系的监测, 可以保障国家扶贫资源投向最需要的地方。能够更加完善扶贫资源的分配, 使扶贫资源更多瞄准贫困村, 让真正的贫困群体得到扶持。 4. 完善扶贫资金管理机制。 扶贫资金涉及扶贫对象的切身利益, 要切实完善和加强对扶贫资金的管理工作, 第一要完善扶贫资金的投入管理机制, 争取中央和省财政的扶贫资金的投入, 建立财政扶贫资金的稳定增长机制。另外要以政策支持和优惠为重点吸引金融、社会企业和组织的资金投入, 积极探索扶贫投入的多元化机制, 充分发挥市场经济的作用, 有效的整合各种项目资金, 也可将各部门的专项资金与扶贫资金结合使用, 充分发挥扶贫效益。第二要完善扶贫投入资金的监管机制。首先要加强内部的监管机制, 各部门各级层要严格执行扶贫资金管理的制度, 对资金使用的情况要进行及时合理的评估, 同时要强化监管责任, 省、市两级要将工作重心转移到监管资金和项目的运行上, 而扶贫资金和项目的审批权原则上要下放到县, 对在扶贫资金使用过程中出现的各类违规违纪违法行为, 检察机关、审计和财政部门要严厉问责。另外要充分发挥社会监督的作用, 社会大众、受扶持的对象、媒体都可以成为监督扶贫资金的重要力量, 要建立县以上的扶贫资金信息平台, 公告公示各种扶贫项目资金的使用情况, 确保各项扶贫资金在阳光下运行, 加大使用的透明度。 5. 强化以整村推进扶贫为平台的扶贫资源整合机制。 整村推进一直是河南省扶贫开发工作的重点和基础性工作, 2014年河南省扶贫开发工作的一个目标任务就是对省内1000个贫困村实施整村推进, 这1000个贫困村中有纳入国家“十二五”规划的贫困村达300个左右, 要以整村推进扶贫为平台, 从各方面对扶贫资源进行整合。 【进程同步的实现机制】推荐阅读: 资本主义发展的历史进程05-25 我国外汇体制改革的进程10-20 高分子材料科学的发展进程06-17 县小康进程分析09-19 博客:专业化研究进程的展开-博客研究综述06-10 教育信息化进程中教师信息素养的提升09-17 医疗行业发展进程10-14 推进基层民主法治进程10-15 重庆城市化进程分析10-24 略谈中国城市化进程06-08进程同步的实现机制 篇2
进程同步的实现机制 篇3
进程同步与互斥的教学方法探讨 篇4
牧区“四化”同步发展的机制设计 篇5
进程同步的实现机制 篇6