C প্রোগ্রামের মেমরি লেআউট নিচের মত। কয়েক স্তর আছে. এগুলো হল -
- স্ট্যাক সেগমেন্ট
- হিপ সেগমেন্ট
- টেক্সট সেগমেন্ট
- ডেটা সেগমেন্ট
এখন দেখা যাক এই বিভাগগুলোর কার্যকারিতা কি।
Sr.No | বিভাগ এবং বর্ণনা |
---|---|
1 | স্ট্যাক প্রক্রিয়া স্ট্যাকের মধ্যে অস্থায়ী ডেটা থাকে যেমন পদ্ধতি/ফাংশন প্যারামিটার, রিটার্ন ঠিকানা এবং স্থানীয় ভেরিয়েবল। এটি স্বয়ংক্রিয় ভেরিয়েবল এবং ফাংশন প্যারামিটারের জন্য বরাদ্দ করা মেমরির একটি এলাকা। ফাংশন কলগুলি চালানোর সময় এটি একটি ফেরত ঠিকানা সংরক্ষণ করে। স্ট্যাক স্থানীয় বা স্বয়ংক্রিয় ভেরিয়েবল, ফাংশন প্যারামিটার এবং পরবর্তী ঠিকানা বা ফেরত ঠিকানা সংরক্ষণ করার জন্য LIFO (শেষ-ইন-ফার্স্ট-আউট) পদ্ধতি ব্যবহার করে। রিটার্ন অ্যাড্রেসটি ফাংশন এক্সিকিউশন শেষ হওয়ার পর ফেরত দেওয়ার ঠিকানাকে বোঝায়। স্থানীয় ভেরিয়েবল, ফাংশন প্যারামিটার এবং ফাংশন কল অনুযায়ী এই সেগমেন্টের আকার পরিবর্তনশীল। এই বিভাগটি একটি উচ্চ ঠিকানা থেকে একটি নিম্ন ঠিকানায় বৃদ্ধি পায়। |
2 | গাদা এটি একটি প্রক্রিয়া চলাকালীন সময়ে গতিশীলভাবে মেমরি বরাদ্দ করা হয়। এটি ডাইনামিক মেমরি স্টোরেজ যেমন malloc() এবং calloc() কলের জন্য বরাদ্দ করা মেমরির এলাকা। ব্যবহারকারীর বরাদ্দ অনুযায়ী এই সেগমেন্টের আকার পরিবর্তনশীল। এই বিভাগটি একটি নিম্ন ঠিকানা থেকে একটি উচ্চ ঠিকানায় বৃদ্ধি পায়। কয়েকটি নমুনা প্রোগ্রামের সাথে সেগমেন্টের (ডেটা এবং বিএসএস সেগমেন্ট) আকার কীভাবে পরিবর্তিত হয় তা এখন পরীক্ষা করা যাক। "সাইজ" কমান্ডটি কার্যকর করার মাধ্যমে সেগমেন্টের আকার জানা যায়। |
3 | পাঠ্য প্রোগ্রাম কাউন্টারের মান এবং প্রসেসরের রেজিস্টারের বিষয়বস্তু দ্বারা উপস্থাপিত বর্তমান কার্যকলাপ এতে অন্তর্ভুক্ত রয়েছে। এটা .text বিভাগ দ্বারা প্রতিনিধিত্ব করা হয়. এটি মেমরিতে একটি এলাকা সংজ্ঞায়িত করে যা নির্দেশ কোডগুলি সংরক্ষণ করে। এটিও একটি নির্দিষ্ট এলাকা। |
4 | ডেটা এই বিভাগে গ্লোবাল এবং স্ট্যাটিক ভেরিয়েবল রয়েছে। এটি .data বিভাগ এবং .bss দ্বারা প্রতিনিধিত্ব করা হয়। .data বিভাগটি মেমরি অঞ্চল ঘোষণা করতে ব্যবহৃত হয়, যেখানে প্রোগ্রামের জন্য ডেটা উপাদানগুলি সংরক্ষণ করা হয়। ডেটা উপাদানগুলি ঘোষণা করার পরে এই বিভাগটি প্রসারিত করা যাবে না এবং এটি পুরো প্রোগ্রাম জুড়ে স্থির থাকে। .bss বিভাগটি একটি স্ট্যাটিক মেমরি বিভাগ যা প্রোগ্রামে পরে ঘোষণা করার জন্য ডেটার জন্য বাফার ধারণ করে। এই বাফার মেমরি শূন্য ভরা হয়. |
ডেটা সেগমেন্টগুলিকে আরও দুটি ভাগে ভাগ করা যায়।
Sr.No | বিভাগ এবং বর্ণনা |
---|---|
1 | সূচনাকৃত ডেটা সেগমেন্ট এটি অবজেক্ট ফাইল বা প্রোগ্রামের ভার্চুয়াল অ্যাড্রেস স্পেসের একটি অংশ যা অপ্রচলিত স্ট্যাটিক এবং গ্লোবাল ভেরিয়েবল নিয়ে গঠিত। আন-ইনিশিয়ালাইজড ডেটা সেগমেন্টকে BSS (প্রতীক দ্বারা শুরু করা ব্লক) সেগমেন্টও বলা হয়। |
2 | আন-ইনিশিয়ালাইজড ডেটা সেগমেন্ট এটি রিড-রাইট, যেহেতু রান টাইমে ভেরিয়েবলের মান পরিবর্তন করা যেতে পারে। এই সেগমেন্টেরও একটি নির্দিষ্ট আকার আছে। |