Introduction of Process Synchronization:
Process के द्वारा हम system resource के व्यवस्थित बँटवारे में synchronization को सम्मिलित कर सकते हैं। जब हम system resource के विषय में सोचते हैं तो इसे इस्तेमाल कैसे व्यवस्थित रूप से करे, इसका निर्धारण आवश्यक होता है।
जैसेः हम railway फाटक और road के बीच निर्धारित सामान्य synchronization को समझते हैं। जब भी train आने वाली होती है फाटक अपने आप बंद हो जाता है और सड़क पर चलने वाली गाड़ियों को train के जाने का इंतजार करना होता है और जैसे ही train पार हो जाती है, फाटक खुल जाता है और road पर गाड़ियों का आवा-गमन चालू हो जाता है यह एक दो अलग-अलग प्रकार के transporting services के बीच synchronization का उदाहरण है।
इसी प्रकार एक दिशा के लिए एक ही पटरी लगी है तो प्रत्येक train जो उस दिशा में जा रही है उनके बीच दूरी होना आवश्यक है इसलिए signal system बनाया गया है जो trains को एक दूसरे से टकराने नहीं देता, अर्थात् signal system का synchronized होना आवश्यक है।
Computer system में भी लगे हुए processor और installed operating system के बीच synchronization स्थापित करना आवश्यक होता है। इसे इस प्रकार समझते हैं जैसे processing के दौरान output को print करने की आवश्यकता है, तो processor, operating system को इसके लिए request भेजता है और print हुआ या नहीं इसके reply का wait करता है।
जैसे ही operating system को print हो गया है इसका पता चलता है तो वह processor को reply भेजता है। Operating system और processor के बीच इस प्रकार का synchronization होना आवश्यक है।
What are the types of process synchronization?
1. Background
2. The Critical-section problem
3. Synchronization Hardware
4. Semaphores
5. Critical Regions
6. Monitors
i) Background:
वर्तमान में computer में multitasking operating system का ही उपयोग किया जाता है जिसमें यह सुविधा होती है कि computer अनेक कार्य को एक ही समय में कर सकता है अर्थात् एक से अधिक programs को execute कर सकता है जिसमें कुछ execution को foreground और कुछ को background process मान सकते हैं। इसे इस प्रकार समझते हैं
जैसे: हम कुछ व्यंजन को लेते हैं उसे बनाने के प्रक्रिया को background process कहेंगे जबकि वह आपके सामने होता है और आप उसे खाते हैं तो उसे foreground process कहेंगे, क्योंकि खाने की क्रिया आपके सामने होती है जबकि उसे बनाने की क्रिया आपके आँख के पीछे होती है।
यहाॅ operating system के द्वारा जो भी आपको दिखाया जाता है वह foreground क्रिया है परंतु जो आपको दिख रहा है operating system केवल इतना ही कार्य नहीं करता, आपके पीछे वह अनेक कार्य करता है जिसे background process कहते हैं।
जैसे: किसी file को copy करने के लिए आप operating system को input device के माध्यम से command देते हैं तो वह background में उस file के content को disk में लिखता है परंतु उसे आपको नहीं दिखाता । Command के पूर्ण हो जाने के पश्चात् disk में उस file की copy प्रदर्शित होती है, वह ही आपको दिखता है। इसे निम्न चित्र में समझते हैं:
Background in Process Synchronization os |
ii) The critical-section problem
Computer में अनेक प्रोसेस के बीच पहले process होने की प्रतिस्पर्धा चलते रहता है। इस process की समस्या यह होती है कि जब कोई एक process critical-section में execution के लिए जाता है तो कोई अन्य process उसमें प्रवेश नहीं कर सकता, अर्थात् यह किसी अन्य process की entry को allow नहीं करता। इसे निम्न चित्र में समझते हैं:
The Critical-Section Problem in Operating system |
प्रत्येक process में एक code segment होता है जिसे critical-section के नाम से जानते हैं। जिसके द्वारा shared data तक पहुँचा जा सकता है।
Entry Section:
इसमें code को critical-section में entry के लिए आग्रह किया जाता है।
Critical Section:
इसमें code जिसे एक समय में केवल एक को ही process करना है वह execute होना आरंभ होता है।
Remainder Section:
जब critical-section समाप्त हो जाता है तो बचे हुए code को execute करने की प्रक्रिया आरंभ होती है।
Exit Section:
इसमें critical-section समाप्त हो जाता है और स्थान को व अन्य code के entry के लिए खाली कर दिया जाता है।
iii) Synchronization Hardware:
विशेष परिस्थितियों में अनेक system के द्वारा hardware support उपलब्ध कराया जाता है। System के द्वारा critical- section code के लिए hardware support उपलब्ध कराने से समस्या का समाधान सरलता से प्राप्त होता है और इससे वर्तमान में चल रहे code बिना problem के परस्पर तरीके से चलते रहते हैं। इसमें problem को uniprocess के द्वारा निष्क्रिय किया जाता है
आधुनिक system में एक विशेष प्रकार के atomic hardware निर्देश देने होते हैं जिसे निम्न प्रकार से लिखा जाता है:
Atomic=non-interruption
यहाँ memory की जाँच की जाती है और उसे मान दिया जाता है या उनके मान को आपस में बदल दिया जाता है। जैसेः
function testandset(var target: boolean):boolean;begin
testandset-target,
target=true;
end
उपरोक्त example में शब्द के तत्व को अपने से ही बदलने या निर्धारण करने का कार्य किया गया है।
(iv) Semaphores
यह एक software system है दूसरे शब्दो में कहें तो semaphores एक synchronized tool है जिसमें busy और waiting की आवश्यकता नहीं होती, जो लगभग उसी प्रकार कार्य करता है जैसे railway system में train की स्थितियों का निर्धारण किया जाता है।
जैसे एक दिशा के लिए एक ही पटरी लगी है तो प्रत्येक train जो उस दिशा से जा रही है ऐसे में एक ही समय में एक train पटरी से गुजर सकती है। Semaphores system में भी इसी प्रकार से कार्य होता है इसमें भी एक process एक समय में execute होते हैं।
Semaphores में 'S' एक पूर्णांक परिवर्तनांक होता है। जिसमें बदलाव लाकर दो operation, wait() और signal() निर्धारित कर सकते हैं। जिसे P() और V() के नाम से जानते हैं।
(v) Critical Regions:
इसका कार्य उच्च-स्तरीक तुल्यकालन (high level synchronization) का निर्माण करना होता है। Shared variable v1 और उनका प्रकार T को निम्न प्रकार declare करते हैं:
var v1: shared T;
यहाॅ variable v1 को केवल statement के अन्तर्गत ही access किया जा सकता है:
region v1 when B do Statement
यहाँ B का प्रयोग boolean expression के लिए किया गया है और जब Statement का execution होता है तब किसी अन्य process के द्वारा vl variable का उपयोग नहीं किया जा सकता।
Redions के द्वारा कुछ इसी प्रकार के shared परिवर्तनांक (variable) का जिक्र किया जाता है। जब process के द्वारा regions statments को execute करने की कोशिश की जाती है तब boolean varialbe B के मान की जाँच की जाती है। यदि मान true होता है तब statement execute होता है और यदि false होता है तब execute नहीं होता।
vi) Monitors:
Monitor एक ऐसी तकनीक है जिसमें abstract data प्रकार के बीच के समीपवर्ती processing को सुरक्षित तरीके से share कर सकते हैं इस प्रकार के processing के निर्माण का कार्य high-level synchronization के द्वारा किया जाता है। इसे निम्न प्रकार declare करते हैं:
type monitor_name=monitor{
//shared variable declarations
procedure body P1 (...)
procedure body P2 (...)
{...}
procedure body Pn(...)
{
//default
initialization code
}
उपरोक्त उदाहरण में परिभाषित किये गये shared variable एक के बाद एक process होते जाते हैं और अंत में initialization code process होता है। इसे निम्न चित्र में समझते हैं:
Monitors in Process Synchronization |
- जब monitor के अन्तर्गत process wait state में रखा जाता है तो Condition variable को निम्न प्रकार से परिभाषित किया जाता है: condition x,y,
- Conditional variable में केवल दो operator wait एवं signal का उपयोग किया जाता है। Wait को निम्न प्रकार declare किया जाता है:
- x.wait();
- इसी प्रकार signal को निम्न प्रकार परिभाषित करते है:
- x.signal();
- Signal operation का प्रभाव तब तक नहीं पड़ेगा जब तक कोई एक suspend process नहीं होगा। यदि कोई एक प्रोसेस भी suspended है तो यह उस process को आगे बढ़ायेगा ।
Conclusions
इस chapter में हमने पढ़ा है की प्रोसेस सिंक्रोनाइजेशन क्या होता है ? और इसके कितने प्रकार होते हैं ? अगर आपको यह आर्टिकल पसंद आया होगा तो प्लीज हमारे ब्लॉगर साईट की न्यूज़ लेटर को सब्सक्राइब करना न भूलें
0 Comments