কেন আমি / হে নিরবচ্ছিন্ন?


11

আই / ওকে নিরবচ্ছিন্ন করার পিছনে যুক্তি কী? আই / ও-কে কোনও প্রক্রিয়া পরিচালনা করার সিগন্যাল হ্যান্ডেল করার অনুমতি দেওয়া হলে কী নেতিবাচক পরিণতি হবে?


write(2)লিখিত প্রকৃত বাইট গণনাটি ফেরত দিয়ে তাড়াতাড়ি ফিরে যাওয়ার অনুমতি দেওয়া হয়েছে, যা তৃতীয় আর্গ হিসাবে পাস হওয়া বাফার দৈর্ঘ্যের চেয়ে কম হতে পারে।
পিটার কর্ডেস

উত্তর:


9

কোনও আই / ও কোনও প্রক্রিয়া দ্বারা চালিত সিস্টেম কল দ্বারা পরিচালিত হয়। অবশেষে এ জাতীয় সিস্টেম কল আসল I / O ক্রিয়াকলাপটি সম্পাদনের জন্য কিছু উপযুক্ত নিম্ন-স্তরের ডিভাইস ড্রাইভার ফাংশনে চলে যাবে।

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

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


5

এখন যেহেতু আমি মরিস বাচের লেখা "দ্য ডিজাইন অফ দ্য ইউনিক্স অপারেটিং সিস্টেমস" বইটি পড়েছি, আমাকে এই প্রশ্নের উত্তরটি নিজেরাই দেওয়া যাক।

সংক্ষেপে, I / O নিরবচ্ছিন্ন করা সংকেত দ্বারা হস্তক্ষেপ না করে I / O টাস্ক ফিনিস ASAP তৈরি করার উদ্দেশ্যে।

সম্পর্কিত কিছু জ্ঞান যা আমি বইটি থেকে পেয়েছি:

  1. "নিরবচ্ছিন্ন" শব্দটির অর্থ "নিরবচ্ছিন্ন ঘুম" হওয়া উচিত। যখন কোনও প্রক্রিয়া নিরবচ্ছিন্ন ঘুমে থাকে, তখন এটি সংকেত দিয়ে জাগানো যায় না, বা এটি সংকেতগুলি পরিচালনা করতে পারে না।
  2. একটি প্রক্রিয়া সংকেত পরিচালনা করে যখন: ক। এটি কার্নেল মোডে চলছে এবং ব্যবহারকারী মোডে ফিরে আসতে চলেছে। খ। যখন ঘুম বাধাগ্রস্ত হয় তখন ঘুমের অবস্থা প্রবেশ করতে এবং ছেড়ে দিতে চলেছে।
  3. কোনও সিগন্যাল দ্বারা ঘুমন্ত প্রক্রিয়া জাগ্রত হলে কী ঘটে? এটি সংকেতটি পরিচালনা করবে, ডিফল্ট ক্রিয়াটি প্রক্রিয়া থেকে বেরিয়ে আসছে। যখন কোনও প্রক্রিয়া I / O সমাপ্তির অপেক্ষায় থাকে, আপনি অবশ্যই তা চাই না যে এটি অকাল সময়ের বাইরে বেরিয়ে আসে।

2

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


3
একটি স্ক্র্যাচ সিডি পড়ার চেষ্টা করুন।
জোশুয়া

1
অথবা sshfs দিয়ে মাউন্ট করা এবং তারপরে নেটওয়ার্ক কর্ডে টানতে। অন্তর্নিহিত মিডিয়া / স্টোরেজ যখন কাজ করে তখনও অবিচ্ছিন্ন ঘুম ঘটে। এবং এটি মোকাবিলা করার জন্য পাছায় সাধারণত রক্তাক্ত ব্যথা হয়।
নুবার্কে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.