Data segment
کمپیوٹنگ میں، ڈیٹا سیگمنٹ (اکثر ڈیٹا سے نشان زد کیا جاتا ہے) کسی آبجیکٹ فائل کا ایک حصہ یا کسی پروگرام کی متعلقہ ایڈریس اسپیس ہے جس میں ابتدائی جامد متغیرات، یعنی عالمی متغیرات اور جامد مقامی متغیرات ہوتے ہیں۔ اس حصے کا سائز پروگرام کے سورس کوڈ میں اقدار کے سائز سے طے ہوتا ہے، اور رن ٹائم پر تبدیل نہیں ہوتا ہے۔ ڈیٹا کا حصہ پڑھا/لکھا جاتا ہے، کیونکہ متغیرات کی اقدار کو رن ٹائم پر تبدیل کیا جا سکتا ہے۔ یہ صرف پڑھنے والے ڈیٹا سیگمنٹ (سیگمنٹ یا. روڈاٹا) کے برعکس ہے، جس میں متغیرات کے بجائے جامد مستقل ہوتے ہیں۔ یہ کوڈ سیگمنٹ سے بھی متصادم ہے، جسے ٹیکسٹ سیگمنٹ بھی کہا جاتا ہے، جو بہت سے آرکیٹیکچرز پر صرف پڑھنے والا ہوتا ہے۔ غیر ابتدائی ڈیٹا، متغیر اور مستقل دونوں، اس کے بجائے بی ایس ایس زمرے میں ہے۔ تاریخی طور پر، اندرونی ایڈریس رجسٹر کے مقامی سائز سے بڑی میموری ایڈریس خالی جگہوں کی حمایت کرنے کے قابل ہونے کے لیے، ابتدائی سی پی یوز نے تقسیم کا ایک نظام نافذ کیا جس کے تحت وہ انڈیکس کے ایک چھوٹے سے سیٹ کو مخصوص علاقوں میں آفسیٹ کے طور پر استعمال کرنے کے لیے ذخیرہ کریں گے۔ سی پی یوز کے انٹیل 8086 خاندان نے چار حصے فراہم کیے: کوڈ کا حصہ، ڈیٹا کا حصہ، اسٹیک کا حصہ اور اضافی حصہ۔ سافٹ ویئر کے ذریعے ہر حصے کو میموری میں ایک مخصوص مقام پر رکھا گیا تھا اور ان حصوں کے اندر ڈیٹا پر چلنے والی تمام ہدایات اس حصے کے آغاز سے متعلق انجام دی گئیں تھیں۔ اس نے 16 بٹ ایڈریس رجسٹر کی اجازت دی، جو عام طور پر 64 کے بی میموری کی جگہ تک رسائی حاصل کر سکے گا، تاکہ 1 ایم بی میموری کی جگہ تک رسائی حاصل کی جا سکے۔ میموری کی جگہ کی یہ تقسیم مجرد بلاکس میں مخصوص کاموں کے ساتھ اس وقت کی پروگرامنگ زبانوں میں کی جاتی ہے اور یہ تصور اب بھی جدید پروگرامنگ زبانوں میں بڑے پیمانے پر استعمال میں ہے۔ پروگرام میموری ایک کمپیوٹر پروگرام میموری کو بڑے پیمانے پر دو حصوں میں تقسیم کیا جا سکتا ہے: صرف پڑھنے اور پڑھنے/لکھنے کے لیے۔ یہ فرق ماسک روم، ای پی آر او ایم، پی آر او ایم یا ای ای پی آر او ایم جیسے اپنے مرکزی پروگرام کو صرف پڑھنے والی میموری میں رکھنے والے ابتدائی سسٹمز سے بڑھتا گیا۔ جیسے جیسے نظام زیادہ پیچیدہ ہوتے گئے اور پروگراموں کو روم سے چلانے کے بجائے دوسرے میڈیا سے رام میں لوڈ کیا گیا، یہ خیال برقرار رکھا گیا کہ پروگرام کی میموری کے کچھ حصوں میں ترمیم نہیں کی جانی چاہیے۔ یہ پروگرام کے. ٹیکسٹ اور. روڈاٹا حصے بن گئے، اور بقیہ جو مخصوص کاموں کے لیے کئی دوسرے حصوں میں تقسیم کرنے کے لیے لکھے جا سکتے تھے۔ کوڈ کا حصہ، جسے ٹیکسٹ کا حصہ بھی کہا جاتا ہے، قابل عمل کوڈ پر مشتمل ہوتا ہے اور عام طور پر صرف پڑھنے اور مقررہ سائز کا ہوتا ہے۔ ڈیٹا کا حصہ ابتدائی جامد متغیرات پر مشتمل ہے، یعنی۔ عالمی متغیرات اور مقامی جامد متغیرات جن کی ایک متعین قدر ہوتی ہے اور جن میں ترمیم کی جا سکتی ہے۔ سی میں مثالوں میں شامل ہیں: انٹیٹ آئی = 3 ؛ چار اے [] = "ہیلو ورلڈ" ؛ جامد انٹیٹ بی = 2023 ؛// ابتدائی جامد عالمی متغیر وایڈ فو (وایڈ) {جامد انٹیٹ سی = 2023 ؛// ابتدائی جامد مقامی متغیر} بی ایس ایس بی ایس طبقہ غیر ابتدائی جامد ڈیٹا پر مشتمل ہے، دونوں متغیرات اور مستقلات، یعنی۔ عالمی متغیرات اور مقامی جامد متغیرات جو صفر سے شروع ہوتے ہیں یا سورس کوڈ میں واضح آغاز نہیں ہوتے ہیں۔ سی میں مثالوں میں شامل ہیں: جامد انٹی i ؛ جامد چار a [12] ؛ ڈھیر ڈائپ سیگمنٹ میں متحرک طور پر مختص کردہ میموری ہوتی ہے، جو عام طور پر بی ایس ایس سیگمنٹ کے آخر میں شروع ہوتی ہے اور وہاں سے بڑے پتے تک بڑھتی ہے۔ اس کا انتظام میلوک، کالوک، ریئللوک اور فری کے ذریعے کیا جاتا ہے، جو اس کے سائز کو ایڈجسٹ کرنے کے لیے بی آر کے اور ایس بی آر کے سسٹم کالز کا استعمال کر سکتے ہیں (نوٹ کریں کہ میلوک/کالوک/ریئللوک/فری کے معاہدے کو پورا کرنے کے لیے بی آر کے/ایس بی آر کے اور ایک ہیپ سیگمنٹ کا استعمال ضروری نہیں ہے۔ انہیں ایم ایم اے پی/من میپ کا استعمال کرتے ہوئے ورچوئل میموری کے ممکنہ طور پر غیر متصل علاقوں کو 'ورچوئل ایڈریس اسپیس' کے عمل میں محفوظ/غیر محفوظ کرنے کے لیے بھی نافذ کیا جا سکتا ہے)۔ ڈھیر کا حصہ ایک عمل میں تمام دھاگوں، مشترکہ کتب خانوں، اور متحرک طور پر بھری ہوئی ماڈیولز کے ذریعے مشترکہ ہوتا ہے۔ اسٹیک سیگمنٹ کال اسٹیک پر مشتمل ہوتا ہے، ایک LIFO ڈھانچہ، جو عام طور پر میموری کے اوپری حصوں میں واقع ہوتا ہے۔ ایک "اسٹیک پوائنٹر" رجسٹر اسٹیک کے اوپری حصے کو ٹریک کرتا ہے ؛ اسے ہر بار اسٹیک پر ویلیو "پش" کرنے پر ایڈجسٹ کیا جاتا ہے۔ ایک فنکشن کال کے لیے دبانے والی اقدار کے سیٹ کو "اسٹیک فریم" کہا جاتا ہے۔ اسٹیک فریم کم از کم واپسی کے پتے پر مشتمل ہوتا ہے۔ اسٹیک پر خودکار متغیرات بھی مختص کیے جاتے ہیں۔ اسٹیک سیگمنٹ روایتی طور پر ہیپ سیگمنٹ سے متصل تھا اور وہ ایک دوسرے کی طرف بڑھے۔ جب اسٹیک پوائنٹر ہیپ پوائنٹر سے ملتا ہے تو فری میموری ختم ہو جاتی ہے۔ بڑی ایڈریس خالی جگہوں اور ورچوئل میموری تکنیک کے ساتھ وہ زیادہ آزادانہ طور پر رکھے جاتے ہیں، لیکن پھر بھی وہ عام طور پر ایک متغیر سمت میں بڑھتے ہیں۔ معیاری پی سی x86 فن تعمیر پر اسٹیک ایڈریس صفر کی طرف بڑھتا ہے، جس کا مطلب ہے کہ حالیہ آئٹمز، کال چین میں گہری، عددی طور پر نچلے پتے پر اور ڈھیر کے قریب ہیں۔ کچھ دیگر آرکیٹیکچرز پر یہ مخالف سمت میں بڑھتا ہے۔ تشریح شدہ زبانیں کچھ تشریح شدہ زبانیں ڈیٹا سیگمنٹ سے ملتی جلتی سہولت پیش کرتی ہیں، خاص طور پر پرل اور روبی۔ ان زبانوں میں، بشمول لائن (پرل) یا (روبی، پرانا پرل) کوڈ کے حصے کے اختتام اور ڈیٹا کے حصے کے آغاز کی نشاندہی کرتا ہے۔ صرف اس لائن سے پہلے کے مندرجات پر عمل کیا جاتا ہے، اور اس لائن کے بعد سورس فائل کے مندرجات فائل آبجیکٹ کے طور پر دستیاب ہوتے ہیں: پیکج:: ڈیٹا پرل میں (مثال کے طور پر، مین:: ڈیٹا) اور ڈیٹا روبی میں۔ اسے یہاں دستاویز (ایک فائل لفظی) کی ایک شکل سمجھا جا سکتا ہے۔ سیگمنٹشن (میموری) سیگمنٹشن فالٹ لنکر (کمپیوٹنگ) کوڈ سیگمنٹ. bss یونینیشیلائزڈ متغیر اسٹیک (تجریدی ڈیٹا ٹائپ) پروسیس کنٹرول بلاک حوالہ جات بیرونی لنکس قابل عمل فائل فارمیٹس میموری مینجمنٹ