UNIT 2: प्रोसेस और मेमोरी प्रबंधन (Process & Memory Management)

 

2.1 प्रोसेस मैनेजमेंट (Process Management)


2.1.1 प्रोसेस की अवधारणा (Process Concepts)

प्रोसेस एक रन हो रहा प्रोग्राम होता है। जब आप किसी प्रोग्राम को डबल क्लिक करके खोलते हैं, तो वह एक प्रोसेस बन जाता है।

🔹 प्रोसेस के कंपोनेंट्स:

  • Code (Text Section): प्रोग्राम का कोड

  • Data Section: ग्लोबल/स्थायी वैरिएबल्स

  • Stack: फंक्शन्स, पैरामीटर, लोकल वैरिएबल्स

  • Heap: डायनामिक मेमोरी (malloc आदि)

🔹 प्रोसेस स्टेट्स (Process States):

  1. New: प्रोसेस बन रहा है

  2. Ready: रन होने के लिए तैयार है

  3. Running: CPU इसे चला रहा है

  4. Waiting: किसी I/O या संसाधन के लिए इंतजार कर रहा है

  5. Terminated: प्रोसेस समाप्त हो चुका है


2.1.2 प्रोसेस पर क्रियाएँ (Operations on Processes)

🔹 1. Process Creation (बनाना):

  • Parent process एक child process बनाता है

  • UNIX में fork() सिस्टम कॉल से

🔹 2. Process Termination (समाप्त करना):

  • Execution पूरा होने पर या error आने पर process terminate होता है

🔹 3. Process Hierarchy:

  • Parent-child relationship में processes होते हैं


2.1.3 इंटरप्रोसेस कम्युनिकेशन (IPC - Inter Process Communication)

जब एक से ज्यादा प्रोसेस एक ही सिस्टम पर चल रहे हों और उन्हें आपस में डेटा साझा करना हो, तो IPC की जरूरत होती है।

🔹 IPC के तरीके:

  1. Shared Memory:
    दोनों processes एक ही memory का हिस्सा शेयर करते हैं।

  2. Message Passing:
    एक प्रोसेस दूसरे को message भेजती है।

🔹 IPC के उदाहरण:

  • Pipe

  • Message Queues

  • Semaphores

  • Sockets


2.2 प्रोसेस शेड्यूलिंग (Process Scheduling)

Scheduling का मतलब है - कौन सा process पहले CPU का इस्तेमाल करेगा।


2.2.1 FCFS (First Come First Serve)

  • जो प्रोसेस पहले आता है, उसे पहले CPU मिलता है।

  • आसान लेकिन अप्रभावी (slow for long jobs)

📌 नुकसान: लंबा प्रोसेस पहले आ जाए तो पीछे वाले छोटे भी रुके रह जाते हैं। (Convoy effect)


2.2.2 SJF (Shortest Job First)

  • सबसे छोटा प्रोसेस पहले चलेगा।

  • कम वेटिंग टाइम

📌 नुकसान: लंबा प्रोसेस indefinite समय तक wait कर सकता है। (Starvation)


2.2.3 Priority Scheduling

  • हर प्रोसेस को एक प्रायोरिटी (Priority) दी जाती है।

  • High priority प्रोसेस पहले रन करता है।

📌 नुकसान: Low priority प्रोसेस starve हो सकते हैं।


2.2.4 Round Robin (RR)

  • हर प्रोसेस को एक Time Quantum मिलता है।

  • सबको बारी-बारी से CPU दिया जाता है।

📌 फायदा: Time sharing सिस्टम्स के लिए बेहतर।


2.3 मल्टी-थ्रेडेड प्रोग्रामिंग (Multi-Threaded Programming)

🔹 Thread:

  • प्रोसेस के अंदर का सबसे छोटा executable यूनिट।

🔹 फायदे:

  • कम समय और कम संसाधनों में multitasking

  • Shared memory का लाभ

🔹 एक Multi-threaded प्रोग्राम:

  • Web Browser: एक thread पेज लोड करता है, दूसरा यूज़र इनपुट लेता है


2.4 मेमोरी प्रबंधन (Memory Management)

2.4.1 मेमोरी एलोकेशन (Memory Allocation)

🔹 दो प्रकार:

  1. Static Allocation: कंपाइल टाइम पर

  2. Dynamic Allocation: रनटाइम पर (जैसे malloc())


2.4.2 स्वैपिंग (Swapping)

जब RAM कम पड़ जाए तो OS किसी प्रोसेस को डिस्क पर भेज देता है (swap out) और जरूरत पर वापस लाता है (swap in)।

📌 इससे RAM में नई processes को जगह मिलती है।


2.4.3 Paging (पेजिंग)

RAM को fixed-size blocks (pages) में बांटा जाता है।

🔹 लाभ:

  • External fragmentation नहीं होता

  • Logical memory और physical memory को अलग रखा जाता है

📌 Page Table: logical to physical address mapping करता है।


2.4.4 Segmentation (सेगमेंटेशन)

Memory को logical segments (Code, Data, Stack) में बांटा जाता है।

📌 Segment Table: हर segment की base और limit बताता है।


2.5 वर्चुअल मेमोरी (Virtual Memory)

यह एक तकनीक है जिससे यूज़र को यह अनुभव होता है कि उसके पास ज्यादा RAM है।

🔹 कैसे काम करता है?

  • RAM में जगह कम होने पर डाटा को डिस्क (swap space) पर रखा जाता है

  • जरुरत पड़ने पर RAM में वापस लाया जाता है

📌 Paging + Swapping से मिलकर बनता है Virtual Memory

🔹 फायदे:

  • बड़े प्रोग्राम भी रन हो सकते हैं

  • मल्टीटास्किंग संभव

Post a Comment

1 Comments