 بسم اللہ الرحمن الرحیم، آج ہم موڈیول 99 دسکس کریں گے، موڈیول 99 ہے، working in a multi-processor environment ابھی تک ہم نے دیکھا تھا کہ جی وندوز جو ہے وہ ایک multi-tasking سسٹم ہے یعنی کہ اس کے اندر multiple processors کو exist کر سکتے ہیں اور وہ کنکرنٹلی ران کریں گے اور عام طور پر ہم جو PC سوکرہ use کرتے ہیں وہ uniprocessor سسٹم ہوتے ہیں یعنی کہ اس کے اندر ایکی processor لگا ہوتا ہے تو اس حورت میں کیا ہوتا ہے کہ اس ایک processor کا ٹائم ہوتا ہے وہ multi-plex ہوتا ہے among multiple processors in an interleaved manner لیکن windows in actual is also a multi-processor system یعنی کہ اگر آپ کے پاس کوئی ایسر computer ہے جس کے اندر ایک سے زادہ processors لگا ہوتا ہے وہ ایک سے زادہ processors جو ہیں ان کو بھی use کر سکتا ہے اور ان کے اوپر بھی processors کو schedule کر سکتا ہے processors کو اور threads کو ان کے اوپر run کر سکتا اگر ہم اس کی multi-processor capability کو multi-processor potential کو use کریں گے تو of course اس سے of performance ہے مزید boost کی جا سکتی ہے مزید gain کی جا سکتی ہے لیکن گئے of course as a computer science student آپ ساروں کو پتا ہوگا کہ اگر آپ نمبر of processors بھڑاتے جائے تو ضروری نہیں ہے کہ performance بھی اسی طرح سے لینئر لی انکریز ہو کیونکہ جو processors schedule ہو رہے among different processors ان کے بیچ میں کچھ inter communication بھی ہو رہی ہوتی ہے جس کی وجہ سے بالکل لینئر گین نہیں آتا ایک point پہ آکے بلکہ اگر آپ نمبر of processors انکریز بھی کرتے جائے تو ہو سکتا ہے کہ اس کا کوئی خاص فائدہ ناؤ تو لینئر گین نہیں ہوتا لیکن certainly نمبر of processors انکریز کرنے سے گین ضرور ہوتا ہے execution faster ہوتی ہے programming point of view سے آپ کو اس چیز کا سمجھنا ضروری ہے کہ windows یہ ایک multi processor سسٹم ہے اگر multi processor سسٹم ہے تو آپ programs اس طرح سے لکھیں کہ آپ اس کے multi processor potential کو use کریں اگر multi processor potential کو use کریں گے تو of course آپ کے program وہ faster execute ہوں گے اور زادہ optimal utilization ہوگی of resources اگر windows کے اندر ہم اسی طرح سے یہ چاہیں کہ ایک processor کے اوپر ہم restrict کرنا چاہیں processor ہوں بیشوک multiple processors لگئے ہوں لیکن ہم اپنے process یا processors کی execution ایک specific processor کے اوپر اگر constrain کرنا چاہیں تو windows کے اندر ایسا بھی programmatic لی کرنا possible ہے پہلہ point یہ ہے کہ multiple processors ہیں تو ان کا potential آپ use کر سکتے ہیں دوسر point ہے اگر multiple processors ہیں لیکن آپ کسی ایک specific processor کو use کرنا چاہ رہے ہیں کسی وجہ سے تو ایسا کرنا بھی ایسا constrain جو ہے enforce کرنا be possible ہے اس کے لیے ایک affinity mask بنتا ہے اور اس کی مدہ سے ہم ایک programmatic طریقے سے ایسا accomplish کر سکتے ہیں یہ ٹیکنیک جو ہے یہ ہم probably آگے جاکے بھی دسکس کریں گے جس رہا ہم نے previously یہ file matching program بنایا تھا جس کے اندرہ کہ ہم file کے اندر ایک pattern search کر رہے تھے اور ہر file کے لیے ہم نے a processor process ہی کی تھا لیکن اس کی کئی copies ہم نے run کر دیں تھی ہرے کو ہم ایک different file نے impass کر رہے تھے تو اگر یہ ایک uniprocessor کیا پر لگ اس کو process کیا جائے اور اگر اس کو multi processor کیا پر process کیا جائے تو of course multi processor کی execution faster ہوگی کیونکہ اس طرح سے جو multiple copies run کریں ان کے اپس میں خاص communication نہیں ہو رہی اگر communication ہو رہی ہو اور ایک دوسرے کو وہ data pass کر رہے ہیں تو پھر multi processor کے اندر آپ کہلیں کہ incumbrances آئیں گی جسے کے آپ کی speed وہ effect ہو سکتی ہے لیکن پھر بھی execution uniprocessor سے faster ہو گی تو اس طرح کی جو ہم نے previously application بنایا ہی تھی اس کو آپ بڑے اچھے طریقے سے multi processor سسٹم کے اندر بڑے optimal طریقے سے faster طریقے سے جو ہے run کر سکتے ہیں پھر اس کے علاوہ ہم نے یہ بھی دکھا ہے کہ جی ایک process ہوتا ہے اس کے اندر ایک تو thread ہوتی ہے primary thread اس کے علاوہ اور threads بھی ہو سکتی ہیں تو ہم threads کو isolate بھی کر سکتے ہیں windows یہ آپ opportunity provide کرتے ہیں کہ آپ threads کو isolate کر لیں isolate کرنے سے کیا ہوگا کہ آپ اس thread کو کسی ایک separate processor کیوں پر بھی execute کر سکیں جب تک جب ہو سکتا ہے کہ process ہمیں اور execute ہو رہا ہے لیکن جو isolated thread ہے وہ کسی اور processor کیوں پر execute ہو رہے ہیں