আপনি সেই লোকটির দিকে তাকিয়ে আছেন যে এই পছন্দটি করেছে। ডেভিড কাটার এবং তার দলটি একটি মেগাবাইট ডিফল্ট স্ট্যাক আকার হিসাবে বেছে নিয়েছিল। .NET বা C # এর সাথে কিছুই করার নেই, যখন তারা উইন্ডোজ এনটি তৈরি করেছিল তখন এটিকে পেরেক দেওয়া হয়েছিল। একটি প্রোগ্রামের EXE শিরোনাম বা ক্রিয়েটথ্রেড () উইনাপি কলটি স্ট্যাকের আকারটি স্পষ্টভাবে নির্দিষ্ট না করে, তখন একটি মেগাবাইট যা তা গ্রহণ করে। কোনটি সাধারণ উপায়, প্রায় কোনও প্রোগ্রামার আকার বাছাই করতে এটি OS এ ছেড়ে দেয়।
এই পছন্দটি সম্ভবত উইন্ডোজ এনটি ডিজাইনের প্রাক-তারিখগুলি, ইতিহাস এটি সম্পর্কে খুব ন্যূনতম। কাটলার এ সম্পর্কে একটি বই লিখলে ভাল হত, তবে তিনি কখনও লেখক হননি। কম্পিউটারগুলি যেভাবে কাজ করে সে সম্পর্কে তিনি অসাধারণ প্রভাবশালী। তাঁর প্রথম ওএস ডিজাইনটি আরএসএক্স -11 এম, ডিইসি কম্পিউটারের জন্য একটি 16-বিট অপারেটিং সিস্টেম (ডিজিটাল সরঞ্জাম কর্পোরেশন) ছিল। এটি গ্যারি কিল্ডালের সিপি / এমকে ব্যাপকভাবে প্রভাবিত করেছে, 8-বিট মাইক্রোপ্রসেসরের জন্য প্রথম শালীন ওএস। যা এমএস-ডসকে ব্যাপকভাবে প্রভাবিত করে।
তার পরবর্তী নকশাটি ছিল ভিএমএস, ভার্চুয়াল মেমরি সমর্থন সহ 32-বিট প্রসেসরের অপারেটিং সিস্টেম। খুব সফল. তার পরেরটি ডিসি কর্তৃক সস্তার পিসি হার্ডওয়্যারের সাথে প্রতিযোগিতা করতে না পারার সময় ভেঙে ফেলা শুরু করার সময় বাতিল হয়েছিল canceled কিউ মাইক্রোসফ্ট, তারা তাকে একটি প্রস্তাব দিয়েছিল সে অস্বীকার করতে পারে না। তাঁর অনেক সহকর্মীও এতে যোগ দিয়েছিলেন। তারা ভিএমএস ভি 2-তে কাজ করেছে, উইন্ডোজ এনটি হিসাবে বেশি পরিচিত। ডিসি এ নিয়ে বিচলিত হয়েছিলেন, টাকা নিষ্পত্তি করার জন্য হাত বদল করেছেন। ভিএমএস ইতিমধ্যে একটি মেগাবাইট বাছাই করেছে কিনা এমন কিছু যা আমি জানি না, আমি কেবলমাত্র আরএসএক্স -11কে যথেষ্ট ভাল জানি। এটা অসম্ভব।
যথেষ্ট ইতিহাস। একটি মেগাবাইট অনেক , একটি আসল থ্রেড খুব কমই কয়েক মুঠো কিলোবাইটের বেশি খায়। সুতরাং একটি মেগাবাইট আসলে অপ্রয়োজনীয়। এটি আপনার চাহিদা মতো পৃষ্ঠা ভার্চুয়াল মেমরি অপারেটিং সিস্টেমে যে ধরণের অপচয় করতে পারে তা হ'ল মেগাবাইট হ'ল ভার্চুয়াল মেমরি । প্রসেসরের কেবলমাত্র সংখ্যা, প্রতি 4096 বাইটের জন্য একটি করে। আপনি প্রকৃতপক্ষে শারীরিক স্মৃতি, মেশিনের র্যাম কখনই ব্যবহার করেন না যতক্ষণ না আপনি প্রকৃতপক্ষে এটিকে সম্বোধন করেন।
নেট নেট প্রোগ্রামে এটি অতিরিক্ত অতিরিক্ত because যা স্ট্যাকের পাশাপাশি স্ট্যাকিং স্ট্রিং এবং বাফার (অ্যারে) বড় স্ট্যাক ফ্রেম তৈরি করে। ম্যালওয়ার আক্রমণ আক্রমণকারী হিসাবে কুখ্যাত, একটি বাফার ওভারফ্লো ডেটা দিয়ে প্রোগ্রামটি ম্যানিপুলেট করতে পারে। উপায় নয়। নেট প্রোগ্রামগুলি কাজ করে, জিসি হিপগুলিতে স্ট্রিং এবং অ্যারে বরাদ্দ করা হয় এবং সূচীকরণ পরীক্ষা করা হয়। সি # দিয়ে স্ট্যাকের জন্য জায়গা বরাদ্দের একমাত্র উপায় হ'ল অনিরাপদ স্ট্যাকলোক কীওয়ার্ড।
.NET এ স্ট্যাকের একমাত্র অপ্রয়োজনীয় ব্যবহার হ'ল জিটারটি। এটি আপনার থ্রেডের স্ট্যাকটি কেবলমাত্র ইন-টাইম এমএসআইএলকে মেশিন কোডে সংকলন করতে ব্যবহার করে। এটির জন্য কতটা জায়গা প্রয়োজন তা আমি কখনও দেখিনি বা পরীক্ষা করে দেখিনি, এটি কোডের প্রকৃতি এবং অপ্টিমাইজার সক্ষম কিনা তা নির্ভর করে, তবে কয়েক দশক কিলোবাইট একটি মোটামুটি অনুমান। যা অন্যথায় এই ওয়েবসাইটটির নাম কীভাবে পেয়েছে,। নেট প্রোগ্রামে একটি স্ট্যাক ওভারফ্লো বেশ মারাত্মক। ব্যতিক্রমটি ধরার চেষ্টা করে এমন কোনও কোড এখনও নির্ভরযোগ্যভাবে জেআইটি করার জন্য পর্যাপ্ত জায়গা (3 কিলোবাইটের কম) অবশিষ্ট নেই। ডেস্কটপে কাবুম একমাত্র বিকল্প।
সর্বশেষে তবে সর্বনিম্ন নয়, একটি। নেট প্রোগ্রাম স্ট্যাকের সাথে বেশ কিছু অনুৎপরমূলক কিছু করে। সিএলআর একটি থ্রেডের স্ট্যাক কমিট করবে । এটি একটি ব্যয়বহুল শব্দ যার অর্থ এটি কেবল স্ট্যাকের আকার সংরক্ষণ করে না, এটিও নিশ্চিত করে যে অপারেটিং সিস্টেমের পেজিং ফাইলে স্থানটি সংরক্ষিত রয়েছে যাতে প্রয়োজনে স্ট্যাকটি সর্বদা সরিয়ে নেওয়া যায়। প্রতিশ্রুতিবদ্ধতা ব্যর্থতা মারাত্মক ত্রুটি এবং একটি প্রোগ্রামকে নিঃশর্তভাবে বন্ধ করে দেয়। এটি কেবলমাত্র খুব অল্প র্যামযুক্ত মেশিনে ঘটে যা পুরোপুরি অনেকগুলি প্রক্রিয়া চালায়, প্রোগ্রামগুলি মারা যেতে শুরু করার আগে এই জাতীয় মেশিনটি গুড় হয়ে যাবে। একটি সম্ভাব্য সমস্যা 15+ বছর আগে, আজকের নয়। প্রোগ্রামাররা যারা এফ 1 রেস-কারের মতো কাজ করার জন্য তাদের প্রোগ্রামটি সুর করে <disableCommitThreadStack>
তাদের .config ফাইলে উপাদানটি ব্যবহার করে ।
Fww, ক্যাটলার অপারেটিং সিস্টেম ডিজাইন করা বন্ধ করেনি। সেই ছবিটি তিনি আজুরে কাজ করার সময় তৈরি হয়েছিল।
আপডেট করুন, আমি লক্ষ করেছি যে। নেট আর স্ট্যাকটি কমিট করে না। কখন বা কেন এই ঘটনাটি ঘটেছিল ঠিক তা নিশ্চিত নয়, আমি যাচাই করেছিলাম এটি অনেক দীর্ঘ হয়েছে। আমি অনুমান করছি এই নকশার পরিবর্তনটি প্রায় কোথাও কোথাও ঘটেছিল। নেট 4.5। খুব বুদ্ধিমান পরিবর্তন।
Thread
কনস্ট্রাক্টরের ডান ওভারলোড ব্যবহার করে স্ট্যাকের আকারটিও নির্দিষ্ট করতে পারেন । কিন্তু, এটি প্রশ্ন করে, আপনার আরও বড় স্ট্যাকের প্রয়োজন কেন?