3. Paging and Segmentation

Paging vs. Segmentation

Paging vs Segmentation (पेजिंग और सेगमेंटेशन)

Paging और Segmentation दोनों ही memory management techniques हैं, लेकिन दोनों का तरीका अलग होता है:

  • Paging → memory को fixed-size pages में divide करता है
  • Segmentation → memory को logical units (जैसे functions, arrays, data) के हिसाब से variable-size segments में divide करता है

👉 Modern systems में अक्सर दोनों techniques को combine करके use किया जाता है


Paging (पेजिंग)

Definition (परिभाषा):
Paging एक technique है जो non-contiguous memory allocation के लिए use होती है। इसमें memory को fixed-size blocks में divide किया जाता है।

  • Secondary memory के blocks → pages
  • Main memory (RAM) के blocks → frames

👉 हर process को equal-size pages में divide किया जाता है और उन्हें अलग-अलग frames में store किया जाता है


Features of Paging (विशेषताएँ):

  • Fixed Size Division → memory fixed-size pages में divide होती है
  • Hardware Defined Page Size → page size hardware decide करता है
  • OS Managed → OS page table maintain करता है
  • No External Fragmentation → external fragmentation खत्म हो जाता है
  • Internal Fragmentation possible → थोड़ा space waste हो सकता है
  • User के लिए invisible → programmer को पता नहीं चलता

Working (कार्य करने का तरीका):

  • Process को equal-size pages में divide किया जाता है
  • Pages को available frames में load किया जाता है
  • Page table के through address mapping होती है

👉 Simple Language (आसान भाषा में):
Paging में process को छोटे-छोटे बराबर size के parts में तोड़कर memory में अलग-अलग जगह रखा जाता है, जिससे memory efficiently use होती है।

Paging

Segmentation 

Segmentation एक non-contiguous memory allocation technique है, जो Paging की तरह ही होती है, लेकिन इसमें memory को fixed-size pages में नहीं बल्कि variable-size segments में divide किया जाता है।

यह segments program के logical units जैसे:

  • functions
  • arrays
  • data structures

के आधार पर बनाए जाते हैं।


🔹 Features of Segmentation (विशेषताएँ)

  • Variable-Size Division
    Memory को अलग-अलग size के segments में divide किया जाता है।
  • User/Programmer-Defined Sizes
    Segment का size programmer या compiler decide करता है।
  • Compiler-Managed
    Segmentation mainly compiler द्वारा manage होती है, लेकिन OS भी support करता है।
  • Supports Sharing and Protection
    Segmentation में data और code को आसानी से share और protect किया जा सकता है।
  • Visible to User
    Paging के opposite, Segmentation user/programmer को दिखाई देती है, जिससे control बेहतर होता है।

🔹 Working of Segmentation (कैसे काम करता है)

  • Segmentation में main memory और secondary memory को equal parts में divide नहीं किया जाता।
  • Memory को different size के segments में divide किया जाता है।
  • इन segments को track करने के लिए एक data structure use होता है जिसे segment table कहते हैं।

🔹 Segment Table में क्या होता है

  • Base → segment का starting address (memory में कहां से शुरू हो रहा है)
  • Limit → segment का size (length)

🔹 Address Translation (Address कैसे बनता है)

जब CPU memory access करता है, तो वह एक logical address generate करता है जिसमें:

  • Segment Number
  • Offset (distance)

शामिल होता है।

👉 फिर MMU (Memory Management Unit):

  • segment number से segment table में entry ढूंढता है
  • check करता है कि offset < limit है या नहीं

✔ अगर सही है →
Physical Address = Base + Offset

❌ अगर offset limit से ज्यादा है →
Segmentation Fault (error) आता है

Segmentation

📊 Paging vs Segmentation 

विशेषता (Feature) Paging Segmentation
Division Unit (विभाजन इकाई) Fixed-size pages Variable-size segments
Managed By (किसके द्वारा नियंत्रित) Operating System (OS) Compiler
Unit Size Determined By (आकार कौन तय करता है) Hardware User / Programmer
Address Structure (पता संरचना) Page number + page offset Segment number + segment offset
Data Structure Used (उपयोग डेटा संरचना) Page table Segment table
Fragmentation Type (खंडन प्रकार) Internal fragmentation External fragmentation
Speed (गति) Faster (तेज़) Slower (धीमी)
Programmer Visibility (दिखाई देना) User को दिखाई नहीं देता (Invisible) User को दिखाई देता है (Visible)
Sharing (साझा करना) Difficult (कठिन) Easy (आसान)
Data Structure Handling (डेटा हैंडलिंग) Inefficient (कम प्रभावी) Efficient (अधिक प्रभावी)
Protection (सुरक्षा) Implement करना मुश्किल आसानी से लागू किया जा सकता है
Size Constraints (आकार सीमा) Page size = Frame size कोई fixed size नहीं
Memory Unit Perspective (मेमोरी दृष्टिकोण) Physical unit Logical unit
System Efficiency (सिस्टम दक्षता) कम efficient ज्यादा efficient