/ প্রোক / মেমিনফো আউটপুটে বাফার এবং ক্যাশেড কলামগুলির মধ্যে পার্থক্য কী?


উত্তর 1:

আই / ও অপারেশনগুলিতে প্রায়শই উচ্চ বিলম্ব হয়; আই / ও প্রক্রিয়া শুরু করার এবং এর সমাপ্তির মধ্যে সময় কয়েক মিলিয়ন প্রসেসরের ক্লক চক্র হতে পারে। এই বিলম্বিতা বেশিরভাগটি হার্ডওয়্যার নিজেই কারণে হয়; উদাহরণস্বরূপ, হার্ড ডিস্ক থেকে তথ্য পড়া বা লেখা যায় না যতক্ষণ না ডিস্কের কাটনা লক্ষ্য খাতগুলি সরাসরি পঠন / লেখার শিরোনামের আওতায় নিয়ে আসে। (এই লেখার সময়, 7200 আরপিএম হার্ড ড্রাইভগুলি আদর্শ, সুতরাং এই প্রক্রিয়াটি সম্পূর্ণ হতে প্রায় 8 মিলিসেকেন্ড পর্যন্ত সময় নিতে পারে)) যখন ইনপুট / আউটপুট ডিভাইসটি একটি নেটওয়ার্ক ইন্টারফেস হয়, তখন বিলম্বটি সাধারণত বেশি হয়।

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

মাল্টিটাস্কিং অপারেটিং সিস্টেমে, হার্ডওয়্যার ডিভাইসগুলি কার্নেল দ্বারা নিয়ন্ত্রিত হয় এবং ব্যবহারকারীর স্পেস অ্যাপ্লিকেশনগুলি এগুলিতে সরাসরি অ্যাক্সেস করতে পারে না। এই কারণে, I / O সম্পাদন করতে পারফর্মিং সিস্টেম কলগুলি প্রয়োজন, যা বিভিন্ন কারণে, ওভারহেড প্রবর্তন করে। এই ওভারহেডটি সাধারণত মিলিসেকেন্ডের পরিবর্তে মাইক্রোসেকেন্ডের ক্রম হয়, সুতরাং আইফোন / অপেক্ষাকৃত কম পরিমাণে সঞ্চালিত প্রোগ্রামগুলির জন্য এখানে বাফারিং ব্যবহার করা গুরুত্বপূর্ণ নয়, তবে I / O আবদ্ধ অ্যাপ্লিকেশনগুলির জন্য বড় পার্থক্য তৈরি করে (যার অর্থ তারা তাদের বেশিরভাগ সময় I / O সম্পূর্ণ হওয়ার অপেক্ষায় ব্যয় করুন, গণনা সম্পাদন করার চেয়ে যে সিপিইউটি দ্রুততর হবে)।

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