আপনি "কার্ণেল" বা "ব্যবহারকারী" মোডে চলমান অ্যাপ্লিকেশন সম্পর্কে শুনে থাকতে পারেন৷ অপারেটিং সিস্টেমগুলি তাদের কাজ করার সময় কীভাবে কাজ করে তার উপর নির্ভর করে। একবার আপনি এটি বুঝতে পারলে, ব্যবহারকারী মোড এবং কার্নেল মোডের মধ্যে পার্থক্য উপলব্ধি করা সহজ৷
৷অপারেটিং সিস্টেম কী করে তা বোঝা
একটি কম্পিউটারে হার্ডওয়্যার, ইলেকট্রনিক উপাদান এবং সফ্টওয়্যার থাকে, সেই হার্ডওয়্যার দ্বারা নির্বাহিত কম্পিউটার কোড। তবে তারা কীভাবে একসাথে কাজ করে তা কম স্পষ্ট হতে পারে।
একটি কম্পিউটারের সবচেয়ে প্রয়োজনীয় উপাদান হল বিট বা "বাইনারী সংখ্যা।" একটি কম্পিউটার যা কিছু করে তা এক এবং শূন্য হিসাবে উপস্থাপন করা হয়। বিভিন্ন কম্পিউটার উপাদান বিভিন্ন উপায়ে বিট প্রতিনিধিত্ব করে। একটি সিপিইউ-তে, মাইক্রোস্কোপিক ট্রানজিস্টরগুলি চালু বা বন্ধ করে এক এবং শূন্যের প্রতিনিধিত্ব করে। এই ট্রানজিস্টরগুলোকে লজিক্যাল স্ট্রাকচারে সাজানো হয়, যাকে বলা হয় লজিক গেট।
ইলেকট্রনিক কম্পিউটার মেমরিতে, বিটগুলিকে একটি নির্দিষ্ট থ্রেশহোল্ডের উপরে বা নীচে চার্জ থাকা মেমরি কোষ দ্বারা উপস্থাপন করা হয়। একটি যান্ত্রিক হার্ড ড্রাইভে, বিটগুলিকে স্পিনিং প্ল্যাটারে পরিমাপ করা চৌম্বকীয় ওঠানামা হিসাবে উপস্থাপন করা হয়। অপটিক্যাল ডিস্কে, গর্ত এবং জমিগুলি যেগুলি লেজারের আলো প্রতিফলিত করে বা প্রতিফলিত করে না সেগুলি একই কাজ করে।
বাইনারি কোডের শারীরিক উপস্থাপনা যেভাবেই অর্জন করা হোক না কেন, আপনি অবশেষে এই কাঁচা মেশিন কোডে সমস্ত ভোক্তা কম্পিউটার উপাদান কমিয়ে আনতে পারেন।
তাহলে আপনি কীভাবে কম্পিউটারের মানব-বান্ধব ইন্টারফেস থেকে কম্পিউটারের কাঁচা, নিম্ন-স্তরের প্রক্রিয়াগুলিতে যাবেন? সেখানেই অপারেটিং সিস্টেম আসে৷ এটি সরাসরি কম্পিউটারের হার্ডওয়্যার নিয়ন্ত্রণ করে৷
এই সফ্টওয়্যারটি অ্যাপ্লিকেশনগুলি (এবং সেইজন্য ব্যবহারকারী) মেশিন কোড নির্দেশাবলীতে যা চায় তা অনুবাদ করে যা CPU এবং অন্যান্য উপাদানগুলি বোঝে। এই প্রক্রিয়ার সবচেয়ে গুরুত্বপূর্ণ সফ্টওয়্যার হল কার্নেল।
কার্নেল কি?
কার্নেল হল, নাম অনুসারে, অপারেটিং সিস্টেমের মূল। কার্নেল হল এমন একটি সফ্টওয়্যার যা RAM-এ থাকে এবং কম্পিউটার যা করে তা নির্দেশ করে। যখন কিছু মেমরিতে লেখা হয়, তখন এটি কার্নেল যা কার্যকর করার নির্দেশ দেয়।
কার্নেল জানে কিভাবে GPU এবং নেটওয়ার্ক কার্ডের মতো হার্ডওয়্যারের সাথে ইন্টারফেস করতে হয়, কিন্তু কম্পিউটার শিল্পে জেনেরিক স্ট্যান্ডার্ডের উপর নির্ভর করে কীভাবে তাদের সম্পূর্ণ সম্ভাবনার সাথে পরিচালনা করতে হয় তা হয়তো জানে না।
হার্ডওয়্যার ড্রাইভার এখানে খেলায় আসা. ড্রাইভাররা আপনার অপারেটিং সিস্টেমকে বলে যে কিভাবে নির্দিষ্ট কম্পোনেন্টের সাথে কাজ করতে হয়, সেজন্য আপনার এনভিডিয়া এবং এএমডি জিপিইউ-এর জন্য আলাদা ড্রাইভার প্রয়োজন, উদাহরণস্বরূপ।
সঠিক ড্রাইভারের সাথে সজ্জিত, কার্নেল হল কম্পিউটারের মধ্যে চূড়ান্ত কর্তৃত্ব, যার মধ্যে এমন কিছু করা যা বিপর্যয়মূলকভাবে ডেটা ধ্বংস করতে পারে৷
অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেসের ভূমিকা (APIs)
MS-DOS-এর দিনগুলিতে, সফ্টওয়্যার বিকাশকারীদের তাদের সফ্টওয়্যারগুলি বিশেষভাবে ব্যবহারকারীর হার্ডওয়্যারের জন্য লিখতে হয়েছিল। MS-DOS সিস্টেমে এর সবচেয়ে কুখ্যাত উদাহরণ ছিল সাউন্ড কার্ড ড্রাইভার।
একটি প্রদত্ত ভিডিও গেমটিকে সর্বাধিক জনপ্রিয় কার্ডগুলিকে সমর্থন করতে হবে (সাউন্ড ব্লাস্টার, অ্যাড-লিব, গ্র্যাভিস আল্ট্রাসাউন্ড, ইত্যাদি) এবং আশা করি যে বেশিরভাগ খেলোয়াড়ই কভার করেছেন। আজ, জিনিসগুলি খুব আলাদাভাবে কাজ করে, API-কে ধন্যবাদ৷
৷মাইক্রোসফ্ট ডাইরেক্টএক্স একটি দুর্দান্ত উদাহরণ। আপনি যদি একটি গভীর ব্যাখ্যা চান, ডাইরেক্টএক্স কী এবং কেন এটি গুরুত্বপূর্ণ তা দেখুন? যাইহোক, জানার সবচেয়ে গুরুত্বপূর্ণ বিষয় হল API সফ্টওয়্যার বিকাশকারীদের জন্য GPU এর মতো উপাদানগুলি থেকে হার্ডওয়্যার সংস্থানগুলির জন্য জিজ্ঞাসা করার জন্য একটি আদর্শ উপায় অফার করে৷ উপরন্তু, হার্ডওয়্যার প্রস্তুতকারকদের অবশ্যই নিশ্চিত করতে হবে যে তাদের পণ্যগুলি DirectX-এর সাথে সম্মত হবে যাতে একইভাবে অনুরূপ সফ্টওয়্যারের সাথে সম্পূর্ণ সামঞ্জস্যতা নিশ্চিত করা যায়।
APIs সফ্টওয়্যার অ্যাপ্লিকেশন এবং তার হার্ডওয়্যার ড্রাইভার সহ নিম্ন-স্তরের কার্নেলের মধ্যে অনুবাদের একটি স্তর অফার করে। হ্যাঁ, এটি একটি সামান্য পারফরম্যান্স পেনাল্টির সাথে আসে। তবুও, আধুনিক কম্পিউটারে, এটি নগণ্য, এবং এটি বিভিন্ন সুবিধার সাথে আসে, যেখানে আমরা অবশেষে ব্যবহারকারী মোড এবং কার্নেল মোডে চলে আসি৷
ব্যবহারকারী মোড বনাম কার্নেল মোড
আধুনিক অপারেটিং সিস্টেমগুলি একযোগে শত শত বা হাজার হাজার "প্রক্রিয়া" চালায়, গতিশীলভাবে তাদের অগ্রাধিকার এবং গণনার শক্তির প্রয়োজনীয়তার উপর ভিত্তি করে প্রয়োজন অনুসারে CPU সময় দেয়৷
আপনি যখন একটি অ্যাপ্লিকেশন চালু করেন, এটি প্রক্রিয়াগুলি তৈরি করে এবং CPU সেগুলিকে ব্যবহারকারী মোড বা কার্নেল মোডে কার্যকর করতে পারে৷
ব্যবহারকারী মোডে চলমান একটি উইন্ডোজ প্রক্রিয়ার শুধুমাত্র নিজস্ব ব্যক্তিগত ভার্চুয়াল মেমরি ঠিকানা স্থান এবং হ্যান্ডেল টেবিলের অ্যাক্সেস আছে। সফ্টওয়্যারটি র্যামে ডেটা সঞ্চয় করতে এবং সংস্থানগুলির অনুরোধ করতে এই টেবিলগুলি ব্যবহার করে। মেমরি বা অন্যান্য হার্ডওয়্যারে সরাসরি কোনো অ্যাক্সেস নেই, এবং কম্পিউটারের প্রকৃত হার্ডওয়্যারে সেই ভার্চুয়াল স্পেসগুলিকে ম্যাপ করা অপারেটিং সিস্টেমের উপর নির্ভর করে৷
এটি অনেক কারণেই ভাল, তবে সবচেয়ে গুরুত্বপূর্ণ সুবিধা হল অ্যাপ্লিকেশনটি তার ভার্চুয়াল মেমরি ঠিকানা স্থানের বাইরে ডেটা ওভাররাইট বা পরিবর্তন করতে পারে না। উপরন্তু, কিছু ফাংশন ব্যবহারকারী-মোড প্রক্রিয়াগুলির জন্য অফ-সীমা, প্রধানত যেগুলি সিস্টেম ক্র্যাশ করতে পারে বা ডেটা ধ্বংস করতে পারে৷
যখন একটি প্রক্রিয়া চালু হয় বা কার্নেল মোডে উন্নীত হয়, তখন এটির সিস্টেম সংস্থানগুলিতে সম্পূর্ণ অ্যাক্সেস থাকে, এমনকি অপারেটিং সিস্টেমের জন্য সংরক্ষিত সেগুলিও। সুতরাং, তাত্ত্বিকভাবে, এটি অপারেটিং সিস্টেমকে সঠিকভাবে চালানোর জন্য প্রয়োজনীয় ডেটা ওভাররাইট করতে পারে।
ফাঁদ এবং ব্যতিক্রম
এটা বোঝা গুরুত্বপূর্ণ যে এই দুটি মোড হার্ডওয়্যার স্তরে CPU নিজেই প্রয়োগ করে। ব্যবহারকারী মোডে চলমান একটি অ্যাপ্লিকেশন যদি কার্নেল-মোড অ্যাক্সেসের প্রয়োজন এমন কিছু করার চেষ্টা করে, এটি একটি "ফাঁদ" বা "ব্যতিক্রম" তৈরি করে। অপারেটিং সিস্টেম তারপরে অ্যাপ্লিকেশনটির সাথে মোকাবিলা করবে, সাধারণত এটিকে বন্ধ করে এবং একটি ক্র্যাশ লগ তৈরি করে যাতে বিকাশকারীরা দেখতে পারে যে যখন জিনিসগুলি রেল বন্ধ হয়ে যায় তখন মেমরিতে কী ঘটেছিল৷
কার্নেল মোডের বিপদ:মৃত্যুর নীল পর্দা
আপনি যদি কখনও একটি ব্লু স্ক্রিন অফ ডেথ (কে না করেন?) অনুভব করে থাকেন যা আপনার কম্পিউটারকে সুইচ অফ বা রিস্টার্ট করতে বাধ্য করেছে, তাহলে এটি একটি কার্নেল-মোড প্রক্রিয়াকে দায়ী করার একটি ভাল সুযোগ রয়েছে৷
যখন কার্নেল মোডে একটি প্রক্রিয়া এমন কিছু করে যা করার কথা নয়, অপারেটিং সিস্টেম এটি থেকে পুনরুদ্ধার করতে পারে না এবং পুরো কম্পিউটারটি বন্ধ হয়ে যায়। যখন একটি ব্যবহারকারী-মোড প্রক্রিয়া বিপর্যস্ত হয়ে যায়, তখন শুধুমাত্র অ্যাপ্লিকেশন ক্র্যাশ হয়, এবং বাকি সফ্টওয়্যার এবং অপারেটিং সিস্টেম কোনো সমস্যা ছাড়াই চলতে পারে৷
এটি এমন একটি ক্ষেত্র যেখানে APIs একটি অপরিহার্য ভূমিকা পালন করে কারণ এটি API-ই কার্নেল-মোড সুবিধার জন্য জিজ্ঞাসা করে। ব্যবহারকারী-মোড অ্যাপ্লিকেশনগুলি মূলত অনুরোধগুলি অর্পণ করে যেগুলির জন্য API-তে কার্নেল-মোড বিশেষাধিকারের প্রয়োজন হবে৷
এই কারণেই কার্নেল-মোড সাধারণত শুধুমাত্র নিম্ন-স্তরের সিস্টেম প্রসেসগুলিতে মঞ্জুর করা হয় যা সরাসরি কম্পিউটারের হার্ডওয়্যার অ্যাক্সেস করতে হবে। সাধারণত, এই বিশেষাধিকারটি একটি প্রক্রিয়ায় প্রসারিত হয় কারণ এটি ব্যবহারকারী মোড প্রদান করতে পারে তার চেয়ে বেশি কর্মক্ষমতা প্রয়োজন। কিছু সিপিইউ নির্দেশাবলী শুধুমাত্র কার্নেল মোডে কাজ করে, তাই যদি একটি প্রক্রিয়ার সেই ফাংশনগুলি ব্যবহার করার প্রয়োজন হয়, তাহলে এটিকে উন্নত করতে হবে৷
আপনি যদি ব্লু স্ক্রিন অফ ডেথ নিয়ে সমস্যায় পড়ে থাকেন, তাহলে Windows 10 এর জন্য আমাদের ব্লু স্ক্রীন অফ ডেথ ট্রাবলশুটিং গাইড পড়তে ভুলবেন না!