লিনাক্সে কোনও ডিভাইস ড্রাইভার কোনও প্রোগ্রাম / প্রক্রিয়া বা এটি কেবল একটি লাইব্রেরি?


23

কোনও ডিভাইস ড্রাইভার কী এমন একটি প্রোগ্রাম যা নিজেরাই চলতে থাকে, বা এটি কেবল একটি লাইব্রেরি (ফাংশনগুলির একটি গ্রুপ) যা মেমরিতে লোড করা হয় এবং প্রোগ্রামগুলি এর কোনও ফাংশনকে কল করতে পারে (তাই এটি নিজে থেকে চলছে না)।

এবং যদি এটি কোনও প্রোগ্রাম হয় তবে এর কোনও প্রসেস আইডি রয়েছে, তাই আমি কি অন্য কোনও প্রক্রিয়াটি শেষ করতে পারি ঠিক একইভাবে কোনও ডিভাইস ড্রাইভারকেও সমাপ্ত করতে পারি?


1
আপনি rmmod সহ কোনও ড্রাইভারকে "আনলোড" করতে পারেন, তবে কেবল এটির ব্যবহার না করা থাকলে।
pjc50

উত্তর:


35

লিনাক্সে, অনেকগুলি ডিভাইস ড্রাইভারগুলি কার্নেলের অংশ, লাইব্রেরি বা প্রক্রিয়া নয়। এই ব্যবহার করে ডিভাইস ফাইল (সাধারণত মধ্যে এটির সাথে ইন্টারঅ্যাক্ট প্রোগ্রাম /dev) এবং বিভিন্ন সিস্টেম কল যেমন open, read, write, ioctl...

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

কোনও ডিভাইস ড্রাইভারকে "সমাপ্ত" করতে, আপনাকে এটি ব্যবহার করে সমস্ত প্রক্রিয়া বন্ধ করতে হবে, তারপরে তার কার্নেল মডিউলগুলি (এটি মডিউল হিসাবে নির্মিত বলে ধরে নেওয়া) মুছে ফেলতে হবে, এবং বিকল্পভাবে অন্য যে কোনও মডিউলগুলি এটি ব্যবহার করে এবং এটি আর প্রয়োজন নেই। আপনি আপনার সিস্টেমে মডিউলগুলি ব্যবহার করে তালিকাভুক্ত করতে পারেন lsmodএবং এগুলি ব্যবহার করে আনডলোড করতে পারেন rmmodবা modprobe -rউভয়ই কেবল তখনই কাজ করবে যদি lsmodতাদের কোনও ব্যবহারকারী না থাকে তা বোঝায়।


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

9

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

কিছু ক্ষেত্রে লিনাক্স কেবল সফ্টওয়্যারটিতে লিখিত একটি জেনেরিক প্রোটোকল সরবরাহ করে যেখানে প্রকৃত "ড্রাইভার" একটি ডিভাইস ট্রি। এটি একটি হার্ডওয়্যার পরামিতিগুলির একটি কনফিগারেশন এবং কোন সফ্টওয়্যার ব্যবহার করে কোনও ড্রাইভার তৈরি করে।

সাধারণত স্পর্শকৃত ড্রাইভার ইন্টারফেস এবং প্রোটোকলগুলি কার্নেল মডিউলগুলি ব্যবহার করে প্রয়োগ করা হয় যা ডিভাইস গাছ বা udev নিয়ম দ্বারা সংজ্ঞায়িত হিসাবে লোড করা হয়। একটি কার্নেল মডিউল কঠোর অর্থে কোনও প্রক্রিয়া বা গ্রন্থাগার নয়।

একটি লাইব্রেরি কোডের একটি স্থির সেট যা কোনও প্রদত্ত প্রক্রিয়াতে লোড করা যায়। আধুনিক অপারেটিং সিস্টেমগুলি এই লাইব্রেরিগুলিকে ভাগ করা মেমরিতে লোড করে। একটি প্রক্রিয়া নিজেই যে কোনও সংখ্যক শেয়ার্ড লাইব্রেরির সাথে লিঙ্ক করতে পারে।

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

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

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


0

একটি লিনাক্স ডিভাইস ড্রাইভার, মূলত একটি কার্নেল-স্পেস লাইব্রেরি । এর কলগুলি বেশিরভাগ উচ্চ-স্তরের ড্রাইভার দ্বারা বা ব্যবহারকারী-স্থান প্রক্রিয়াগুলি ব্যবহার করে শুরু করা হয়েছিল।

এটি থেকে কেবল কয়েকটি ব্যতিক্রম রয়েছে:

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

অন্যান্য সিস্টেমে, জিএনইউ হার্টের মতো, ড্রাইভারগুলি মূলত তাদের সাথে প্রক্রিয়াগুলি ইন্টারঅ্যাক্ট করতে পারে da লিনাক্সে, ড্রাইভারগুলি লাইব্রেরি হয়। যদিও উভয় ধারণারই এর সুবিধা এবং অসুবিধা রয়েছে has

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.