একটি প্রক্রিয়া এবং থ্রেড মধ্যে পার্থক্য কি?


1640

একটি প্রক্রিয়া এবং থ্রেডের মধ্যে প্রযুক্তিগত পার্থক্য কী?

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


2
সম্পর্কিত: stackoverflow.com/questions/32294367/...
zxq9

4
এটি সম্ভবত এই বলে সতর্ক করে যে 'থ্রেড' বা 'প্রক্রিয়া' কী তা সম্পর্কে প্রতিটি ওএসের আলাদা ধারণা রয়েছে। কিছু মূলধারার ওএসের 'থ্রেড' ধারণা নেই, কিছু এমবেডড ওএস রয়েছে যা কেবল 'থ্রেড' রয়েছে।
নিল

উত্তর:


1456

উভয় প্রক্রিয়া এবং থ্রেডগুলি কার্যকরভাবে সম্পাদনের ক্রম। সাধারণ পার্থক্যটি হ'ল থ্রেডগুলি (একই প্রক্রিয়াটির) একটি ভাগ করা মেমোরি স্পেসে চালিত হয়, যখন প্রক্রিয়াগুলি পৃথক মেমরি স্পেসে চালিত হয়।

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

এরলং "প্রক্রিয়া" শব্দটি ব্যবহার করেছে কারণ এটি একটি ভাগ করা-মেমরির মাল্টিগ্রাম প্রোগ্রামিং মডেলটি প্রকাশ করে না। তাদের "থ্রেড" বললে বোঝা যায় যে তারা মেমরি ভাগ করেছে।


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

4
@ গ্রেগ, একটি সন্দেহ আমার থ্রেডে আছে। আমাকে আমার একটি প্রক্রিয়া এ আছে তা বিবেচনা করতে দিন, যা র‌্যামে কিছুটা জায়গা পেয়েছিল। যদি প্রক্রিয়া A একটি থ্রেড তৈরি করে, থ্রেডটি চালানোর জন্য কিছু জায়গাও প্রয়োজন। সুতরাং এটি কি প্রক্রিয়া এ এর ​​জন্য তৈরি করা স্থানের আকার বা অন্য কোথাও তৈরি থ্রেডের স্থান বাড়িয়ে দেবে? সুতরাং যে ভার্চুয়াল স্পেস প্রক্রিয়া তৈরি করে? আমার প্রশ্নটি যদি ভুল হয় তবে দয়া করে আমাকে সংশোধন করুন। ধন্যবাদ
দুসলাবো

9
@ যেশওয়ানথ কুমারএনকে: একটি নতুন থ্রেড তৈরি করা একটি নতুন স্ট্যাকের জন্য কমপক্ষে পর্যাপ্ত মেমরির বরাদ্দ দেয়। এই মেমরিটি ওএস দ্বারা প্রক্রিয়াকরণ এ-তে বরাদ্দ করা হয়েছে
গ্রেগ হিউগিল

24
এই উত্তরটি ভুল বলে মনে হচ্ছে। যদি উভয় প্রক্রিয়া এবং থ্রেডগুলি নির্বাহের স্বতন্ত্র ক্রম হয় তবে দুটি প্রক্রিয়া যাতে দুটি থ্রেড ধারণ করে তার তিনটি ক্রিয়াকলাপ থাকতে হবে এবং এটি সঠিক হতে পারে না। কেবল একটি থ্রেডই মৃত্যুদন্ডের ক্রম - একটি প্রক্রিয়া এমন একটি ধারক যা মৃত্যুর এক বা একাধিক ক্রম ধারণ করতে পারে।
ডেভিড শোয়ার্টজ

8
"হার্ডওয়্যার থ্রেড" হ'ল থ্রেড যা পৃথক হার্ডওয়্যার সংস্থান দেওয়া হয় (একটি পৃথক কোর, প্রসেসর বা হাইপারথ্রেড)। "সফ্টওয়্যার থ্রেড" হ'ল থ্রেড যা একই প্রক্রিয়াকরণ শক্তির জন্য প্রতিযোগিতা করতে হয়।
jpmc26

811

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

থ্রেড
একটি থ্রেড একটি প্রক্রিয়ার মধ্যে এমন একটি সত্তা যা মৃত্যুর জন্য নির্ধারিত হতে পারে। কোনও প্রক্রিয়ার সমস্ত থ্রেড তার ভার্চুয়াল ঠিকানার স্থান এবং সিস্টেমের সংস্থানগুলি ভাগ করে। এছাড়াও, প্রতিটি থ্রেড ব্যতিক্রম হ্যান্ডলারগুলি, একটি নির্ধারিত অগ্রাধিকার, থ্রেড স্থানীয় স্টোরেজ, একটি অনন্য থ্রেড শনাক্তকারী এবং কাঠামোগুলির একটি সেট সিস্টেম নির্ধারিত না হওয়া পর্যন্ত থ্রেড প্রসঙ্গ সংরক্ষণ করতে ব্যবহার করবে। থ্রেড প্রসঙ্গে থ্রেডের মেশিন রেজিস্টারগুলির সেট, কার্নেল স্ট্যাক, একটি থ্রেড এনভায়রনমেন্ট ব্লক এবং থ্রেডের প্রক্রিয়াটির ঠিকানা জায়গাতে একটি ব্যবহারকারী স্ট্যাক অন্তর্ভুক্ত রয়েছে। থ্রেডগুলির নিজস্ব সুরক্ষা প্রসঙ্গও থাকতে পারে, যা ক্লায়েন্টদের ছদ্মবেশ তৈরি করতে ব্যবহার করা যেতে পারে।


মাইক্রোসফ্ট ডক্সে এই তথ্যটি এখানে পাওয়া গেছে: প্রক্রিয়া এবং থ্রেড সম্পর্কে

মাইক্রোসফ্ট উইন্ডোজ প্রিমিটিভ মাল্টিটাস্কিংকে সমর্থন করে, যা একাধিক প্রক্রিয়া থেকে একাধিক থ্রেডের একযোগে কার্যকরকরণের প্রভাব তৈরি করে। একটি মাল্টিপ্রসেসর কম্পিউটারে কম্পিউটারে প্রসেসর যত বেশি থাকে ততক্ষণ সিস্টেম একই সাথে যতগুলি থ্রেড কার্যকর করতে পারে।


18
মানুষ যারা জানেন কেন নাকিসুরে কথা আপনি একই সময়ে একটি ফ্লপি ফরম্যাট চান তাদের জন্য stackoverflow.com/questions/20708707/...
Computernerd

7
@ লুইসভাসকোনসেলোস - যদি কোনও থ্রেড না থাকে তবে প্রক্রিয়াটি কিছুই করতে পারে না। প্রক্রিয়াটি কেবল মেমরিতে লোড হওয়া কিছু কোড এবং প্রোগ্রামের স্থিতি হবে। এটি খুব বেশি ব্যবহার হয় না। এটি এমন রাস্তা হওয়ার মতো হবে যাতে কোনও যানবাহন চলাচল করে না।
স্কট ল্যাংহাম

4
@ লুইসভাসকোনসেলোস - ভাল। হ্যাঁ, আপনি কোনও থ্রেডকে এমন কিছু হিসাবে ভাবতে পারেন যা প্রক্রিয়াটির কোডের মধ্য দিয়ে চলে এবং সেই কোডটিতে থাকা নির্দেশাবলী বহন করে।
স্কট ল্যাংহ্যাম

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

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

301

প্রসেস:

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

থ্রেড:

  • একটি থ্রেড প্রক্রিয়াটির একটি উপসেট।
  • এটি একটি 'লাইটওয়েট প্রক্রিয়া' হিসাবে অভিহিত করা হয়, যেহেতু এটি একটি বাস্তব প্রক্রিয়ার অনুরূপ তবে একটি প্রক্রিয়া প্রসঙ্গে নির্বাহ করে এবং কার্নেল দ্বারা প্রক্রিয়াতে বরাদ্দ করা একই সংস্থানগুলি ভাগ করে দেয়।
  • সাধারণত, একটি প্রক্রিয়াতে নিয়ন্ত্রণের কেবল একটি থ্রেড থাকে - একসময় মেশিনের নির্দেশাবলীর একটি সেট কার্যকর হয়।
  • একই সাথে মৃত্যুদন্ড কার্যকর করার একাধিক থ্রেডও তৈরি করা যেতে পারে instructions
  • একাধিক নিয়ন্ত্রণের থ্রেডগুলি মাল্টিপ্রসেসর সিস্টেমে যথাযথ সমান্তরালতা কাজে লাগাতে পারে।
  • ইউনি-প্রসেসর সিস্টেমে, একটি থ্রেড শিডিয়ুলিং অ্যালগরিদম প্রয়োগ করা হয় এবং প্রসেসর প্রতিটি থ্রেড একবারে চালানোর জন্য নির্ধারিত হয়।
  • একটি প্রক্রিয়া চলমান সমস্ত থ্রেড একই ঠিকানা স্থান, ফাইল বর্ণনাকারী, স্ট্যাক এবং অন্যান্য প্রক্রিয়া সম্পর্কিত বৈশিষ্ট্য ভাগ করে।
  • যেহেতু কোনও প্রক্রিয়াটির থ্রেডগুলি একই মেমরি ভাগ করে, তাই প্রক্রিয়াটির মধ্যে ভাগ করা ডেটা অ্যাক্সেসকে সিঙ্ক্রোনাইজ করে অভূতপূর্ব গুরুত্ব অর্জন করে।

আমি জ্ঞান অনুসন্ধান থেকে উপরের তথ্য ধার নিয়েছি ! ব্লগ


90
কুমার: আমার জ্ঞান থেকে, থ্রেডগুলি একই স্ট্যাক ভাগ করে না। অন্যথায় তাদের প্রত্যেকটিতে আলাদা কোড চালানো সম্ভব হত না।
মিহাই নিয়াচু

27
হ্যাঁ, আমি @ মিহাইনিচসু ঠিক বলেছি। থ্রেডগুলি "কোড, ডেটা এবং ফাইলগুলি" ভাগ করে এবং তাদের নিজস্ব "রেজিস্টার এবং স্ট্যাক" থাকে। আমার ওএস কোর্স থেকে স্লাইড: i.imgur.com/Iq1Qprv.png
শেহাজ

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

1
Kquest.co.cc লিঙ্কগুলি মারা গেছে।
এলিজা লিন

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

127

প্রথমে আসুন তাত্ত্বিক দিকটি দেখুন। একটি প্রক্রিয়া এবং থ্রেডের মধ্যে পার্থক্য বুঝতে এবং তাদের মধ্যে কী ভাগ করা হয়েছে তা বোঝার জন্য আপনার প্রক্রিয়াটি ধারণাগতভাবে কী তা বুঝতে হবে।

আমরা অধ্যায় থেকে নিম্নোক্ত আছে 2.2.2 ক্লাসিক্যাল থ্রেড মডেল মধ্যে অধুনিক অপারেটিং সিস্টেম 3E Tanenbaum দ্বারা:

প্রক্রিয়া মডেল দুটি স্বতন্ত্র ধারণার উপর ভিত্তি করে: রিসোর্স গ্রুপিং এবং এক্সিকিউশন। কখনও কখনও তাদের পৃথক করা দরকারী; থ্রেড এখানে আসে ...

তিনি আরো বলেছেন:

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

আরও নিচে তিনি নীচের সারণীটি সরবরাহ করেন:

Per process items             | Per thread items
------------------------------|-----------------
Address space                 | Program counter
Global variables              | Registers
Open files                    | Stack
Child processes               | State
Pending alarms                |
Signals and signal handlers   |
Accounting information        |

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

এখন আসুন সফ্টওয়্যার পাশ তাকান। সফ্টওয়্যার সাইডে থ্রেডগুলি প্রয়োগ করা যেতে পারে এমন তিনটি উপায় রয়েছে।

  1. ইউজারস্পেস থ্রেডস
  2. কার্নেল থ্রেডস
  3. দুজনের সমন্বয়

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

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

আরেকটি পদ্ধতি হ'ল দুটি একত্রিত করা, একাধিক কার্নেল থ্রেডের সাথে প্রত্যেকের একাধিক ব্যবহারকারীর থ্রেড থাকে।

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


4
অসামান্য উত্তর! এটি প্রচুর পরিমাণে কল্পনা এবং অনুমানকে ভেঙে দেয়। এটি এই লাইনটিকে বিশ্রী হিসাবে দাঁড় করিয়ে দেয়, যদিও: "সুতরাং কারও ধারণা ছিল মূলত দুটি থ্রেড স্টেটের (পিসি + রেজিস্টার) রাখার" - এখানে "পিসি" কী বলা হয়েছে?
স্মিথার

2
@ স্মিথারস পিসি হ'ল প্রোগ্রামের কাউন্টার, বা নির্দেশ পয়েন্টার, যা পরবর্তী নির্দেশ কার্যকর করার জন্য ঠিকানা দেয়: en.wikedia.org/wiki/Pramram_counter
রবার্ট এস বার্নেস

আমি আপনি কি কি আছে দেখতে। stackoverflow.com/questions/1762418/process-vs-thread/...
আলেকজান্ডার Gonchiy

"স্ট্যাক" কেন "প্রতি প্রক্রিয়া আইটেম" এর অধীনে তালিকাভুক্ত করা হয়নি? উভয় প্রক্রিয়া এবং থ্রেডের নিজস্ব স্ট্যাক রয়েছে।
stackoverflowuser2010

1
@ stackoverflowuser2010 কেবল কোনও থ্রেডের স্ট্যাক নেই। আপনি যে প্রক্রিয়াটিকে কল করেন তা হ'ল একটি একক থ্রেডের সাথে চালিত প্রক্রিয়া এবং এটি থ্রেডটিতে প্রক্রিয়া নয় স্ট্যাক থাকে।
রবার্ট এস বার্নেস

100

সমবর্তী প্রোগ্রামিং সম্পর্কে শ্রদ্ধার সাথে আরও ব্যাখ্যা করার জন্য

  1. একটি প্রক্রিয়া একটি স্ব-অন্তর্ভুক্ত কার্যকর পরিবেশ আছে। একটি প্রক্রিয়া সাধারণত বেসিক রান-টাইম সংস্থানগুলির একটি সম্পূর্ণ, ব্যক্তিগত সেট থাকে; বিশেষত, প্রতিটি প্রক্রিয়াটির নিজস্ব মেমরির স্থান রয়েছে।

  2. থ্রেডগুলি একটি প্রক্রিয়ার মধ্যে বিদ্যমান - প্রতিটি প্রক্রিয়াটির কমপক্ষে একটি থাকে। থ্রেডগুলি মেমরি এবং ওপেন ফাইলগুলি সহ প্রক্রিয়াটির সংস্থানগুলি ভাগ করে। এটি দক্ষ, তবে সম্ভাব্য সমস্যাযুক্ত, যোগাযোগের ব্যবস্থা করে।

গড়পড়তা ব্যক্তিকে মাথায় রেখে,

আপনার কম্পিউটারে মাইক্রোসফ্ট ওয়ার্ড এবং ওয়েব ব্রাউজারটি খুলুন। আমরা এই দুটি প্রক্রিয়া কল ।

মাইক্রোসফ্ট কথায়, আপনি কিছু টাইপ করুন এবং এটি স্বয়ংক্রিয়ভাবে সংরক্ষিত হবে। এখন, আপনি সম্পাদনা এবং সংরক্ষণ সমান্তরালভাবে ঘটতে দেখেছেন - একটি থ্রেডে সম্পাদনা করা এবং অন্য থ্রেডে সংরক্ষণ করা।


14
বকেয়া উত্তর, এটি জিনিসগুলিকে সহজ রাখে এবং প্রতিটি ব্যবহারকারী এমনকি প্রশ্নটি দেখার সাথে সম্পর্কিত হতে পারে এমন একটি উদাহরণ সরবরাহ করে।
স্মিথারস

7
কোনও প্রক্রিয়ার অভ্যন্তরে একাধিক থ্রেডের জন্য সম্পাদনা / সংরক্ষণ একটি দুর্দান্ত উদাহরণ ছিল!

53

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

এখান থেকে চুরি ।


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

1
ভাল উত্তর (বিশেষ করে জমা দেওয়ার সাথে), কারণ এটি দু'জনের মধ্যে সম্পর্ককে সহজেই প্রত্যাশিত "পরবর্তী প্রশ্ন" (তন্তুগুলির সম্পর্কে) এর মধ্যে দেখায়।
স্মিথারস

29

একটি প্রক্রিয়া হ'ল কোড, মেমরি, ডেটা এবং অন্যান্য সংস্থানগুলির সংগ্রহ। একটি থ্রেড কোডের ক্রম যা প্রক্রিয়াটির ক্ষেত্রের মধ্যেই কার্যকর করা হয়। আপনার (সাধারণত) একই প্রক্রিয়াটির মধ্যে একযোগে একাধিক থ্রেড চালানো যেতে পারে।


27

প্রক্রিয়া এবং থ্রেডের জন্য বাস্তব বিশ্বের উদাহরণ এটি আপনাকে থ্রেড এবং প্রক্রিয়া সম্পর্কে প্রাথমিক ধারণা দেবে এখানে চিত্র বর্ণনা লিখুন

আমি স্কট ল্যাংহ্যামের উত্তর থেকে উপরের তথ্য ধার করেছি - ধন্যবাদ


25

প্রসেস:

  1. প্রক্রিয়া একটি ভারী ওজন প্রক্রিয়া।
  2. প্রক্রিয়া একটি পৃথক প্রোগ্রাম যা পৃথক মেমরি, ডেটা, সংস্থানসমূহ ect থাকে।
  3. কাঁটা () পদ্ধতি ব্যবহার করে প্রক্রিয়া তৈরি করা হয়।
  4. প্রক্রিয়াটির মধ্যে প্রসঙ্গের স্যুইচ সময় সাপেক্ষ।

উদাহরণ:
বলুন, যে কোনও ব্রাউজার খোলার (মোজিলা, ক্রোম, আইই)। এই মুহুর্তে নতুন প্রক্রিয়া কার্যকর করা শুরু হবে।

টপিক:

  1. থ্রেডগুলি হালকা ওজনের প্রক্রিয়া h প্রক্রিয়াটির ভিতরে থ্রেডগুলি বান্ডিল হয়।
  2. থ্রেডগুলিতে একটি ভাগ করা মেমরি, ডেটা, সংস্থানসমূহ, ফাইলগুলি থাকে etc.
  3. ক্লোন () পদ্ধতি ব্যবহার করে থ্রেড তৈরি করা হয়।
  4. থ্রেডগুলির মধ্যে প্রসঙ্গের স্যুইচ প্রক্রিয়া হিসাবে খুব বেশি সময় লাগে না।

উদাহরণ:
ব্রাউজারে একাধিক ট্যাব খোলা।


উইন্ডোজ জগতে আপনি সঠিক, তবে লিনাক্সে প্রতিটি 'থ্রেড' একটি প্রক্রিয়া এবং সমানভাবে 'ভারী' (বা হালকা)।
নিল

22
  • প্রতিটি প্রক্রিয়া একটি থ্রেড (প্রাথমিক থ্রেড)।
  • তবে প্রতিটি থ্রেড কোনও প্রক্রিয়া নয়। এটি একটি প্রক্রিয়ার একটি অংশ (সত্তা)।

3
আপনি কি আরও কিছুটা ব্যাখ্যা করতে পারেন এবং / অথবা কিছু প্রমাণ অন্তর্ভুক্ত করতে পারেন?
জিম 84

15

উভয় থ্রেড এবং প্রক্রিয়াগুলি ওএস রিসোর্স বরাদ্দের পারমাণবিক ইউনিট (অর্থাত সিপিইউ সময়কে কীভাবে তাদের মধ্যে ভাগ করা যায় এবং অন্যান্য ওএস সংস্থানগুলির মালিকানার মডেল বর্ণনা করে এমন একটি কনসেন্টিসি মডেল রয়েছে)। এর মধ্যে একটি পার্থক্য রয়েছে:

  • ভাগ করা সংস্থানসমূহ (থ্রেড সংজ্ঞা অনুসারে মেমরি ভাগ করে নিচ্ছে, তারা স্ট্যাক এবং স্থানীয় ভেরিয়েবলগুলি ব্যতীত অন্য কোনও কিছু রাখে না; প্রক্রিয়াগুলি মেমরিটিও ভাগ করে নিতে পারে তবে ওএস দ্বারা রক্ষণাবেক্ষণের জন্য আলাদা ব্যবস্থা রয়েছে)
  • বরাদ্দ স্থান (প্রক্রিয়াগুলির জন্য কার্নেল স্পেস বনাম থ্রেডের জন্য ব্যবহারকারীর স্থান)

উপরের গ্রেগ হিউগিল "প্রক্রিয়া" শব্দের এরলং অর্থ সম্পর্কে সঠিক ছিলেন এবং এখানে কেন এরলং প্রক্রিয়াগুলি হালকা ওজন করতে পারে তা নিয়ে একটি আলোচনা রয়েছে।


13

উভয় প্রক্রিয়া এবং থ্রেডগুলি কার্যকরভাবে সম্পাদনের ক্রম। সাধারণ পার্থক্যটি হ'ল থ্রেডগুলি (একই প্রক্রিয়াটির) একটি ভাগ করা মেমোরি স্পেসে চালিত হয়, যখন প্রক্রিয়াগুলি পৃথক মেমরি স্পেসে চালিত হয়।

প্রক্রিয়া

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

সুতা

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

- গ্যালভিনের অপারেটিং সিস্টেম থেকে নেওয়া


13

http://lkml.iu.edu/hypermail/linux/kernel/9608/0191.html

লিনাস টরভাল্ডস (torvalds@cs.helsinki.fi)

মঙ্গল, 6 আগস্ট 1996 12:47:31 +0300 (ইইটি ডিএসটি)

বার্তাগুলি সাজানো হয়েছে: [তারিখ] [থ্রেড] [বিষয়] [লেখক]

পরবর্তী বার্তা: বার্ন্ড পি জিলার: "পুনরায়: get_hash_table- এ উফস"

পূর্ববর্তী বার্তা: লিনাস টরভাল্ডস: "পুনরায়: I / O অনুরোধের আদেশ"

সোমবার, 5 আগস্ট 1996-এ পিটার পি। আইসরলো লিখেছেন:

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

না!

"থ্রেড" এবং "প্রক্রিয়াগুলি" পৃথক সত্তা বলে ভাবার কোনও কারণ নেই। এটি traditionতিহ্যগতভাবে এটি হয়ে গেছে তবে আমি ব্যক্তিগতভাবে মনে করি যে এটি মনে করা বড় ভুল। এই উপায়টি মনে করার একমাত্র কারণ হ'ল historicalতিহাসিক লাগেজ।

উভয় থ্রেড এবং প্রক্রিয়া সত্যই একটি জিনিস: একটি "মৃত্যুর প্রসঙ্গ"। বিভিন্ন ক্ষেত্রে কৃত্রিমভাবে আলাদা করার চেষ্টা করা কেবল স্ব-সীমাবদ্ধ।

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

লিনাক্স যেভাবে এটি সম্পর্কে চিন্তা করে (এবং যেভাবে আমি জিনিসগুলি কাজ করতে চাই) তা হ'ল "প্রক্রিয়া" বা "থ্রেড" বলে কিছুই নেই। এখানে কেবল সিওইর সম্পূর্ণতা রয়েছে (লিনাক্স দ্বারা "টাস্ক" বলা হয়)। বিভিন্ন সিওই তাদের প্রসঙ্গের অংশগুলি একে অপরের সাথে ভাগ করতে পারে এবং সেই ভাগ করে নেওয়ার একটি উপসেট হ'ল প্রথাগত "থ্রেড" / "প্রক্রিয়া" সেটআপ, তবে এটি সত্যই কেবল একটি উপসেট হিসাবে দেখা উচিত (এটি একটি গুরুত্বপূর্ণ উপসেট, তবে সেই গুরুত্ব আসে নকশা থেকে নয়, মানদণ্ড থেকে: আমরা লিনাক্সের শীর্ষেও মান-অনুসারে থ্রেড প্রোগ্রাম চালাতে চাই ob

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

থ্রেড / প্রক্রিয়াটির বিপরীতে সিওই ভাবেন যখন কী সম্ভব হয় তার উদাহরণ হিসাবে:

  • আপনি একটি বাহ্যিক "সিডি" প্রোগ্রাম করতে পারেন, এটি ইউনিক্স এবং / অথবা প্রক্রিয়া / থ্রেডে traditionতিহ্যগতভাবে অসম্ভব (নিখুঁত উদাহরণ, তবে ধারণাটি হ'ল আপনার এই ধরণের "মডিউল" থাকতে পারে যা প্রচলিত ইউনিক্সের মধ্যে সীমাবদ্ধ নয়) / থ্রেড সেটআপ)। একটি করুন:

ক্লোন (CLONE_VM | CLONE_FS);

চাইল্ড: এক্সিকিউট ("বাহ্যিক-সিডি");

/ * "এক্সিকিউট ()" ভিএমকে বিচ্ছিন্ন করবে, সুতরাং ক্লোনিংয়ের কাজটি দ্রুত করার জন্য আমরা কেবলমাত্র ক্লোন_ভিএম ব্যবহার করেছি * /

  • আপনি প্রাকৃতিকভাবে "vfork ()" করতে পারেন (এটি ন্যূনতম কার্নেল সমর্থনকে মেইড করে তবে এই সমর্থনটি সিউএ-র পুরোপুরি চিন্তাভাবনার ক্ষেত্রে ফিট করে):

ক্লোন (CLONE_VM);

শিশু: চালিয়ে যেতে চালিয়ে যাও, শেষ পর্যন্ত ()

মা: মৃত্যুর জন্য অপেক্ষা করুন

  • আপনি বাহ্যিক "আইও ডিমনস" করতে পারেন:

ক্লোন (CLONE_FILES);

শিশু: ফাইল বিবরণী খুলুন ইত্যাদি

মা: এফডি ব্যবহার করুন শিশুটি খোলা এবং ভিভি।

উপরের সমস্তটি কাজ করে কারণ আপনি থ্রেড / চিন্তার পদ্ধতিতে আবদ্ধ নন। উদাহরণস্বরূপ একটি ওয়েব সার্ভারের কথা চিন্তা করুন, যেখানে সিজিআই স্ক্রিপ্টগুলি "কার্যকর করার থ্রেড" হিসাবে সম্পন্ন হয়। আপনি এটি প্রচলিত থ্রেডের সাহায্যে করতে পারবেন না, কারণ traditionalতিহ্যবাহী থ্রেডগুলি সর্বদা পুরো ঠিকানা স্থানটি ভাগ করে নিতে হয়, তাই আপনাকে ওয়েব সার্ভারে নিজেই যা করতে চাইত তার সমস্ত কিছু লিঙ্ক করতে হবে ("থ্রেড" চলতে পারে না আরেকটি এক্সিকিউটেবল)।

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

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

আপনি "থ্রেড" / "প্রক্রিয়া" দিয়ে এটি করতে পারবেন না।

লিনাস


12

লিনাক্স কার্নেলের ওএস ভিউ থেকে এর উত্তর দেওয়ার চেষ্টা করা হচ্ছে

একটি প্রোগ্রাম মেমোরিতে চালু হওয়ার পরে একটি প্রক্রিয়া হয়ে ওঠে। একটি প্রক্রিয়াটির নিজস্ব ঠিকানা স্পেস থাকে যার অর্থ মেমরিতে বিভিন্ন বিভাগ যেমন .textসংকলিত কোড সংরক্ষণের জন্য সেগমেন্ট , .bssঅবিচ্ছিন্ন স্ট্যাটিক বা গ্লোবাল ভেরিয়েবলগুলি সংরক্ষণ করার জন্য ইত্যাদি etc.
প্রতিটি প্রক্রিয়ার নিজস্ব প্রোগ্রামের কাউন্টার এবং ব্যবহারকারী-স্পেস স্ট্যাক থাকবে

কার্নেলের অভ্যন্তরে, প্রতিটি প্রক্রিয়াটির নিজস্ব কার্নেল স্ট্যাক থাকবে (যা সুরক্ষা সমস্যার জন্য ব্যবহারকারী স্পেস স্ট্যাক থেকে পৃথক) এবং একটি কাঠামো task_structযা প্রক্রিয়া নিয়ন্ত্রণ ব্লক হিসাবে সাধারণত বিমূর্ত হয়, প্রক্রিয়া সম্পর্কিত সমস্ত তথ্য যেমন তার অগ্রাধিকার, রাষ্ট্র সংরক্ষণ করে , (এবং সম্পূর্ণ অন্যান্য অংশ)
একটি প্রক্রিয়া প্রয়োগের একাধিক থ্রেড থাকতে পারে।

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

কার্নেলের অভ্যন্তরে প্রতিটি থ্রেডের নিজস্ব কার্নেল স্ট্যাক রয়েছে task_structকাঠামোর সাথে যা থ্রেডকে সংজ্ঞায়িত করে। সুতরাং কার্নেল একই প্রক্রিয়াটির থ্রেডগুলি বিভিন্ন সত্তা হিসাবে দেখায় এবং সেগুলি নিজের মধ্যে নির্ধারিত হয়। একই প্রক্রিয়াতে থাকা থ্রেডগুলি একটি সাধারণ আইডি ভাগ করে যা থ্রেড গ্রুপ আইডি ( tgid) নামে পরিচিত , এছাড়াও তাদের একটি অনন্য আইডি রয়েছে যা প্রসেস আইডি ( pid) নামে পরিচিত ।


11

জাভা বিশ্ব সম্পর্কিত এই প্রশ্নের উত্তর দেওয়ার চেষ্টা করছি।

একটি প্রক্রিয়া একটি প্রোগ্রামের সম্পাদন হয় তবে থ্রেডটি প্রক্রিয়াটির মধ্যে একক প্রয়োগের ক্রম হয়। একটি প্রক্রিয়াতে একাধিক থ্রেড থাকতে পারে। একটি থ্রেডকে কখনও কখনও লাইটওয়েট প্রক্রিয়া বলা হয় ।

উদাহরণ স্বরূপ:

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

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


1
উত্তম উত্তর, আমি পছন্দ করি যে এটি এর ব্যাপ্তি (জাভা ওয়ার্ল্ড) সংজ্ঞায়িত করে এবং কিছু প্রয়োগযোগ্য উদাহরণ সরবরাহ করে - যার মধ্যে একটি (# 2) যার যার কাছে মূল প্রশ্নটি জিজ্ঞাসা করতে হবে তা অবিলম্বে সম্পর্কিত হতে পারে।
স্মিথারস

9

থ্রেড এবং প্রক্রিয়া মধ্যে পার্থক্য?

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

থ্রেড এবং একটি প্রক্রিয়ার মধ্যে আরেকটি পার্থক্য হ'ল একই প্রক্রিয়াটির মধ্যে থ্রেডগুলি একই ঠিকানার স্থান ভাগ করে দেয়, যেখানে বিভিন্ন প্রক্রিয়া থাকে না processes এটি থ্রেডগুলি একই ডেটা স্ট্রাকচার এবং ভেরিয়েবলগুলি থেকে পড়তে এবং লেখার অনুমতি দেয় এবং থ্রেডগুলির মধ্যে যোগাযোগের সুবিধে করে। প্রক্রিয়াগুলির মধ্যে যোগাযোগ - যা আইপিসি, বা আন্ত-প্রক্রিয়া যোগাযোগ হিসাবেও পরিচিত - বেশ কঠিন এবং সংস্থান-নিবিড়।

থ্রেড এবং প্রক্রিয়াগুলির মধ্যে পার্থক্যের সংক্ষিপ্তসার এখানে:

  1. প্রক্রিয়াগুলির চেয়ে থ্রেডগুলি তৈরি করা সহজ কারণ তাদের পৃথক ঠিকানার জায়গার প্রয়োজন হয় না।

  2. মাল্টিথ্রেডিংয়ের জন্য সতর্কতা অবলম্বন করার প্রয়োজন রয়েছে যেহেতু থ্রেডগুলি ডেটা স্ট্রাইকগুলি ভাগ করে যা কেবল একবারে একটি থ্রেড দ্বারা পরিবর্তিত হওয়া উচিত। থ্রেডের বিপরীতে, প্রক্রিয়াগুলি একই ঠিকানার স্থান ভাগ করে না।

  3. থ্রেডগুলি লাইটওয়েট হিসাবে বিবেচিত হয় কারণ তারা প্রক্রিয়াগুলির চেয়ে অনেক কম সংস্থান ব্যবহার করে।

  4. প্রক্রিয়া একে অপরের থেকে স্বতন্ত্র। থ্রেডগুলি, যেহেতু তারা একই ঠিকানার ভাগ ভাগ করে নিচ্ছে পরস্পর নির্ভরশীল, তাই সাবধানতা অবলম্বন করা উচিত যাতে বিভিন্ন থ্রেড একে অপরের দিকে না যায়।
    এটি উপরের # 2 বলার সত্যই অন্য উপায়।

  5. একটি প্রক্রিয়া একাধিক থ্রেড নিয়ে গঠিত হতে পারে।


9

কোড প্রকল্পের নিবন্ধগুলির একটি থেকে আমি যা পেয়েছি তা নিম্নলিখিতটি । আমার ধারণা এটি প্রয়োজনীয়ভাবে সমস্ত কিছু পরিষ্কারভাবে ব্যাখ্যা করে explains

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


1
থ্রেড বনাম প্রক্রিয়া ইতিমধ্যে বোঝে এমন দৃষ্টিকোণ থেকে না আসা পর্যন্ত এটি স্পষ্ট কিনা তা নিশ্চিত নয়। তারা একে অপরের সাথে সম্পর্কিত কীভাবে যুক্ত করা কার্যকর হতে পারে।
স্মিথার

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

9

প্রসেস:

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

থ্রেড:

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

ref- https: //pੈਕਟ.geeksforgeeks.org/problems/differences-between-process-and-thread


একটি প্রক্রিয়াতে নোড
সমাবর্তনের

এটি আক্ষরিকভাবে 2010 থেকে নীচের উত্তর থেকে অনুলিপি করা হয়েছে ...
এমসি 01

8

একজন সাক্ষাত্কারকারীর দৃষ্টিকোণ থেকে, মূলত আমি শুনতে চাই মাত্র তিনটি মূল বিষয়, প্রক্রিয়াটির মতো সুস্পষ্ট জিনিসগুলির একাধিক থ্রেড থাকতে পারে:

  1. থ্রেডগুলি একই মেমরি স্পেস ভাগ করে, যার অর্থ একটি থ্রেড অন্যের থ্রেড মেমরি থেকে মেমরি অ্যাক্সেস করতে পারে। প্রক্রিয়াগুলি সাধারণত পারেন না।
  2. রিসোর্সেস। সংস্থানগুলি (মেমরি, হ্যান্ডলগুলি, সকেটস ইত্যাদি) প্রক্রিয়া সমাপ্তির সময় মুক্তি হয়, থ্রেড সমাপ্তি নয়।
  3. নিরাপত্তা। একটি প্রক্রিয়া একটি নির্দিষ্ট সুরক্ষা টোকেন আছে। অন্যদিকে একটি থ্রেড বিভিন্ন ব্যবহারকারী / টোকেনকে ছদ্মবেশ তৈরি করতে পারে।

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


আপনি যখন সুরক্ষা টোকেন বলছেন, উদাহরণস্বরূপ, আপনি কি লিনাক্সের মতো কোনও ব্যবহারকারীর শংসাপত্র (ব্যবহারকারীর নাম / পাস) বলতে চান?

উইন্ডোজগুলিতে এটি একটি জটিল বিষয়, সুরক্ষা টোকেন (আসলে অ্যাক্সেস টোকেন নামে পরিচিত) একটি বড় কাঠামো, এতে অ্যাক্সেস চেকের জন্য প্রয়োজনীয় সমস্ত তথ্য থাকে। কাঠামোটি অনুমোদনের পরে তৈরি করা হয়েছে, যার অর্থ কোনও ব্যবহারকারীর নাম / পাসওয়ার্ড নেই তবে ব্যবহারকারীর নাম / পাসওয়ার্ডের উপর ভিত্তি করে এসআইডি / ডানদের একটি তালিকা রয়েছে। এখানে আরো বিস্তারিত: msdn.microsoft.com/en-us/library/windows/desktop/...
AndreiM

8
  1. একটি থ্রেড ভাগ করা মেমরি স্পেসে চলে তবে একটি প্রক্রিয়া আলাদা মেমোরি স্পেসে চলে
  2. একটি থ্রেড একটি হালকা ওজন প্রক্রিয়া, কিন্তু একটি প্রক্রিয়া একটি ভারী ওজন প্রক্রিয়া।
  3. একটি থ্রেড প্রক্রিয়াটির একটি উপপ্রকার।

এটি খুব পুনরাবৃত্তি মনে হয়। থ্রেড এবং প্রক্রিয়াটির মধ্যে সম্পর্কটি প্রসারিত হলে সম্ভবত এটি আরও ভাল উত্তর হবে।
স্মিথারস

7

যাঁরা ভিজ্যুয়ালাইজ করে শিখতে আরও স্বাচ্ছন্দ্য বোধ করেন, তাদের জন্য প্রক্রিয়া এবং থ্রেডগুলি ব্যাখ্যা করার জন্য আমি এখানে একটি সহজ ডায়াগ্রাম তৈরি করেছি। প্রক্রিয়া এবং থ্রেড সম্পর্কে
- আমি এমএসডিএন থেকে তথ্য ব্যবহার করেছি

প্রক্রিয়া এবং থ্রেড


1
মাল্টিথ্রেডিংয়ের তুলনায় কীভাবে মাল্টিপ্রসেসিংয়ের সাথে তুলনা করা হয় তা দেখতে আরও একটি প্রক্রিয়া যুক্ত করা আকর্ষণীয় হতে পারে ।
ব্রাম ভ্যানরোয়

6

এম্বেড করা বিশ্ব থেকে আগত, আমি যুক্ত করতে চাই যে প্রক্রিয়াগুলির ধারণাটি কেবলমাত্র "বিগ" প্রসেসরগুলিতে ( ডেস্কটপ সিপিইউস, এআরএম কর্টেক্স এ -9 ) এমএমইউ (মেমরি ম্যানেজমেন্ট ইউনিট) রয়েছে এবং অপারেটিং সিস্টেমগুলি যা এমএমইউগুলি ব্যবহার করে সমর্থন করে ( যেমন লিনাক্স )। ছোট / পুরানো প্রসেসর এবং মাইক্রোকন্ট্রোলার এবং ছোট আরটিওএস অপারেটিং সিস্টেম ( রিয়েল টাইম অপারেটিং সিস্টেম ), যেমন ফ্রিআরটিওএস সহ, কোনও এমএমইউ সমর্থন নেই এবং এইভাবে কোনও প্রক্রিয়া ছাড়াই কেবল থ্রেড থাকে।

থ্রেডগুলি একে অপরের স্মৃতিতে অ্যাক্সেস করতে পারে এবং এগুলি ওএস দ্বারা একটি আন্তঃবিবাহিত পদ্ধতিতে নির্ধারিত হয় যাতে তারা সমান্তরালে চলতে প্রদর্শিত হয় (বা মাল্টি-কোরের সাথে তারা সত্যিকারভাবে সমান্তরালে চলে)।

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

  1. পুরো সিস্টেমটি ক্র্যাশ করা থেকে বগি প্রক্রিয়াটি রাখা।
  2. অন্যান্য প্রক্রিয়া ডেটা অদৃশ্য এবং অ্যাক্সেসযোগ্য করে সুরক্ষা বজায় রাখা। প্রক্রিয়াটির প্রকৃত কাজটি এক বা একাধিক থ্রেড দ্বারা যত্ন নেওয়া হয়।

6
  1. মূলত, একটি থ্রেড প্রক্রিয়া থ্রেড ব্যতীত প্রক্রিয়াটির একটি অংশ যা কাজ করতে সক্ষম হয় না।
  2. একটি থ্রেড লাইটওয়েট যেখানে প্রক্রিয়াটি ভারী ওজনযুক্ত।
  3. প্রক্রিয়াটির মধ্যে যোগাযোগের জন্য কিছু সময় প্রয়োজন হয় যেখানে থ্রেডের জন্য কম সময় প্রয়োজন।
  4. থ্রেড একই মেমরি অঞ্চল ভাগ করতে পারে যেখানে প্রক্রিয়া আলাদা থাকে।

6

প্রক্রিয়া : মৃত্যুদন্ড কার্যকর প্রোগ্রাম প্রক্রিয়া হিসাবে পরিচিত

থ্রেড : থ্রেড এমন একটি কার্যকারিতা যা প্রোগ্রামের অন্যান্য অংশের সাথে "অন্যের সাথে একটির" ধারণার উপর ভিত্তি করে চালিত হয় তাই থ্রেড প্রক্রিয়াটির একটি অংশ ..


খারাপ নয়, যদিও এটি একটি নতুন ধারণা প্রবর্তন করেছে ("অন্যের সাথে একটি") যা সম্ভবত প্রশ্ন জিজ্ঞাসা কারও কাছে বিদেশী।
স্মিথারস

পোস্ট কোড হিসাবে ফর্ম্যাট করা হয় তবে এটি সাধারণ পাঠ্য হওয়া উচিত।
হেইনরিচ

6

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

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

এখানে চিত্র বর্ণনা লিখুন


5

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

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

অন্যদিকে একটি সংকলিত ভাষা হ'ল, ভাল, সংকলিত। প্রোগ্রামটি "সম্পূর্ণরূপে" প্রক্রিয়া করা হয়, যেখানে প্রথমে এটির সিন্ট্যাক্টিকাল সংজ্ঞা অনুসারে ব্যাখ্যা করা হয়, তারপরে একটি ভাষা অজ্ঞায়নের মধ্যবর্তী উপস্থাপনায় ম্যাপ করা হয় এবং শেষ পর্যন্ত একটি এক্সিকিউটেবল কোডে লিঙ্ক করা হয়। এই প্রক্রিয়াটি কোডটিকে অত্যন্ত অনুকূলিতকরণের অনুমতি দেয় কারণ সংকলনের সময় এটি সমস্ত উপলভ্য। এক্সিকিউটেবল তৈরি হওয়ার সময় এবং অপ্টিমাইজেশান সম্পর্কে দৃ decisions় সিদ্ধান্ত গ্রহণের সময় বিভিন্ন প্রোগ্রামের ইন্টারঅ্যাকশন এবং সম্পর্কগুলি সংজ্ঞায়িত করা হয়।

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

পূর্ববর্তী পোস্টগুলিতে যেমন একটি প্রক্রিয়া এবং থ্রেড উভয়ই স্বতন্ত্র ক্রমিক ক্রিয়াকলাপ হিসাবে উল্লেখ করা হয়েছে যে প্রাথমিক পার্থক্য হ'ল মেমরিটি কোনও প্রক্রিয়াটির একাধিক থ্রেডে ভাগ করা হয়, যখন প্রক্রিয়াগুলি তাদের মেমরির স্থানগুলি পৃথক করে দেয়।

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


1 আর্ট অফ কম্পিউটার প্রোগ্রামিং: ফান্ডামেন্টাল অ্যালগরিদমগুলিতে ডোনাল্ড নথের ব্যাখ্যামূলক রুটিনগুলির একটি ভাল ব্যাখ্যা রয়েছে।


4

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

প্রক্রিয়া কখনও একই মেমরি ভাগ করে না। যখন কোনও শিশু প্রক্রিয়া তৈরি করে এটি পিতামাতার প্রক্রিয়ার মেমরির অবস্থানটি নকল করে। প্রক্রিয়া যোগাযোগ পাইপ, ভাগ করা মেমরি এবং বার্তা পার্সিং ব্যবহার করে করা হয়। থ্রেডগুলির মধ্যে প্রসঙ্গের স্যুইচিং খুব ধীর।


4

আমি এখনও অবধি সেরা উত্তরটি পেয়েছি মাইকেল কেরিকের 'দ্য লিনাক্স প্রোগ্রামিং ইন্টারফেস' :

আধুনিক ইউনিক্স বাস্তবায়নে প্রতিটি প্রক্রিয়াতে একাধিক মৃত্যুদন্ড কার্যকর করা যেতে পারে। থ্রেডগুলি কল্পনা করার একটি উপায় হ'ল প্রক্রিয়াগুলির সমষ্টি যা একই ভার্চুয়াল মেমরিটি ভাগ করে, পাশাপাশি অন্যান্য বৈশিষ্ট্যের একটি পরিসীমা। প্রতিটি থ্রেড একই প্রোগ্রাম কোডটি সম্পাদন করে এবং একই ডেটা অঞ্চল এবং হিপ ভাগ করে দেয়। যাইহোক, প্রতিটি থ্রেডের নিজস্ব ভেরিয়েবল এবং ফাংশন কল লিঙ্কেজ সম্পর্কিত তথ্য রয়েছে ack [এলপিআই 2.12]

এই বইটি মহান স্পষ্টতার উত্স; জুলিয়া ইভানস এই নিবন্ধে লিনাক্স গ্রুপগুলি কীভাবে সত্যিই কাজ করে তা পরিষ্কার করতে তার সহায়তার কথা উল্লেখ করেছে ।


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

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

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

রাইট! এটি রাখা ভাল উপায়।
জাচ ভ্যালেন্টা

3

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


3

এগুলি প্রায় একই রকম ... তবে মূল পার্থক্যটি হ'ল থ্রেড হ'ল ওজনের এবং প্রসেস স্যুইচিং, কাজের বোঝা ইত্যাদির ক্ষেত্রে একটি প্রক্রিয়া ভারী-ওজন।


আপনি আপনার উত্তর প্রসারিত করতে পারেন?
ফাইভার

3
থ্রেড একটি উপ-প্রক্রিয়া, তারা একটি প্রক্রিয়াটির মধ্যে কোড, ডেটা, ফাইলগুলির মতো সাধারণ সম্পদগুলি ভাগ করে দেয় here দুটি প্রসেসই संसाधनগুলি ভাগ করতে পারে না (ব্যতিক্রমগুলি যদি কোনও প্রক্রিয়া (পিতামাতাকে) অন্য প্রক্রিয়া (শিশু) তৈরি করতে থাকে তবে ডিফল্টরূপে তারা পারে রিসোর্সগুলি ভাগ করুন)), সিপিইউতে সংস্থানগুলিতে উচ্চ প্যালোডের দাবি রাখে যেখানে থ্রেডগুলি এই প্রসঙ্গে অনেক হালকা। যদিও উভয়ই একই জিনিস ধারণ করে S পরিস্থিতি বিবেচনা করুন, একক থ্রেডড প্রক্রিয়াটি I / 0 এর কারণে অবরুদ্ধ রয়েছে, তবে পুরো 1 এ চলে যাবে অপেক্ষার স্থিতি কিন্তু যখন মাল্টিথ্রেডেড প্রক্রিয়াটি আই / ও দ্বারা অবরুদ্ধ করা হয়, তখন এর কেবলমাত্র 1 আই / ও সম্পর্কিত থ্রেড ব্লক করা হবে।
নাসির উল ইসলাম বাট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.