2
1

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

অগ্রিম ধন্যবাদ

asked 07 Oct, 17:30

Sheikh_Fahad's gravatar image

Sheikh_Fahad
1956

edited 07 Oct, 18:10

Mosharraf%20Hosain's gravatar image

Mosharraf Hosain ♦
3115


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

আর একটি প্রসেসের মধ্যে একাধিক থ্রেড থাকতে পারে। প্রতিটি প্রসেস কম্পিউটারের মেমোরি আর প্রসেসের যতটুকু বরাদ্দ পায়, সেটুকু তার ভেতরের একাধিক থ্রেডে ভাগ করে দিতে পারে। ধরা যাক একটি প্রসেস পেল ১ মিলিসেকেন্ড সময়, তাহলে তার ভেতরে ১০টি থ্রেড থাকলে তারা সবাই মিলে পাবে ওই ১ মিলিসেকেন্ড, আর মেমোরির ব্যাপারটিও এমন। যদি আমরা যখন প্রোগ্রাম লিখি তখন থ্রেডকে বাইরে থেকে প্রসেসের মতোই মনে হয়। তাহলে প্রসেসের সঙ্গে মূল পার্থক্য হচ্ছে, থ্রেডের নিজস্ব মেমোরি স্পেস থাকে না, বরং তারা সবাই যেই প্রসেস থেকে উৎপত্তি হয়েছে, তার মেমোরি স্পেস ও প্রসেসরের বরাদ্দ ভাগাভাগি করে।

আমরা যে অ্যাপ্লিকেশনগুলো ব্যবহার করি, সেগুলোতে অন্ততপক্ষে একটি প্রসেস রয়েছে। কোনো কোনো অ্যাপ্লিকেশনে একাধিকও থাকতে পারে। আবার এক বা একাধিক থ্রেড একটি প্রসেসের মধ্যেও চলে।

এই প্রশ্নটি এডিট করেছেন সুবিন ভাই

permanent link

answered 09 Oct, 14:33

bazlur_rahman's gravatar image

bazlur_rahman
1.0k17

edited 09 Oct, 16:33

Mosharraf%20Hosain's gravatar image

Mosharraf Hosain ♦
3115

একটু সহজ করে উদাহরণ সহ বলতে গেলে প্রসেস এবং থ্রেড এর ধারনা হবে নিম্নরূপঃ

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

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

এই যে, একেকটা প্রোগ্রাম এর মধ্যেই বিভিন্ন কাজ একসাথে হয় এগুলা হল ওই প্রোগ্রাম এর একেকটা থ্রেডের কারণে। একটা প্রোগ্রামের সব দায়িত্ব ভাগ করে আলাদা আলাদা করার উপায়ই হল মাল্টিথ্রেডিং।

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

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

এই ব্যাপারে আরও জানার জন্য 'অপারেটিং সিস্টেম কনসেপ্টস' বইটা পড়া যেতে পারে।

permanent link

answered 10 Oct, 06:15

Nabil's gravatar image

Nabil
1414

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×2
×1

question asked: 07 Oct, 17:30

question was seen: 1,118 times

last updated: 10 Oct, 06:15

Related questions