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