کسی دن کمپیوٹنگ کے تجربے کی سطح کی سطح کو دیکھنا مزہ آتا ہے ، اور دوسرے دن اندرونی کام کاج میں دلچسپی لیتے ہیں۔ آج ہم کمپیوٹر میموری کی ساخت اور ایک نظر ڈال رہے ہیں کہ آپ رام کی چھڑی میں کتنی چیزیں پیک کر سکتے ہیں۔
آج کا سوال وجواب کا سیشن ہمارے پاس سوپر یوزر کے بشکریہ ہے St اسٹیک ایکسچینج کی ایک ذیلی تقسیم ، سوال و جواب کی ویب سائٹوں کی کمیونٹی سے چلنے والی گروپ بندی۔
سوال
سپر صارف ریڈر جوہن سموھن اس بات پر قابو پا رہا ہے کہ کس طرح پروسیسر کی قسم اور میموری کا سائز ایک ساتھ مل کر کام کرتے ہیں تاکہ کل پتے برآمد ہوں۔ وہ لکھتا ہے:
ہم 32 بٹ پروسیسر اور 1 جی بی رام کے ساتھ کتنے میموری پتے حاصل کرسکتے ہیں اور 64 بٹ پروسیسر والے کتنے ہیں؟
مجھے لگتا ہے کہ یہ کچھ اس طرح ہے:
میموری کے پتوں کی تعداد حاصل کرنے کے لئے 1 جی بی رام 32 بٹس 4 بٹس (؟) سے بھی تقسیم ہوا؟
میں نے ویکیپیڈیا پر پڑھا کہ 1 میموری ایڈریس 32 بٹس چوڑا یا 4 آکٹٹ (1 آکٹٹ = 8 بٹس) ہیں ، اس کے مقابلے میں 64 بٹ پروسیسر جہاں 1 میموری ایڈریس یا 1 انٹیجر 64 بٹس چوڑا یا 8 آکٹٹس ہے۔ لیکن پتہ نہیں میں نے بھی اسے صحیح طریقے سے سمجھا ہے یا نہیں۔
یہ وہ قسم کے سوالات ہیں جو رات کے وقت ایک متجسس مزاج کو برقرار رکھ سکتے ہیں۔ جوہن کے ہر فرضی تخیلاتی نظام کے تحت کتنے پتے دستیاب ہیں؟
جواب
سوپر یوزر کے معاون گرونسٹج کچھ حد تک بصیرت پیش کرتے ہیں کہ کس طرح رام کو تقسیم اور استعمال کیا جاتا ہے:
مختصر جواب: دستیاب پتے کی تعداد ان میں سے چھوٹے کے برابر ہے:
- بائٹس میں میموری سائز
- سب سے بڑا دستخط شدہ عدد
مندرجہ بالا کے طویل جواب اور وضاحت:
میموری بائٹس (B) پر مشتمل ہوتی ہے۔ ہر بائٹ میں 8 بٹس (b) ہوتے ہیں۔
1 بی = 8 بی1 جی بی ریم دراصل 1 جی ب (جیبی بائٹ ہے ، گیگا بائٹ نہیں) ہے۔ فرق یہ ہے:
1 جی بی = 10 ^ 9 بی = 1 000 000 000 بی 1 GiB = 2 ^ 30 B = 1 073 741 824 Bمیموری کے ہر بائٹ کا اپنا پتہ ہوتا ہے ، چاہے سی پی یو مشین کا لفظ کتنا بڑا ہو۔ مثال کے طور پر انٹیل 8086 سی پی یو 16 بٹ تھا اور یہ بائٹس کے ذریعہ میموری کو خطاب کررہا تھا ، لہذا جدید 32 بٹ اور 64 بٹ سی پی یو کریں۔ یہی پہلی حد کی وجہ ہے۔ آپ کے پاس میموری بائٹس سے زیادہ پتے نہیں ہوسکتے ہیں۔
میموری ایڈریس صرف بائٹس کی ایک بڑی تعداد ہے جسے تلاش کرنے کے لئے سی پی یو کو میموری کے آغاز سے ہی رہنا پڑتا ہے۔
- پہلے بائٹ تک رسائی کے ل it اس کو 0 بائٹس چھوڑنا پڑتا ہے ، لہذا پہلے بائٹ کا پتہ 0 ہے۔
- دوسرے بائٹ تک رسائی حاصل کرنے کے لئے اس کو 1 بائٹ چھوڑنی ہوگی ، لہذا اس کا پتہ 1 ہے۔
- (علی هذا القیاس…)
- آخری بائٹ تک رسائی حاصل کرنے کے ل CP ، سی پی یو 1073741823 بائٹ چھوڑ دیتا ہے ، لہذا اس کا پتہ 1073741823 ہے۔
اب آپ کو یہ جاننا ہوگا کہ 32 بٹ کے اصل معنی کیا ہیں۔ جیسا کہ میں نے پہلے بتایا ، یہ کسی مشین لفظ کا سائز ہے۔
مشین کا لفظ میموری کی مقدار ہے جو نمبروں کو رکھنے کے لئے سی پی یو استعمال کرتا ہے (رام ، کیشے یا اندرونی اندراجات میں) 32 بٹ سی پی یو نمبر رکھنے کے لئے 32 بٹس (4 بائٹس) استعمال کرتا ہے۔ میموری ایڈریسز بھی نمبر ہوتے ہیں ، لہذا 32 بٹ سی پی یو پر میموری ایڈریس 32 بٹس پر مشتمل ہوتا ہے۔
اب اس کے بارے میں سوچیں: اگر آپ کے پاس تھوڑا سا ہے تو ، آپ اس پر دو اقدار بچا سکتے ہیں: 0 یا 1. ایک اور تھوڑا سا شامل کریں اور آپ کے پاس چار اقدار ہیں: 0 ، 1 ، 2 ، 3. تین بٹس پر ، آپ آٹھ اقدار کو بچا سکتے ہیں : 0 ، 1 ، 2… 6 ، 7. یہ دراصل ایک بائنری نظام ہے اور یہ اس طرح کام کرتا ہے:
ثنائی اعشاریہ 00000 1 0001 2 0010 3 0011 01 0100 5 0101 6 0110 7 0111 8 1000 1001 ڈالر ہے 1010 10 1011 1100 ڈالر 13110 1110 151111یہ بالکل معمول کے اضافے کی طرح کام کرتا ہے ، لیکن زیادہ سے زیادہ ہندسہ 1 ہے ، 9 نہیں۔ اعشاریہ 0 ہے
٠٠٠٠، پھر آپ 1 شامل کریں اور حاصل کریں٠٠٠١، ایک بار پھر شامل کریں اور آپ کے پاس٠٠١٠. جو کچھ یہاں ہوا وہ دشملو رکھنے کے ساتھ ہی ہے٠٩اور ایک شامل کریں: آپ 9 سے 0 اور اگلے ہندسے میں اضافہ کریں گے۔مندرجہ بالا مثال سے آپ دیکھ سکتے ہیں کہ ہمیشہ زیادہ سے زیادہ قیمت ہوتی ہے جس کی تعداد میں آپ مسلسل تعداد میں بٹس رکھ سکتے ہیں - کیونکہ جب تمام بٹس 1 ہوتے ہیں اور آپ 1 کی قیمت بڑھانے کی کوشش کرتے ہیں تو ، تمام بٹس 0 ہو جائیں گے ، اس طرح ٹوٹ جائیں گے نمبر اس کو اعداد و شمار کا زیادہ بہاؤ کہا جاتا ہے اور یہ صارفین اور ڈویلپر دونوں کے لئے بہت سے ناگوار پریشانیوں کا سبب بنتا ہے۔
11111111 = 255 + 1 ----------- 100000000 = 0 (9 بٹس یہاں ، لہذا 1 تراش دیا گیا ہے)
- ایک بٹ کے لئے سب سے بڑی قیمت 1 ہے ،
- 2 بٹس - 3 ،
- 3 بٹس - 7 ،
- 4 بٹس - 15
سب سے بڑی تعداد ہمیشہ 2 ^ N-1 ہے ، جہاں N بٹس کی تعداد ہے۔ جیسا کہ میں نے پہلے کہا ، میموری کا پتہ ایک نمبر ہوتا ہے اور اس کی بھی زیادہ سے زیادہ قیمت ہوتی ہے۔ یہی وجہ ہے کہ مشین ورڈ کا سائز دستیاب میموری پتے کی تعداد کی بھی ایک حد ہے - بعض اوقات آپ کا سی پی یو زیادہ میموری کو ایڈریس کرنے کے ل numbers تعداد پر کارروائی نہیں کرسکتا ہے۔
لہذا 32 بٹس پر آپ نمبر 0 سے 2 ^ 32-1 تک رکھ سکتے ہیں ، اور یہ 29 294 967 295 ہیں۔ یہ 1 جی بی ریم کے سب سے بڑے پتے سے زیادہ ہے ، لہذا آپ کی مخصوص حالت میں رام کی مقدار محدود کرنے والا عنصر ہوگا۔
32 بٹ سی پی یو کے لئے رام کی حد نظریاتی طور پر 4 جی بی (2 ^ 32) ہے اور 64 بٹ سی پی یو کے لئے یہ 16 ای بی (ایکسابائٹس ، 1 ای بی = 2 ^ 30 جی بی) ہے۔ دوسرے لفظوں میں ، 64 بٹ سی پی یو پورے انٹرنیٹ… 200 مرتبہ خطاب کرسکتا ہے؛) (جس کا تخمینہ لگایا ہوا ہے ولفرمالفھا ).
تاہم ، ریئل لائف آپریٹنگ سسٹم میں 32 بٹ سی پی یوز 3 جی بی کے رام کو ایڈریس کرسکتے ہیں۔ یہ آپریٹنگ سسٹم کے داخلی فن تعمیر کی وجہ سے ہے - کچھ پتے دوسرے مقاصد کے لئے مخصوص ہیں۔ آپ اس نام نہاد کے بارے میں مزید پڑھ سکتے ہیں ویکی پیڈیا پر 3 جی بی رکاوٹ . اس کے ساتھ آپ یہ حد اٹھا سکتے ہیں جسمانی پتہ کی توسیع .
میموری ایڈریسنگ کے بارے میں بات کرتے ہوئے ، کچھ چیزیں ہیں جن کا میں ذکر کروں: ورچوئل میموری , قطعہ اور پیجنگ .
مجازی میموری
چونکہ @ ڈینیئل آر ہکس نے ایک اور جواب میں بتایا کہ ، او ایس نے ورچوئل میموری استعمال کیا ہے۔ اس کا مطلب یہ ہے کہ ایپلیکیشن دراصل حقیقی میموری پتے پر کام نہیں کرتی ہیں ، لیکن وہ OS کے ذریعہ فراہم کردہ ہیں۔
یہ تکنیک آپریٹنگ سسٹم کو رام سے کچھ ڈیٹا نام نہاد پیج فائل (ونڈوز) یا تبادلہ (* NIX) میں منتقل کرنے کی اجازت دیتی ہے۔ ایچ ڈی ڈی رام سے کچھ آہستہ آہستہ ہے ، لیکن اس تک رسائی حاصل کرنے والے اعداد و شمار کے ل rarely کوئی سنگین مسئلہ نہیں ہے اور اس سے OS کو ایپلی کیشنز کو زیادہ سے زیادہ ریم مہیا کرنے کی اجازت ملتی ہے جیسا کہ آپ نے انسٹال کیا ہے۔
پیجنگ
ہم اب تک جس کے بارے میں بات کر رہے تھے اسے فلیٹ ایڈریسنگ اسکیم کہا جاتا ہے۔
پیجنگ ایک متبادل ایڈریسنگ اسکیم ہے جو زیادہ میموری کو ایڈجسٹ کرنے کی سہولت دیتی ہے جو آپ عام طور پر فلیٹ ماڈل میں ایک مشین لفظ کے ساتھ کرسکتے ہیں۔
4 حرفی الفاظ سے بھری ہوئی ایک کتاب کا تصور کریں۔ ہم کہتے ہیں کہ ہر صفحے پر 1024 نمبر ہیں۔ ایک نمبر کی نشاندہی کرنے کے ل you ، آپ کو دو چیزیں جاننے ہوں گی:
- اس صفحے کی تعداد جس پر یہ لفظ چھاپا گیا ہے۔
- اس صفحے پر کون سا لفظ ہے جسے آپ ڈھونڈ رہے ہیں۔
اب بالکل اسی طرح جدید x86 CPUs میموری کو ہینڈل کرتے ہیں۔ اس کو 4 کیی ب صفحات (1024 مشینی الفاظ) میں تقسیم کیا گیا ہے اور ان صفحات کی تعداد ہے۔ (اصل میں صفحات 4 ایم بی بڑے یا 2 ایم بی کے ساتھ بھی ہو سکتے ہیں پی اے ای ). جب آپ میموری سیل کو ایڈریس کرنا چاہتے ہیں تو آپ کو اس پیج میں پیج نمبر اور ایڈریس کی ضرورت ہوگی۔ نوٹ کریں کہ ہر میموری سیل کا عین مطابق ایک جوڑے نمبر کے ذریعہ حوالہ دیا جاتا ہے ، جو قطعہ بندی کا معاملہ نہیں ہوگا۔
قطعہ
ٹھیک ہے ، یہ ایک طرح طرح کے پیجنگ سے مشابہ ہے۔ یہ صرف ایک مثال کے نام کے ل Inte ، انٹیل 8086 میں استعمال ہوا تھا۔ پتوں کے گروپوں کو اب صفحات کی بجائے میموری کا حص calledہ کہا جاتا ہے۔ فرق یہ ہے کہ طبقات اوور لیپ ہوسکتے ہیں ، اور وہ بہت زیادہ آوپلیپ ہوتے ہیں۔ مثال کے طور پر 8086 پر زیادہ تر میموری سیل 4096 مختلف طبقات سے دستیاب تھے۔
ایک مثال:
ہم کہتے ہیں کہ ہمارے پاس 8 بائٹس میموری ہیں ، سارے تھریڈ بائٹ کے علاوہ تمام زیرو ہیں جو 255 کے برابر ہیں۔
فلیٹ میموری ماڈل کے لئے مثال:
_____ | ٠ | | ٠ | | ٠ | | ٢٥٥ | | ٠ | | ٠ | | ٠ | | ٠ | -----پیجڈ میموری کے لئے مثال 4 بائٹ صفحات کے ساتھ:
پیج 0 _____ | 0 | | 0 | | 0 | صفحہ 1 | 255 | _____ ----- | 0 | | 0 | | 0 | | 0 | -----منقسم میموری کی مثال 4 بائٹ طبقات کے ساتھ 1:
SEG 0 _____ SEG 1 | 0 | _____ SEG 2 | 0 | | 0 | _____ SEG 3 | 0 | | 0 | | 0 | _____ SEG 4 | 255 | | 255 | | 255 | | 255 | _____ SEG 5 ----- | 0 | | 0 | | 0 | | 0 | _____ SEG 6 ----- | 0 | | 0 | | 0 | | 0 | _____ SEG 7 ----- | 0 | | 0 | | 0 | | 0 | _____ ----- | 0 | | 0 | | 0 | | 0 | ----- ----- ----- -----جیسا کہ آپ دیکھ سکتے ہیں ، چوتھی بائٹ کو چار طریقوں سے خطاب کیا جاسکتا ہے: (0 سے خطاب)
- طبقہ 0 ، آفسیٹ 3
- طبقہ 1 ، آفسیٹ 2
- طبقہ 2 ، آفسیٹ 1
- طبقہ 3 ، آفسیٹ 0
یہ ہمیشہ ایک ہی میموری سیل ہوتا ہے۔
حقیقی زندگی کے نفاذ کے حصgmentsوں میں 1 بائٹ سے زیادہ بٹ (8086 کے لئے یہ 16 بائٹ تھا) منتقل ہوتا ہے۔
قطعہ بندی کے بارے میں جو بھی برا ہے وہ یہ ہے کہ یہ پیچیدہ ہے (لیکن میرا خیال ہے کہ آپ کو پہلے ہی پتہ ہے کہ؛) کیا اچھی بات ہے ، یہ ہے کہ آپ ماڈیولر پروگرام بنانے کے لئے کچھ ہوشیار تکنیک استعمال کرسکتے ہیں۔
مثال کے طور پر ، آپ کچھ ماڈیول کو کسی طبقہ میں لوڈ کرسکتے ہیں ، پھر دکھاوا کر سکتے ہیں کہ یہ طبقہ واقعتا is اس سے چھوٹا ہے (ماڈیول کو تھامنے کے لئے کافی چھوٹا ہے) ، پھر پہلا طبقہ منتخب کریں جو اس چھدم چھوٹے سے کہیں زیادہ نہ ہو اور اگلے بوجھ کو لوڈ کریں۔ ماڈیول ، اور اسی طرح. بنیادی طور پر ، جو آپ کو اس طرح ملتا ہے وہ متغیر سائز کے صفحات ہیں۔
وضاحت میں شامل کرنے کے لئے کچھ ہے؟ تبصرے میں آواز بند. ٹیک سیکھنے والے اسٹیک ایکسچینج کے دوسرے صارفین سے مزید جوابات پڑھنا چاہتے ہیں؟ یہاں مکمل گفتگو کے دھاگے کو چیک کریں .