Data segment
কম্পিউটিংয়ে, একটি ডেটা সেগমেন্ট (প্রায়শই চিহ্নিত. ডেটা) একটি অবজেক্ট ফাইলের একটি অংশ বা একটি প্রোগ্রামের সংশ্লিষ্ট ঠিকানা স্থান যা প্রারম্ভিক স্ট্যাটিক ভেরিয়েবল, অর্থাৎ গ্লোবাল ভেরিয়েবল এবং স্ট্যাটিক স্থানীয় ভেরিয়েবল ধারণ করে। এই বিভাগের আকার প্রোগ্রামের সোর্স কোডে মানগুলির আকার দ্বারা নির্ধারিত হয় এবং রান টাইমে পরিবর্তিত হয় না। ডেটা সেগমেন্টটি পড়া/লেখা হয়, যেহেতু ভেরিয়েবলের মানগুলি রান টাইমে পরিবর্তন করা যেতে পারে। এটি শুধুমাত্র-পঠনযোগ্য তথ্য বিভাগের (সেগমেন্ট বা. রোডাটা) বিপরীতে, যেখানে চলকের পরিবর্তে স্থির ধ্রুবক রয়েছে; এটি কোড বিভাগের সাথেও বৈপরীত্য দেখায়, যা টেক্সট বিভাগ নামেও পরিচিত, যা অনেক আর্কিটেকচারে শুধুমাত্র-পঠনযোগ্য। অপরিবর্তিত তথ্য, পরিবর্তনশীল এবং ধ্রুবক উভয়ই, পরিবর্তে বি. এস. এস বিভাগে রয়েছে। ঐতিহাসিকভাবে, অভ্যন্তরীণ ঠিকানা নিবন্ধকের স্থানীয় আকারের চেয়ে বড় মেমরি ঠিকানা স্থানগুলিকে সমর্থন করতে সক্ষম হওয়ার জন্য, প্রাথমিক সিপিইউগুলি বিভাজনের একটি ব্যবস্থা প্রয়োগ করেছিল যার মাধ্যমে তারা নির্দিষ্ট অঞ্চলে অফসেট হিসাবে ব্যবহার করার জন্য সূচকগুলির একটি ছোট সেট সংরক্ষণ করবে। সিপিইউগুলির ইন্টেল 8086 পরিবার চারটি বিভাগ সরবরাহ করেছেঃ কোড বিভাগ, ডেটা বিভাগ, স্ট্যাক বিভাগ এবং অতিরিক্ত বিভাগ। সফ্টওয়্যারটি কার্যকর করার মাধ্যমে প্রতিটি বিভাগকে স্মৃতির একটি নির্দিষ্ট স্থানে স্থাপন করা হয়েছিল এবং সেই বিভাগগুলির মধ্যে ডেটাতে পরিচালিত সমস্ত নির্দেশাবলী সেই বিভাগের শুরুর সাথে সম্পর্কিত ছিল। এটি একটি 16-বিট অ্যাড্রেস রেজিস্টারের অনুমতি দেয়, যা সাধারণত 1 এমবি মেমরি স্পেস অ্যাক্সেস করতে 64 কেবি মেমরি স্পেস অ্যাক্সেস করতে সক্ষম হবে। সেই সময়ের প্রোগ্রামিং ভাষাগুলিতে নির্দিষ্ট কাজ সহ পৃথক ব্লকে মেমরি স্পেসের এই বিভাজন এবং ধারণাটি এখনও আধুনিক প্রোগ্রামিং ভাষাগুলির মধ্যে ব্যাপকভাবে ব্যবহৃত হয়। প্রোগ্রাম মেমোরি একটি কম্পিউটার প্রোগ্রাম মেমোরি মূলত দুটি বিভাগে শ্রেণীবদ্ধ করা যেতে পারেঃ শুধুমাত্র পড়া এবং পড়া/লেখা। এই পার্থক্যটি মাস্ক রম, ই. পি. আর. ও. এম, পি. আর. ও. এম বা ই. ই. পি. আর. ও. এম-এর মতো শুধুমাত্র-পঠনযোগ্য স্মৃতিতে তাদের প্রধান প্রোগ্রাম ধারণকারী প্রাথমিক সিস্টেমগুলির থেকে বৃদ্ধি পেয়েছিল। যেহেতু সিস্টেমগুলি আরও জটিল হয়ে ওঠে এবং প্রোগ্রামগুলি রম থেকে এক্সিকিউট করার পরিবর্তে অন্যান্য মিডিয়া থেকে র্যাম-এ লোড করা হয়, তাই প্রোগ্রামের মেমরির কিছু অংশ পরিবর্তন করা উচিত নয় এই ধারণাটি বজায় রাখা হয়। এগুলি প্রোগ্রামের. টেক্সট এবং. রোডাটা বিভাগে পরিণত হয়েছিল এবং অবশিষ্ট অংশগুলি নির্দিষ্ট কাজের জন্য অন্যান্য বিভাগে বিভক্ত করার জন্য লেখা যেতে পারে। কোড সেগমেন্ট, যা টেক্সট সেগমেন্ট নামেও পরিচিত, এক্সিকিউটেবল কোড ধারণ করে এবং সাধারণত শুধুমাত্র পাঠযোগ্য এবং নির্দিষ্ট আকারের হয়। ডেটা বিভাগে প্রারম্ভিক স্ট্যাটিক ভেরিয়েবল রয়েছে, অর্থাৎ। গ্লোবাল ভেরিয়েবল এবং স্থানীয় স্ট্যাটিক ভেরিয়েবল যার একটি সংজ্ঞায়িত মান রয়েছে এবং সংশোধন করা যেতে পারে। সি-এর উদাহরণগুলির মধ্যে রয়েছেঃ ইন্টি আই = 3; চার এ [] = "হ্যালো ওয়ার্ল্ড"; স্ট্যাটিক ইন্টি বি = 2023;// ইনিশিয়ালাইজড স্ট্যাটিক গ্লোবাল ভেরিয়েবল অকার্যকর ফু (অকার্যকর) {স্ট্যাটিক ইন্টি সি = 2023;// ইনিশিয়ালাইজড স্ট্যাটিক লোকাল ভেরিয়েবল} বিএসএস। গ্লোবাল ভেরিয়েবল এবং স্থানীয় স্ট্যাটিক ভেরিয়েবল যা শূন্যে আরম্ভ করা হয় বা সোর্স কোডে স্পষ্ট সূচনা নেই। সি-এর উদাহরণগুলির মধ্যে রয়েছেঃ স্ট্যাটিক ইন্টি আই; স্ট্যাটিক চার এ [12]; হিপ হিপ সেগমেন্টে গতিশীলভাবে বরাদ্দকৃত মেমরি থাকে, যা সাধারণত বিএসএস সেগমেন্টের শেষে শুরু হয় এবং সেখান থেকে বড় ঠিকানায় বৃদ্ধি পায়। এটি ম্যালোক, ক্যালোক, রিয়েলোক এবং ফ্রি দ্বারা পরিচালিত হয়, যা ব্র্যাক এবং এস. বি. আর. কে সিস্টেম কলগুলি ব্যবহার করে এর আকার সামঞ্জস্য করতে পারে (মনে রাখবেন যে ব্র্যাক/এস. বি. আর. কে এবং একটি একক হিপ সেগমেন্টের ব্যবহার ম্যালোক/ক্যালোক/রিয়েলোক/ফ্রি চুক্তিটি পূরণ করার জন্য প্রয়োজন হয় না; এগুলি এম. এম. এ. পি/মুনম্যাপ ব্যবহার করে বাস্তবায়িত করা যেতে পারে যাতে 'ভার্চ্যুয়াল অ্যাড্রেস স্পেস' প্রক্রিয়ার মধ্যে ভার্চ্যুয়াল মেমরির সম্ভাব্য অ-সংযুক্ত অঞ্চলগুলি সংরক্ষণ/অসংরক্ষিত করা যায়)। হিপ বিভাগটি একটি প্রক্রিয়ায় সমস্ত থ্রেড, ভাগ করা লাইব্রেরি এবং গতিশীলভাবে লোড করা মডিউল দ্বারা ভাগ করা হয়। স্ট্যাক বিভাগে কল স্ট্যাক থাকে, একটি এল. আই. এফ. ও কাঠামো, যা সাধারণত মেমরির উপরের অংশে অবস্থিত। একটি "স্ট্যাক পয়েন্টার" রেজিস্টার স্ট্যাকের শীর্ষটি ট্র্যাক করে; প্রতিবার স্ট্যাকের উপর একটি মান "ধাক্কা" দেওয়ার সময় এটি সামঞ্জস্য করা হয়। একটি ফাংশন কলের জন্য চাপ দেওয়া মানগুলির সেটকে "স্ট্যাক ফ্রেম" বলা হয়। একটি স্ট্যাক ফ্রেমে ন্যূনতম একটি রিটার্ন ঠিকানা থাকে। স্বয়ংক্রিয় ভেরিয়েবলগুলিও স্ট্যাকের উপর বরাদ্দ করা হয়। স্ট্যাক সেগমেন্টটি ঐতিহ্যগতভাবে হিপ সেগমেন্টের সাথে সংযুক্ত ছিল এবং তারা একে অপরের দিকে বৃদ্ধি পেয়েছিল; যখন স্ট্যাক পয়েন্টারটি হিপ পয়েন্টারের সাথে মিলিত হয়েছিল, তখন মুক্ত মেমরি শেষ হয়ে গিয়েছিল। বড় অ্যাড্রেস স্পেস এবং ভার্চুয়াল মেমরি কৌশলগুলির সাথে এগুলি আরও অবাধে স্থাপন করা হয়, তবে এগুলি সাধারণত একটি রূপান্তরিত দিকে বৃদ্ধি পায়। স্ট্যান্ডার্ড পিসি x86 আর্কিটেকচারে স্ট্যাকটি শূন্য ঠিকানার দিকে বৃদ্ধি পায়, যার অর্থ হল কল চেইনের গভীরে আরও সাম্প্রতিক আইটেমগুলি সংখ্যার দিক থেকে কম ঠিকানায় এবং স্তূপের কাছাকাছি থাকে। অন্যান্য কিছু স্থাপত্যের ক্ষেত্রে এটি বিপরীত দিকে বৃদ্ধি পায়। কিছু ব্যাখ্যাযুক্ত ভাষা তথ্য বিভাগের অনুরূপ সুবিধা প্রদান করে, বিশেষ করে পার্ল এবং রুবি। এই ভাষাগুলিতে, লাইন (পার্ল) বা (রুবি, পুরানো পার্ল) সহ কোড বিভাগের শেষ এবং ডেটা বিভাগের শুরু চিহ্নিত করে। শুধুমাত্র এই লাইনের আগের বিষয়বস্তুগুলি কার্যকর করা হয় এবং এই লাইনের পরে উৎস ফাইলের বিষয়বস্তুগুলি ফাইল অবজেক্ট হিসাবে পাওয়া যায়ঃ পার্ল-এ প্যাকেজঃঃ ডেটা (যেমন, প্রধানঃঃ ডেটা) এবং রুবিতে ডেটা। এটিকে এখানে নথির একটি রূপ (একটি ফাইল আক্ষরিক) হিসাবে বিবেচনা করা যেতে পারে। আরও দেখুন সেগমেন্টেশন (মেমোরি) সেগমেন্টেশন ফল্ট লিঙ্কার (কম্পিউটিং) কোড সেগমেন্ট. বি. এস. এস. প্রাথমিক পরিবর্তনশীল স্ট্যাক (বিমূর্ত তথ্যের ধরন) প্রসেস কন্ট্রোল ব্লক রেফারেন্স এক্সটার্নাল লিঙ্ক এক্সিকিউটেবল ফাইল ফরম্যাট মেমোরি ম্যানেজমেন্ট