POSIX
From Wikipedia, the free encyclopedia
Remove ads
POSIX (անգլ.՝ Portable Operating System Interface շարժական օպերացիոն համակարգի միջերես), ստանդարտների շարք, որը նկարագրում է օպերացիոն համակարգի և կիրառական ծրագրի միջև միջերեսները (համակարգային API), C լեզվի գրադարանը և կիրառությունների ու դրանց միջերեսների հավաքածուն: Ստանդարտը ստեղծվել է տարբեր UNIX-նման օպերացիոն համակարգերի համատեղելիության և կիրառական ծրագրերի աղբյուրային կոդի մակարդակում տեղափոխելիության ապահովման համար, բայց կարող է օգտագործվել նաև ոչ-Unix համակարգերի համար:
POSIX ստանդարտների շարքը մշակվել է IEEE 1003 կոմիտեի կողմից: Ստանդարտացման միջազգային կազմակերպությունը (ISO) Միջազգային էլեկտրատեխնիկական հանձնաժողովի (IEC) հետ միասին ընդունել է POSIX ստանդարտը ISO/IEC 9945 անվանումով: POSIX ստանդարտի տարբերակները հիմք են հանդիսանում Single UNIX Specification ստանդարտի համապատասխան տարբերակների համար: POSIX ստանդարտը սահմանում է օպերացիոն համակարգի միջերեսը, իսկ Single UNIX Specification ստանդարտի համապատասխանությունը սահմանում է միջերեսի իրականացումը և թույլ է տալիս օպերացիոն համակարգերին օգտագործել UNIX ապրանքանիշը[1]:
«POSIX» անվանումը առաջարկվել է Ռիչարդ Ստոլմանի կողմից[2]: POSIX.1-ի ներածությունում նշվում է. «Ակնկալվում է «պոզիքս» արտասանել ինչպես «պոզիտիվ» բառը, այլ ոչ թե «պոսիքս»: Արտասանությունը հրապարակվում է օպերացիոն համակարգի ստանդարտ միջերեսին վերաբերող ստանդարտ եղանակի հրապարակման նպատակով»: «POSIX»-ը IEEE-ի գրանցված ապրանքանիշն է[2]:
Remove ads
Խնդիրները
- Հեշտացնում է ծրագրի կոդը այլ հարթակներ տեղափոխելու գործընթացը։
- Խրախուսել միջերեսների սահմանումը և ստանդարտացումը նախագծման գործընթացի վաղ փուլում, այլ ոչ թե ներդրման ընթացքում։
- Հնարավորության դեպքում պահպանել և հաշվի առնել բոլոր հիմնական, նախկինում ստեղծված և օգտագործված կիրառական ծրագրերը։
- Որոշել փաստաթղթերի ստեղծումը, հաստատումը և ստուգումը արագացնելու համար անհրաժեշտ նվազագույն API-ները։
- Մշակել ստանդարտներ կապի ցանցերի, բաշխված տվյալների մշակման և տեղեկատվական անվտանգության ապահովման ուղղությամբ։
- Առաջարկվում է սահմանափակել երկուական (օբյեկտային) կոդի օգտագործումը պարզ համակարգերում կիրառությունների համար։
Remove ads
Բաղադրիչներ
Ստանդարտը բաղկացած է չորս հիմնական բաժիններից
- Հիմնական սահմանումներ (անգլ.՝ Base definitions) - սպեցիֆիկացիաներում օգտագործված հիմնական սահմանումների և կոնվենցիաների ցանկ, ինչպես նաև համապատասխան համակարգի կողմից տրամադրվող C լեզվի վերնագրերի ֆայլերի ցանկ։
- Shell և օգտակար ծառայություններ (անգլ.՝ Shell and utilities) - օգտակար ծրագրերի և shell-ի sh հրամանի նկարագրությունը, կանոնավոր արտահայտության ստանդարտներ։
- Համակարգի միջերեսներ (անգլ.՝ System interfaces) - C լեզվի համակարգային կանչերի ցանկ։
- Հիմնավորում (անգլ.՝ Rationale) - ստանդարտում օգտագործված սկզբունքների բացատրություն։
Remove ads
Տարբերակներ
POSIX տարբերակները մինչև 2001 թվականը
2001 թվականից առաջ ստեղծվել են բազմաթիվ POSIX ստանդարտներ, որոնցից մի մասը օգտագործվում էր Single UNIX Specification ստանդարտների ձևավորման համար: Շատ օպերացիոն համակարգեր մասնակի կամ լիարժեք իրականացրել են այս ստանդարտների աջակցությունը, որի պատճառով համակարգային կանչերի և ծրագրերի ձեռնարկներում հաճախ հանդիպում են այս ստանդարտների հղումներ: Ներկայումս այս ստանդարտները հնացած են և ներկայացնում են միայն պատմական հետաքրքրություն:
POSIX.1. C լեզվի համակարգային API
Ստանդարտ: IEEE Std 1003.1-1988, այնուհետև IEEE Std 1003.1-1990; ISO/IEC 9945-1:1990:
Ստանդարտը թողարկվել է 1988 թվականին, գրավում էր 317 էջ, ներառում էր ANSI C ստանդարտը և հանդիսանում է առաջին POSIX ստանդարտը: POSIX անվանումը Ռիչարդ Սթոլմանի կողմից տրամադրվելուց առաջ ստանդարտը հայտնի էր որպես IEEE-IX: 1990 թվականին թողարկվել է ստանդարտի թարմացումը փոքր փոփոխություններով IEEE Std 1003.1-1990 անվանումով, որը գրավում էր 356 էջ: Թարմացված ստանդարտի վերնագիրը հնչում էր. «Part 1: System Application Program Interface (API) [C Language]»: Այսպիսով, բացահայտ նշվում էր, որ ստանդարտը ներկայացնում է C լեզվի համակարգային API[3]:
Ստանդարտի բաժինները
- Պրոցեսների ստեղծում և կառավարում[3]
- Ազդանշաններ[4]
- Լողացող կետի բացառություններ
- Սեգմենտավորման խախտում
- Արգելված դիրեկտորիաներ
- Խողովակաշարի սխալներ
- Ժամանակակարգավորիչ
- Ֆայլերի (կատալոգների) հետ գործողություններ[3]
- Ուղիներ[5]
- C գրադարան (C ստանդարտ)
- Մուտքի-ելքի միջերես և վերահսկողություն
- Գործընթացների տրիգերներ
Ստանդարտի առանձնահատկությունները:
Ստանդարտում նկարագրվածից արժանի է նշել հետևյալը:
POSIX.2. Հրամանային թաղանթ և օգտակար գործիքներ
Ստանդարտ: IEEE Std 1003.2-1992; ISO/IEC 9945-2:1993[7]:
Ստանդարտը թողարկվել է 1992 թվականին երկու հատորով՝ ընդհանուր շուրջ 1300 էջ ծավալով: Վերնագիրը հնչում էր. «Part 2: Shell And Utilities», ինչը թարգմանվում է որպես «Մաս 2: Հրամանային ինտերպրետատոր և օգտակար գործիքներ»[3]:
Ստանդարտի բաժինները:
- Հրամանային ինտերպրետատոր
- Ծրագրային օգտակար գործիքներ
Ստանդարտի առանձնահատկությունները:
Ստանդարտը նկարագրում էր հրամանային մեկնաբանը System V Bourne shell-ի[3] հիման վրա և շուրջ հարյուր հրամանային տողի օգտակար գործիքներ (ներառյալ basename, awk, vi, yacc և շատ այլք)[3]:
POSIX.1b. Իրական ժամանակի ընդլայնումներ
Նաև հայտնի է որպես POSIX.4[7]:
Ստանդարտ: IEEE Std 1003.1b-1993, IEEE Std 1003.1i-1995 (1003.1b-ի տեխնիկական ուղղումներ):
Նախապես հայտնի որպես IEEE P1003.4, ստանդարտը հանդիսանում էր IEEE Std 1003.1-1990 ստանդարտի թարմացումը: 590 էջանոց թարմացումը ներառում էր իրական ժամանակի ընդլայնումներ, որոնք մշակվել էին P1003.4 աշխատանքային կոմիտեի կողմից[3]: 1995 թվականին ստանդարտը լրացվել է տեխնիկական ուղղումներով (IEEE Std 1003.1i-1995):
Ստանդարտի բաժինները:
POSIX.1c. Հոսքեր
Ստանդարտ՝ IEEE Std 1003.1c-1995։
Ստանդարտի բաժիններ
- Հոսքերի ստեղծում, վերահսկում և ավարտում
- Հոսքերի ժամանակացույց
- Հոսքային համաժամանակեցում
- Սիգնալի մշակում
Ստանդարտի առանձնահատկությունները
Ստանդարտի հիմնական նպատակն էր ապահովել բազմահոսքային ծրագրերում օգտագործելու համար զուգահեռ աշխատող անխափան կոդ գրելու հնարավորություն։ Նշանակալի փոփոխությունների շարքում պետք է նշել հետևյալը
- C լեզվի errno գլոբալ փոփոխականն այլևս գլոբալ փոփոխական չէ և պետք է ցույց տա յուրաքանչյուր հոսքի համար առանձին հիշողության վրա[9];
- ավելացվել են որոշ ֆունկցիաների զուգահեռ աշխատող անխափան անալոգներ, որոնց ավելացվում է «_r» ածանցը[9];
- մուտք-ելքի հետ աշխատող բոլոր ֆունկցիաները պետք է իրականացվեն այնպես, որ աշխատեն զուգահեռաբար և անխափան, հակառակ դեպքում դրանց անվանումում անհրաժեշտ է բացահայտ նշել դրանց վտանգավորությունը (օրինակ՝ «_unlocked» ածանցով)[9];
- ավելացվել են
flockfile(),ftrylockfile()ևfunlockfile()ֆունկցիաները բազմահոսքային ծրագրում տվյալների հոսքերի նկատմամբ արգելափակող գործողությունների իրականացման համար[9]:
POSIX.1-1996
Ստանդարտ: IEEE Std 1003.1, 1996 Edition, նաև հայտնի որպես IEEE 1996 (ISO/IEC 9945-1:1996):
Ստանդարտը 743 էջանոց էր, միավորում էր POSIX-ի նախկինում մշակված տարբերակները և ներառում էր հետևյալ ստանդարտները[3][10]:
- IEEE Std 1003.1-1990 (հիմնական API);
- IEEE Std 1003.1b-1993 (իրական ժամանակի ընդլայնումներ);
- IEEE Std 1003.1c-1995 (հոսքեր);
- IEEE Std 1003.1i-1995 (1003.1b ստանդարտի տեխնիկական ուղղումներ):
Ստանդարտի բաժինները:
- Մաս 1: Համակարգային API (C լեզու)[3]
- Մաս 2: Հրամանային ինտերպրետատոր և օգտակար գործիքներ[3]
- Մաս 3: Համակարգային կառավարում (մշակման փուլում է)[3]
Միևնույն ժամանակ, ստանդարտի էջերի մոտ մեկ քառորդը զբաղեցրել են պատմական տեղեկատվությունը և որոշակի գործառույթների ներառման պատճառների բացատրությունները[3]:
POSIX.1d. Լրացուցիչ իրական ժամանակի ընդլայնումներ
Ստանդարտ: IEEE Std 1003.1d-1999:
Նկարագրում էր լրացուցիչ իրական ժամանակի ընդլայնումները[7]: Օրինակ, sem_timedwait() համակարգային կանչը հայտնվել է հենց այս ստանդարտում[11]:
POSIX.1g. Արձանագրությունից անկախ միջերեսներ
Սկզբնական անվանումը: POSIX 1003.12:
Ստանդարտ: IEEE Std 1003.1g:
Ստանդարտը թողարկված 2000 թվականին՝ նկարագրում էր գործընթացների միմյանց հետ փոխգործակցության API-ն և ներառում էր երկու հիմնական API[12].
POSIX.1j. Առաջադեմ իրական ժամանակի ընդլայնումներ
Ստանդարտ: IEEE Std 1003.1j-2000:
Նկարագրում է առաջադեմ իրական ժամանակի ընդլայնումները[7]:
2001 թվականից հետո POSIX տարբերակները
1997 թվականի մարտին Austin Group աշխատանքային կոմիտեն մշակել է Single UNIX Specification version 2 ստանդարտը, որը POSIX.1-1996 ստանդարտի զարգացման շարունակությունն էր[3][14][15]:
1999 թվականին ընդունվել է որոշում, որի համաձայն The Open Group կոնսորցիումը և Էլեկտրատեխնիկայի և էլեկտրոնիկայի ինժեներների ինստիտուտը (IEEE) որոշել են միավորել ուժերը POSIX և Single UNIX Specification ստանդարտների համատեղ մշակման գործում: Նոր POSIX ստանդարտը պետք է փոխարիներ այդ պահին գոյություն ունեցող POSIX ստանդարտները (POSIX.1 և POSIX.2 և այլն), դառնալով Single UNIX Specification version 3-ի հիմքը: Նաև որոշվել է հրապարակել ապագա ստանդարտը, որի մշակումը նախատեսվում էր ավարտել 2001 թվականին[16]:
2001 թվականին բոլոր նախկին POSIX ստանդարտները միավորվել են մեկ ընդհանուր ստանդարտի մեջ, որը նախատեսվում էր օգտագործել որպես ապագա Single UNIX Specification ստանդարտների հիմք[11]:
POSIX.1-2001
Ստանդարտ: IEEE Std 1003.1-2001; ISO/IEC 9945:2002[11]:
2001 թվականին նախկինում մշակված հիմնական ընտրովի POSIX ստանդարտները միավորվել են POSIX.1-2001 միասնական ստանդարտի մեջ: Այդ ժամանակից ընդունված է POSIX ստանդարտները անվանելու հետևյալ տարբերակը՝ վերջում ավելացնում է հրատարակության տարեթիվը[17]: POSIX.1-2001-ը Single UNIX Specification version 3 ստանդարտի հիմքն է[18]:
POSIX.1-2001-ը կողմնորոշված է C99 լեզվի ստանդարտի վրա և կարող է ներառել C99-ից ֆունկցիաներ և վերնագրային ֆայլեր:Ստանդարտը ներառում է
- հիմնական գաղափարներ և սահմանումներ;
- համակարգային միջերեսներ և վերնագրային ֆայլեր;
- հրամանային ինտերպրետատորների նկարագրություն աղբյուրային կոդի մակարդակում և հրամանային տողի օգտակար գործիքներ:
POSIX.1-2004
Ստանդարտ: IEEE Std 1003.1-2004:
Ստանդարտը POSIX.1-2001 ստանդարտի աննշան թարմացումն է: Ներառում է երկու տեխնիկական ուղղում[19]: Ստանդարտի նկարագրությունը հասանելի է ինտերնետում[20]:
POSIX.1-2008
Ստանդարտներ: IEEE Std 1003.1-2008 (ISO/IEC 9945:2009), տեխնիկական ուղղում IEEE Std 1003.1-2008/Cor 1-2013 (ISO/IEC/IEEE 9945:2009/Cor 1:2013):
Ստանդարտը մշակվել է 2008 թվականին: 2013 թվականին ստանդարտի համար մշակվել է տեխնիկական ուղղում № 1՝ IEEE Std 1003.1-2008/Cor 1-2013 անվանումով: Ստանդարտի հանրամատչելի անվճար օրինակը կարելի է գտնել ինտերնետում: POSIX.1-2008-ը Single UNIX Specification version 4 ստանդարտի հիմքում է[21]:
Ստանդարտը նկարագրում է.
- ստանդարտի հիմնական գաղափարներ և սահմանումներ;
- համակարգային միջերեսներ և վերնագրային ֆայլեր;
- հրամանային ինտերպրետատորի նկարագրություն աղբյուրային կոդի մակարդակում և հրամանային տողի օգտակար գործիքներ;
- ստանդարտի անհրաժեշտության, հնարավորությունների ներառման (կամ ներառումից հրաժարվելու) պատճառների մասին բացատրություններ:
POSIX.1-2017
Ստանդարտ: IEEE Std 1003.1-2017 (ISO/IEC/IEEE 9945:2009/Cor 2:2017):
Ստանդարտը մշակվել է 2017 թվականին և ներկայումս ընթացիկ է[22]: Հանդիսանում է ISO/IEC/IEEE 9945:2009 խմբագրության երկրորդ ուղղումը:
Նախորդ ստանդարտի համեմատ հիմնականում պարունակում է սխալների ուղղումներ և ընտրովի հնարավորությունների տեղափոխում դեպի պարտադիր կատեգորիա: Այդ թվում ընտրովի չմնացին հոսքերի հետ աշխատելու շատ ֆունկցիաներ, ներառյալ ընթերցման-գրման արգելափակումները[23]:
POSIX 1003.13 պրոֆիլներ
POSIX 1003.1 ստանդարտը հարմար չէ բոլոր օպերացիոն համակարգերի համար: Ներկառուցված օպերացիոն համակարգերը միշտ չէ, որ աջակցում են որոշակի գործառույթների: POSIX 1003.13 ստանդարտը նկարագրում է ներդրված համակարգերի համար նախատեսված POSIX 1003.1 ստանդարտի ենթաբազմություն, որը բաժանված է չորս պրոֆիլների: Պրոֆիլները մշակվել են սահմանափակ հնարավորություններով օպերացիոն համակարգերի համար սկզբնաղբյուրի մակարդակի փոխադրելիությունն ապահովելու համար: Դրանք POSIX 1003.1 ստանդարտի ենթաբազմություն են, ինչը նշանակում է, որ դրանք նկարագրում են միայն սկզբնական ստանդարտում ներառված հնարավորությունների ենթաբազմություն: Այսպիսով, պրոֆիլները չեն հակասում սկզբնական ստանդարտին[24]:
Գործող ստանդարտը IEEE 1003.13-2003-ն է[25], որը IEEE Std 1003.13-1998-ի ընդլայնումն է և հիմնված է IEEE Std 1003.1-2001-ի վրա: Ստանդարտը նաև ներառում է POSIX.26-2003 (IEEE Std 1003.26-2003), POSIX.13a, POSIX.13b[26] և ISO/IEC 14519:2001:
2016 թվականի համար մշակվել են հետևյալ պրոֆիլները.
- POSIX PSE54 (բազմաֆունկցիոնալ, բազմապրոցեսորային օպերացիոն համակարգ՝ հոսքային և ֆայլային համակարգերի աջակցությամբ);
- POSIX PSE53 (բազմապրոցեսորային օպերացիոն համակարգ՝ հոսքային և ֆայլային համակարգերի աջակցությամբ);
- POSIX PSE52 (միապրոցեսորային օպերացիոն համակարգ՝ հոսքերի և ֆայլային համակարգերի աջակցությամբ);
- POSIX PSE51 (միապրոցեսորային օպերացիոն համակարգ՝ հոսքերի աջակցությամբ, առանց ֆայլային համակարգի):
Պրոֆիլների համեմատական բնութագրերը
Remove ads
Աջակցություն օպերացիոն համակարգերի կողմից
Ստանդարտների հետ համատեղելիության աստիճանից կախված՝ օպերացիոն համակարգերը կարող են լիովին կամ մասամբ համապատասխանել POSIX-ին։ Հավաստագրված արտադրանքը կարելի է գտնել IEEE կայքում[28]: Ստանդարտի IEEE Std 1003.1-2017 տարբերակին անվճար մուտք կարելի է ստանալ «The Open Group»-ի կայքում[29]:
POSIX հավաստագրված
1996 թվականից ի վեր SUS ստանդարտը ներառում է POSIX ստանդարտը, ուստի UNIX ստանդարտով հավաստագրված օպերացիոն համակարգերը կարող են համարվել միաժամանակ POSIX ստանդարտով հավաստագրված։
- Mac OS X (UNIX 03)[30]
- Solaris (UNIX 03)[31]
- IBM AIX (UNIX 03)[32]
- HP-UX (UNIX 03)[33]
- QNX Neutrino (POSIX PSE52)[34][35]
- IRIX (UNIX 95)[36]
- Integrity (POSIX 1003.1-2003)[37] և դրա միկրոմիջուկը µ-velosity
- Inspur K-UX (UNIX 03)[38]
- LynxOS (POSIX 1003.1-1996)[39]
- UnixWare (UNIX 95)[40]
- Tru64 UNIX (UNIX 95)[41][42]
POSIX-համատեղելի
Հայտարարվում է POSIX ստանդարտի տարբերակներից մեկի հետ լիարժեք համատեղելիություն։
Մեծ մասամբ համատեղելի է POSIX-ի հետ
Պաշտոնապես չի հավաստագրվել որպես POSIX-ի հետ համատեղելի, բայց հիմնականում համապատասխանում է։
Մասամբ POSIX-ի հետ համատեղելի
POSIX Windows-ի համար
- Cygwin - ապահովում է մասնակի POSIX համապատասխանություն որոշ Microsoft Windows արտադրանքի համար։
- UNIX ծրագրերի ենթահամակարգը (SUA) լրացուցիչ Windows ենթահամակարգ է, որը տրամադրում է օգտագործման պատրաստ միջավայր POSIX-համատեղելի ծրագրերի կոմպիլյացիայի և գործարկման համար[63]: POSIX.2 ստանդարտի հետ համապատասխանությունը հրամանային տողի մակարդակում ապահովվում է ksh հրամանային շերտով[64]:
- «Microsoft Windows Services for UNIX» - ապահովում է POSIX-ի հետ լիարժեք համապատասխանություն որոշ Microsoft Windows արտադրանքների համար: Windows 2000-ից առաջ Windows NT-ի վրա հիմնված օպերացիոն համակարգերը ունեին POSIX շերտ ներկառուցված օպերացիոն համակարգում, իսկ «UNIX Services for Windows»-ը ապահովում էր UNIX-անման միջավայր: Windows XP-ում POSIX-ի հետ համապատասխանություն ապահովելու համար դուք պետք է ներբեռնեք և տեղադրեք անվճար «Windows Services for UNIX» փաթեթը: UNIX ենթահամակարգը ներկառուցված է Windows Vista-ի Enterprise և Ultimate տարբերակներում և չի կարող ավելացվել այլ տարբերակներին:
- Windows ենթահամակարգը Linux-ի համար համատեղելիության շերտ է, որն առաջին անգամ հայտնվել է Windows 10-ում և իրականացնում է Linux kernel API-ը Windows-ի վրա։ Այն թույլ է տալիս աշխատեցնել որոշ դիստրիբուտիվների միջավայրը օգտատիրոջ տարածքում։
- UWIN-ը գրադարանների և օգտակար ծրագրերի մի ամբողջություն է, որը Win32 API-ի վրա ապահովում է POSIX-համատեղելի միջավայր[65]:
Remove ads
Ծանոթագրություններ
Գրականություն
Արտաքին հղումներ
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads