যেখানে কোনও অপারেটিং সিস্টেম জড়িত রয়েছে সেখানে প্রোগ্রামগুলি ডিভাইস ড্রাইভারদের সাথে কথা বলে না, অন্তত সরাসরি নয়। প্রোগ্রামগুলি বিমূর্ততাগুলির সাথে কথা বলে যা তাদের অজানা, অবশেষে এক বা একাধিক স্তর বিমূর্তির মাধ্যমে ডিভাইস ড্রাইভারদের সাথে কথা বলা শেষ করে।
আমি আধুনিক অপারেটিং সিস্টেমগুলির জটিলতাগুলি এড়াতে যাচ্ছি এবং সিপি / এম ব্যবহার করব , উদাহরণস্বরূপ 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
এক মিনিটের মধ্যে প্রায় সব হয়। এখানে গ্রহণযোগ্যতাটি হ'ল সমস্ত প্রোগ্রামটি জানে যে একটি কনসোল রয়েছে এবং এটিতে লেখার উপায় রয়েছে। এটি এর বাইরে কিছু জানে না বা যত্ন করে না। সিপি / এম আই / ও এর জন্য ব্যবহার করে এমন দুটি বিমূর্ততার মধ্যে এটি প্রথম।
BDOS । 5
প্রোগ্রামটির নাম ঠিকানাটি পরবর্তী স্তর, বেসিক ডিস্ক অপারেটিং সিস্টেম বা বিডিওএসের প্রবেশ পয়েন্ট । বিডিওএস একটি সংখ্যাযুক্ত ফাংশনগুলির পুরো ভেলা সরবরাহ করে যা রেস্তোঁরা মেনু থেকে সংখ্যা অনুসারে অর্ডার দেওয়ার মতো। আপনি এটি C
ফাংশন নম্বর ( 2
কনসোল আউটপুট জন্য) এবং E
অক্ষরটি প্রেরণ করার জন্য রেজিস্টার লোড করে কনসোল আউটপুট চান তা বলুন । কনসোল আউটপুট একটি খুব সহজ অপারেশন, এবং বিডোসকে পরবর্তী স্তরটি কল করার পরিবর্তে এটির সাথে সত্যিই বেশি কিছু করতে হবে না।
BIOS- র। BIOS, বা বেসিক ইনপুট / আউটপুট সিস্টেম হ'ল স্তর যেখানে সমস্ত হার্ডওয়্যার-নির্দিষ্ট কোড থাকে। আধুনিক সিস্টেমে এটি ডিভাইস ড্রাইভারের একটি সেট হিসাবে বিবেচিত হবে। বিডিওএসের মতো, বিআইওএস খুব আদিম ক্রিয়াকলাপগুলির একটি মানক সেটের জন্য কল সরবরাহ করে যা বিডিওএস তার ব্যবসা করতে ব্যবহার করে। সেই অপারেশনগুলির মধ্যে একটির নাম বলা হয়CONOUT
, যা প্রোগ্রামটি যে হার্ডওয়্যার যা কিছু করে তা করে উপরের দিকে দুটি স্তর লিখতে বলেছে এমন চরিত্রটি পাওয়ার ক্ষেত্রে যত্ন নেয়। (পিসিগুলির বিপরীতে, জিনিসগুলি আগে একসাথে ছিল না Every প্রত্যেকের সিস্টেমে এটি ঘটানোর বিভিন্ন পদ্ধতি ছিল)) কনডোল আউটপুট বিডিওএসের জন্য একটি সহজ পাস-থ্রো, তবে ডিস্কে ফাইল তৈরির মতো আরও জটিল কিছু করা অনেকের প্রয়োজন হতে পারে বিআইওএস গণমাধ্যমকে চালিত করার আহ্বান জানায়। আবার, কারণ বিআইওএসের একটি স্ট্যান্ডার্ড, বিমূর্ত ইন্টারফেস রয়েছে, বিডিওএস সর্বদা জানে যে কী চায় তা কীভাবে পেতে হয় এবং বিআইওএস কীভাবে তা করে তা যত্ন করে না।
আপনি সম্ভবত ভাবছেন যে কেন কেবল দুটির পরিবর্তে দুটি প্রোগ্রাম (প্রোগ্রাম-টু-বিডিওএস এবং বিডোস-টু-বিআইওএস) রয়েছে। উত্তরটি হ'ল সিপি / এম এবং এর বিডিওএস কম্পিউটার বিকাশকারীদের বাইনারি আকারে সরবরাহ করা যেতে পারে, তারা তাদের হার্ডওয়ারের জন্য ডিভাইস ড্রাইভারদের সাথে একটি কাস্টম বিআইওএস লিখতে, দু'জনকে একসাথে বল্ট করে এবং তাদের সিস্টেমের জন্য ওএস হিসাবে শিপ করে। এটি একটি বিরাট ব্যাপার ছিল কারণ একটি সংস্থা বিডিওএস বজায় রেখেছিল এবং তাই ব্যবহারকারী প্রোগ্রামগুলির জন্য সর্বদা একটি পরিচিত পরিমাণ ছিল, ফলে বিভিন্ন অ্যাপ্লিকেশনকে অনেক বিস্তৃত (সময়ের জন্য) বিভিন্ন ধরণের হার্ডওয়্যারে একই অ্যাপ্লিকেশনগুলি চালানো সম্ভব হয়েছিল। এ কারণেই অপারেটিং সিস্টেম বিদ্যমান এবং আমরা কেবল এমন প্রোগ্রামগুলি লিখি না যা সরাসরি হার্ডওয়্যারকে পিছনে ফেলে দেয় ।
আমি এখানে বর্ণিত সমস্ত কিছুই আধুনিক অপারেটিং সিস্টেমগুলিতেও প্রযোজ্য। ইউনিক্স, উদাহরণস্বরূপ, ফাইল হিসাবে সমস্ত বিমূর্ত করে। এটা তোলে প্রোগ্রাম একই (সিস্টেম কলের সেট দেয় open()
, write()
, close()
, ইত্যাদি) তা একটি ডিস্ক ড্রাইভ বা সিরিয়াল পোর্ট এর যোগাযোগ করতে। সিদ্ধান্ত এবং বিমূর্ততাগুলির সেটটি আরও জটিল, তবে অপারেশনটি ঘটানোর জন্য নীচের স্তরে কোন ডিভাইস ড্রাইভার কোডটি চালানো দরকার তা অবশেষে এটি সিদ্ধ হয়ে যায়।