Skip to content

Commit

Permalink
Added content for Concurrency
Browse files Browse the repository at this point in the history
  • Loading branch information
lahin31 committed Dec 13, 2024
1 parent e8db4ef commit ae1a28f
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 2 deletions.
24 changes: 22 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
- [Section 9: User Datagram Protocol](#section-9-user-datagram-protocol)
- [Section 10: HTTP, TLS and HTTPS](#section-10-http-tls-and-https)
- [Section 11: What happens when you type a URL in your browser](#section-11-what-happens-when-you-type-a-url-in-your-browser)
- [Section 12: Concurrency and Parallelism] (চলমান)
- [Section 12: Concurrency and Parallelism](#section-12-concurrency-and-parallelism)
- [Section 13: High Concurrency Control](#section-13-high-concurrency-control)
- [Section 14: Functional and Non Functional Requirements](#section-14-functional-and-non-functional-requirements)
- [Section 15: Back Of the Envelope Estimation](#section-15-back-of-the-envelope-estimation)
Expand Down Expand Up @@ -55,7 +55,7 @@

## Section 1: System Design

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

(এই স্পেসিফিক সিস্টেম ডিজাইন মূলত ব্যাকএন্ড ইঞ্জিনিয়ারিং এর সাথে সম্পৃক্ত।)

Expand Down Expand Up @@ -215,6 +215,26 @@ HTTPS অর্থাৎ Hyper Text Transfer Protocol Secure, এটি নি

সার্ভার রিকোয়েস্ট প্রসেস করে তারপর রেসপন্স রিটার্ন করে থাকে। ব্রাউজার সেই রেসপন্স কে বিভিন্ন স্টেপ শেষ করে ব্রাউজারে দেখায়।

## Section 12: Concurrency and Parallelism

Concurrency এবং Parallelism বুঝতে হলে আমাদেরকে Process এবং Thread অপারেটিং সিস্টেম এর আলোকে বুঝতে হবে।

Process কি? একটি প্রোগ্রাম(code) যখন execution অবস্থায় থাকে, তখন সেটি একটি Process। এটি এমন একটি environment বা container, যেখানে প্রোগ্রামের জন্য প্রয়োজনীয় সমস্ত রিসোর্স (যেমন, CPU টাইম, মেমরি) বরাদ্দ করা হয় এবং প্রোগ্রামটি চালানো(execute) হয়।

Thread কি? এটি মূলত Process এর Subset। একটি Process-এ এক বা একাধিক Thread থাকতে পারে। তার কাজ হচ্ছে প্রোগ্রাম এর একাধিক অপারেশনগুলোকে Concurrently কিংবা Parallelly execute করা।

Thread ভালোভাবে বুঝার জন্য Concurrency এবং Parallelism বুঝা যাক।

Concurrency কি? একাধিক কাজ একসঙ্গে চালানোর ধারণা, তবে এটি একই সময়ে সব কাজ বাস্তবিকভাবে সম্পন্ন করছে এমন নয়।

ধরুন CPU কোর হচ্ছে ১টি, একাধিক কাজ Thread এর মধ্যে যখন থাকে, তখন Context Switching এর মাধ্যমে CPU দ্রুতভাবে একে অপরকে সময় ভাগ করে, অর্থাৎ একটি কাজ থেমে CPU অন্য কাজ শুরু করে, তারপর আবার সেই কাজ চালু করে যতদূর সম্পন্ন হয়েছে, তারপরের অংশ থেকে আবার শুরু হয়।

<p align="center">
<img src="./images/concurrency.png" alt="Concurrency">
</p>

(চলমান)

## Section 13: High Concurrency Control

High Concurrency মানে হচ্ছে, যখন একাধিক user কিংবা একাধিক process একই সময়/একই মুহূর্তে একটি নির্দিষ্ট রিসোর্স কিংবা একটি নির্দিষ্ট ডাটা modify করতে যায়। এর দ্বারা অনেক সমস্যা সৃষ্টি হতে পারে, যার মধ্যে সবচেয়ে গুরুত্বপূর্ণ সমস্যা হচ্ছে Data Inconsistency।
Expand Down
Binary file added images/concurrency.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit ae1a28f

Please sign in to comment.