POSIX surprize. Istoricul dezvoltării standardului POSIX. Cine este cine în dezvoltarea POSIX
POSIX (interfața sistemului de operare portabil) este un standard care descrie interfața dintre sistem de operareși un program de aplicație. Scopul creării acestui standard este de a asigura compatibilitatea sistemelor de operare asemănătoare Unix, precum și portabilitatea programelor la nivel de cod sursă. Cu toate acestea, standardul POSIX poate fi utilizat nu numai de sistemele Unix. Numele POSIX a fost propus de Richard Stallman. Pronunțat „poix” este interfața pentru sistemele de operare portabile Unix.
Puțină istorie
Prima varianta Standardul POSIX a fost IEEE Std 1003. A fost lansat în 1988 și a definit interfața dintre limbajul de programare C și shell-ul kernel-ului sistemelor de tip Unix.
În 1990, a fost lansată o nouă versiune a IEEE Std 1003.2. În comparație cu prima versiune, noul document s-au făcut modificări minore.
În 1992, a fost lansat standardul IEEE Std 1003.2 în două volume. Documentul descria un interpret de comenzi și mai mult de o sută de utilitare.
Următoarea versiune, lansată în 1993, a devenit un mic plus față de versiunile anterioare: au apărut informații despre sincronizarea fișierelor, semafoare, setări de timp, temporizator, coadă de mesaje, I/O asincron.
În 1995, a fost lansat un alt standard dedicat fluxurilor, iar documentul din 1996 a fost un fel de completare la versiunile anterioare.
Standardul POSIX din 1999 a descris extensii suplimentare în timp real.
În 2001, a fost lansat un standard care a unit toate versiunile anterioare. S-a decis să-l folosească ca bază pentru adoptarea standardelor în viitor.
Este utilizată versiunea actuală a POSIX.1, aprobată în 2008.
Idei de bază ale standardului POSIX
Conform prevederilor documentate, pentru o interacțiune corectă cu aplicațiile, sistemul de operare trebuie să aibă următoarele componente:
- instrumente de rețea;
- instrumente de dezvoltare;
- controlul fluxurilor;
- instrumente în timp real;
- servicii de pachete;
- fișiere antet;
- interfețe matematice;
- interfețe moștenite.
Caracteristici ale sistemelor de operare care respectă standardele POSIX
- diferențierea drepturilor utilizatorilor și grupurilor, precum și rădăcina superutilizatorului cu drepturi privilegiate;
- prezența unui arbore asemănător Sistemul de fișiere, care are o singură rădăcină /;
- pachetele de sistem și software sunt furnizate ca fișiere text– adică configurațiile fișierelor pot fi modificate prin simpla editare;
- API de programare C unificat;
- standard unic utilitarul consoleiși comenzi (POSIX 2).
Sistemele de operare certificate conform standardului POSIX includ: IBM AIX, UnixWare, Solaris, IRIX, QNX, LynxOS, Mac OS X. Sistemele de operare precum Minix, diverse ramuri ale BSD, OpenSolaris, VxWorks, OpenWMS sunt pe deplin compatibile cu una dintre versiuni. a standardului POSIX . Cu privire la distribuții Linux, atunci majoritatea respectă standardul LSB (Linux Standard Base), care la rândul său se bazează pe POSIX.
Astăzi vom încerca să aflăm ce descrie standardul POSIX. Standardele sunt concepute pentru a permite computerului meu să comunice cu al tău. Datorită lor, pe doi calculatoare similare paginile web sau fluxurile video live vor arăta la fel.
Cu toate acestea, cele standard sunt destinate sarcinilor la scară mai mare decât simplul schimb de date între utilizatori. Unele standarde definesc un model specific care deschide capabilități care depășesc cu mult interoperabilitatea fișierelor sau a rețelei. Standardul POSIX este unul dintre ele.
Ce este POSIX?
POSIX (pronunțat „posix”) este o interfață portabilă a sistemelor de operare. Dar ce înseamnă? În primul rând, trebuie să definiți domeniul de aplicare al conceptului de „portabilitate”, în acest caz particular și să definiți conceptul de „interfață”. Pentru a afla acest lucru, este necesar să pornim de la faptul că ambele concepte sunt indisolubil legate.
„Portabil”, în contextul standardului POSIX, se referă la cod sursa(nu la binarele care sunt asamblate din aceleași surse). Acum să aflăm ce este o „interfață”. În programare, o „interfață” este modul în care codul tău interacționează cu alt cod. Interfața se așteaptă ca codul dvs. să ofere anumite informații. Codul dvs., la rândul său, se așteaptă să primească anumite informații de la interfață. Bun exemplu- funcția fopen() în limbajul C. Se așteaptă informații în două părți: calea către fișier și modul în care va fi deschis. Folosind aceste date, sistemul de operare returnează un alt tip de informații numit „descriptor de fișier”. Un handle de fișier poate fi folosit pentru a citi un fișier sau pentru a scrie într-un fișier. Aceasta este interfața. Din toate acestea rezultă că codul compatibil POSIX poate fi compilat pentru orice sistem de operare compatibil POSIX fără modificări majore, ceea ce înseamnă că va fi portabil.
Există o listă de interfețe care se încadrează în standardul POSIX, dar, deși este foarte lungă, este foarte posibil să fie incompletă. POSIX nu se limitează la apeluri de sistem, el definește, de asemenea, standarde pentru shell-urile sistemului de operare (shell, alias interfețe de linie de comandă), utilitare de sistem precum „awk” sau „echo”, biblioteci de sistemși mult mai mult.
Standardul POSIX a apărut ca o schiță de Richard Stallman în 1985 și a fost ulterior oficializat ca IEEE Std 1003.-1998. După cum sugerează și titlul, 1998 a fost anul publicării oficiale. De atunci, au fost lansate un număr mare de completări și extensii la POSIX, care evoluează treptat într-o întreagă familie de standarde, cunoscută oficial sub numele de IEEE 1003, recunoscută ca fiind internațional, cu denumirea SO/IEC 9945, numită pur și simplu familia POSIX. standard.
Sistemul de operare nu trebuie neapărat să fie compatibil POSIX, cu atât mai puțin să aibă un certificat POSIX, dar acest lucru permite dezvoltatorilor să creeze aplicații, instrumente și platforme fără a rescrie codul din nou și din nou, ci doar să adauge și să se conecteze la cele existente. De asemenea, nu este necesar să scrieți cod compatibil cu POSIX, dar acest lucru îmbunătățește foarte mult portabilitatea proiectelor între sistemele de operare. Aceasta înseamnă că abilitatea de a scrie cod care este compatibil POSIX este valoroasă în sine și este cu siguranță foarte utilă pentru cariera cuiva. Proiectele mari precum Gnome sau KDE aderă la standardul POSIX, care asigură că funcționează pe sisteme de operare diferite. Subsistemul POSIX este implementat chiar și în ultimele probleme Windows. Se știe că Linux acceptă majoritatea apelurilor de sistem POSIX, precum și o extensie majoră a acestuia numită Standard Baza Linux", care are scopul de a uni distribuțiile Linux în ceea ce privește suportul pentru codul sursă și datele binare.
Sper că am aruncat puțină lumină asupra întrebării „ce este POSIX”. Poseda informații interesante pe această temă? Vă rugăm să o împărtășiți în comentarii.
POSIX și RT OS: o încercare de sistematizare
Serghei Zolotarev, Nikolay Gorbunov
Scopul acestui articol este de a încerca să aducă o oarecare claritate istoriei dezvoltării standardului POSIX în legătură cu sistemele de operare în timp real (RTOS).
Ca o introducere: de ce este necesară standardizarea interfeței software?
Unul dintre cele mai importante proprietăți Standardul POSIX este că definește o „interfață de programare standardizată” la care trebuie să respecte dezvoltatorii de sisteme hardware și software complexe. Creatorii acestor sisteme sunt nevoiți să facă față cerințelor precum timpul scurt de lansare pe piață (datorită concurenței acerbe), minimizarea costurilor și accelerarea rentabilității investiției. În același timp, partea leului din costurile cauzate de încetinirea procesului de dezvoltare se datorează faptului că programatorii trebuie să „reinventeze roata”, implementând din nou și din nou funcționalități care sunt deja disponibile de mult timp. Dar acest lucru ar fi putut fi evitat prin:
- reutilizarea codului din proiecte trecute și paralele;
- transfer de cod de pe alte sisteme de operare;
- atragerea dezvoltatorilor din alte proiecte (inclusiv utilizarea altor sisteme de operare).
Toate acestea sunt posibile datorită utilizării unui sistem de operare cu un API standardizat. Mai mult, dacă în primul caz este suficient ca o organizație să aibă un fel de standard intern (ceea ce este tipic mai ales pentru sistemele de operare proprietare), atunci al doilea caz necesită prezența unor standarde general recunoscute - de exemplu, POSIX.
Astfel, folosind un sistem de operare compatibil POSIX ca platformă pentru proiectele sale, dezvoltatorul are posibilitatea de a transfera codul finit la nivel de sursă atât din proiectele sale trecute sau paralele, cât și din proiecte ale terților. Acest lucru nu numai că reduce semnificativ timpul de dezvoltare a software-ului, dar îi îmbunătățește și calitatea, deoarece codul testat conține întotdeauna mai puține erori.
Cine este cine în dezvoltarea POSIX
Și vom începe nu cu standardul POSIX în sine, ci cu eficientizarea rolului organizațiilor implicate în lucrul la el.
Primul participant este IEEE(Institutul Inginerilor Electricieni și Electronici), asociație publică non-profit de profesioniști. IEEE datează din 1884 (oficial din 1963), reunește 380.000 de membri individuali din 150 de țări, publică o treime din literatura tehnică referitoare la aplicarea computerelor, controlului, tehnologiei electrice și a informației, precum și peste 100 de reviste, populare printre profesionisti; În plus, asociația ține peste 300 de conferințe majore pe an. IEEE a participat la dezvoltarea a peste 900 de standarde actuale (www.ieee.ru/ieee.htm). Astăzi, acest institut este angajat în pregătirea, coordonarea, aprobarea și publicarea standardelor, dar datorită statutului său formal nu are autoritatea de a adopta documente precum standardele internaționale sau naționale. Prin urmare, termenul „standard” în înțelegerea IEEE ar trebui mai degrabă înțeles ca o „specificație”, care este mai în concordanță cu statutul documentelor acceptate de asociație. În conformitate cu IEEE, participă la programele unui număr de organizații internaționale și regionale - IEC, ISO, ITU (International Telecommunication Union), ETSI (European Telecommunications Standards Institute), CENELEC (European Committee for Electrotechnical Standardization) și la programe naționale, de exemplu în programul unei astfel de organizații precum ANSI.
IEEE include PASC (Portable Application Standards Committee), un comitet de asociere care dezvoltă familia de standarde POSIX (www.pasc.org/). PASC era cunoscut anterior ca Comitetul Tehnic al Sistemelor de Operare.
Al doilea participant la lucrare - ANSI(American National Standards Institute, American National Standards Institute) – privat organizație non profit, care administrează și coordonează activitățile de standardizare în Statele Unite. Are doar 75 de angajați, dar membrii ANSI includ peste 1.000 de companii, organizații, agenții guvernamentale și instituții (www.ansi.org). ANSI reprezintă Statele Unite în cele două mari organizații internaționale de standardizare, ISO și IEC.
Al treilea participant - ISO(Organizația Internațională de Standardizare, Organizația Internațională de Standardizare). A fost creat în 1946 prin decizia Comitetului pentru Coordonarea Standardelor și a Adunării Generale a ONU și a început oficial activitatea la 23 februarie 1947 (www.iso.org). ISO este o rețea instituţiile naţionale pentru standardizare din 146 de țări (o țară - un membru ISO) cu un secretariat central la Geneva (Elveția). Standardele ISO sunt elaborate în comitete tehnice, al căror prim rezultat este Proiectul Standardului Internațional (DIS), care, după mai multe aprobări, se transformă în Final Draft International Standard (FDIS). După aceasta, se supune la vot problema aprobării acestui document; dacă rezultatul este pozitiv, acesta devine un standard internațional.
Și, în sfârșit - IEC(International Electrotechnical Commission, International Electrotechnical Commission - IEC), fondată în 1906. IEC pregătește și publică standarde internaționale pentru toate tehnologiile electrice, electronice și conexe (www.iec.ch/). Începând cu 1 noiembrie 2004, comitetele naționale din 64 de țări erau membri activi ai acestei comisii. IEC emite și recomandări, care sunt publicate în engleză și franceză și au statut de standarde internaționale. Pe baza acestora, sunt dezvoltate standarde regionale și naționale. Comitetele tehnice (TC) sunt responsabile pentru pregătirea standardelor în diferite domenii de activitate ale IEC, la lucrările cărora participă și comitetele naționale interesate de activitățile unui anumit CT.
IEC este organizația cheie în pregătirea standardelor internaționale pentru tehnologia de informație. În acest domeniu există un comitet tehnic comun pentru tehnologia informației, JTC 1, format în 1987 în conformitate cu un acord între IEC și ISO. JTC1 are 17 subcomitete care supraveghează toate evoluțiile - de la software la limbaje de programare, grafică pe computer și editare de imagini, interconexiuni hardware și tehnici de securitate.
Pregătirea noilor standarde IEC cuprinde mai multe etape (preliminar, propunere, pregătitoare, comitet tehnic, cerere, aprobare, publicare). Dacă documentul IEC este destinat să devină numai specificație tehnică, mai degrabă decât un standard internațional, o versiune revizuită a documentului este trimisă la biroul central pentru publicare. Sunt alocate patru luni pentru elaborarea proiectului final de standard internațional (FDIS). În cazul în care este aprobat de toți membrii comitetului tehnic, este trimis la biroul central pentru publicare fără etapa de aprobare FDIS. FDIS merge apoi la comitetele naționale, care trebuie să o aprobe în termen de două luni. FDIS este considerat aprobat dacă mai mult de două treimi din comitetele naționale îl votează, iar numărul de voturi negative nu depășește 25%. Dacă un document nu este aprobat, acesta este trimis comitetelor tehnice și subcomisiilor pentru revizuire. Standardul trebuie publicat în cel mult două luni de la aprobarea FDIS.
Câteva alte organizații sunt implicate în dezvoltarea și adoptarea standardelor POSIX.
Grup deschis este o organizație internațională de standarde software care reunește aproape 200 de producători și comunități de utilizatori care lucrează în domeniul tehnologiei informației (www.opengroup.org/). Open Group a fost creat în 1995 prin fuziunea celor doi predecesori ai săi: X/Open și Open Software Foundation (OSF). Open Group este specializat în dezvoltarea metodologiilor de certificare software și testarea conformității cu cerințele specifice. În special, Open Group este angajat în certificare pentru domenii precum COE Platform, CORBA, LDAP, Linux Standard Base, Schools Interoperability Framework (SIF), S/MIME Gateway, Single UNIX Specification, Wireless Application Protocol Specifications (WAP) și, în cele din urmă, familia de standarde POSIX (www.opengroup.org/certification/).
Austin Common Standards Revision Group (CSRG)– un grup de lucru tehnic comun format în 2002 de ISO, IEC și Open Group pentru a crea și menține cele mai recente versiuni ale standardului 1003.1, care va fi format pe baza ISO/IEC 9945-1-1996, ISO/IEC 9945- 2-1993, IEEE Std 1003.1-1996, IEEE Std 1003.2-1992 și specificația unică UNIX (www.opengroup.org/press/14nov02.htm).
Institutul Național de Standarde și Tehnologie (NIST) este o agenție federală din cadrul Administrației Tehnologice a Departamentului de Comerț (www.nist.gov/public_affairs/general2.htm), fondată în SUA în 1901. Misiunea NIST este de a dezvolta și promova standarde și tehnologii pentru îmbunătățirea calității produselor. NIST include un Laborator de Tehnologia Informației (ITL), unul dintre rezultatele căruia este Standardele Federale de Procesare a Informației (FIPS, www.opengroup.org/testing/fips/general_info.html). NIST/ITL a propus setul inițial de teste pentru certificarea POSIX în 1991 sub FIPS PUB 151-1 1990.
Ce este POSIX?
Formal termenul POSIX propus de Richard Stallman ca abreviere pentru P ortable O perating S interfață de sistem pentru un IX(interfață portabilă a sistemului de operare pentru Unix). POSIX a fost dezvoltat pentru sisteme de operare asemănătoare UNIX (primele lor versiuni datează de la începutul anilor 1970) cu scopul de a asigura portabilitatea aplicațiilor la nivel de sursă.
Descrierea inițială a interfeței a fost publicată în 1986, apoi a fost numită IEEE-IX (versiunea IEEE de UNIX). noua optiune. De ceva timp, POSIX a fost înțeles ca referință (sau sinonim) la grupul de documente conexe IEEE 1003.1-1988 și părți ale ISO/IEC 9945, iar ca standard internațional complet și aprobat, ISO/IEC 9945.1:1990 a fost adoptat POSIX în 1990. Specificaţiile POSIX definesc mecanismul standard de interacţiune program de aplicareși OS și include în prezent peste 30 de standarde sub umbrela IEEE, ISO, IEC și ANSI.
POSIX a parcurs un drum lung de-a lungul istoriei sale, cu numeroase modificări la denumirea specificațiilor, conținutul lor specific, procedurile și logistica pentru testarea acestora. De-a lungul timpului, mai multe ediții ale standardului POSIX au fost lansate în cadrul diferitelor organizații internaționale.
Istoricul dezvoltării standardului POSIX
Prima versiune a specificației IEEE Std 1003.1 a fost publicată în 1988. Ulterior, numeroase ediții ale IEEE Std 1003.1 au fost adoptate ca standarde internaționale.
Etape de dezvoltare POSIX:
1990
Ediția, lansată în 1988, a fost revizuită și a devenit baza pentru ediții și completări ulterioare. A fost aprobat ca standard internațional de ISO/IEC 9945-1:1990.
1993
Revizia 1003.1b-1993 este lansată.
1996
IEEE Std 1003.1b-1993, IEEE Std 1003.1c-1995 și 1003.1i-1995 au fost modificate, dar corpul documentului rămâne neschimbat. Ediția din 1996 a IEEE Std 1003.1 a fost, de asemenea, adoptată ca standard internațional de ISO/IEC 9945-1:1996.
1998
A apărut primul standard pentru „timp real” - IEEE Std 1003.13-1998. Este o extensie a standardului POSIX pentru aplicațiile încorporate în timp real.
1999
S-a decis să se facă primele modificări semnificative din ultimii 10 ani la textul principal al standardului, inclusiv integrarea cu standardul 1003.2 (Shell și utilități), deoarece la acel moment acestea erau standarde separate. PASC a decis să finalizeze modificările textul de bază după finalizarea standardelor IEEE 1003.1a, 1003.1d, 1003.1g, 1003.1j, 1003.1q și 1003.2b.
2004
Cea mai recentă revizuire a standardului 1003.1 a fost publicată pe 30 aprilie și a fost lansată sub auspiciile Austin Common Standards Revision Group. Este modificat de ediția din 2001 a standardului. În mod formal, ediția din 2004 este cunoscută ca IEEE Std 1003.1, 2004 Edition, The Open Group Technical Standard Base Specifications, Issue 6 și include IEEE Std 1003.1-2001, IEEE Std-2001/1. Cor 1-2002 și IEEE Std 1003.1-2001/Cor 2-2004.
Cele mai importante standarde POSIX pentru RT OS
Pentru sistemele de operare în timp real, șapte specificații standard sunt cele mai importante (1003.1a, 1003.1b, 1003.1c, 1003.1d, 1003.1j, 1003.21), dar doar trei au primit suport pe scară largă în sistemele de operare comerciale:
- 1003.1a (definiția sistemului de operare) definește principalele interfețe ale sistemului de operare, managementul joburilor, semnalele, sistemul de fișiere și funcțiile dispozitivului, grupurile de utilizatori, conductele, bufferele FIFO;
- 1003.1b (Extensii în timp real) descrie extensii în timp real, cum ar fi semnale în timp real, programare prioritară, cronometre, I/O sincron și asincron, semafoare, memorie partajată, mesaje. Acest standard a fost inițial (până în 1993) desemnat POSIX.4.
- 1003.1c (Fire de execuție) definește funcții de susținere a firelor de execuție (threads) - managementul firelor de execuție, atribute ale firelor de execuție, mutexuri, dispecerare. Desemnat inițial POSIX.4a.
În plus față de aceste standarde, următoarele standarde sunt importante pentru sistemul de operare RT, care au fost implementate ca parte a lucrărilor la proiectul Std 1003.1-2001:
- IEEE 1003.1d-1999. Extensii suplimentare în timp real. Inițial desemnat ca POSIX.4b;
- IEEE 1003.1j-2000. Extensii îmbunătățite (avansate) în timp real;
- IEEE 1003.1q-2000. Urmă.
Procedura de certificare
Pentru a se conforma cu standardul POSIX, sistemul de operare trebuie să fie certificat conform rezultatelor suitei de teste adecvate. De la introducerea POSIX, suita de teste a suferit modificări formale și faptice.
În 1991, NIST a dezvoltat programul de testare POSIX ca parte a FIPS 151-1 (http://standards.ieee.org/regauth/posix/POSIX-A.FM5.pdf). Acest caz de testare a fost bazat pe IEEE 1003.3" Standard pentru Metode de testare pentru măsurarea conformității cu POSIX" Draft 10, 3 mai 1989. În 1993, NIST a finalizat Programul de testare POSIX pentru FIPS 151-1 și a început programul pentru FIPS 151-2 (www.itl.nist.gov/fipspubs/ fip151-2.htm, adaptat FIPS 151-2 „Tehnologia informației – portabil” Sistem de operare Interfață (POSIX) – Partea 1: Interfața programului de aplicație de sistem (API),” care este un standard ISO/IEC 9945-1:1990. Suitele de testare pentru FIPS 151-2 s-au bazat pe IEEE 2003.1-1992 „Standard pentru metode de testare pentru Măsurarea conformității cu POSIX”.
NIST face distincție între două metodologii de certificare: auto-certificare și certificare de către IEEE Accredited POSIX Testing Laboratories (APTL). În primul caz, compania efectuează testarea independent, dar conform unui plan aprobat de NIST. În al doilea caz, testarea este efectuată de un laborator independent folosind truse de testare automate. În total, două laboratoare APTL au fost acreditate: Mindcraft (www.mindcraft.com) și Perennial (www.peren.com).
În 1997, NIST/ITL și-a anunțat intenția de a înceta certificarea FIPS 151-2 la sfârșitul anului în curs (oficial 31 decembrie 1997), în timp ce Open Group a anunțat că intenționează să preia certificarea începând cu 1 octombrie 1997. . în același an, serviciu de certificare în conformitate cu FIPS 151-2, bazat pe programul NIST/ITL. Aceleași funcții au fost preluate de IEEE Standards Association (IEEE-SA) la 1 ianuarie 1998, tot pe baza FIPS 151-2.
În 2003, IEEE-SA și Open Group au anunțat un nou program comun de certificare a celor mai recente versiuni de POSIX, începând cu IEEE 1003.1™ 2001. Open Group are acum mai multe suite de testare care acoperă IEEE Std 1003.1-1996, IEEE Std 1003.2- 1992, IEEE Std 1003.1-2003 și IEEE Std 1003.13-1998 (www.opengroup.org/testing/testsuites/posix.html). Un produs este considerat certificat POSIX dacă a trecut procedura completa certificarea, bazată pe rezultatele testelor, îndeplinește toate cerințele și este inclusă în registrul oficial produse certificate.
Suitele de testare includ:
- VSX-PCTS1990 (www.opengroup.org/testing/testsuites/vsxpcts1990.htm) – un set de teste de conformitate pentru interfețe de sistem IEEE Std 1003.1-1990;
- VSPSE54 (www.opengroup.org/testing/testsuites/VSPSE54.htm) – un set de teste de conformitate pentru IEEE Std 1003.13-1998 Profil PSE54 (multi-purpose real time);
- VSX-PCTS2003 (www.opengroup.org/testing/testsuites/vsxpcts2003.htm) – un set de teste de conformitate pentru interfețele de sistem IEEE Std 1003.1-2003 (doar părți obligatorii);
- VSC-PCTS2003 (www.opengroup.org/testing/testsuites/vscpcts2003.htm) – un set de teste de conformitate pentru IEEE Std 1003.1-2003 (shell și utilități – doar părți obligatorii).
În plus, Open Group a dezvoltat teste pentru standardele POSIX Realtime și profilul standardelor Embedded POSIX. Suita de teste POSIX Realtime (www.opengroup.org/testing/testsuites/realtime.html) include următoarele teste:
- IEEE POSIX 1003.1b-1993/1003.1i-1995 Extensie în timp real și IEEE POSIX 1003.1,2003 Edition;
- Extensia IEEE Std POSIX 1003.1c-1995 Threads (pthreads) și IEEE POSIX 1003.1,2003 Edition;
- IEEE POSIX 1003.1d-1999 Extensie suplimentară în timp real și IEEE POSIX 1003.1,2003 Edition;
- IEEE POSIX 1003.1j-2000 Advanced Realtime Extension și IEEE POSIX 1003.1,2003 Edition;
- IEEE POSIX 1003.1q-2000 Trace și IEEE POSIX 1003.1,2003 Edition și IEEE POSIX 1003.1,2003 Edition;
Suita de teste de profil de standarde Embedded POSIX (www.opengroup.org/testing/testsuites/embedded.html) include următoarele teste:
- IEEE POSIX 1003.1-1990 (5310 teste);
- Extensie în timp real IEEE POSIX 1003.1b-1993/1003.1i-1995 (1430 teste);
- Extensie IEEE Std POSIX 1003.1c-1995 Threads (pthreads) (1232 teste);
- IEEE POSIX 1003.13-1998 Profil 52.
Un pic despre confuzie în terminologie
În ceea ce privește grupul de standarde POSIX, nu unul, ci trei termeni sunt adesea folosiți în engleză. Din păcate, ele sunt similare ca semnificație și sunt adesea traduse în același mod, ceea ce creează o oarecare confuzie. Acești termeni sunt:
- compatibilitate (literal „compatibilitate”);
- conformitate (literal „conformitate”);
- conformitate (literal „coerență”).
Primul termen, așa cum este aplicat POSIX, nu este definit formal. Al doilea înseamnă că organizația care produce produsul software declară în mod independent că acest produs (total sau parțial) respectă standardele NIST-PCTS enumerate. Al treilea termen implică faptul că software a trecut sistemul de teste stabilit fie cu ajutorul unui laborator acreditat, fie în cadrul Grupului Deschis și există dovezi documentare în acest sens (așa-numita Declarație de Conformitate). Mai departe, în textul articolului, termenii originali vor fi dați peste tot pentru a elimina ambiguitatea.
Certificat OS RV
Dacă te ții de reguli stricte, solicitând ca datele despre un sistem de operare RT certificat să fie publicate în registrul oficial și testarea să fie efectuată în funcție de nivelul de conformitate, atunci în prezent există doar două sisteme de operare RT certificate (datele sunt date în ordine cronologică):
LynxOS v.3(un produs al Lynx Real-Time Systems, numit acum LynuxWorks, Inc., www.lynuxworks.com) este destinat dezvoltării de software pentru sistemele încorporate care operează în Modul greuîn timp real, producători de echipamente OEM și de telecomunicații, în special producători de sisteme militare aeriene. Dezvoltarea poate fi efectuată atât pe sistemul țintă în sine (auto-găzduit), cât și pe un computer instrumental (gazdă), software-ul gata făcut este proiectat să funcționeze pe sistemul țintă (țintă). LynxOS v.3 este certificat pentru conformitatea cu standardul POSIX pe platformele Intel și PowerPC. Informații despre acest lucru pot fi găsite pe site-ul IEEE http://standards.ieee.org/regauth/posix/posix2.html. LynxOS este certificat la POSIX 1003.1-1996 de către Mindcraft, un laborator de testare POSIX acreditat IEEE POSIX în conformitate cu NIST FIPS 151-2 Conformance Test Suite. Număr document de certificare: Fișier de referință: IP-2LYX002, Fișier de referință: IP-2LYX001.
INTEGRITATE v.5(un produs al Green Hills Software, www.ghs.com) este certificat pentru conformitate cu POSIX 1003.1-2003, Interfețe de sistem pentru arhitectura PowerPC în iulie 2004 (http://get.posixcertified.ieee.org/select_product. tpl) . Suita de teste VSX-PCTS 2003.
POSIX și sistemul de operare QNX
QNX v.4.20 (dezvoltat de QNX Software Systems, www.qnx.com) este certificat pentru conformitate cu POSIX 1003.1-1988 pentru Platforme Intel de DataFocus Incorporated. Testarea a fost efectuată pe 13 septembrie 1993, iar documentul a fost emis la 1 noiembrie 1993. NIST PCTS 151-1 Test Suite, Versiunea 1.1.
QNX Neutrino (versiunea 6.3) respectă urmând standarde Familia POSIX (www.qnx.com/download/download/8660/portability.pdf):
- POSIX.1 (IEEE 1003.1);
- POSIX.1a (IEEE 1003.1a);
- POSIX.2 (IEEE 1003.2);
- POSIX.4 (IEEE 1003.1b);
- POSIX.4a (IEEE 1003.1c);
- POSIX.1b (IEEE 1003.1d), IEEE 1003.1j;
- POSIX.12 (IEEE 1003.1g).
QNX Software Systems, creatorul QNX Neutrino, intenționează, de asemenea, să conformeze QNX Neutrino unora dintre aceste standarde; lucrările sunt planificate pentru 2005 (www.qnx.com/news/pr_959_1.html).
Literatură
- Manual de operare al Asociației Standardelor IEEE. IEEE, octombrie 2004.
- Kevin M. Obeland. POSIX în timp real, programarea sistemelor încorporate, 2001.
- Standard IEEE/ANSI 1003.1: Tehnologia informației - (POSIX) - Partea 1: Aplicație de sistem: Interfață de program (API).
- Gallmeister, B.O. Programare pentru lumea reală, POSIX.4 Sebastopol, CA: O'Reilly & Associates, 1995.
- Institutul Național de Standarde și Tehnologie, PCTS:151-2, POSIX Test Suite.
- POSIX: Certificat de IEEE și The Open Group. Politică certificată. Grupul deschis, 21 octombrie 2003, revizuirea 1.1.
Vom lua în considerare cea mai modernă versiune a standardului POSIX disponibilă, ediția din 2003, care poate fi numită „standard triplu”, și anume IEEE Std 1003.1, Standard tehnic Open Group și (vezi [6]), cel mai important pentru noi, standardul internațional ISO/IEC 9945 (vezi [1], [2], [3], [4]).
Istoricul creării acestei versiuni este următorul. La începutul anului 1998, reprezentanți ai trei organizații — Comitetul pentru Standarde de Aplicații Mobile al Institutului de Ingineri Electrici și Electronici, Grupul Deschis și Comitetul Tehnic Comun 1 Subcomitetul 22 Grupul de lucru 15 (JTC1/SC22/WG15) al Organizației Internaționale de Standardizare— au început consultări privind fuziunea și dezvoltarea standardelor de interfață pentru serviciile de sistem supravegheate de aceștia: IEEE Std 1003.1, IEEE Std 1003.2, Specificații de bază de la Open Group, ISO/IEC 9945-1, ISO/IEC 9945-2. În luna septembrie a aceluiași an, a avut loc o întâlnire organizațională a grupului format pentru atingerea acestui obiectiv la Austin, Texas, la biroul IBM Corporation (vezi http://www.opengroup.org/austin).
Documentul de bază pentru standardul revizuit, al cărui prim proiect a fost depus în iulie 1999, a fost Specificațiile de bază ale Open Group, deoarece încorporau prevederi din standardele IEEE și ISO/IEC. În 2001, la finalizarea lucrărilor pregătitoare, standardul conținea următoarele patru părți:
- definiții de bază (termeni, concepte și interfețe comune tuturor părților);
- Descriere C interfață de programare a aplicației la serviciile de sistem;
- descrierea interfeței cu serviciile de sistem la nivel limbajul de comandăȘi utilitati ;
- explicație detaliată a prevederilor standardului, justificarea deciziilor luate.
Mai mult, ISO, IEEE și Open Group, cu o viteză mai mare sau mai mică (în 2001-2002), au aprobat oficial noul standard POSIX. Între timp, corecții relativ minore s-au acumulat și au fost luate în considerare în ediția din 2003.
Pe măsură ce standardul s-a dezvoltat, interpretarea termenului „POSIX” sa extins. S-a referit inițial la IEEE Std 1003.1-1988, care a descris interfața de programare a aplicației OS clasa Unix. După standardizarea interfeței la nivelul limbajului de comandă și al utilităților, este mai corect să înțelegem cuvântul „POSIX” ca un întreg standard, notând părțile de mai sus 2 și 3 până la POSIX.1 și POSIX.2 în conformitate cu cu numerotarea documentelor IEEE şi ISO/IEC.
Idei de bază ale standardului POSIX
Standardul POSIX descrie multe servicii de bază de sistem necesare pentru funcționarea programelor de aplicație. Acestea sunt accesate printr-o interfață specificată pentru limbajul C, un limbaj de comandă și programe utilitare comune.
Fiecare interfață are două laturi: apelantul și cel apelat. Standardul POSIX este orientat către apelant. Scopul său este de a face aplicații mobil la nivel de limba sursă. Aceasta înseamnă, în special, că atunci când se mută programe C pe o altă platformă de operare, va fi necesară recompilarea. Nu se vorbește despre mobilitatea programelor executabile și/sau a fișierelor obiect.
Standardul POSIX nu este în niciun caz limitat la mediul Unix. Există sisteme de operare (OS) de „origine independentă” (de exemplu, sisteme în timp real), oferind serviciile necesare și sprijinind astfel execuția aplicațiilor compatibile cu POSIX. Se poate argumenta că respectarea standardului POSIX facilitează portarea aplicațiilor către aproape orice platformă de operare utilizată pe scară largă. Efortul suplimentar depus pentru îmbunătățirea mobilității în timpul fazei de dezvoltare va da cu siguranță roade.
Prin definirea interfeței cu serviciile de sistem, POSIX nu ia în considerare implementarea acestora. În special, ele nu diferă apeluri de sistemȘi funcțiile bibliotecii. Produsele nu sunt supuse standardizării administrare, limitările hardware și caracteristicile necesare numai superutilizator, care subliniază încă o dată accentul standardului
Asigurarea mobilității (portabilitatea) software-ului este o sarcină de o importanță și complexitate excepționale; în vremea noastră, această împrejurare nu are nevoie de o justificare extinsă. Una dintre modalitățile general acceptate de a crește portabilitatea software-ului este standardizarea mediului de aplicație: interfețe software furnizate, utilități etc. La nivel servicii de sistem un mediu similar este descris de standardul POSIX (Portable Operating System Interface - interfața sistemului de operare mobil); Numele a fost propus de celebrul specialist, fondator al Free Software Foundation, Richard Stallman. Ne vom uita la cea mai modernă versiune a standardului POSIX disponibilă, ediția din 2003, care poate fi numită „standard triplu”, și anume IEEE Std 1003.1, Standardul tehnic Open Group și (vezi, cel mai important pentru noi, standardul internațional). standardul ISO/IEC 9945 (vezi , , , , , Istoria creării acestei versiuni este următoarea: La începutul anului 1998, reprezentanții a trei organizații - Comitetul pentru Standarde de Aplicații Mobile al Institutului de Ingineri Electrici și Electronici, Grupul Deschis). și Grupul de lucru 15 al Subcomitetului 22 al Comitetului Tehnic Comun 1 (JTC1/SC22/WG15) al Organizației Internaționale pentru Standardizare - a început consultări cu privire la problema îmbinării și dezvoltării standardelor pentru interfețele pentru serviciile de sistem pe care le supraveghează: IEEE Std 1003.1. , IEEE Std 1003.2, Specificații de bază ale grupului deschis, ISO/IEC 9945-1, ISO /IEC 9945-2 În septembrie același an, a avut loc o reuniune organizațională a grupului format pentru a atinge acest obiectiv la Austin, Texas , la biroul IBM Corporation (vezi. http://www.opengroup.org/austin). Documentul de bază pentru standardul revizuit, al cărui prim proiect a fost depus în iulie 1999, a fost Specificațiile de bază ale Open Group, deoarece încorporau prevederi din standardele IEEE și ISO/IEC. În 2001, la finalizarea lucrărilor pregătitoare, standardul conținea următoarele patru părți:Idei de bază ale standardului POSIX
Standardul POSIX descrie multe servicii de bază de sistem necesare pentru funcționarea programelor de aplicație. Acestea sunt accesate printr-o interfață specificată pentru limbajul C, un limbaj de comandă și programe utilitare comune. Fiecare interfață are două laturi: apelantul și cel apelat. Standardul POSIX este orientat către apelant. Scopul său este de a face aplicații mobil la nivel de limba sursă. Aceasta înseamnă, în special, că atunci când se mută programe C pe o altă platformă de operare, va fi necesară recompilarea. Nu se vorbește despre mobilitatea programelor executabile și/sau a fișierelor obiect. Standardul POSIX nu este în niciun caz limitat la mediul Unix. Există sisteme de operare (OS) de „origine independentă” (de exemplu, sisteme în timp real), oferind serviciile necesare și sprijinind astfel execuția aplicațiilor compatibile cu POSIX. Se poate argumenta că respectarea standardului POSIX facilitează portarea aplicațiilor către aproape orice platformă de operare utilizată pe scară largă. Efortul suplimentar depus pentru îmbunătățirea mobilității în timpul fazei de dezvoltare va da cu siguranță roade. Prin definirea interfeței cu serviciile de sistem, POSIX nu ia în considerare implementarea acestora. În special, ele nu diferă apeluri de sistemȘi funcțiile bibliotecii. Produsele nu sunt supuse standardizării administrare, limitările hardware și caracteristicile necesare numai superutilizator, care subliniază încă o dată concentrarea standardului POSIX pe aplicații, nu pe sistemele de operare. POSIX este neutru în ceea ce privește arhitectura sistemului și dimensiunea biților procesorului. Aceasta este foarte aspect important mobilitatea aplicațiilor. Accentul pe standardul internațional al limbajului C a determinat nu numai stilul de descriere a funcțiilor, ci și, într-o oarecare măsură, direcția de dezvoltare a specificațiilor POSIX în ceea ce privește sincronizarea ambelor standarde. După cum se știe în ediția caietului de sarcini al limbajului C aprobată în 1999 (vezi) este legalizat tip complex date, care a determinat o completare corespunzătoare a funcțiilor POSIX. Standardul POSIX face diferența între funcțiile obligatorii și cele opționale, miezul necesar fiind păstrat cât mai compact posibil. Desigur Atentie speciala se concentrează pe modalități de implementare a funcțiilor standardizate atât în mediul „clasic” Unix, cât și pe alte platforme de operare, în configurații de rețea și distribuite. Dezvoltatorii noii versiuni a standardului POSIX au fost foarte atenți la preistoria sa și la preistoria sistemelor Unix și, cel mai important, la aplicațiile care au satisfăcut mai mult versiuni anterioare standard Am încercat să păstrăm interfețele existente; în procesul de dezvoltare principiul a fost respectat compatibilitate inversă; au fost adăugate interfețe noi pentru a nu intra în conflict cu cele vechi. Nu a fost posibil să se evite complet modificările aplicațiilor din motive evidente: a fost necesar să se elimine contradicțiile dintre diferitele specificații originale, precum și să se renunțe la suportul pentru versiunea „tradițională” a limbajului C și să se treacă la standardul său internațional.Concepte de bază ale standardului POSIX
Standardul POSIX, așa cum a fost modificat în 2003, este un document foarte extins, cu mai multe fațete, care acoperă în detaliu următoarele categorii de componente ale sistemului:$ getconf _POSIX_VERSION 199506 $ getconf POSIX2_C_DEV 1 $ getconf _XOPEN_REALTIME 1 $ getconf _POSIX_TRACE nedefinit Lista 1.1. Rezultatul aplicării utilitarului getconf la una dintre versiunile sistemului de operare Linux.
Aceasta înseamnă că este susținut versiune învechită Standardul POSIX, printre altele, există instrumente de dezvoltare și capabilități în timp real; Nu există instrumente de urmărire. Documentația OS ar trebui să reflecte problemele de conformitate cu standardul POSIX și să descrie caracteristicile suplimentare și non-standard acceptate. Pentru aplicații, conceptul de conformitate POSIX este mai nuanțat. Prevăzut respectarea strictă, a cărei principală trăsătură distinctivă este limitarea gamei de capabilități utilizate în cadrul standardului. Se ia în considerare și respectarea utilizării extensiilor; în acest caz, documentația pentru cerere trebuie să conțină o descriere a cererii specificații standard. Este de dorit ca extensiile de caracteristici POSIX utilizate să fie descrise de standardele internaționale și/sau naționale. (Rețineți că, pentru implementare, conceptul de conformitate strictă cu POSIX este lipsit de sens, fie și doar din motivul că nu există sisteme de operare fără instrumente de administrare și nu sunt descrise de acest standard.) Vom numi un profil un set de opțiuni care descrie capabilitățile opționale. Respectarea profilului înseamnă conformitatea cu standardul POSIX și suportul capabilităților specificate. Profilurile care sunt alese cu înțelepciune permit abordarea nevoilor unor clase reprezentative de utilizatori și/sau aplicații. Este posibil să existe „subprofiluri” care descriu subseturi de capabilități standard. O implementare corespunzătoare unui subprofil poate rula pe platforme hardware cu resurse limitate și/sau poate servi nevoilor unor aplicații specifice. Printre cele mai importante se numără conceptele care descriu comportamentul implementării în diverse situații. Pentru multe situații corecte, comportamentul este nespecificat, ceea ce înseamnă că o aplicație mobilă nu ar trebui să se bazeze pe comportamentul diferitelor implementări pentru a se potrivi. Pentru situații incorecte, comportamentul poate fi nedefinit; Nu numai că o aplicație nu ar trebui să se bazeze pe natura specifică a unui astfel de comportament, ci nu ar trebui să efectueze acțiuni necorespunzătoare care provoacă comportament nedefinit. Un alt termen înrudit, „ comportament dependent de implementare", înseamnă în plus că comportamentul implementării trebuie documentat. Standardul POSIX este un organism de lungă durată, în evoluție, în care cu fiecare ediție nouă se adaugă ceva și se pierde ceva. Caracteristicile depreciate sunt cele care sunt încă susținute de diverse implementările, dar este posibil să se extindă în viitor. Noile aplicații nu ar trebui să le folosească pentru fiecare dintre ele, standardul oferă înlocuiri moderne adecvate termenului „moștenire”; asta, desigur, ar trebui evitat în aplicațiile noi.
Concepte de bază ale sistemelor de operare POSIX
Vom acoperi următoarele concepte de bază ale sistemelor de operare POSIX:Mediu de compilare pentru aplicații compatibile cu POSIX
De regulă (deși acest lucru nu este întotdeauna realizat), dezvoltarea aplicației se realizează în mod încrucișat, adică platforma de dezvoltare (termenul echivalent este platforma de instrumente) nu este același cu platforma de rulare (numită și platforma tinta). Creat pe platforma de instrumente mediu de compilare a aplicațiilor, astfel încât rezultatul compilației să poată fi transferat pentru execuția ulterioară pe platforma țintă. Cea mai importantă parte a mediului de compilare sunt fișierele de antet (sau includ) care conțin prototipuri funcționale, definiții constante simbolice, macrocomenzi, tipuri de date, structuri etc. Fiecare funcție descrisă în standardul POSIX specifică ce fișiere antet trebuie incluse de aplicația care o folosește (de obicei este necesar un fișier). S-a afirmat mai sus că prin constante simbolice definite în fișierul antet#dacă este definit(_REENTRANT) || (_POSIX_C_SOURCE - 0 >= 199506L) #define LIBXML_THREAD_ENABLED#endif Lista 1.2. Un exemplu de utilizare a macrocomenzii de verificare a capacității _POSIX_C_SOURCE.
Standardul POSIX oferă câteva măsuri pentru a aborda problema importantă și dificilă (cauzată în primul rând de natura neobiectivă a limbajului C) că nu există suprapunere de nume între aplicație și sistemul de operare. Prefixele posix_, POSIX_ și _POSIX_ sunt rezervate nevoilor standardului. Numai numele de sistem (nu de aplicații) pot începe cu un caracter de subliniere urmat de un alt caracter de subliniere sau o literă majusculă. Pentru fișierele incluse, sunt descrise prefixele numelor folosite în ele. De exemplu, pentru operațiunile de gestionare a fișierelor care apar în