वास्तव में POSIX क्या है?


139

मुझे अक्सर और हर जगह उल्लिखित POSIX दिखाई देता है, और मैंने इसे आधारभूत UNIX मानक माना था .. जब तक कि मैंने विकिपीडिया पृष्ठ पर निम्नलिखित अंश को नहीं देखा: द ओपेन ग्रुप

ओपन ग्रुप UNIX ट्रेडमार्क के लिए प्रमाणित निकाय के रूप में सबसे प्रसिद्ध है, और इसके एकल UNIX विनिर्देश तकनीकी मानक का प्रकाशन है , जो POSIX मानकों का विस्तार करता है और एक UNIX प्रणाली की आधिकारिक परिभाषा है

यदि UNIX प्रणाली की आधिकारिक परिभाषा POSIX का विस्तार है, तो वास्तव में POSIX क्या है? ,,, यह निश्चित रूप से UNIX दुनिया का एक टचस्टोन लगता है, लेकिन मुझे नहीं पता कि यह समग्र चित्र में कैसे फिट बैठता है।


2
SUS UNIX की आधिकारिक परिभाषा है क्योंकि ओपन ग्रुप, IEEE का नहीं, UNIX ट्रेडमार्क का मालिक है। नीचे मेरा जवाब देखें।
पेंग्विन 359


जवाबों:


125

POSIX पहली बार एकल UNIX विशिष्टता से 1988 में एक मानक था। यह सभी विभिन्न यूनिक्स कांटे और यूनिक्स जैसे सिस्टम को एकीकृत करने के प्रयासों में से एक था। POSIX एक IEEE मानक है, लेकिन IEEE के पास UNIX® ट्रेडमार्क नहीं है, हालांकि यह मानक UNIX® नहीं है, हालांकि यह उस समय मौजूदा UNIX API पर आधारित है। पहले मानक POSIX.1 को औपचारिक रूप से IEEE std 1003.1-1988 के रूप में जाना जाता है। [ 1 ] IEEE ने मानक की एक प्रति प्राप्त करने के लिए पर्याप्त शुल्क लिया।

ओपन ग्रुप ने 1997 में POSIX मानक के IEEE के काम के आधार पर सिंगल यूनिक्स स्पेसिफिकेशन (SUSv2) जारी किया। SUSv3 को 2001 में IEEE और द ओपन ग्रुप के बीच एक संयुक्त कार्य समूह से जारी किया गया था जिसे ऑस्टिन समूह के रूप में जाना जाता है। SUSv3 को POSIX: 2001 [ 2 ] के रूप में भी जाना जाता है । अब POSIX: 2004 और POSIX: 2008 भी है जो SUSv4 का मूल है। UNIX® क्या है के लिए के रूप में, UNIX® जो भी वर्तमान पंजीकृत ट्रेडमार्क धारक है वह कहता है। 1994 से, वह द ओपन ग्रुप है।

नोवेल ने AT & T / USL से UNIX® सिस्टम व्यवसाय का अधिग्रहण किया, जहाँ UNIX® का जन्म हुआ। 1994 में, उन्होंने X / Open [ 3 ] को UNIX® ट्रेडमार्क के अधिकार को बेच दिया जिसे अब ओपन ग्रुप के नाम से जाना जाता है। उन्होंने तब UNIX® स्रोत कोड को SCO को UNIXWARE® के रूप में बेच दिया। [ 3 ] UNIX® ने स्वयं AT & T के लाइसेंसिंग मॉडल के कारण आंशिक रूप से कई बार [ ] [ ] फोर्क किया है । क्रय UNIX® ने आपको इसे बनाने के लिए ऑपरेटिंग सिस्टम का पूरा स्रोत और पूर्ण टूल-चेन दिया। स्रोत में संशोधन किसी भी व्यक्ति द्वारा वितरित और उपयोग किया जा सकता है, जो एटी एंड टी से UNIX® के लिए लाइसेंस प्राप्त करता है। लाइसेंस शुल्क हजारों में था।

बीएसडी बर्कले में एक परियोजना थी जिसने UNIX® ऑपरेटिंग सिस्टम में कई संवर्द्धन जोड़े। बीएसडी कोड एटी एंड टी के स्रोत की तुलना में बहुत अधिक उदार लाइसेंस के तहत जारी किया गया था और जीएनयू प्रोजेक्ट और लिनक्स उपयोग के विपरीत, जीपीएल के विपरीत लाइसेंस शुल्क या स्रोत के साथ वितरित करने की आवश्यकता भी नहीं थी। इससे बीएसडी कोड का एक अच्छा हिस्सा विभिन्न वाणिज्यिक यूनिक्स कांटे के साथ शामिल हो गया है। लगभग 4.3BSD तक, उन्होंने मूल AT & T UNIX® स्रोत कोड की किसी भी आवश्यकता को लगभग बदल दिया था। FreeBSD / NetBSD / OpenBSD सभी 4.3BSD के कांटे हैं जो एक पूर्ण ऑपरेटिंग सिस्टम हैं और मूल AT & T स्रोत कोड में से कोई भी नहीं है। न ही उनके पास UNIX® ट्रेडमार्क का अधिकार है, लेकिन उनके अधिकांश कोड का उपयोग वाणिज्यिक UNIX ऑपरेटिंग सिस्टम द्वारा किया जाता है।

लिनक्स 1991 में विकसित किया गया था, लेकिन इसे बीएसडी के विपरीत खरोंच से विकसित किया गया था और मौजूदा जीएनयू प्रोजेक्ट का उपयोग करता है जो कि यूनिक्स उपयोगकर्ता के अधिकांश स्थान का एक साफ-सुथरा कार्यान्वयन है। यह संगतता के लिए POSIX का बहुत अधिक उपयोग करता है और डिजाइन में UNIX की तरह है, लेकिन इसमें AT & T या UNIX® का निकट संबंध नहीं है जो BSD के पास है।


1
एक महान जवाब .. सभी (3) उत्तर अच्छे रहे हैं, लेकिन यह एक बेहद जानकारीपूर्ण था (विशेष रूप से अन्य 2 द्वारा छोड़े जाने के बाद); बस मुझे क्या चाहिए ... और एसयूएस के बारे में टिप्पणी (प्रश्न निकाय के नीचे) के लिए धन्यवाद, मैं इसे अब अच्छी तरह से समझता हूं, धन्यवाद ... (और मैंने नहीं देखा कि यह केवल एक पैराग्राफ था ... यह भी था दिलचस्प :)
पीटर।

2
@ मिकेल को उम्मीद है कि मेरा संपादन थोड़ा मदद करता है
पेंगुइन

1
यह एक शानदार जवाब है @ p पेंगुइनin359!
बोहेज

क्या किसी को इस बात का अच्छा अंदाजा है कि X किस लिए खड़ा है? यदि यह यूनिक्स से एक संबंध इंगित करने के लिए सिर्फ एक प्रत्यय है, तो क्या यह कम मामला नहीं होना चाहिए?
डब्ल्यू पर एलेक्स डब्ल्यू

अति उत्कृष्ट। धन्यवाद। मैं उस इतिहास में बहुत कुछ करने के लिए कंप्यूटिंग में रहा हूं, लेकिन "गपशप" के विवरण कि कैसे चीजें हुईं कुछ ऐसा नहीं था जिस पर मैंने ध्यान केंद्रित किया। पगडंडी देखकर अच्छा लगा।
केन इनग्राम

55

सबसे महत्वपूर्ण चीजें POSIX 7 परिभाषित करती हैं

  1. C एपीआई

    एएनएसआई सी का विस्तार बहुत कुछ इस तरह से है:

    • अधिक फ़ाइल संचालन: mkdir, dirname, symlink, readlink, link(hardlinks), poll(), stat, sync,nftw()
    • प्रक्रिया और धागे: fork, execl, wait, pipe, semaphors sem_*, साझा स्मृति ( shm_*), kill, समय निर्धारण मानकों ( nice, sched_*), sleep, mkfifo,setpgid()
    • नेटवर्किंग: socket()
    • स्मृति प्रबंधन: mmap, mlock, mprotect, madvise,brk()
    • उपयोगिताओं: नियमित अभिव्यक्ति ( reg*)

    वे एपीआई भी अंतर्निहित प्रणाली अवधारणाओं को निर्धारित करते हैं जिन पर वे निर्भर करते हैं, उदाहरण के forkलिए एक प्रक्रिया की अवधारणा की आवश्यकता होती है।

    कई Linux सिस्टम कॉल एक विशिष्ट POSIX C API फ़ंक्शन को कार्यान्वित करने और Linux के अनुरूप बनाने के लिए sys_writeमौजूद हैं sys_read, उदाहरण के लिए , ... उनमें से कई syscalls में हालांकि Linux- विशिष्ट एक्सटेंशन भी हैं।

    प्रमुख लिनक्स डेस्कटॉप कार्यान्वयन: glibc, जो कई मामलों में सिस्टम कॉल के लिए एक उथला आवरण प्रदान करता है।

  2. सीएलआई उपयोगिताओं

    उदाहरण के लिए: cd, ls, echo, ...

    कई उपयोगिताओं एक संबंधित सी एपीआई समारोह के लिए प्रत्यक्ष खोल सामने के छोर हैं, उदाहरण के लिए mkdir

    मेजर लिनक्स डेस्कटॉप कार्यान्वयन: छोटे लोगों के लिए GNU coreutils, बड़े लोगों के लिए अलग जीएनयू परियोजनाओं: sed, grep, awk, ... कुछ CLI उपयोगिताओं बैश द्वारा कार्यान्वित किया जाता बनाया-इन के रूप में

  3. शैल भाषा

    उदाहरण के लिए, a=b; echo "$a"

    प्रमुख लिनक्स डेस्कटॉप कार्यान्वयन: जीएनयू बैश

  4. पर्यावरण चर

    जैसे: HOME, PATH

    PATH खोज शब्दार्थ निर्दिष्ट हैं , जिसमें स्लैश PATHखोज को कैसे रोकते हैं

  5. कार्यक्रम से बाहर निकलने की स्थिति

    एएनएसआई सी कहती है 0या EXIT_SUCCESSसफलता के लिए, EXIT_FAILUREविफलता के लिए, और बाकी क्रियान्वयन को परिभाषित करता है।

    POSIX जोड़ता है:

  6. नियमित अभिव्यक्ति

    दो प्रकार हैं: BRE (बेसिक) और ERE (एक्सटेंडेड)। बुनियादी को हटा दिया गया है और केवल एपीआई को तोड़ने के लिए नहीं रखा गया है।

    जिन्हें C API फ़ंक्शंस द्वारा कार्यान्वित किया जाता है, और CLI उपयोगिताओं में उपयोग किया जाता है, उदाहरण के लिए grep, डिफ़ॉल्ट रूप से BREE और ERE के साथ स्वीकार करता है -E

    उदाहरण के लिए: echo 'a.1' | grep -E 'a.[[:digit:]]'

    प्रमुख लिनक्स कार्यान्वयन: glibc regex.h के तहत कार्यों को कार्यान्वित करता है जो grepकि बैकएंड के रूप में उपयोग कर सकते हैं।

  7. निर्देशिका सीवन

    उदाहरण के लिए: /dev/null,/tmp

    लिनक्स FHS बहुत POSIX का विस्तार करता है।

  8. फ़ाइल नाम

    • / पथ विभाजक है
    • NUL उपयोग नहीं किया जा सकता
    • .है cwd, ..माता-पिता
    • पोर्टेबल फ़ाइल नाम
      • पूर्ण पथ के लिए अधिकतम 14 वर्णों और 256 पर उपयोग करें
      • केवल शामिल हो सकते हैं: a-zA-Z0-9._-

    इसे भी देखें: https://stackoverflow.com/questions/18550253/what-is-posix-compliance-for-filesystem

  9. कमांड लाइन उपयोगिता एपीआई सम्मेलनों

    अनिवार्य नहीं, POSIX द्वारा उपयोग किया जाता है, लेकिन लगभग कहीं नहीं, विशेष रूप से GNU में नहीं। लेकिन यह सच है, यह बहुत अधिक प्रतिबंधात्मक है, उदाहरण के लिए एकल अक्षर के झंडे (केवल -a), कोई डबल हाइफ़न लंबे संस्करण (जैसे --all) नहीं।

    कुछ व्यापक रूप से इस्तेमाल किए जाने वाले सम्मेलन:

    • - जहां फ़ाइल अपेक्षित है, स्टड का अर्थ है
    • --झंडे को समाप्त करता है, जैसे ls -- -lकि एक निर्देशिका नाम की सूची-l

    इसे भी देखें: https://stackoverflow.com/questions/8957222/are-there-standards-for-linux-command-line-switches-and-arguments

  10. "POSIX ACLs" (एक्सेस कंट्रोल लिस्ट), जैसे कि बैकएंड के लिए उपयोग किया जाता है setfacl

    यह वापस ले लिया गया है, लेकिन यह कई OSes में लागू किया गया था, सहित के साथ लिनक्स मेंsetxattr

POSIX के अनुरूप कौन है?

कई सिस्टम POSIX को बारीकी से फॉलो करते हैं, लेकिन कुछ वास्तव में ओपन ग्रुप द्वारा प्रमाणित होते हैं जो मानक बनाए रखता है। उल्लेखनीय प्रमाणित लोगों में शामिल हैं:

  • OS X (Apple) X 10 और UNIX दोनों के लिए है। पहला Apple POSIX सिस्टम था, जिसे 2001 में रिलीज़ किया गया था। यह भी देखें: https://stackoverflow.com/questions/5785516/is-osx-a-posix-os
  • AIX (IBM)
  • HP-UX (HP)
  • सोलारिस (ओरेकल)

अधिकांश लिनक्स डिस्ट्रोस बहुत आज्ञाकारी हैं, लेकिन प्रमाणित नहीं हैं क्योंकि वे अनुपालन जांच का भुगतान नहीं करना चाहते हैं। इन्सपुर के K-UX और Huawei के EulerOS दो प्रमाणित उदाहरण हैं।

प्रमाणित सिस्टम की आधिकारिक सूची यहां मिलेगी: https://www.opengroup.org/openbrand/register/ और विकी पेज पर भी ।

खिड़कियाँ

विंडोज ने अपने कुछ पेशेवर वितरणों पर POSIX को लागू किया।

चूंकि यह एक वैकल्पिक सुविधा थी, इसलिए प्रोग्रामर अधिकांश अंतिम उपयोगकर्ता अनुप्रयोगों के लिए इस पर भरोसा नहीं कर सकते थे।

विंडोज 8 में समर्थन को हटा दिया गया था:

2016 में एक नया आधिकारिक लिनक्स जैसा एपीआई "लिनक्स के लिए विंडोज सबसिस्टम" घोषित किया गया था। इसमें Linux सिस्टम कॉल, ELF रनिंग, /procफाइल सिस्टम के कुछ हिस्सों , Bash, GCC, (TODO संभावना glibc?), apt-getऔर अधिक शामिल हैं: https://channel9.msdn.com/Events/Build/2016/P488 मेरा मानना ​​है कि यह विंडोज़ को बहुत चलाने की अनुमति देगा, यदि सभी नहीं, तो POSIX का। हालांकि, यह अंतिम उपयोगकर्ताओं के बजाय डेवलपर्स / तैनाती पर केंद्रित है। विशेष रूप से, विंडोज GUI तक पहुंच की अनुमति देने की कोई योजना नहीं थी।

आधिकारिक Microsoft POSIX संगतता का ऐतिहासिक अवलोकन: http://brianreiter.org/2010/08/24/the-sad-history-of-the-microsoft-posix-subsystem/

Cygwin विंडोज के लिए एक अच्छी तरह से ज्ञात जीपीएल थर्ड-पार्टी प्रोजेक्ट है, जो विंडोज के लिए "पर्याप्त POSIX API कार्यक्षमता प्रदान करता है", लेकिन इसके लिए आवश्यक है कि यदि आप इसे विंडोज पर चलाना चाहते हैं तो अपने स्रोत से "अपने एप्लिकेशन को फिर से बनाएं"। MSYS2 एक संबंधित परियोजना है जो Cygwin के शीर्ष पर अधिक कार्यक्षमता जोड़ने के लिए लगता है।

एंड्रॉयड

Android की अपनी C लाइब्रेरी (Bionic) है, जो POSIX को Android O के रूप में पूरी तरह से समर्थन नहीं करती है: https://stackoverflow.com/questions/27604455/is-android-posix-compatible

बोनस स्तर

लिनक्स स्टैंडर्ड बेस आगे POSIX फैली हुई है।

गैर-फ़्रेम इंडेक्स का उपयोग करें, वे बहुत अधिक पठनीय और खोज योग्य हैं: http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html

Grepping के लिए HTML पृष्ठों का पूर्ण ज़िपित संस्करण प्राप्त करें: https://stackoverflow.com/questions/453993/is-there-a-listing-of-the-posix-ap-functions/45832339#45832939


सवाल POSIX और SUS के बारे में था, लेकिन इस जवाब में SUS का जिक्र नहीं है ...
किडर्बला

1
@ किडर्बला अपने स्वयं के उत्तर को जोड़ने और कुछ प्रतिनिधि पाने के लिए एक महान अवसर :-) (या इसे खान में संपादित करें और मुझे दे दे
हीहे


@ धन्यवाद, मैंने उत्तर में जोड़ दिया है।
Ciro Santilli 新疆 改造 iro i 事件 '21

16

POSIX पोर्टेबल ऑपरेटिंग सिस्टम मानक है। यह कुछ उपयोगिताओं, एपीआई और सेवाओं के बारे में बताता है कि एक अनुपालन ऑपरेटिंग सिस्टम को सॉफ़्टवेयर के लिए प्रदान करना चाहिए (उदाहरण के लिए सॉकेट, फ़ाइल I / O और थ्रेडिंग) साथ ही ये कैसे एक कार्यक्रम से बुलाया जाना चाहिए।

यह विचार है कि एक POSIX- शिकायत ओएस के लिए लिखा गया प्रोग्राम गैर-POSIX- अनुपालन ओएस के बीच पोर्ट करने की तुलना में किसी अन्य POSIX- अनुरूप ओएस के लिए पोर्ट करना आसान होगा। यही कारण है कि एक एप्लिकेशन को पोर्ट करना बहुत आसान है, कहते हैं, फ्रीबीएसडी को लिनक्स से इसे फ्रीबीएसडी से विंडोज पर पोर्ट करना है (हालांकि विंडोज ओस्टेन्स संभवतः POSIX के सबसेट का समर्थन करता है।)


14

POSIX UNIX का एक उपसमूह है जिसका उद्देश्य अन्य ऑपरेटिंग सिस्टम के लिए विभिन्न यूनिक्स जैसे वातावरण को कवर करना है; इसमें मूल रूप से VMS के लिए Eunice, Windows NT का POSIX व्यक्तित्व और अपोलो डोमेन / OS जैसे वातावरण शामिल थे। आप इसे ऑपरेटिंग सिस्टम सेवाओं के सबसेट के लिए एक मानक पोर्टेबिलिटी एपीआई के रूप में सोच सकते हैं जिसका व्यवहार यूनिक्स और गैर-यूनिक्स के बीच आम है। अधिक जानकारी के लिए http://standards.ieee.org/develop/wg/POSIX.html देखें ।


मैंने इसके बारे में अभी और पढ़ा है, और यह निश्चित रूप से लगता है कि Uinx चिकन था और POSIX अंडा था .. लेकिन मुझे आश्चर्य है कि अगर UNIX अभी भी रोस्ट पर शासन करता है .. यानी कि POSIX का अपना जीवन है, और UNIX को POSIX का पालन करना चाहिए? ... btw। ऐसा लगता है कि नाम POSIX रिचर्ड Stallman द्वारा coinded था ....
पीटर।

@ fred.bear: संक्षिप्त उत्तर: UNIX (व्यापार चिह्न) को POSIX के अनुरूप होना चाहिए; PixIX के लिए यूनिक्स (उत्पाद) मुख्य आधार था; यूनियनों (OSes के परिवार) ज्यादातर अनुरूप हैं लेकिन आम में अधिक है। देखें Is लिनक्स यूनिक्स? और मैक ओएस एक्स, यूनिक्स है? संबंधित चर्चा के लिए।
गाइल्स

@ fred-bear कई लोगों का तर्क है कि आजकल POSIX मानक लिनक्स कर्नेल विकास समुदाय द्वारा निर्देशित है, जो (अगर सच है) IMHO एक अच्छी बात नहीं है ...
sakisk

1
@ अल्फा मैंने यह कभी नहीं सुना है और यह संभावना नहीं है, क्या आप एक संदर्भ पोस्ट कर सकते हैं?
पेंग्विन 359

2
@ गिल्स ओपन ग्रुप, UNIX® ट्रेडमार्क का मालिक भी UNIX® प्रमाणन और विनिर्देश का प्रभारी है, जिसे वे एकल UNIX विशिष्टता या SUS कहते हैं। POSIX का विकास IEEE द्वारा किया गया है जो UNIX® के प्रभारी नहीं हैं। 2001 से, उन्हें बड़े पैमाने पर सिंक में विकसित किया गया है, लेकिन यह तकनीकी रूप से SUS है जो अब संस्करण 4 में है जिसने UNIX® को परिभाषित किया है।
पेंग्विन 359
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.