একটি array যা হল long long int[999999]; কিন্তু প্রোগ্রামটি রান করে না। maximum কত সাইজ হলে প্রোগ্রামটি রান করত? আর অন্যান্য ডাটা টাইপ এর জন্য জন্য এই maximum সাইজ কত? আর সাইজ বড় হলে প্রোগ্রাম রান না করার কারন কি?

asked 04 May '16, 19:36

uchiha%20amit's gravatar image

uchiha amit
1206


এটা আপনার RAM এর উপর নির্ভর করে। মনে রাখবেন, অ্যারে মানেই consecutive memory. অর্থাৎ কম্পিউটার যদি পাশাপাশি 999999*8 বাইট যায়গা খালি না পায়, আপনার প্রোগ্রাম রান করবে না।

ঠিক কত যায়গা নিতে পারবে এটা আপনি ট্রায়াল এন্ড এরর মেথডে বাইনারি সার্চ করে বের করতে পারবেন, exact সংখ্যা বলা কঠিন, তবে ইস্টিমেট করতে পারবেন।

maximum কত সাইজ হলে প্রোগ্রামটি রান করত?

RAM এর একটা নির্দিষ্ট পারসেন্টেজ পর্যন্ত আপনাকে অপারেটিং সিস্টেম প্রোগ্রাম রান করার জন্য ব্যবহার করতে দিবে। সুতরাং maximum size আপানার RAM এর উপর নির্ভর করে।

আর অন্যান্য ডাটা টাইপ এর জন্য জন্য এই maximum সাইজ কত?

লং লং(long long)য়ে সর্বোচ্চ যত নিতে পারছেন, তাকে ৮ দিয়ে গুণ দিয়ে ওই ডাটা টাইপের সাইজ দিয়ে ভাগ করলেই পেয়ে যাবেন।

আর সাইজ বড় হলে প্রোগ্রাম রান না করার কারন কি?

পাশাপাশি এত বড় ম্যামরি পাওয়া দুষ্কর হয়ে দাঁড়ায়।

permanent link

answered 05 May '16, 00:29

manetsus's gravatar image

manetsus
2.2k211

edited 06 May '16, 01:54

1

লং লং(long long)য়ে সর্বোচ্চ যত, তাকে ৮ দিয়ে গুন দিয়ে ওই ডাটা টাইপের সাইজ দিয়ে ভাগ করতে হবে না?

(05 May '16, 10:28) uchiha amit

@uchiha-amit আপনি ঠিক বলেছেন, আপডেট করে দিয়েছি, ধন্যবাদ।

(06 May '16, 01:57) manetsus

উপরের উত্তরটা সম্পূর্ণ ঠিক আছে । তবে RAM এর উপর আসলে এটা নির্ভর করে না । করে ভার্চুয়াল মেমরি (VM) এর বেসিসে । আপনি বিশাল বড় সাইজের RAM ব্যবহার করলেন কিন্তু তাও দেখবেন (approx)১০^7 (int) এর উপর অ্যারে নিতে দিচ্ছে না । কন্টেস্ট / অনলাইন সল্ভিং এর ক্ষেত্রে ১০ ^ 7 এর চেয়ে বড় কুনু অ্যারে ডিক্লার করা থেকে বিরত থাকা উচিত ।

এর কারণ আসলে আপনার OS আপনাকে কখনো এত বিশাল বড় জায়গা চাহিবা মাত্র দিতে বাদ্ধ থাকিবে না । আপনি একজন ইউজার লেভেল প্রোগ্রামার । আপনার প্রতিটা প্রোগ্রামের জন্য OS আপনাকে একটা করে নির্দিষ্ট জায়গা করে দিয়েছে । এর বেশি জায়গা নিতে গেলেই রান টাইম ইরর খাবেন আর সাথে সাথে segmentation fault মেসেজ পেয়ে যাবেন ( লিনাক্স ইউজার হলে) ।

এইবার আপনি চাইলেন বিশাল মেমরি নিবেন । চাঁদ তারার সমান অ্যারে ডিক্লার করবেন । তাহলে কিছু কষ্ট করতে হবে । প্রথমে windows ( শিশু খেলনা) ফেলে দিতে হবে । তারপর চলে যেতে হবে লিনাক্সে । এইখানে এসে কার্নেল প্রোগ্রামার হিসেবে মামরি ম্যানেজমেন্ট চেঞ্জ করতে হবে । (paging , vm , synchronization , file system) এই টাইপে কিছু ভাল রকমের পরিবর্তন আনতে হবে । তাহলে আপনি বড় সাইজের অ্যারে নিয়ে কাজ করতে পারবেন । যেটা আসলেও অনেক ঝামেলার । কারণ আপনার প্রোগ্রাম ক্রাশ করলে RAM এর একটা বড় জায়গায় হোল তৈরি হবে ।

permanent link

answered 05 May '16, 13:58

meta_bot's gravatar image

meta_bot
1463

@meta_bot আমার মনে হয় আপনার "তবে RAM এর উপর আসলে এটা নির্ভর করে না ।" এই কথাটা সম্পূর্ণ সত্য নয়। কারণ RAM এ memory না থাকলে VM কোত্থেকে memory দিবে? অপারেটিং সিস্টেমগুলো এখন অনেক ইফিসিয়েন্ট। RAM এর উপর ভিত্তি করে তারা virtual memory বাড়িয়ে দেয়। আমি বলেছি "RAM এর একটা নির্দিষ্ট পারসেন্টেজ পর্যন্ত" এখানে সেই নির্দিষ্ট পারসেন্টেজটাই ভার্চুয়াল মেমোরি। অন্যদিকে উত্তরটা জেনারেল রাখার জন্যই RAM লিখেছি, কারণ এটা সবাই চিনে। ভার্চুয়াল মেমোরি টার্মটা আনলে সে সম্পর্কে আবার প্রশ্ন আসবে, মূল উত্তর অন্য দিকে মোর নিবে। ধন্যবাদ।

(06 May '16, 02:19) manetsus

@meta_bot আর আপনি হয়তো ডিফারেন্ট RAM এর পিসিতে রান না করেই কথা বলছেন। আপনি যেটা "(approx)১০^7 (int) এর উপর অ্যারে নিতে দিচ্ছে না" বললেন সেখানে আমি 5 * 10^8 (int) memory নিতে পারছি (6GB RAM)। ল্যাবে আমরা ডিফারেন্ট র‍্যামের পিসিতে রান করে দেখেছি এটা ডিফারেন্ট দেয়। আবারো ধন্যবাদ।

(06 May '16, 02:20) manetsus
Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×56
×2

question asked: 04 May '16, 19:36

question was seen: 929 times

last updated: 06 May '16, 02:20