আমার উত্তরগুলি আমার স্টাফ সহ অন্যান্য এসও প্রশ্ন থেকে সংগ্রহ করা হয়েছে।
What's the difference between kernel stack and user stack?
কার্নেল প্রোগ্রামার হিসাবে, আপনি জানেন যে কার্নেলটি ভুল ব্যবহারকারী প্রোগ্রাম থেকে সীমাবদ্ধ করা উচিত। ধরুন আপনি কার্নেল এবং ব্যবহারকারীর স্থান উভয়ের জন্য একই স্ট্যাক রেখেছেন, তারপরে ব্যবহারকারীর অ্যাপ্লিকেশনটিতে সহজ সেগফল্ট কার্নেল ক্র্যাশ করে এবং পুনরায় আরম্ভের প্রয়োজন।
আইএসপি স্ট্যাকের মতো সিপিইউতে একটি "কার্নেল স্ট্যাক" এবং প্রক্রিয়া অনুযায়ী একটি "কর্নেল স্ট্যাক" রয়েছে। প্রতিটি প্রক্রিয়াটির জন্য একটি "ব্যবহারকারী স্ট্যাক" রয়েছে, যদিও প্রতিটি থ্রেডের নিজস্ব স্ট্যাক রয়েছে, ব্যবহারকারী এবং কার্নেল উভয় থ্রেড সহ।
http://linux.derkeiler.com/Mailing-Lists/Kernel/2004-10/3194.html
Why kernel stack is used?
সুতরাং যখন আমরা কার্নেল মোডে থাকি তখন ফাংশন কলগুলি, ব্যবহারকারীর জায়গার অনুরূপ স্থানীয় ভেরিয়েবলগুলি মোকাবেলার জন্য স্ট্যাক ধরণের প্রক্রিয়াটি প্রয়োজন।
http://www.kernel.org/doc/Documentation/x86/kernel-stacks
If a local variable is declared in an ISR, where it will be stored?
এটি আইএসআর স্ট্যাকে সংরক্ষণ করা হবে (IRQSTACKSIZE)। আইএসআরটি কেবল একটি পৃথক বাধা স্ট্যাকের উপর চালিত হয় কেবলমাত্র যদি হার্ডওয়্যার সমর্থন করে। অন্যথায়, আইএসআর স্ট্যাক ফ্রেমগুলি বাধা থ্রেডের স্ট্যাকের দিকে ধাক্কা দেওয়া হয়।
ব্যবহারকারীর স্থানটি জানেন না এবং খোলামেলাভাবে বর্তমান প্রক্রিয়াটির কার্নেল স্ট্যাক বা পৃথক আইএসআর স্ট্যাকের মধ্যে বাধা দেওয়া হয় কিনা সে সম্পর্কে কোনও যত্ন নেই। সিপিইউতে যেমন বাধা আসে, তাই আইএসপি স্ট্যাকটি প্রতি সিপিইউতে হয়।
Does each process has its own kernel stack ?
হ্যাঁ. প্রতিটি প্রক্রিয়ার নিজস্ব কার্নেল স্ট্যাক থাকে।
Then how the process coordinates between both these stacks?
@ ফ্র্যাঙ্কএইচ এর উত্তর আমার কাছে দুর্দান্ত লাগছে।