সমবর্তী প্রোগ্রামিং এবং সমান্তরাল প্রোগ্রামিংয়ের মধ্যে পার্থক্য কী?


346

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

আপাতত আমি এই ব্যাখ্যাটি পেয়েছি: http://www.linux-mag.com/id/7411 - তবে "সম্মতিটি প্রোগ্রামের একটি সম্পত্তি" বনাম "সমান্তরাল সম্পাদন মেশিনের সম্পত্তি" আমার পক্ষে যথেষ্ট নয় - এখনও আমি বলতে পারি না কি কি।


উত্তর:


310

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

এখানে একটি চাক্ষুষ উদাহরণ। একটি থ্রেডবিহীন মেশিনে থ্রেড :

        --  --  --
     /              \
>---- --  --  --  -- ---->>

থ্রেডযুক্ত মেশিনে থ্রেডস :

     ------
    /      \
>-------------->>

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


34
সমান্তরাল সম্পাদন এবং সমান্তরাল প্রোগ্রামিং একই জিনিস নয়। জন হ্যারোপের উত্তর সঠিক। তবে মনে হয় যে প্রশ্নটি নিজেই সমান্তরাল বাস্তবায়ন এবং সমান্তরাল প্রোগ্রামিংকে বিভ্রান্ত করে।
ব্লেসরব্ল্যাড

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

1
এই ব্লগ অনুসারে সমান্তরাল প্রোগ্রামিং সমবর্তী প্রোগ্রামিংয়ের একটি উপসেট নয় ; আপনার উত্তরটি তা বিবেচনায় নেয় না, আপনি এই বিবৃতি সম্পর্কে কী ভাবেন?
কেভিন

1
@ কেভিন: আমি মনে করি "আরও সাধারণ" অর্থ সুপারসেট। আমি একমত যে এটি ভুল।
জন হ্যারোপ

1
এই উত্তরটি সমবর্তী ও সমান্তরাল সম্পাদনকারীগুলির মধ্যে পার্থক্যটি দেখার জন্য ভাল তবে প্রোগ্রামিং সম্পর্কে পোস্টারের মূল প্রশ্নের পক্ষে নয় ।
Reorx

396

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

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


18
"সমান্তরাল প্রোগ্রামিংয়ের শক্ত অংশ ... যেমন গ্রানুলারিটি এবং যোগাযোগ।" যদি সমান্তরাল কাজগুলি যোগাযোগের প্রয়োজন হয়, তবে এটি তাদের একযোগে করে না?
জাস্টিন এম কেয়েস

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

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

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

3
"এর্ল্যাং সম্ভবত সবচেয়ে প্রত্যাশিত আসন্ন ভাষা ..."। শব্দের আকর্ষণীয় পছন্দ, যেহেতু এরলং ~ 30 বছর বয়সী এবং 1998 সালে এটি উন্মুক্ত ছিল
স্টেইনার

151

https://joearms.github.io/published/2013-04-05-concurrent-and-parallel-programming.html

একত্রে = দুটি সারি এবং একটি কফি মেশিন।

সমান্তরাল = দুটি সারি এবং দুটি কফি মেশিন।


9
ভুল এবং বিভ্রান্তিকর। একযোগে = এক বা একাধিক সারি (ননডেস্ট্রিমেন্টিক কম্পোজিশন) মঞ্জুরি দেওয়া। সমান্তরাল = খালি (অ্যাসিপটোটিক দক্ষতা) না থাকলে তাদের যেকোনকেই মূলের চেয়ে খাটো করে তুলতে একাধিক কাতারে থাকার জন্য ।
ফ্র্যাঙ্কএইচবি

সমবর্তী কোডে দুটি বা আরও বেশি প্রসেসর (বা "কফি মেশিন") প্রয়োজন requires সুতরাং এই উত্তরটি মূলত ভুল।
জেফ্রি অ্যান্ডারসন

6
@ জিফ্রি অ্যান্ডারসন উদাহরণস্বরূপ, থ্রেড এবং প্রক্রিয়াগুলি একক কোর মেশিনে একযোগে সম্পাদিত হয়।
জন হ্যারোপ

@FrankHB - দয়া করে কটাক্ষপাত আছে stackoverflow.com/a/57223044/1406510 এবং উৎস লিংক তাকিয়ে থাক কেন - ওরাকল সাইটে - সুতরাং এটা ভুল হতে যাবে কোথায়! আমাদের বোঝার হতে পারে। তাই সময় নিয়ে পুনর্বিবেচনা করার সময়। আমি এটা পড়ার পরে আমার দৃষ্টিভঙ্গি পরিবর্তন করেছি।
ন্যানোসফ্ট 26'19

@ জিফ্রেএন্ডারসন - স্ট্যাকওভারফ্লো.com/a/57223044/1406510 দেখুন। এটি ওরাকল থেকে লিঙ্ক রয়েছে এবং স্পষ্টভাবে কি তা কি বলা হয়। সুতরাং এটি আমাদের সাথে সারিবদ্ধ করা প্রয়োজন।
ন্যানোসফ্ট 26'19

40

প্রোগ্রামিংয়ের পরিবর্তে মূল প্রশ্নের সমান্তরাল / সমবর্তী গণনা হিসাবে ব্যাখ্যা করা

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

ইন সমান্তরাল গুনতি দুই কম্পিউটেশন উভয় আগাম একযোগে একই সময়ে আক্ষরিক যে -। এটি একক সিপিইউ দিয়ে সম্ভব নয় এবং এর পরিবর্তে মাল্টি-কোর সেটআপ প্রয়োজন।

নিবন্ধ থেকে চিত্রগুলি: "সমান্তরাল বনাম সমবর্তী নোড.জেজেস"

স্থগিত করা এবং পালা নেওয়া বনাম সমান্তরাল কম্পিউটিং



21

আমি বিশ্বাস করি সমবর্তী প্রোগ্রামিং মাল্টিথ্রেডেড প্রোগ্রামিংকে বোঝায় যা আপনার প্রোগ্রামকে একাধিক থ্রেড চালাতে দেয়, যা হার্ডওয়ারের বিবরণ থেকে বাদ দেওয়া হয়।

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


2
এটিকে অন্য উপায়ে বলতে গেলে সমান্তরালে দুটি জিনিস সম্পাদন করা এগুলিকে দ্বিগুণ দ্রুত সম্পন্ন করতে পারে। একই সাথে দুটি জিনিস সম্পাদন করা এখনও প্রথমটি করার মতো একই পরিমাণে সময় নিতে পারে এবং অন্যটি যদি প্রথমে কিছুটা চালিয়ে যাওয়ার পরে কিছুটা চালিয়ে যাওয়ার পরে সামনের দিকে কিছুটা সময় পিছনে পিছনে সিপিইউ টাইম-স্লাইসিং থাকে
ব্যবহারকারী 189169

14

আমি এই লিখিত সামগ্রীটি কিছু ব্লগে পেয়েছি। ভেবেছি এটি দরকারী এবং প্রাসঙ্গিক।

সংহত এবং সমান্তরালতা একই জিনিস নয়। দুটি কাজ টি 1 এবং টি 2 একই সাথে হয় যদি দুটি কার্য যথাসময়ে নির্ধারিত হয় না তবে

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

সমকালীনতা প্রায়শই একটি প্রোগ্রামের সম্পত্তি হিসাবে উল্লেখ করা হয়, এবং এটি সমান্তরালতার চেয়ে সাধারণ ধারণা।

উত্স: https://blogs.oracle.com/yuanlin/entry/concurrency_vs_ সমান্তরালতা_আপনি_পরিবর্তন


9

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

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

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

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

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

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

যদিও এটি আইসবার্গের কেবলমাত্র টিপ। কয়েক দশক আগে কম্পিউটারগুলি পাশাপাশি সমান্তরালতার আরও একটি স্তর সরবরাহ করতে শুরু করে। আবার, মোটামুটি বুদ্ধিমান লোক হয়েও কম্পিউটার ডিজাইনাররা লক্ষ্য করেছেন যে অনেক ক্ষেত্রেই তাদের নির্দেশনা রয়েছে যা একে অপরকে প্রভাবিত করে না, তাই একই সময়ে একই ধারা থেকে একাধিক নির্দেশনা কার্যকর করা সম্ভব হয়েছিল। প্রথম দিকের একটি উদাহরণ যা বেশ সুপরিচিত হয়ে ওঠে তা ছিল কন্ট্রোল ডেটা 00 66০০। এটি ১৯ (৪ সালে চালু হওয়ার সময় পৃথিবীর সবচেয়ে দ্রুতগতির কম্পিউটার ছিল - এবং একই বেসিক আর্কিটেকচারের বেশিরভাগ অংশ আজও ব্যবহারের মধ্যে রয়েছে। এটি প্রতিটি নির্দেশের দ্বারা ব্যবহৃত সংস্থানগুলি ট্র্যাক করে এবং এতে নির্ধারিত ইউনিটগুলির একটি সেট ছিল যা তারা নির্ভর করে যে সংস্থানগুলি নির্ভর করে সেই সংস্থানগুলি উপস্থিত হওয়ার সাথে সাথেই সর্বাধিক সাম্প্রতিক ইন্টেল / এএমডি প্রসেসরের ডিজাইনের অনুরূপ।

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

তারপরে অবশ্যই একাধিক কোর সহ আমরা আধুনিক সিস্টেমে চলে যাই। এখানে বিষয়গুলি সুস্পষ্ট, তাই না? আমাদের এন রয়েছে (কোথাও 2 থেকে 256 বা এর মধ্যে, এই মুহুর্তে) পৃথক কোর রয়েছে যা একই সাথে সমস্ত নির্দেশাবলী কার্যকর করতে পারে, সুতরাং আমাদের কাছে বাস্তব সমান্তরালতার স্পষ্ট-কাটা কেস আছে - একটি প্রক্রিয়া / থ্রেডে নির্দেশনা কার্যকর করা যায় না ' টি অন্যটিতে কার্যকর করার নির্দেশকে প্রভাবিত করে।

ভাল ধরণের. এমনকি এখানে আমাদের কিছু স্বতন্ত্র সংস্থান রয়েছে (রেজিস্ট্রারস, এক্সিকিউশন ইউনিট, ক্যাশে কমপক্ষে একটি স্তর) এবং কিছু অংশীদারি সংস্থান (সাধারণত কমপক্ষে সর্বনিম্ন সর্বনিম্ন স্তর ক্যাশে, এবং অবশ্যই মেমরির নিয়ামক এবং মেমরির ব্যান্ডউইদথ) থাকে।

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

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

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

"সমান্তরাল" এবং "সমবর্তী" এর মধ্যে একটি পরিষ্কার পার্থক্য আঁকতে চেষ্টা করা লোকেরা এমন কম্পিউটারগুলির কল্পনায় বাস করছে যা বাস্তবে কখনও ছিল না।


6
  • Concurrent programmingএকটি সাধারণ অর্থে পরিবেশকে বোঝায় যেখানে আমরা সংজ্ঞায়িত কার্যগুলি যে কোনও ক্রমে ঘটতে পারে। একটি কাজ অন্যের আগে বা পরে ঘটতে পারে এবং কিছু বা সমস্ত কাজ একই সময়ে সম্পাদন করা যেতে পারে।

  • Parallel programmingবিশেষত বিভিন্ন প্রসেসরের একযোগে কাজগুলির যুগপত সম্পাদনের বিষয়টি উল্লেখ করা। সুতরাং, সমস্ত সমান্তরাল প্রোগ্রামিং একই সাথে হয়, তবে সমস্ত সমবর্তী প্রোগ্রামিং সমান্তরাল হয় না।

উত্স: পিথ্রেডস প্রোগ্রামিং - বেটার মাল্টিপ্রসেসিংয়ের জন্য একটি পসিক্স স্ট্যান্ডার্ড, বাটলার, ফারেল, নিকোলস


5

প্রোগ্রামিংয়ে, কনক্যুরঞ্জি হ'ল স্বাধীনভাবে সম্পাদনকারী প্রক্রিয়াগুলির রচনা, অন্যদিকে সমান্তরালতা (সম্ভবত সম্পর্কিত) গণনাগুলির একযোগে সম্পাদন।
- অ্যান্ড্রু জেরানড -

এবং

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

সমান্তরালতা সমান্তরালতা নয়, যদিও এটি সমান্তরালতা সক্ষম করে। আপনার যদি মাত্র একটি প্রসেসর থাকে তবে আপনার প্রোগ্রামটি এখনও একই সাথে হতে পারে তবে এটি সমান্তরাল হতে পারে না। অন্যদিকে, একটি ভাল-লিখিত সমবর্তী প্রোগ্রাম কোনও মাল্টিপ্রসেসরের সমান্তরালে দক্ষতার সাথে চলতে পারে। এই সম্পত্তিটি গুরুত্বপূর্ণ হতে পারে ...
- রব পাইক -

পার্থক্যটি বোঝার জন্য, আমি দৃ Rob়ভাবে এই রব পাইক (গোলং স্রষ্টাদের মধ্যে একটি) এর ভিডিওটি দেখার পরামর্শ দিচ্ছি recommend সংমেয় সমান্তরালতা নয়


Vimeo লিঙ্ক এখানে কাজ করছে না ইউটিউব লিঙ্ক youtube.com/watch?v=cN_DpYBzKso
Shivprasad কৈরালা

5

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

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


5

কাজের ক্লাসিক শিডিয়ুলিং সিরিয়াল , সমান্তরাল বা সমবর্তী হতে পারে ।

  • সিরিয়াল : কাজগুলি অবশ্যই একের পর এক জানা ট্রিক অর্ডারে কার্যকর করতে হবে বা এটি কার্যকর হবে না। যথেষ্ট সহজ

  • সমান্তরাল : একই সময়ে কার্য সম্পাদন করতে হবে বা এটি কাজ করবে না।

    • কার্যকরীভাবে বা সময়মতো - কোনও কাজের কোনও ব্যর্থতার ফলে সিস্টেমের সম্পূর্ণ ব্যর্থতা দেখা দেবে।
    • সমস্ত কার্যক্রমে একটি সাধারণ নির্ভরযোগ্য সময় থাকতে হবে।

    এটি এড়াতে চেষ্টা করুন বা চায়ের সময় দিয়ে আমাদের অশ্রু হবে।

  • সমকালীন : আমরা যত্ন করি না। আমরা অসাবধান নই, যদিও: আমরা এটি বিশ্লেষণ করেছি এবং তাতে কিছু যায় আসে না; আমরা যে কোনও সময় যে কোনও উপলভ্য সুবিধা ব্যবহার করে যে কোনও কার্য সম্পাদন করতে পারি। সুখের দিনগুলি.

প্রায়শই, উপলব্ধ ইভেন্টগুলিতে উপলভ্য সময়সূচী পরিবর্তন হয় যা আমরা একটি রাষ্ট্র পরিবর্তন বলে থাকি।

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

সুসংক্ষেপে, সিস্টেম ডিজাইনের নিম্নলিখিত বিষয়গুলি সম্বোধন করে:

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

শুভকামনা।


8
আমি সর্বত্র ক্যাপগুলি দেখছি
ব্রুনো পেনডেডো

10
একত্রে সামঞ্জস্য এবং সমান্তরালতার বিষয়গুলির চেয়ে এই উত্তরটি আরও জটিল।
কাই সেলগ্রেন

3

আমি পার্থক্যটি বুঝতে পেরেছিলাম:

1) সমবর্তী - ভাগ করা সংস্থান ব্যবহার করে চালানো 2) সমান্তরাল - পাশাপাশি বিভিন্ন সংস্থান ব্যবহার করে চলমান

সুতরাং আপনি একই সময়ে দুটি একে অপরের থেকে পৃথক হয়ে উঠতে পারেন, এমনকি যদি তারা পয়েন্টে (2) একত্রিত হন বা কার্যকর হওয়া পুরো অপারেশন জুড়ে একই জিনিসগুলি (1) এ দুটি জিনিস আঁকেন।


3

সমান্তরাল এবং সমবর্তী শর্তগুলির মধ্যে পার্থক্য সম্পর্কে সম্পূর্ণ চুক্তি না থাকলেও , অনেক লেখক নিম্নলিখিত বর্ণনাকে তৈরি করেছেন:

  • একযোগে কম্পিউটিংয়ে, একটি প্রোগ্রাম এমন একটি হয় যাতে কোনও তাত্ক্ষণিক সময়ে একাধিক কাজ অগ্রগতিতে হতে পারে।
  • সমান্তরাল কম্পিউটিংয়ে একটি প্রোগ্রাম হ'ল একাধিক কাজ সমস্যা সমাধানে নিবিড়ভাবে সহযোগিতা করে।

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

উত্স : সমান্তরাল প্রোগ্রামিংয়ের একটি ভূমিকা, পিটার পাচেকো


1

সংহত এবং সমান্তরালতা উত্স

একটি একক প্রসেসরের মাল্টিথ্রেডেড প্রক্রিয়াতে, প্রসেসর থ্রেডগুলির মধ্যে এক্সিকিউশন রিসোর্সগুলি স্যুইচ করতে পারে, যার ফলে একযোগে কার্যকর হয়

শেয়ারড মেমোরি মাল্টিপ্রসেসর পরিবেশে একই মাল্টিথ্রেডেড প্রক্রিয়াতে, প্রক্রিয়াটির প্রতিটি থ্রেড একই সময়ে পৃথক প্রসেসরের উপর চলতে পারে, ফলস্বরূপ সমান্তরাল কার্যকর হয়

প্রক্রিয়াটিতে প্রসেসর যত কম বা তত বেশি থ্রেড থাকে, অপারেটিং পরিবেশের সাথে একত্রে থ্রেড সমর্থন সিস্টেমটি নিশ্চিত করে যে প্রতিটি থ্রেড একটি পৃথক প্রসেসরের উপর চলে।

উদাহরণস্বরূপ, ম্যাট্রিক্সের গুণে যা একই সংখ্যায় থ্রেড এবং প্রসেসর রয়েছে, প্রতিটি থ্রেড (এবং প্রতিটি প্রসেসর) ফলাফলের একটি সারি গণনা করে।


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

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

বিভিন্ন বিমূর্ততায় সমস্যাগুলি নিয়ে আলোচনা করার জন্য আমি একটি উত্তর লিখেছি ।
ফ্র্যাঙ্কএইচবি

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

0

বিভিন্ন ব্যক্তি বিভিন্ন নির্দিষ্ট ক্ষেত্রে বিভিন্ন ধরণের সম্মতি এবং সমান্তরালতা সম্পর্কে কথা বলে, তাই তাদের সাধারণ প্রকৃতিটি coverাকতে কিছু বিমূর্ততা প্রয়োজন।

মৌলিক বিমূর্ততা কম্পিউটার বিজ্ঞানে করা হয়, যেখানে একযোগে এবং সমান্তরালতা উভয়ই প্রোগ্রামের বৈশিষ্ট্যগুলিতে দায়ী করা হয় । এখানে, প্রোগ্রামগুলি কম্পিউটিংয়ের আনুষ্ঠানিক বিবরণ দেওয়া হয়। এই জাতীয় প্রোগ্রামগুলির কোনও নির্দিষ্ট ভাষা বা এনকোডিংয়ের দরকার নেই যা বাস্তবায়ন-নির্দিষ্ট। API / ABI / ISA / OS এর অস্তিত্ব এ জাতীয় বিমূর্ততার স্তরের অপ্রাসঙ্গিক। কংক্রিট প্রোগ্রামিংয়ের কাজগুলি করার জন্য অবশ্যই আরও বিশদ বাস্তবায়ন-নির্দিষ্ট জ্ঞান (থ্রেডিং মডেলের মতো) প্রয়োজন হবে, মূল বিমূর্তির পিছনে স্পিরিট পরিবর্তিত হয়নি।

দ্বিতীয় গুরুত্বপূর্ণ ঘটনাটি হ'ল সাধারণ বৈশিষ্ট্য হিসাবে, একযোগে এবং সমান্তরালতা বিভিন্ন বিমূর্ততায় সহাবস্থান করতে পারে

সাধারণ পার্থক্যের জন্য, একত্রে হওয়া সামঞ্জস্যের মৌলিক দর্শন সম্পর্কিত প্রাসঙ্গিক উত্তর দেখুন ।(কিছু অতিরিক্ত উত্সযুক্ত কিছু লিঙ্ক রয়েছে।)

সমকালীন প্রোগ্রামিং এবং সমান্তরাল প্রোগ্রামিং এমন কিছু সিস্টেমের সাথে এমন সাধারণ বৈশিষ্ট্যগুলি প্রয়োগ করার কৌশল যা প্রোগ্রামযোগ্যতা প্রকাশ করে। সিস্টেমগুলি সাধারণত প্রোগ্রামিং ভাষা এবং তাদের বাস্তবায়ন হয়।

একটি প্রোগ্রামিং ল্যাঙ্গুয়েজ অন্তর্নির্মিত নিয়মকানুনের দ্বারা উদ্দেশ্যযুক্ত বৈশিষ্ট্যগুলি প্রকাশ করতে পারে। বেশিরভাগ ক্ষেত্রে, এই জাতীয় বিধিগুলি নির্দিষ্ট ভাষার কাঠামোর মূল্যায়ন নির্দিষ্ট করে (উদাহরণস্বরূপ অভিব্যক্তি) গণনাটিকে কার্যকরভাবে সমবর্তী বা সমান্তরালকে জড়িত করে তোলে। (আরও সুনির্দিষ্টভাবে, মূল্যায়নের দ্বারা নিহিত গণনাগত প্রভাবগুলি এই বৈশিষ্ট্যগুলিকে পুরোপুরি প্রতিফলিত করতে পারে However) তবে একযোগে / সমান্তরাল ভাষার শব্দার্থবিজ্ঞানগুলি মূলত জটিল এবং এগুলি ব্যবহারিক কাজের প্রয়োজন হয় না (বাস্তবসম্মত সমস্যার সমাধান হিসাবে দক্ষ সমবর্তী / সমান্তরাল আলগোরিদিমগুলি প্রয়োগ করতে) )। সুতরাং, বেশিরভাগ traditionalতিহ্যবাহী ভাষাগুলি আরও রক্ষণশীল এবং সহজ পদ্ধতির গ্রহণ করে: মূল্যায়নের শব্দার্থকতাকে সম্পূর্ণ অনুক্রমিক এবং ক্রমিক হিসাবে ধরে নেয়, তারপরে alচ্ছিক আদিমদের অনুমতি দেয় কিছু some কিছু সরবরাহগণনা সমান্তরাল এবং সমান্তরাল হচ্ছে। এই আদিমতা ভাষা দ্বারা সমর্থিত কীওয়ার্ড বা পদ্ধতিগত গঠন ("ফাংশন") হতে পারে। এগুলি হোস্ট করা পরিবেশ (ওএস, বা "বেয়ার মেটাল" হার্ডওয়্যার ইন্টারফেস) এর সাথে কথোপকথনের উপর ভিত্তি করে প্রয়োগ করা হয়, সাধারণত অস্বচ্ছ (ভাষাটি বহনযোগ্যভাবে ভাষা ব্যবহার করে তৈরি করতে সক্ষম হয় না) to সুতরাং, প্রোগ্রামারদের দ্বারা দেখা এই বিশেষ ধরণের উচ্চ-স্তরের বিমূর্তিতে, এই "যাদু" আদিম এবং এই আদিমগুলিতে নির্ভর প্রোগ্রামগুলি ছাড়া আর কিছুই সমকালীন / সমান্তরাল নয়; প্রোগ্রামাররা তখন প্রোগ্রামিংয়ের ত্রুটি-প্রবণতার কম অভিজ্ঞতা উপভোগ করতে পারেন যখন সান্ধ্যতা / সমান্তরালতা বৈশিষ্ট্যগুলি তেমন আগ্রহী না হয়।

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

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

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

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


0

কেবল একটি উদাহরণ ভাগ করা যা পার্থক্যটি হাইলাইট করতে সহায়তা করে:

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

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

অন্য কেউ যেমন উল্লেখ করেছেন, প্রতিটি সমান্তরাল প্রোগ্রাম সমবর্তী হয় (বাস্তবে হওয়া উচিত) তবে অন্যভাবে নয়।


0

আমি এটি আমার নিজস্ব স্টাইলে ব্যাখ্যা করার চেষ্টা করব, এটি কম্পিউটারের ক্ষেত্রে নাও হতে পারে তবে এটি আপনাকে সাধারণ ধারণা দেয়।

আসুন একটি উদাহরণ নেওয়া যাক, গৃহস্থালী কাজগুলি বলুন: থালা বাসন পরিষ্কার করা, আবর্জনা কাটা, লন কাঁচা কাটা ইত্যাদি, এছাড়াও আমরা তাদের 3 জন (থ্রেড) এ, বি, সি আছে

সমবর্তী: তিন ব্যক্তি পৃথক পৃথক কাজ শুরু করে অর্থাত্,

A --> cleaning dishes
B --> taking out trash 
C --> mowing the lawn 

এখানে, কাজের ক্রম নির্বিচারবাদী এবং প্রতিক্রিয়াগুলি কাজের পরিমাণের উপর নির্ভর করে

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

থালা বাসন পরিষ্কার:

A --> soaping the dishes
B --> washing the dishes

শীঘ্রই

আশা করি এটি একটি ধারণা দেয়! এখন অন্যান্য উত্তরে বর্ণিত প্রযুক্তিগত পদগুলিতে এগিয়ে যান;)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.