अनुशंसित, 2019

संपादक की पसंद

कांटा और (vfork) के बीच का अंतर

दोनों कांटा () और vfork () सिस्टम कॉल हैं जो एक नई प्रक्रिया बनाता है जो उस प्रक्रिया के समान है जो कांटा () या vfork () को लागू करता है। कांटा () का उपयोग करके माता-पिता और बच्चे की प्रक्रिया को एक साथ निष्पादित करने की अनुमति मिलती है। दूसरा तरीका, vfork () माता-पिता की प्रक्रिया के निष्पादन को निलंबित करता है जब तक कि बच्चा प्रक्रिया अपने निष्पादन को पूरा नहीं करता है। कांटा () और vfork () सिस्टम कॉल के बीच प्राथमिक अंतर यह है कि कांटा का उपयोग करके बनाई गई बच्चे की प्रक्रिया में मूल पते की प्रक्रिया के रूप में अलग पते की जगह होती है। दूसरी ओर, vfork का उपयोग करके बनाई गई बाल प्रक्रिया को अपनी मूल प्रक्रिया का पता स्थान साझा करना होगा।

हमें नीचे दिखाए गए तुलना चार्ट की मदद से कांटा () और vfork () के बीच कुछ अंतर खोजने दें।

तुलना चार्ट

तुलना के लिए आधारकांटा()vfork ()
बुनियादीचाइल्ड प्रोसेस और पैरेंट प्रोसेस में अलग-अलग एड्रेस स्पेस होते हैं।चाइल्ड प्रोसेस और पैरेंट प्रोसेस एक ही एड्रेस स्पेस शेयर करते हैं।
क्रियान्वयनमाता-पिता और बच्चे की प्रक्रिया एक साथ निष्पादित होती है।माता-पिता की प्रक्रिया तब तक निलंबित रहती है जब तक कि बच्चा प्रक्रिया अपने निष्पादन को पूरा नहीं कर लेता।
परिवर्तनयदि बच्चा पता स्थान में किसी भी पृष्ठ को बदल देता है, तो यह मूल प्रक्रिया के लिए अदृश्य है क्योंकि पता स्थान अलग-अलग है।यदि चाइल्ड प्रोसेस एड्रेस स्पेस में किसी पेज को बदल देता है, तो यह पेरेंट प्रोसेस को दिखाई देता है क्योंकि वे उसी एड्रेस स्पेस को शेयर करते हैं।
लिखने पर नकलकांटा () एक विकल्प के रूप में कॉपी-ऑन-राइट का उपयोग करता है जहां माता-पिता और बच्चे एक ही पृष्ठ साझा करते हैं जब तक कि उनमें से कोई भी साझा पृष्ठ को संशोधित नहीं करता है।vfork () कॉपी-ऑन-राइट का उपयोग नहीं करता है।

कांटा की परिभाषा ()

कांटा () एक नई प्रक्रिया बनाने के लिए एक सिस्टम कॉल उपयोग है। कांटा () कॉल द्वारा बनाई गई नई प्रक्रिया उस प्रक्रिया का बच्चा प्रक्रिया है, जिसने कांटा () सिस्टम कॉल को आमंत्रित किया है। बाल प्रक्रिया का कोड इसकी मूल प्रक्रिया के कोड के समान है। बाल प्रक्रिया के निर्माण के बाद, दोनों प्रक्रिया अर्थात माता-पिता और बच्चे की प्रक्रिया कांटा () के बाद अगले कथन से अपना निष्पादन शुरू करते हैं और दोनों प्रक्रियाएं एक साथ निष्पादित होती हैं

मूल प्रक्रिया और बच्चे की प्रक्रिया में अलग पते की जगह होती है । इसलिए, जब कोई भी प्रक्रिया कोड में किसी भी कथन या चर को संशोधित करती है। यह अन्य प्रक्रिया कोड में परिलक्षित नहीं होगा। मान लें कि यदि बच्चा प्रक्रिया कोड को संशोधित करता है तो यह माता-पिता की प्रक्रिया को प्रभावित नहीं करेगा।

उनके निर्माण के तुरंत बाद कुछ बच्चे प्रक्रिया को निष्पादन () कहते हैं । निष्पादन () सिस्टम कॉल अपने पैरामीटर में निर्दिष्ट कार्यक्रम के साथ प्रक्रिया को बदलता है । फिर बाल प्रक्रिया का अलग पता स्थान किसी काम का नहीं है। यहाँ एक विकल्प कॉपी-ऑन-राइट है।

कॉपी-ऑन-राइट माता - पिता और बच्चे को एक ही पते की जगह साझा करने की प्रक्रिया करते हैं। यदि पता प्रक्रियाओं में पृष्ठों पर लिखी गई कोई भी प्रक्रिया पता स्थान की प्रतिलिपि दोनों प्रक्रिया को स्वतंत्र रूप से काम करने के लिए बनाई गई है।

Vfork की परिभाषा ()

फोर्क () का संशोधित संस्करण vfork () है। Vfork () सिस्टम कॉल का उपयोग नई प्रक्रिया बनाने के लिए भी किया जाता है। कांटा () के समान, यहां भी बनाई गई नई प्रक्रिया बाल प्रक्रिया है, उस प्रक्रिया का, जिसने vfork () को लागू किया था। चाइल्ड प्रोसेस कोड पैरेंट प्रोसेस कोड के समान है। यहां, चाइल्ड प्रोसेस पेरेंट प्रक्रिया के निष्पादन को तब तक के लिए स्थगित कर देता है जब तक कि वह अपना निष्पादन पूरा नहीं कर लेता है क्योंकि दोनों प्रक्रिया उपयोग करने के लिए समान पता स्थान साझा करते हैं।

जैसा कि बच्चे और माता-पिता की प्रक्रिया समान पता स्थान साझा करती है । यदि कोई भी प्रक्रिया कोड को संशोधित करती है, तो यह उसी पृष्ठ को साझा करने वाली अन्य प्रक्रिया को दिखाई देती है। मान लें कि यदि मूल प्रक्रिया कोड को बदल देती है; यह बाल प्रक्रिया के कोड में प्रतिबिंबित होगा।

जैसा कि vfork () का उपयोग करके बच्चे और माता-पिता की प्रक्रियाओं के लिए अलग-अलग पता स्थान नहीं बनाए जाते हैं। इसलिए, इसे लागू किया जाना चाहिए जहां बाल प्रक्रिया इसके निर्माण के तुरंत बाद निष्पादन () को बुलाती है। तो, पता स्थान का कोई अपव्यय नहीं होगा, और यह एक प्रक्रिया बनाने का कुशल तरीका है। vfork कॉपी-ऑन-राइट का उपयोग नहीं करता है।

कांटा और (vfork) के बीच मुख्य अंतर

  1. कांटा और vfork के बीच प्राथमिक अंतर यह है कि कांटा द्वारा बनाई गई बच्चे की प्रक्रिया में मूल प्रक्रिया से अलग मेमोरी स्पेस है। हालाँकि, vfork system call द्वारा बनाई गई चाइल्ड प्रोसेस उसके पेरेंट प्रोसेस का एक ही एड्रेस स्पेस शेयर करती है।
  2. पैरंट प्रक्रिया के साथ - साथ कांटा निष्पादित का उपयोग करके बनाई गई बाल प्रक्रिया। दूसरी ओर, vfork का उपयोग करके बनाई गई बाल प्रक्रिया माता-पिता की प्रक्रिया के निष्पादन को निलंबित कर देती है जब तक कि इसका निष्पादन पूरा नहीं हो जाता।
  3. चूंकि माता-पिता और बच्चे की प्रक्रिया का मेमोरी स्पेस अलग-अलग होता है, जो किसी भी प्रक्रिया द्वारा किया जाता है, अन्य पेजों को प्रभावित नहीं करता। हालाँकि, माता-पिता और बच्चे की प्रक्रिया समान स्मृति पते को साझा करती है, किसी भी प्रक्रिया द्वारा किया गया संशोधन पता स्थान में परिलक्षित होता है।
  4. सिस्टम कॉल फोर्क () एक विकल्प के रूप में कॉपी-ऑन-राइट का उपयोग करता है, जो बच्चे और माता-पिता की प्रक्रिया को एक ही पते की जगह साझा करते हैं जब तक कि उनमें से कोई भी पृष्ठों को संशोधित नहीं करता है। दूसरी ओर, vfork कॉपी-ऑन-राइट का उपयोग नहीं करता है।

निष्कर्ष:

Vfork () सिस्टम कॉल को तब लागू किया जाना चाहिए जब कांटा () का उपयोग करके इसके निर्माण के तुरंत बाद चाइल्ड प्रोसेस कॉल एग्जीक्यूट हो। चूंकि बच्चे और अभिभावक प्रक्रिया के लिए अलग-अलग पता जगह का कोई फायदा नहीं होगा।

Top