আমি জংয়ে অ্যাসিঙ্ক আইও বাস্তবায়নের বিষয়ে এই আলোচনাটি দেখছিলাম এবং কার্ল দুটি সম্ভাব্য মডেলের উল্লেখ করেছেন। প্রস্তুতি এবং সমাপ্তি।
প্রস্তুতি মডেল:
- আপনি সকেট থেকে যে কার্নেলটি পড়তে চান তা বলুন
- কিছুক্ষণের জন্য অন্য কিছু করুন ...
- সকেট প্রস্তুত হলে কার্নেল আপনাকে জানায়
- আপনি পড়ুন (একটি বাফার পূরণ করুন)
- আপনার যা প্রয়োজন তা করুন
- বাফার মুক্ত করুন (মরিচা দিয়ে স্বয়ংক্রিয়ভাবে ঘটে)
সমাপ্তি মডেল:
- আপনি কার্নেলটি পূরণ করতে বাফার বরাদ্দ করেন
- কিছুক্ষণের জন্য অন্য কিছু করুন ...
- বাফারটি কখন পূরণ করা হবে তা কার্নেলটি আপনাকে বলে
- আপনার ডেটা দিয়ে যা প্রয়োজন তা করুন
- বাফার মুক্ত করুন
কার্লের প্রস্তুতি মডেলটি ব্যবহারের উদাহরণে আপনি প্রস্তুত বিশ্বস্ত বাফারকে পূরণ এবং মুক্ত করার জন্য প্রস্তুত সকেটের উপরে পুনরাবৃত্তি করতে পারেন যা দেখে মনে হয় এটি অনেক কম স্মৃতি ব্যবহার করবে ।
এখন আমার অনুমান:
হুডের নীচে (কার্নেল স্পেসে) যখন কোনও সকেটকে "প্রস্তুত" বলা হয়, ডেটা ইতিমধ্যে বিদ্যমান exists এটি নেটওয়ার্কের (বা যে কোনও জায়গা থেকে) সকেটে এসে গেছে এবং ওএস ডেটা ধরে রেখেছে।
এটি মনে হয় না যে সেই স্মৃতি বরাদ্দ যাদুকরীভাবে প্রস্তুতি মডেলটিতে ঘটে না। এটি কেবলমাত্র ওএস আপনাকে এড়িয়ে চলেছে। সমাপ্তি মডেলটিতে, ওএস আপনাকে আসলে ডেটা প্রবাহিত হওয়ার আগে এবং মেমরিটি বরাদ্দ করতে বলছে এবং যা ঘটছে তা স্পষ্ট।
রেডিনিয়াস মডেলের আমার সংশোধিত সংস্করণটি এখানে:
- আপনি সকেট থেকে যে কার্নেলটি পড়তে চান তা বলুন
- কিছুক্ষণের জন্য অন্য কিছু করুন ...
- সংশোধন: ওএসে ডেটা আসে (কার্নেলের স্মৃতিতে কিছু জায়গা)
- কার্নেল আপনাকে জানায় সকেট প্রস্তুত
- আপনি পড়ুন (অ্যাওভার কার্নেল বাফার থেকে আলাদা করে অন্য একটি বাফার পূরণ করুন (অথবা আপনি এটির জন্য একটি পয়েন্টার পান?))
- আপনার যা প্রয়োজন তা করুন
- বাফার মুক্ত করুন (মরিচা দিয়ে স্বয়ংক্রিয়ভাবে ঘটে)
/ আমার অনুমান
আমি ব্যবহারকারীর স্পেস প্রোগ্রামটি ছোট রাখার মতোই হয়েছি তবে আমি এখানে যা ঘটছে তা বাস্তবে কী তা নিয়ে কিছু স্পষ্টতা চেয়েছিলাম। আমি দেখতে পাচ্ছি না যে একটি মডেল অন্তর্নিহিতভাবে কম মেমরি ব্যবহার করবে বা উচ্চতর স্তরের যুগ্ম IO সমর্থন করবে। আমি এই সম্পর্কে চিন্তা এবং গভীর ব্যাখ্যা শুনতে পছন্দ করি।