আপনি সম্ভবত "কার্নেল" বা "ইউজার" মোডে অ্যাপ্লিকেশন চালানোর কথা শুনেছেন। এটি সব অপারেটিং সিস্টেম কীভাবে কাজ করে সেটির ওপর নির্ভর করে। একবার আপনি এটি বুঝতে পারলে, ইউজার মোড এবং কার্নেল মোডের মধ্যে পার্থক্য বোঝা সহজ।
একটি কম্পিউটার হার্ডওয়্যার, ইলেকট্রনিক কম্পোনেন্ট, এবং সফটওয়্যার, সেই হার্ডওয়্যার দ্বারা এক্সিকিউট হওয়া কম্পিউটার কোড থেকে oluşে। কিন্তু কম্পিউটারের এই দুটি অংশ কীভাবে একসাথে কাজ করে সেটি কম স্পষ্ট হতে পারে।
একটি কম্পিউটারের সবচেয়ে প্রয়োজনীয় উপাদান হল বিট বা "বাইনারি ডিজিট"। কম্পিউটার যা কিছু করে সেটি সব वन এবং জিরো হিসেবে রিপ্রেজেন্ট করা হয়। ভিন্ন কম্পিউটার কম্পোনেন্ট বিটগুলো ভিন্নভাবে রিপ্রেজেন্ট করে। একটি সিপিইউ-তে, মাইкроস্কোপিক ট্রানজিস্টরগুলো অন বা অফ হয়ে वन এবং জিরো রিপ্রেজেন্ট করে। সেই ট্রানজিস্টারগুলো লজিক গেট নামে লজিক্যাল কাঠামোতে সাজানো থাকে।
ইলেকট্রনিক কম্পিউটার মেমরিতে, বিটগুলো মেমরি সেলে চার্জ একটি নির্দিষ্ট থ্রেশহোল্ডের উপরে বা নিচে আছে সেটি দ্বারা রিপ্রেজেন্ট করা হয়। একটি মেকানিক্যাল হার্ড ড্রাইভে, বিটগুলো একটি স্পিনিং প্ল্যাটারের ওপর চৌম্বकीय ফ্লাকচুয়েশন হিসেবে রিপ্রেজেন্ট করা হয়। আপটিক্যাল ডিস্কে, পিটস এবং ল্যান্ডস যা লেজার লাইট রিফ্লেক্ট করে বা না করে সেগুলো একই কাজ করে।
বাইনারি কোডের ফিজিক্যাল রিপ্রেজেন্টেশন কীভাবে অর্জিত হয় সেটি 상관 किए বিনা, আপনি অতিম 따라서 সকল কনসিউমার কম্পিউটার কম্পোনেন্টকে এই র স্বাচ্ছন্দ্য মেশিন কোডে রিডিউস করতে পারেন।
তাহলে আপনি কিভাবে কম্পিউটারের হিউম্যান-ফ্রেন্ডলি ইন্টারফেস থেকে কম্পিউটারের নিজস্ব র, লো-লেভেল প্রসেসগুলোর কাছে যাবেন? সেখানেই অপারেটিং সিস্টেম আসে। এটি কম্পিউটারের হার্ডওয়্যারকে সরাসরি কন্ট্রোল করে।
এই সফটওয়্যার অ্যাপ্লিকেশন (এবং তাই ইউজার) যা কিছু চায় সেটি সিপিইউ এবং অন্যান্য কম্পোনেন্ট যেগুলো বুঝতে পারে সেসব মেশিন কোড ইনস্ট্রাকশনে অনুবাদ করে। এই প্রক্রিয়ায় সবচেয়ে ক্রিটিক্যাল সফটওয়্যার পিসটি হল কার্নেল।
নামটি ইঙ্গিত দেয় যেন, কার্নেল হল অপারেটিং সিস্টেমের কোর। কার্নেল হল সফটওয়্যার যা র্যামে বাস করে এবং কম্পিউটার যা কিছু করে সেটি ডিরেক্ট করে। যখন কিছু মেমরিতে লেখা হয়, তবে সেটি কার্নেলই যা এক্সিকিউশন ডিরেক্ট করে।
কার্নেল জানে কীভাবে জিপিইউ এবং নেটওয়ার্ক কার্ডের মতো হার্ডওয়্যারের সাথে ইন্টারফেস করা যায়, কিন্তু এটি সেগুলো তাদের teljes পটেনশিয়ালে অপারেট করার পদ্ধতি নাও জানতে পারে, কম্পিউটার ইন্ডাস্ট্রির জেনেরিক স্ট্যান্ডার্ডের ওপর নির্ভর করে।
এখানেই হার্ডওয়্যার ড্রাইভারগুলো আসে। ড্রাইভারগুলো আপনার অপারেটিং সিস্টেমকে বলে কীভাবে নির্দিষ্ট কম্পোনেন্টের সাথে কাজ করতে হয়, এজন্য উদাহরণস্বরূপ আপনাকে এনভিডিয়া এবং এএমডি জিপিইউ-এর জন্য ভিন্ন ড্রাইভার দরকার पड़ता है।
সঠিক ড্রাইভারসহ সজ্জিত, কার্নেল কম্পিউটারের মধ্যে চূড়ান্ত কর্তৃপক্ষ, এমনকি ডেটা ভয়ংকরভাবে ধ্বংস করতে পারে এমন কাজগুলো করার কর্তৃপক্ষও রয়েছে।
এমএস-ডসের দিনে, সফটওয়্যার ডেভেলপারদের তাদের সফটওয়্যার স্পেসিফিক্যালি ইউজারের হার্ডওয়্যারের জন্য লিখতে হতো। এমএস-ডস সিস্টেমে এটির সবচেয়ে খ্যাতিমান উদাহরণ ছিল সাউন্ড কার্ড ড্রাইভার।
একটি ভিডিও গেমকে সবচেয়ে জনপ্রিয় কার্ডগুলো (সাউন্ড ব্লাস্টার, অ্যাড-লিব, গ্রাভিস আল্ট্রাসাউন্ড, ইত্যাদি) সাপোর্ট করতে হতো এবং আশা করতো অধিকাংশ প্লেয়ার কভারড। আজ, জিনিসগুলো সম্পূর্ণ ভিন্নভাবে কাজ করে, এপিআই (API)-র فضلে।
মাইক্রোসফট ডাইরেক্টএক্স (DirectX) একটি চমৎকার উদাহরণ। আপনি যদি গভীর ব্যাখ্যা চান, তবে What Is DirectX and Why Is It Important? চেক আউট করুন। যাইহোক, জানার সবচেয়ে গুরুত্বপূর্ণ জিনিস হলো API সফটওয়্যার ডেভেলপারদের জন্য জিপিইউ-এর মতো কম্পোনেন্ট থেকে হার্ডওয়্যার রিসোর্স চাইতে একটি স্ট্যান্ডার্ড উপায় অফার করে। এছাড়া, হার্ডওয়্যার নির্মাতাদের শুধু নিশ্চিত করতে হয় যে তাদের প্রোডাক্টগুলো ডাইরেক্টএক্সের সাথে কম্প্যাটিবল যাতে যেকোনো একইভাবে কম্প্যাটিবল সফটওয়্যারের সাথে পূর্ণ কম্প্যাটিবিলিটি নিশ্চিত হয়।
API সফটওয়্যার অ্যাপ্লিকেশন এবং এর হার্ডওয়্যার ড্রাইভারসহ লো-লেভেল কার্নেলের মাঝপথে একটি ট্রান্সলেশন লেয়ার অফার করে। হ্যাঁ, এতে একটি ছোট পারফরম্যান্স পেনাল্টি আসে। তবুও, আধুনিক কম্পিউটারে, এটি নগণ্য, এবং এর সাথে വിവিধ সুবিধা আসে, যা আমরা অবশেষে ইউজার মোড এবং কার্নেল মোড-এ পৌঁছাই।
আধুনিক অপারেটিং সিস্টেম সৌটি বা হাজার হাজার "প্রসেস" একসাথে রান করে, তাদের প্রায়োরিটি এবং কম্পিউটেশনাল পাওয়ার রিকোয়ারমেন্টের ওপর ভিত্তি করে ডাইনামিক্যালি সিপিইউ টাইম দিয়ে।
আপনি যখন একটি অ্যাপ্লিকেশন লঞ্চ করেন, তবে এটি প্রসেস তৈরি করে, এবং সিপিইউ সেগুলো ইউজার মোড বা কার্নেল মোডে এক্সিকিউট করতে পারে।
ইউজার মোডে রান করা একটি উইন্ডোজ প্রসেসের কেবল নিজস্ব প্রাইভেট ভার্চুয়াল মেমরি অ্যাড্রেস স্পেস এবং হ্যান্ডেল টেবিলে অ্যাক্সেস থাকে। সফটওয়্যার এই টেবিলগুলো ব্যবহার করে র্যামে ডেটা স্টোর করে এবং রিসোর্স অনুরোধ করে। মেমরি বা অন্যান্য হার্ডওয়্যারের সাথে কোনো ডায়রেক্ট অ্যাক্সেস নেই, এবং কম্পিউটারের আসল হার্ডওয়্যারের সাথে সেই ভার্চুয়াল স্পেসগুলো ম্যাপ করা অপারেটিং সিস্টেমের দায়িত্ব।
এটি অনেক কারণে ভালো, কিন্তু সবচেয়ে গুরুত্বপূর্ণ সুবিধা হলো অ্যাপ্লিকেশনটি এর ভার্চুয়াল মেমরি অ্যাড্রেস স্পেসের বাইরে ডেটা ওভাররাইট বা অ্যাল্টার করতে পারে না। এছাড়া, কিছু ফাংশন ইউজার-মোড প্রসেসের জন্য অফ-লিমিটস, głównie সেগুলো যা সিস্টেম ক্র্যাশ বা ডেটা ধ্বংস করতে পারে।
যখন একটি প্রসেস লঞ্চ হয় বা কার্নেল মোডে এলিভেট করা হয়, তবে এর সিস্টেম রিসোর্সে পূর্ণ অ্যাক্সেস থাকে, এমনকি অপারেটিং সিস্টেমের জন্য রিজার্ভড সেগুলোকেও। তাই, তত্ত্বত:, এটি অপারেটিং সিস্টেমকে সঠিকভাবে চালানোর জন্য যে ক্রুশিয়াল ডেটা প্রয়োজন সেটি ওভাররাইট করতে পারে।
এই দুটি মোড সিপিইউ নিজে হার্ডওয়্যার লেভেলে إنফোর্স করে তা বোঝা গুরুত্বপূর্ণ। যদি ইউজার মোডে রান করা একটি অ্যাপ্লিকেশন কিছু করার চেষ্টা করে যা কার্নেল-মোড অ্যাক্সেস দরকার, তবে এটি একটি "ট্র্যাপ" বা "এক্সেপশন" জেনারেট করে। অপারেটিং সিস্টেম তখন অ্যাপ্লিকেশনটিকে ডিল করে, সাধারণত এটিকে শাট ডাউন করে এবং একটি ক্র্যাশ লগ জেনারেট করে যাতে ডেভেলপাররা দেখতে পান মেমরিতে কী ঘটেছিল যখন জিনিসগুলো রেলের বাইরে চলে গেল।
আপনি যদি কখনো ব্লু স্ক্রিন অফ ডেথ (কারো নেই?) অনুভব করেছেন যা আপনার কম্পিউটারকে বন্ধ বা রিস্টার্ট করার জন্য বাধ্য করেছিল, তবে এর পেছনে একটি কার্নেল-মোড প্রসেস থাকার সম্ভাবনা বেশি।
যখন একটি কার্নেল মোডে প্রসেস কিছু করে যা সেটি করতে=ar নয়, তবে অপারেটিং সিস্টেম সেটি থেকে রিকভার করতে পারে না, এবং পুরো কম্পিউটার থেমে যায়। যখন একটি ইউজার-মোড প্রসেস ব 도로 चला যায়, তবে কেবল অ্যাপ্লিকেশনটি ক্র্যাশ করে, এবং বাকি সফটওয়্যার এবং অপারেটিং সিস্টেম কোনো ইস্যু ছাড়াই চালিয়ে যেতে পারে।
এটি একটি ऐसा জায়গা যেখানে API একটি অত্যANT গুরুত্বপূর্ণ ভূমিকা পালন করে কারণ এটি API যে কার্নেল-মোড প্রিভিলেজ চায়। ইউজার-মোড অ্যাপ্লিকেশনগুলো মূলত এপিআই-কে ডেলিগেট করে যেসব অনুরোধ কার্নেল-মোড প্রিভিলেজ দরকার হতো।
এই কারণেই কার্নেল-মোড সাধারণত শুধু লো-লেভেল সিস্টেম প্রসেসগুলোর জন্য দেওয়া হয় যাদের কম্পিউটারের হার্ডওয়্যারকে সরাসরি এক্সেস করার দরকার। সাধারণত, একটি প্রসেসকে এই প্রিভিলেজ দেওয়া হয় কারণ এটি ইউজার মোডের চেয়ে বেশি পারফরম্যান্স দরকার। কিছু সিপিইউ ইনস্ট্রাকশন কেবল কার্নেল মোডে কাজ করে, তাই যদি একটি প্রসেস সেসব ফাংশন ব্যবহার করতে চায়, তবে সেটি এলিভেটেড হতে হবে।
আপনি যদি ব্লু স্ক্রিন অফ ডেথ নিয়ে সমস্যা অনুভব করেন, তবে উইন্ডোজ ১০-এর জন্য আমাদের ব্লু স্ক্রিন অফ ডেথ ট্রাবলশুটিং গাইড পড়তে ভুলবেন না!