2012-06-15 8 views
8

<semaphore.h> और <sys/sem.h> में शामिल कार्यों के बीच अंतर क्या अंतर है? ऐसी स्थिति मौजूद है जहां हेडर या अन्य का उपयोग करना बेहतर होता है?<semaphore.h> और <sys/sem.h>

उत्तर

14

<sys/sem.h> XSI (मूल रूप से यूनिक्स सिस्टम V) सेमाफोर के लिए इंटरफेस प्रदान करता है। ये मूल पीओएसईक्स मानक का हिस्सा नहीं हैं (वे एक्सएसआई विकल्प में हैं जो पारंपरिक यूनिक्स संगतता के लिए काफी हद तक हैं) और जब उन्हें अश्लील/बहिष्कृत नहीं माना जाता है, तब भी कई प्रोग्रामर उन्हें बहिष्कृत करते हैं, और पीओएसईक्स सलाह देते हैं:

आवेदन उपयोग

पॉज़िक्स रीयलटाइम एक्सटेंशन इंटरप्रोसेस संचार के लिए वैकल्पिक इंटरफेस को परिभाषित करता है। आवेदन करने वाले डेवलपर के उपयोग करने के लिए भारतीय दंड संहिता अपने आवेदन डिजाइन चाहिए ताकि भारतीय दंड संहिता दिनचर्या XSI Interprocess संचार में वर्णित का उपयोग कर मॉड्यूल आसानी से वैकल्पिक इंटरफेस का उपयोग करने के लिए संशोधित किया जा सकता है की जरूरत है।

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

<semaphore.h> पॉज़िक्स सेमफोरस को परिभाषित करता है, जो इस तरह से डिज़ाइन किए गए हैं कि उन्हें पूरी तरह से उपयोगकर्ता स्पेस में लागू किया जा सकता है, जिसमें संकुचित मामले को छोड़कर प्रक्रिया को कर्नेल में सोने के लिए बुलाया जाएगा। उनका प्रदर्शन निकटतम होना चाहिए (यानी खुद को रोल करने के लिए लगभग असंभव होना चाहिए) लेकिन वे एक्सएसआई सेमफोर के रूप में काफी विशिष्ट नहीं हैं। POSIX संकेतबाहु भी आप आप एक प्रक्रिया-स्थानीय सेमाफोर चाहते हैं या नहीं के विकल्प प्रदान करते हैं (एक बहु थ्रेडेड वातावरण में उपयोग के लिए, या भी, कुछ स्थितियों में, एक एकल पिरोया कार्यक्रम में एक संकेत हैंडलर) या एक प्रक्रिया से साझा की गई एक, और बाद के मामले में, आप भी पसंद प्रणाली नाम से एक साझा नाम स्थान में आवंटित संभाल, या साझा स्मृति अपने आप को प्राप्त करने और साझा स्मृति में यह प्रारंभ करने में बताने के लिए है कि क्या है।

4

वे एक दूसरे लेकिन दो अलग अलग कार्यान्वयन के लिए एक ही/प्रतिस्थापन नहीं कर रहे हैं और कार्यों का अलग सेट प्रदान करते हैं। semaphore.h पॉज़िक्स कार्यान्वयन है और sys/sem.h sysV का कार्यान्वयन है। POSIX considered हल्का होने और व्यापक रूप से उपयोग किया जाता है।

संबंधित मुद्दे