中科大操作系统原理与实现课件6_Process_synchronizati.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:48 大小:258KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

中科大操作系统原理与实现课件6_Process_synchronizati.pdf

中科大操作系统原理与实现课件6_Process_synchronizati.pdf

预览

免费试读已结束,剩余 38 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

操作系统原理与设计第6章ProcesseSynchronization1(进程同步1)陈香兰中国科学技术大学计算机学院2009年10月28日......提纲BackgroundTheCritical-SectionProblemPeterson’sSolutionSynchronizationHardwareTestAndSetInstructionSwapInstructionSemaphores小结和作业......OutlineBackgroundTheCritical-SectionProblemPeterson’sSolutionSynchronizationHardwareTestAndSetInstructionSwapInstructionSemaphores小结和作业......allowframebreaksBackgroundITheprocessesarecooperatingwitheachotherdirectlyorindirectly.IIndependentprocesscannotaffectorbeaffectedbytheexecutionofanotherprocessICooperatingprocesscanaffectorbeaffectedbytheexecutionofanotherprocessIConcurrentaccesstoshareddatamayresultindatainconsistencyIforexample:printer,sharedvariables/tables/listsIMaintainingdataconsistencyrequiresmechanismstoensuretheorderlyexecutionofcooperatingprocesses......Producer-ConsumerProblemIParadigmforcooperatingprocesses,producerprocessproducesinformationthatisconsumedbyaconsumerprocessIunbounded-bufferplacesnopracticalplimitonthesizeofthebufferIbounded-bufferassumesthatthereisafixedbuffersize......Bounded-Buffer–Shared-MemorySolutionIISolutioniscorrect,butcanonlyuseBUFFERSIZE-1elementsIShareddata#defineBUFFERSIZE10typedefstructf...gitem;itembuffer[BUFFERSIZE];intin=0;intout=0;......Bounded-Buffer–Shared-MemorySolutionIIIInsert()Methodwhile(true)f/*Produceanitem*/while(((in+1)%BUFFERSIZE)==out);/*donothing–nofreebuffers*/buffer[in]=item;in=(in+1)%BUFFERSIZE;g......Bounded-Buffer–Shared-MemorySolutionIIIIRemove()Methodwhile(true)fwhile(in==out);//donothing–nothingtoconsume//removeanitemfromthebufferitem=buffer[out];out=(out+1)%BUFFERSIZE;returnitem;g......anothersolutionusingcountingvalueIISupposethatwewantedtoprovideasolutiontotheproducer-consumerproblemthatfillsallthebuffers(notBUFFERSIZE-1).Iusinganintegercountthatkeepstrackofthenumberoffullbuffers.IInitially,countissetto0.IincrementedbytheproducerafteritproducesanewbufferIan