Stack Memory Address
Stack Memory Address वह स्थान (memory location) है जहाँ किसी प्रोग्राम या थ्रेड के local variables, function calls, parameters, और return addresses संग्रहीत (store) किए जाते हैं।
हर Thread का अपना Stack होता है, यानी प्रत्येक थ्रेड के लिए अलग stack memory segment allocate किया जाता है।
साधारण शब्दों में कहें तो:
Stack Memory Address = वह memory area जहाँ किसी thread की temporary जानकारी रखी जाती है।
Stack Memory कैसे काम करती है?
Stack एक LIFO (Last In, First Out) संरचना होती है।
जब कोई function call होता है, तो उसके parameters और local variables stack में push होते हैं।
जब function समाप्त होता है, तो ये data pop होकर हट जाते हैं।
उदाहरण:
void add() {
int a = 10;
int b = 20;
int c = a + b;
}
ऊपर दिए गए कोड में a, b, और c stack memory में रहते हैं जब तक add() function execute हो रहा है।
Function खत्म होने पर यह memory स्वतः खाली हो जाती है।
Stack Memory Address Thread Switching में क्यों ज़रूरी है?
जब CPU Thread Switching करता है, तो हर थ्रेड की अपनी execution स्थिति (execution state) सेव और लोड करनी होती है।
इसमें सबसे महत्वपूर्ण होता है Stack Pointer (SP) और Stack Memory Address।
Thread Switching Process के दौरान:
CPU वर्तमान थ्रेड का Stack Pointer (यानी stack memory का current address) सेव करता है।
फिर अगला थ्रेड लोड करते समय उसका Stack Pointer restore करता है।
इससे हर थ्रेड वहीं से execution शुरू कर सकता है जहाँ उसने छोड़ा था।
Stack Memory Address का उदाहरण
मान लीजिए आपके पास दो threads हैं:
जब CPU Thread A चला रहा है, तब Stack Pointer 0x0001A0 पर point करता है।
जैसे ही Thread B पर स्विच होता है, CPU Stack Pointer को बदलकर 0x0002B0 कर देता है।
इस तरह हर थ्रेड की स्वतंत्र stack memory बनी रहती है।
Stack Memory Address में क्या स्टोर होता है?
Stack Memory आम तौर पर निम्नलिखित जानकारी रखती है:
| क्रमांक | विवरण |
|---|---|
| 1 | Local Variables |
| 2 | Function Parameters |
| 3 | Return Address (next instruction) |
| 4 | Temporary Registers |
| 5 | Function Call Stack Frames |
| 6 | Exception Handling Data |
Stack Memory Address और Registers का संबंध
CPU के अंदर एक विशेष register होता है — Stack Pointer (SP)।
यह हमेशा Stack Memory के Top Address को दर्शाता है।
जब कोई नया data stack में push होता है, तो SP घटता है,
और जब data pop होता है, तो SP बढ़ता है।
उदाहरण:
SP = 0x7FF0 (initial)
Push (data) → SP = 0x7FEC
Pop (data) → SP = 0x7FF0
Stack Memory Address से जुड़ी सावधानियाँ
Stack Overflow:
अगर किसी थ्रेड का stack बहुत गहरा recursive call करे तो stack overflow हो सकता है।Memory Corruption:
गलत pointer operations से stack data corrupt हो सकता है।Limited Size:
हर thread को निश्चित stack size दिया जाता है (जैसे 1MB या 2MB)।Thread Safety:
एक थ्रेड दूसरे का stack memory address access नहीं कर सकता।
निष्कर्ष (Conclusion)
Stack Memory Address किसी thread की अस्थायी (temporary) जानकारी का केंद्र होता है।
यह thread switching के समय अत्यंत महत्वपूर्ण है क्योंकि CPU इसी address के माध्यम से जानता है कि अगला instruction कहाँ से शुरू करना है।
जब Thread Context Switching होता है, तब Stack Pointer और Stack Memory Address दोनों को save और restore किया जाता है — ताकि हर थ्रेड अपने state को सही से जारी रख सके।
इसलिए, Stack Memory Address multithreading और CPU scheduling में एक core भूमिका निभाता है।



