 بسم اللہ الرحمن الرحیم آج ہم موڈیول 157 دسکس کریں گے موڈیول 157 ہے about synchronization performance impact ہم نے دیکھا ہے ہم نے اب تک کہی کسم کے synchronization کے objects خبر کیے ہیں ہم نے دیکھا ہے کہ synchronization اور mutual experience کیسے انفورس کی جاتی ہے اگر نہیں انفورس کرتے تو کسی طرح کے problems اکر ہوتے ہیں Of course synchronization اور mutual experience کو انفورس کرنا لازمی ہے کیوں لازمی ہے اگر اس کو نہیں آپ انفورس کریں گے تو جب concurrent execution ہوگی تو آپ کے پاس جو results ہیں وہ انxpected کسم کے آتے ہیں concurrent execution کرنے کیوں ضروری ہے concurrent execution سے ہی زیادہ optimization ملتی ہے بطر faster results آپ کو ملتے ہیں اور response بھی increase ہوتا ہے اگر ہم operating system کے لحاظ سے بات کریں تو جو process کا response ہے وہ بھی بہتر ہو جاتا ہے تو اس لیے ہمیں concurrency بھی چاہیے اور ہمیں concurrency control بھی چاہیے کیونکہ ہم چاہتے ہیں کہ results جو ہے وہ صحیح ہیں دونوں چیزیں ہمارے لیے ضروری ہیں جو ہم concurrency control کو انفورس کرتے ہیں تو اس کی وجہ سے performance کی سرطن ہمیں de-gradation بھی ملتی ہے کہیں رہے کہیں ہمیں نظر آتا ہے کہ performance جو ہے وہ compromise ہوتی ہے اگر ہمیں concurrency کی وجہ سے یا اس concurrency control کی وجہ سے تو اس کی کیا وجہ ہاتے ہیں performance کیوں وہ de-grade ہوتی ہے اس کی کیا reasons ہیں ان reasons کو ہم دیسکس کریں گے پھرسلی جب بھی آپ locking کا استعمال کرتے ہیں یا کسی weight construct کا استعمال کرتے ہیں یا interlocked functions کا استعمال کرتے ہیں تو یہ سارے functions جو ہے یہ time consuming functions یہ time consume کریں گے CPU کا time consuming کریں گے اس سے of course overhead ہے یہ آپ کے program کا part نہیں ہے آپ کے logic کا part نہیں ہے یہ ایک extra چیز ہے جو کہ concurrency control کو manage کرنے کے لئے کیا جا رہی ہے تو of course اس کی وجہ سے آپ کے program کی performance کیا پر effect پڑے گا locking اور جب locking آپ کرے ہیں of kernel operations اور جس میں کے weighting be involved ہو اس سے اور زیادہ computational intensity جو ہے وہ انکریز ہو جاتی ہے جو اس کی cost ہے computational cost وہ انکریز ہو جاتی ہے ایک وقت میں صرف ایک جب آپ critical section کی بات کرتے ہیں تو critical section کی the definition یہ ہے کہ ایک وقت میں ایسا part of the program جس کو ایک وقت میں ایک thread execute کر سکتے ہیں تو critical section کی کبھی بھی execution concurrent نہیں ہوگی جب critical section کی execution concurrent نہیں ہوگی تو of course ہم سمہ سکتے ہیں کہ optimization ہی ہوگی یعنی کہ آپ کو faster results نہیں مل سکتے لیکن of course اس کو concurrent نہ ہونا ضروری ہے اس کا تاکہ results سے ہی آئے لیکن اس کے concurrent نہ ہونے کی وجہ سے ہمارے پاس جو out come آتی ہے وہ serialization ہی بن جاتی ہے جب آپ critical section اگر آپ کے program کا بہت بڑا region جو ہے that is the critical region تو اس کے اس میں critical region کی ایک طرح سے serialization ہوگی critical region دو کبھی بھی concurrentally execute نہیں ہوگے جب وہ نہیں ہو رہے ہوگے تو وہ serialized ڈریکے سے ہو رہے ہوگے and of course serialization جو ہے وہ اتنی productive نہیں ہے اتنی yielding نہیں ہے پھر اس کی وجہ سے جب کئی سارے processes ہوتے ہیں تو وہ processor کو بھی access کرنے کے کوشش کرتے ہیں وہ memory کو بھی access کرنے flavors کرتے ہیں وہ cash کو بھی access کرنے کے กوشش کرتے ہیں وہ files کو بھی access کرنے کے کوشش کرتے ہیں کئی قسم کے اس کے اندر confel orts ہوتے ہیں م Просто کئی قسم اور اس کی وجہ سے پھر unexpected resultsieve could also تو جب اس طرح کی کنٹنشنز آتی ہے among processors اور پھر اس کنٹنشن کی وجہ سے serialization پر بہت آتی ہے تو unexpected کسم کی آپ کی performance کی compromise شن کیا وہ آپ کو نظر آئے گی unexpected level تک آپ کے جو operations ہیں ان کی performance compromise ہوگی اور کئی سارے resources اس میں involved ہیں تو آپ at a time کئی سارے resources کے بیچ میں conflict آتا ہے جب conflict آتا ہے تو serialization ہوتی ہے جب serialization ہوتی ہے تو of course آپ expect کرے ہوتے ہیں کہ یہ faster results آن گے لیکن in fact وہ اس کی وجہ سے serialization کی وجہ سے slower ہو جاتے ہیں تو in conflicts کی وجہ سے ہمیں دیکھنے کو بلتا ہے کہ اگر ہم maybe ایک program سے expect کرے ہیں کہ وہ concurrently execute کرا ہے کئی ساری threads concurrently run ہو رہی ہیں اور اس کی execution بہت جلدی complete ہو جائے گی لیکن in actual on ground ایسے نہیں ہو باتا اور اس کی وجہ یہ سارے conflicts ہی ہوتے ہیں