তত্ত্বীয় কম্পিটার বিজ্ঞান - 1: কী ও কেন?

স্পর্শ এর ছবি
লিখেছেন স্পর্শ (তারিখ: বিষ্যুদ, ১২/১১/২০২০ - ১২:০০অপরাহ্ন)
ক্যাটেগরি:

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

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

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

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

তাহলে লিন্যাক্স আর উইন্ডোজ এর মধ্যে তফাত কী? খুব মোটা দাগে তফাত হলো, তাদের 'ভাষা' আলাদা। তারা দুজনই কম্পিউটার কে দিয়ে সব কাজ করিয়ে নিতে পারে কিন্তু কি করতে হবে তা তাদেরকে বলতে হয় তাদের নিজস্ব ভাষায়। এ কারনেই উইন্ডোজের MS Word সরাসরি লিন্যাক্সে চলে না। কিন্তু আমরা যদি লিন্যাক্সের ভিতর একটা 'দোভাষী' সফটওয়ার ইন্সটল করি তাহলে সেই দোভাষির মাধ্যমে উইন্ডোজের যেকোণ সফটওয়ার লিন্যাক্সে চলতে পারবে! এই দোভাষীই হচ্ছে ভার্চুয়াল মেশিন।

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

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

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

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

মনে করুন আমার একটা কম্পিউটার আছে যার ৪ গিবাবাইট র‍্যাম, ২ গিগা হার্জ ইন্টেল প্রসেসর, ৫০০ গিগাবাইট হার্ড ডিস্ক ইত্যাদি... আছে। এই কম্পিউটারটার নাম দিলাম M ।
এখন আমি যদি একটা ভার্চুয়াল কমিউটার নেই যার ৪ গিবাবাইট ভার্চুয়াল র‍্যাম, ২ গিগা হার্জের ভার্চুয়াল প্রসেসর, ৫০০ গিগাবাইট ভার্চুয়াল মেমরি ইত্যাদি আছে এবং তার নাম দেই VM তাহলে

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

যদিও একটি যন্ত্র গঠিত সত্যিকারের হার্ডওয়ার। আর অন্যটি, স্রেফ তথ্যগঠিত সফটোওয়ার; যা ১ এবং ০ এর একটা সমাহার ছাড়া কিছু না।

কম্পিউটারবিজ্ঞানে এই সমতুল্যতা এভাবে লেখা হয়,
<M> = VM

এখানে <M> এর দুপাশে <> চিহ্ন দিয়ে এই মেশিনটির ভার্চুয়াল প্রতিরুপকে বোঝানো হচ্ছে। অর্থাৎ, ভিন্ন কনফিগারেশনের একটা মেশিন যদি হয় N তাহলে <N> দিয়ে আমরা তার ভার্চুয়াল প্রতিরুপকে বোঝাবো। যাদের উভয়ই একই কাজ করতে সক্ষম।

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

তার মানে আমরা যদি এই ছোট্টো টুরিং মেশিন এর ক্ষমতা গাণিতিকভাবে বিশ্লেষণ করতে সমর্থ হই, তাহলে পৃথিবীর সকল কম্পিউটারে ক্ষমতা সম্পর্কে বৈজ্ঞানিক ধারণা লাভ করতে পারব। তাত্ত্বিক কম্পিউটার বিজ্ঞান এই কাজটিই করে থাকে। যেমন একটা খুবই গুরুত্বপূর্ণ প্রশ্ন হচ্ছে - এমন কোনো সমস্যা কি আছে যার সমাধান কোনো কম্পিউটারের মাধ্যমে করা সম্ভব নয়?

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


মন্তব্য

সত্যপীর এর ছবি

কিন্তু তারপর?

চা খাইতে গেলেন নাকি? তারেকাণু স্টাইলে এইটা নিজের ব্লগে সরায় পর্ব দুই দেন, দেখি ট্যুরিং এর সত্য মিলে কিনা।

..................................................................
#Banshibir.

স্পর্শ এর ছবি

ভেবেছিলাম পরের পর্ব লিখে আপনাকে একটা জবাব দেব। কিন্তু এখনও চায়ের পানি ফুটছে। মন খারাপ


ইচ্ছার আগুনে জ্বলছি...

নতুন মন্তব্য করুন

এই ঘরটির বিষয়বস্তু গোপন রাখা হবে এবং জনসমক্ষে প্রকাশ করা হবে না।