কোনও প্রোগ্রাম কোনও ডিভাইস ড্রাইভারের সাথে ঠিক কীভাবে কথা বলে?


12

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

তবে সাধারণভাবে ড্রাইভারদের সাথে কে ঠিক কথা বলে? প্রোগ্রামারটি কী ড্রাইভারটি কোনও ফাংশন কল করার জন্য অ্যাপ্লিকেশনটি লিখেছেন? অথবা প্রোগ্রামার অপারেটিং সিস্টেমের মাধ্যমে কোনও ফাংশন কল করে যা ড্রাইভারকে কলটি পরিচালনা করে?


এটি সাহায্য করতে পারে। iacoma.cs.uiuc.edu/~nakano/dd/drivertut3.html এছাড়াও এটি। en.m.wikibooks.org/wiki/Windows_Programming/...
RubberDuck

1
উভয় একটি সামান্য বিট, এবং এটি ওএস এবং ডিভাইসের ধরণের থেকে পৃথক হয়।
whatsisname

উত্তর:


12

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

আমি আধুনিক অপারেটিং সিস্টেমগুলির জটিলতাগুলি এড়াতে যাচ্ছি এবং সিপি / এম ব্যবহার করব , উদাহরণস্বরূপ 45 বছর আগে বিকশিত একটি মাইক্রোকম্পিউটার অপারেটিং সিস্টেম। সিপি / এম তিন স্তর সহ একটি স্তর কেক ছিল:

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

LD C,2   ; Load 2 into register C
LD E,65  ; Load the ASCII code for 'A' into register E
CALL 5   ; Call CP/M's routine for getting things done

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

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

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

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

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


আমি সত্যিই এর আগে সিপি / এম কোডের দিকে নজর দিইনি (এটি আমার সময়ের একটু আগে ... আমি সিপি / এম কম্পিউটার ব্যবহার করেছি তবে তাদের জন্য কখনও কোড লেখা হয়নি), তবে আমি call 5এখানে ব্যবহার করে বিস্মিত হয়েছি । এর rst 8চেয়ে বেশি কার্যকর হতে পারত না (এটি গন্তব্যের ঠিকানায় 3 বাইট মেমরির বলি দিত, তবে যতবার বলা হয় 2 টি সংরক্ষণ করুন ...)?
জুলস

@ জুলেস: সিপি / এম 8080 এর জন্য বিকাশ করা হয়েছিল, যার কেবলমাত্র একটি বাধা মোড ছিল যেখানে বাধা ডিভাইসগুলি RSTডেটা বাসে একক বাইট নির্দেশ (সাধারণত ক ) রাখে। আমি নিশ্চিতভাবে বলতে পারি না, তবে এটি এমনও হতে পারে যে ডিভাইস প্লাস ডিডিটির (যা ব্রেকপয়েন্টগুলি ঘটতে তাদের ব্যবহৃত হয়েছিল) প্লাস্টিকের বিডিওএসে প্রবেশের জন্য প্রয়োজনীয় সমস্ত বিষয়গুলি প্রয়োজন হিসাবে ঘুরে দেখার মতো পর্যাপ্ত স্লট ছিল না one ।
ব্লারফ্ল

আহ। হ্যাঁ, তা বোঝায়। আমার 8-বিট বিকাশের অভিজ্ঞতা এমন মেশিনগুলির মধ্যে সীমাবদ্ধ যা কেবলমাত্র একটি একক বিঘ্নিত উত্স ছিল তাই এই জাতীয় জিনিসগুলির সম্পর্কে এত চিন্তা করার দরকার নেই ... :)
জুলস

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

@ জেসন: উইকিপিডিয়ায় একটি পৃষ্ঠা রয়েছে যা আর্কিটেকচার বর্ণনা করে এবং উত্তর সরবরাহ করে। মাইক্রোসফ্ট 1993 সাল থেকে উত্পাদিত সমস্ত কিছুই এই আর্কিটেকচারটি ব্যবহার করে। এটি অনেকটা একই জিনিস, কেবল পিঠে আরও স্তর রয়েছে yers
blrfl

0

বিভিন্ন সম্ভাবনার একগুচ্ছ রয়েছে:

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