Unit 5: Operating System

ठीक है, मैं आपको Operating System (OS) का यह पूरा टॉपिक हिंदी में विस्तार से समझा देता हूँ।


1. ऑपरेटिंग सिस्टम का परिचय (Introduction to OS)

परिभाषा:
ऑपरेटिंग सिस्टम एक सॉफ़्टवेयर है जो उपयोगकर्ता (User) और कंप्यूटर हार्डवेयर के बीच मध्यस्थ (Interface) का कार्य करता है।

मुख्य उद्देश्य:

  • हार्डवेयर और सॉफ़्टवेयर का समन्वय करना।
  • संसाधनों (CPU, Memory, I/O devices) का प्रबंधन।
  • प्रोग्राम को चलाने और नियंत्रित करने का प्लेटफ़ॉर्म प्रदान करना।

2. कार्यात्मक व्यवहार और जिम्मेदारियाँ (Functional Behavior & Responsibilities)

  1. प्रोसेस मैनेजमेंट (Process Management) – प्रोसेस को बनाना, शेड्यूल करना, और समाप्त करना।
  2. मेमोरी मैनेजमेंट (Memory Management) – RAM का कुशल उपयोग और allocation/deallocation।
  3. फ़ाइल सिस्टम मैनेजमेंट (File System Management) – डेटा को व्यवस्थित और सुरक्षित रखना।
  4. डिवाइस मैनेजमेंट (Device Management) – I/O डिवाइस को नियंत्रित करना।
  5. सुरक्षा और संरक्षण (Security & Protection) – डाटा और संसाधनों की सुरक्षा।
  6. यूज़र इंटरफ़ेस (User Interface) – उपयोगकर्ता को सिस्टम से संवाद करने का तरीका देना।

3. मॉनिटर / कमांड इंटरप्रेटर की आवश्यकता (Need for Monitor / Command Interpreter)

  • Monitor Program: प्रारंभिक कंप्यूटरों में बैच प्रोसेसिंग को नियंत्रित करने के लिए उपयोग किया जाता था।
  • Command Interpreter (Shell):
    • उपयोगकर्ता के कमांड को पढ़ता है और OS को निर्देश देता है।
    • उदाहरण: Windows Command Prompt, Unix Shell, PowerShell।

क्यों ज़रूरी है:

  • उपयोगकर्ता को हार्डवेयर के जटिल विवरण से बचाने के लिए।
  • प्रोग्राम और संसाधनों के बीच मध्यस्थ के रूप में कार्य करने के लिए।

4. ऑपरेटिंग सिस्टम के प्रकार (Types of Operating Systems)

  1. Batch Operating System – कार्य बैच में चलते हैं, बिना यूज़र इंटरैक्शन।
  2. Multiprogramming OS – कई प्रोग्राम एक साथ मेमोरी में रहते हैं।
  3. Multitasking OS – एक ही समय में कई कार्य किए जाते हैं।
  4. Time-Sharing OS – CPU समय को छोटे-छोटे हिस्सों में बाँटा जाता है।
  5. Distributed OS – नेटवर्क में जुड़े कई कंप्यूटरों पर चलता है।
  6. Real-Time OS – तुरंत प्रतिक्रिया देने वाला सिस्टम (जैसे एयरक्राफ्ट सिस्टम)।

5. सिस्टम स्ट्रक्चर (System Structure)

  • OS का स्ट्रक्चर इस पर निर्भर करता है कि इसके घटक कैसे संगठित हैं।
  • मुख्य स्तर:
    1. हार्डवेयर
    2. ऑपरेटिंग सिस्टम
    3. सिस्टम प्रोग्राम्स
    4. एप्लिकेशन प्रोग्राम्स
    5. उपयोगकर्ता

6. OS का पदानुक्रम और लेयर्ड संगठन (Hierarchical & Layered Organization of OS)

  • Layered Structure: OS को अलग-अलग स्तरों (Layers) में बाँटा जाता है –
    • Layer 0: Hardware
    • Layer 1: CPU Scheduling, Memory Management
    • Layer 2: Device Drivers
    • Layer 3: File System
    • Layer 4: User Interface / System Calls

लाभ:

  • आसान डिबगिंग और मेंटेनेंस।
  • मॉड्यूलर डिज़ाइन।

7. I/O Methods (इनपुट-आउटपुट के तरीके)

  1. Programmed I/O – CPU सीधे I/O को नियंत्रित करता है।
  2. Interrupt-Driven I/O – डिवाइस काम पूरा होने पर CPU को इंटरप्ट भेजता है।
  3. DMA (Direct Memory Access) – CPU की बजाय DMA कंट्रोलर सीधे मेमोरी और I/O डिवाइस के बीच डेटा ट्रांसफर करता है।

8. इंटरप्ट संरचना (Interrupt Structure)

  • Interrupt: कोई संकेत जो CPU को चल रहे कार्य को रोककर नया कार्य करने को कहता है।
  • प्रकार:
    1. Hardware Interrupt – कीबोर्ड, माउस, डिस्क आदि से।
    2. Software Interrupt – प्रोग्राम द्वारा जनरेट।

उपयोग:

  • तेज प्रतिक्रिया।
  • CPU समय का बेहतर उपयोग।


1. प्रोसेस की परिभाषा (Process Definition)

प्रोसेस किसी प्रोग्राम का चल रहा रूप (Running Instance) है।

  • प्रोग्राम सिर्फ निर्देशों का संग्रह है, लेकिन जब वह मेमोरी में लोड होकर CPU पर चलता है तो उसे प्रोसेस कहते हैं।
  • हर प्रोसेस का अपना Address Space, Program Counter, Stack, और Data Section होता है।

2. प्रोसेस की अवस्थाएँ (Process States)

  1. New (नया): प्रोसेस बन रहा है।
  2. Ready (तैयार): CPU के लिए इंतजार कर रहा है।
  3. Running (चल रहा): CPU पर निर्देश निष्पादित हो रहे हैं।
  4. Waiting / Blocked (प्रतीक्षा): किसी घटना (I/O) का इंतजार।
  5. Terminated (समाप्त): प्रोसेस खत्म हो गया है।

3. अवस्था परिवर्तन (State Transitions)

  • New → Ready: प्रोसेस लोड होकर CPU के लिए तैयार।
  • Ready → Running: Scheduler CPU देता है।
  • Running → Waiting: I/O या किसी इवेंट का इंतजार।
  • Waiting → Ready: इवेंट पूरा हो गया।
  • Running → Ready: टाइम-स्लाइस खत्म होने पर CPU छोड़ना।
  • Running → Terminated: कार्य पूरा हो गया।

4. समानांतर प्रोसेस और निर्माण (Parallel Processes & Constructs)

  • Parallel Processes: कई प्रोसेस एक साथ चलना (Multi-core CPU का लाभ)।
  • Constructs:
    • Fork / Exec: Unix में नए प्रोसेस बनाना और प्रोग्राम लोड करना।
    • Threads: हल्के वजन वाले प्रोसेस (Lightweight Process) जो एक ही Address Space साझा करते हैं।

5. प्रोसेस इंटरैक्शन (Process Interaction)

प्रोसेस एक-दूसरे के साथ निम्न तरीकों से बातचीत कर सकते हैं:

  • Shared Memory (साझा मेमोरी)
  • Message Passing (संदेश प्रेषण)
  • Pipes / Sockets
  • Signals / Semaphores

6. ऑपरेटिंग सिस्टम कर्नेल (Operating System Kernel)

  • Kernel OS का मुख्य भाग है जो हार्डवेयर को नियंत्रित करता है और सिस्टम कॉल्स को मैनेज करता है।
  • Kernel की जिम्मेदारियाँ:
    • Process Scheduling
    • Memory Management
    • Device Management
    • File System Control

7. प्रोसेस और संसाधनों के लिए डेटा स्ट्रक्चर (Data Structures for Processes & Resources)

  1. Process Control Block (PCB):
    • Process ID
    • Program Counter
    • CPU Registers
    • Process State
    • Scheduling Info
  2. Resource Tables:
    • File Table
    • I/O Device Table
    • Memory Allocation Table

8. कॉन्टेक्स्ट स्विचिंग (Context Switching)

  • जब CPU एक प्रोसेस से दूसरे प्रोसेस पर स्विच करता है, तो मौजूदा प्रोसेस का Context (PCB) सेव करके, नए प्रोसेस का Context लोड किया जाता है।
  • इसमें समय लगता है (Context Switch Overhead)।

9. प्रोसेस नियंत्रण प्रिमिटिव्स (Process Control Primitives)

  • Create – नया प्रोसेस बनाना।
  • Destroy – प्रोसेस समाप्त करना।
  • Suspend / Resume – प्रोसेस को अस्थायी रोकना / फिर से शुरू करना।
  • Block / Wakeup – I/O या इवेंट के लिए रोकना / पुनः सक्रिय करना।

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

प्रकार:

  1. Long-Term Scheduling – सिस्टम में कितने प्रोसेस लाने हैं, तय करता है।
  2. Medium-Term Scheduling – कुछ प्रोसेस को अस्थायी Suspend करता है।
  3. Short-Term Scheduling – अगला CPU कौन सा प्रोसेस पाएगा, तय करता है।

एल्गोरिद्म:

  • FCFS (First Come First Serve)
  • SJF (Shortest Job First)
  • Priority Scheduling
  • Round Robin (Time Quantum)
  • Multilevel Queue


1. डिटर्मिनेंसी समस्या (The Determinacy Problem)

  • परिभाषा: जब दो या अधिक प्रोसेस एक ही समय पर साझा संसाधन (Shared Resource) को एक्सेस करते हैं और आउटपुट इस बात पर निर्भर करता है कि CPU Scheduling में कौन सा प्रोसेस पहले चलता है, तो इसे Indeterminacy कहते हैं।
  • यह समस्या गलत और अप्रत्याशित परिणाम दे सकती है।
  • कारण:
    • साझा डेटा को बिना Synchronization के एक्सेस करना।
    • रेस कंडीशन (Race Condition) – दो प्रोसेस एक ही डेटा को बदलने की कोशिश करें।

2. म्यूचुअल एक्सक्लूज़न (Mutual Exclusion)

  • उद्देश्य: एक समय में केवल एक प्रोसेस को ही क्रिटिकल सेक्शन (Critical Section) में प्रवेश देना।
  • Critical Section: कोड का वह हिस्सा जहाँ Shared Resource का उपयोग होता है।
  • तरीके:
    • सॉफ़्टवेयर सॉल्यूशन (Peterson’s Algorithm)
    • हार्डवेयर सॉल्यूशन (Test-and-Set, Disable Interrupts)
    • सिंक्रोनाइज़ेशन टूल्स (Semaphores, Monitors)

3. सेमाफोर (Semaphores)

  • परिभाषा: एक Integer Variable जो Shared Resource की उपलब्धता को ट्रैक करता है।
  • ऑपरेशन:
    1. wait(P) → संसाधन उपलब्ध न होने पर प्रोसेस को रोक देता है।
    2. signal(V) → संसाधन मुक्त होने पर किसी प्रोसेस को जगा देता है।

प्रकार:

  • Binary Semaphore (0/1) – केवल एक प्रोसेस को अनुमति देता है।
  • Counting Semaphore (0 से N) – एक समय में N प्रोसेस को अनुमति देता है।

4. प्रोसेस सिंक्रोनाइज़ेशन (Process Synchronization)

  • कई प्रोसेस के Execution को इस तरह से नियंत्रित करना कि वे सही क्रम में और सुरक्षित तरीके से Shared Data का उपयोग करें।
  • Tools:
    • Mutex Locks
    • Semaphores
    • Monitors
    • Condition Variables

5. कंडीशनल क्रिटिकल रीजन और मॉनिटर्स (Conditional Critical Regions & Monitors)

Conditional Critical Region:

  • Critical Section + Condition Check का कॉम्बिनेशन।
  • केवल तब प्रवेश की अनुमति जब Condition True हो।

Monitors:

  • High-Level Synchronization Construct।
  • एक मॉनिटर में:
    • Shared Data Variables
    • Procedures to access them
    • Synchronization Mechanisms (Condition Variables: wait(), signal())
  • OS यह सुनिश्चित करता है कि एक समय में केवल एक प्रोसेस मॉनिटर के अंदर हो।

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

प्रोसेस के बीच डाटा और संदेशों का आदान-प्रदान।

तरीके:

  1. Shared Memory – प्रोसेस एक ही मेमोरी स्पेस को शेयर करते हैं।
  2. Message Passing – प्रोसेस एक-दूसरे को संदेश भेजते हैं (send, receive)।
  3. Pipes – एक प्रोसेस का आउटपुट दूसरे का इनपुट।
  4. Sockets – नेटवर्क पर IPC।

7. डेडलॉक समस्या (Deadlock Problem)

परिभाषा:
जब दो या अधिक प्रोसेस एक-दूसरे के द्वारा पकड़े गए संसाधनों का इंतजार करते हैं और कोई भी आगे नहीं बढ़ सकता, तो इसे डेडलॉक कहते हैं।

डेडलॉक के लिए आवश्यक शर्तें (Coffman Conditions):

  1. Mutual Exclusion – एक समय में संसाधन केवल एक प्रोसेस को मिले।
  2. Hold and Wait – प्रोसेस एक संसाधन पकड़े हुए दूसरे का इंतजार करे।
  3. No Preemption – संसाधन को बलपूर्वक छीना नहीं जा सकता।
  4. Circular Wait – प्रोसेस एक चक्रीय श्रृंखला में संसाधनों का इंतजार करें।

8. डेडलॉक समाधान (Deadlock Solutions)

  1. Deadlock Prevention (रोकथाम) – कम से कम एक Coffman Condition को तोड़ना।
  2. Deadlock Avoidance (बचाव) – Banker’s Algorithm का प्रयोग, Safe State में रहना।
  3. Deadlock Detection (पता लगाना) – समय-समय पर संसाधन आवंटन ग्राफ देखकर Deadlock का पता लगाना और फिर समाधान करना।
  4. Deadlock Recovery (उद्धार) – डेडलॉक में फँसे प्रोसेस को खत्म करना या संसाधन जब्त करना।

1. मेमोरी मैनेजमेंट कॉन्सेप्ट्स (Memory Management Concepts)

मेमोरी मैनेजमेंट का मुख्य काम है:

  • प्रोसेस को मेमोरी अलॉट करना
  • मेमोरी का कुशल उपयोग करना
  • मेमोरी को खाली करना और दोबारा इस्तेमाल के लिए उपलब्ध कराना

OS यह सुनिश्चित करता है कि CPU को हमेशा रन करने के लिए प्रोसेस मिले और मेमोरी बर्बाद न हो।


2. रिलोकेशन (Relocation)

  • प्रोग्राम को मेमोरी के अलग-अलग स्थानों पर लोड करने की क्षमता।
  • OS Logical Address → Physical Address में बदल देता है।
  • फायदा: प्रोग्राम को किसी भी खाली जगह पर लोड किया जा सकता है।

3. लिंकिंग (Linking)

  • अलग-अलग प्रोग्राम मॉड्यूल और लाइब्रेरी को जोड़कर एक executable बनाना।
  • Static Linking: लोड टाइम से पहले सब जोड़ना।
  • Dynamic Linking: रनटाइम पर जरूरत पड़ने पर जोड़ना।

4. फिक्स्ड पार्टीशन्स के साथ मल्टीप्रोग्रामिंग (Multiprogramming with Fixed Partitions)

  • मेमोरी को पहले से तय आकार के हिस्सों (Partitions) में बांटना।
  • हर Partition में केवल एक प्रोसेस रखा जा सकता है।
  • समस्या: Internal Fragmentation (Partition में खाली जगह बचना लेकिन उपयोग न होना)।

5. स्वैपिंग (Swapping)

  • मेमोरी से प्रोसेस को हटाकर डिस्क पर रखना और बाद में फिर लाना।
  • इसका उपयोग तब होता है जब RAM कम हो।

6. वैरिएबल पार्टीशन्स (Variable Partitions)

  • Partition का आकार प्रोसेस के अनुसार बदल सकता है।
  • समस्या: External Fragmentation (बीच-बीच में छोटे खाली हिस्से बनना)।

7. ओवरलेज़ (Overlays)

  • एक समय में प्रोग्राम का केवल वही हिस्सा मेमोरी में रखना जिसकी जरूरत है।
  • बड़े प्रोग्राम को छोटे मेमोरी में चलाने के लिए प्रयोग।

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

  • Logical Memory का आकार Physical Memory से बड़ा दिखाना।
  • जरूरत पड़ने पर पेज या सेगमेंट को डिस्क से RAM में लाना।
  • तकनीकें: Paging, Segmentation

9. सेगमेंटेशन (Segmentation)

  • प्रोग्राम को लॉजिकल ब्लॉक्स (Code, Data, Stack) में बांटना।
  • हर Segment का अलग Base Address और Limit होता है।

10. पेजिंग (Paging)

  • मेमोरी को फिक्स्ड-साइज़ पेज में बांटना।
  • Logical Page → Physical Frame मैपिंग पेज टेबल के जरिए होती है।
  • फायदा: External Fragmentation खत्म हो जाता है।

11. स्टोरेज अलोकेशन स्ट्रेटेजीज़ (Storage Allocation Strategies)

  • First Fit: पहला उपयुक्त खाली ब्लॉक चुनना।
  • Best Fit: सबसे छोटा उपयुक्त ब्लॉक चुनना।
  • Worst Fit: सबसे बड़ा खाली ब्लॉक चुनना।

12. लोड कंट्रोल (Load Control)

  • सिस्टम में कितने प्रोसेस एक समय में लोड करने हैं, यह नियंत्रित करना।
  • ज्यादा प्रोसेस लोड करने से CPU Idle नहीं होगा, लेकिन मेमोरी प्रेशर बढ़ेगा।

13. थ्रैशिंग (Thrashing)

  • जब CPU समय का अधिकांश हिस्सा पेज स्वैपिंग में चला जाए और असली प्रोसेसिंग बहुत कम हो।
  • कारण: बहुत ज्यादा प्रोसेस लोड करना या कम पेज फ्रेम अलॉट होना।


1. फ़ाइल और I/O सबसिस्टम का संगठन (Organization of File & I/O Subsystems)

  • File Subsystem: डेटा को स्टोर और एक्सेस करने की सुविधा देता है।
  • I/O Subsystem: इनपुट/आउटपुट डिवाइस के साथ डेटा ट्रांसफर को नियंत्रित करता है।

2. डायरेक्टरी मैनेजमेंट (Directory Management)

  • फ़ाइलों की सूची और उनके लोकेशन, साइज, परमिशन आदि की जानकारी रखता है।
  • उदाहरण: Windows Explorer, Linux में /home या /usr directories।

3. बेसिक फ़ाइल सिस्टम और फ़ाइल डिस्क्रिप्टर्स (Basic File System & File Descriptors)

  • Basic File System: डिस्क से डेटा पढ़ने/लिखने की बेसिक सर्विस प्रदान करता है।
  • File Descriptor: फाइल के बारे में OS द्वारा रखा गया एक पहचान नंबर (ID) जो फाइल के साइज, लोकेशन और परमिशन बताता है।

4. फ़ाइल मैनिपुलेशन (File Manipulation)

  • Create, Open, Read, Write, Close, Rename, Delete जैसी क्रियाएँ।

5. फ़ाइल ऑर्गनाइजेशन मेथड्स (File Organization Methods)

  • Sequential: फाइल में डेटा क्रम से रखा जाता है।
  • Direct Access: डेटा को सीधे किसी भी लोकेशन से पढ़ना/लिखना।
  • Indexed: एक इंडेक्स टेबल के जरिए डेटा को खोजा जाता है।

6. ऑक्सिलरी स्टोरेज स्पेस मैनेजमेंट (Management of Auxiliary Storage Space)

  • डिस्क स्पेस अलॉट करना, फ्री स्पेस की लिस्ट रखना, और कुशलता से उपयोग करना।

7. कमांड लैंग्वेज और फ़ाइल सिस्टम यूटिलिटीज (Command Language & File System Utilities)

  • Command Language: फाइल और डायरेक्टरी ऑपरेशन करने के लिए कमांड (जैसे copy, move, ls, rm)।
  • Utilities: बैकअप टूल, डिस्क चेक, कम्प्रेशन टूल, आदि।

8. I/O सबसिस्टम (I/O Subsystems)

Programmed I/O:

  • CPU खुद I/O डिवाइस से डेटा ट्रांसफर कंट्रोल करता है।
  • CPU को इंतज़ार करना पड़ सकता है → धीमा तरीका।

Interrupt Driven I/O:

  • I/O पूरा होने पर डिवाइस CPU को इंटरप्ट सिग्नल भेजता है।
  • CPU तब तक अन्य काम कर सकता है।

DMA (Direct Memory Access):

  • CPU को बायपास करके I/O डिवाइस सीधे मेमोरी में डेटा भेजते/पढ़ते हैं।
  • तेज और कुशल तरीका।

9. रिकवरी प्रोसीजर्स (Recovery Procedures)

  • सिस्टम क्रैश या पावर फेल के बाद डेटा को सुरक्षित पुनः प्राप्त करने की प्रक्रिया।
  • तरीक़े: बैकअप, चेकपॉइंटिंग, लॉगिंग।

10. प्रोटेक्शन और सिक्योरिटी (Protection & Security)

Safeguards (सुरक्षा उपाय):

  • पासवर्ड, फायरवॉल, एन्क्रिप्शन, एंटीवायरस।

Penetration (सिस्टम में घुसपैठ):

  • हैकिंग, वायरस अटैक, अनधिकृत एक्सेस।

Access Control (प्रवेश नियंत्रण):

  • यह तय करना कि किस यूज़र को किस फाइल या रिसोर्स तक पहुँच है।

Information Flow Control:

  • संवेदनशील डेटा को अनधिकृत रिसीवर तक जाने से रोकना।

Protection Problems:

  • Unauthorized Access, Data Loss, Data Corruption।

Formal Models of Protection:

  • Access Matrix Model: पंक्तियाँ = यूज़र, कॉलम = रिसोर्स, एंट्री = अनुमति (Read/Write/Execute)।