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ă

  1. Manual de operare al Asociației Standardelor IEEE. IEEE, octombrie 2004.
  2. Kevin M. Obeland. POSIX în timp real, programarea sistemelor încorporate, 2001.
  3. Standard IEEE/ANSI 1003.1: Tehnologia informației - (POSIX) - Partea 1: Aplicație de sistem: Interfață de program (API).
  4. Gallmeister, B.O. Programare pentru lumea reală, POSIX.4 Sebastopol, CA: O'Reilly & Associates, 1995.
  5. Institutul Național de Standarde și Tehnologie, PCTS:151-2, POSIX Test Suite.
  6. POSIX: Certificat de IEEE și The Open Group. Politică certificată. Grupul deschis, 21 octombrie 2003, revizuirea 1.1.
Software) este o sarcină de 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.

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:

  1. definiții de bază (termeni, concepte și interfețe comune tuturor părților);
  2. Descriere C interfață de programare a aplicației la serviciile de sistem;
  3. descrierea interfeței cu serviciile de sistem la nivel limbajul de comandăȘi utilitati ;
  4. 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:
  • definiții de bază (termeni, concepte și interfețe comune tuturor părților);
  • descrierea interfeței software aplicației C cu 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 programelor utilitare, este mai corect să înțelegem cuvântul „POSIX” ca un întreg standard, notând părțile de mai sus 2 și 3 prin POSIX.1 și POSIX.2 în în conformitate 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ă 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:
  • instrumente de dezvoltare;
  • instrumente de rețea;
  • instrumente în timp real;
  • controlul fluxurilor;
  • interfețe matematice;
  • servicii de pachete;
  • fișiere antet;
  • interfețe moștenite.
  • Tocmai acest repertoriu (la cel mai înalt nivel, departe de a fi complet) trebuie să îl asigure sistemul de operare pentru ca aplicația să funcționeze. Cel mai important concept este Conformitatea POSIX. Am observat deja că fiecare interfață are două laturi: cea care apelează și cea chemată. Conformitatea POSIX are două părți: conformitatea cu implementarea (sistemul de operare) și aplicația. O implementare (sistem de operare) care respectă standardul POSIX trebuie să suporte toate utilitățile, funcțiile, fișierele antet și să ofere comportamentul specificat în standard. Constanta _POSIX_VERSION are valoarea 200112L. Sistemul de operare poate oferi funcții care sunt marcate ca opționale în standard și poate conține, de asemenea, funcții non-standard. Dacă se pretinde că o extensie este susținută, aceasta trebuie făcută într-o manieră consecventă, pentru toate părțile necesare și în modul descris în standard. În fișierul antet Ar trebui să definiți constante care corespund capabilităților opționale care sunt acceptate (de exemplu, constanta _POSIX2_C_DEV servește instrumentelor de dezvoltare C). Analizând aceste constante în timpul compilării, aplicația își va da seama de capabilitățile sistemului de operare utilizat și se va adapta la acestea. Acțiuni similare de rulare pot fi efectuate folosind funcția sysconf() și/sau utilitarul getconf. Pentru a minimiza dimensiunea sistemului de operare și a aplicațiilor, standardul POSIX oferă o granularitate foarte fină de capabilități opționale (patruzeci în total). Pe de altă parte, capabilitățile opționale interconectate au fost combinate în grupuri, ceea ce în multe cazuri elimină nevoia de a analiza un număr mare de opțiuni. Aceste grupuri sunt:
  • criptare;
  • instrumente în timp real;
  • instrumente avansate în timp real;
  • fluxuri în timp real;
  • fluxuri avansate în timp real;
  • urmă;
  • CURENT;
  • capabilități moștenite.
  • De exemplu, grupul „facilități în timp real” (_XOPEN_REALTIME) include paisprezece tipuri de capabilități, inclusiv programare bazată pe prioritate, I/O asincron, semafoare, cronometre etc. Versiunea sistemului de operare Linux pe care a fost pregătit textul acest curs, a produs următoarele valori pentru unele constante de configurare (vezi Lista 1.1).

    $ 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:
  • utilizator ;
  • dosar;
  • proces;
  • Terminal ;
  • gazdă;
  • nod de rețea;
  • timp;
  • mediul lingvistic și cultural.
  • Acestea sunt concepte primare. Ele nu pot fi strict definite, dar pot fi explicate folosind alte concepte și relații. Pentru fiecare dintre conceptele evidențiate, vor fi descrise atributele lor inerente și operațiunile aplicabile acestora. Textul standardului POSIX conține următoarele explicații ale conceptelor de bază, împreună cu referințe la atribute și operații.
  • Utilizatorul are un nume și un ID numeric.
  • Un fișier este un obiect care poate fi citit și/sau scris și are atribute precum permisiuni și tip. Acestea din urmă includ dosar obișnuit, fișiere speciale de caractere și blocuri, pipe, link simbolic, socket și director. O implementare poate suporta alte tipuri de fișiere.
  • Un proces este un spațiu de adrese împreună cu firele de control care rulează în el, precum și resursele sistemului, pe care aceste fire le cer.
  • Un terminal (sau dispozitiv terminal) este un fișier special bazat pe caractere care urmează specificațiile interfeței terminale generale.
  • O rețea este o colecție de gazde interconectate.
  • Mediul lingvistic-cultural face parte din mediul utilizatorului, în funcție de convențiile lingvistice și culturale.
  • Pentru a lucra cu un număr mare de entități, sunt întotdeauna furnizate mecanisme pentru gruparea și construirea ierarhiilor. Există o ierarhie de fișiere, grupuri de utilizatori și procese, subrețele etc. Pentru a scrie programe care operează cu entități ale sistemelor compatibile POSIX, se folosește un interpret de comandă (limbaj shell) și/sau limbaj compilat C. În primul caz, aplicația poate folosi programe utilitare (utilități), în al doilea - funcții. Interfață funcțională Este firesc să considerăm sistemele de operare ca fiind primare, deoarece majoritatea programelor utilitare sunt concepute, de fapt, să apeleze una sau alta funcție. Din acest motiv, în cele ce urmează vom lua în considerare în primul rând nivelul funcției. Principalele operațiuni aplicabile obiectelor OS sunt citirea, scrierea și execuția. Mecanismul drepturilor de acces vă permite să permiteți și să interziceți selectiv astfel de operațiuni. Anterior, standardul includea conceptul de superutilizator, nesupus controlului accesului. POSIX-2001 a ales o formulare mai flexibilă - „având privilegii adecvate", ceea ce reflectă progresul în implementarea sistemelor de operare cu capacități de superutilizator split. Sistemele de operare compatibile cu POSIX definesc obiecte care pot fi numite auxiliare; ele ajută la organizarea interacțiunii dintre principalele entități. Gama de instrumente este deosebit de largă comunicarea intraprocesuala. Procesele se desfășoară într-un mediu specific, parte din care este mediul lingvistic și cultural (Locale), format din categorii precum simboluri și proprietățile acestora, formatele mesajelor, data și ora, valori numerice și monetare. De obicei, există cel puțin trei fișiere asociate unui proces - intrare standard, ieșire standard, protocol standard. De obicei, intrarea standard este atribuită tastaturii terminalului, iar ieșirea standard și protocolul standard sunt alocate ecranului. Comenzile și (uneori) datele sursă pentru acestea sunt citite din intrarea standard. Ieșirea standard primește rezultatele execuției comenzii. Mesajele de diagnosticare sunt plasate în protocolul standard. Sistemele de operare pot avea cerințe calitative, de exemplu, cerința pentru suport în timp real: capacitatea de a furniza serviciul necesar într-o anumită perioadă de timp.

    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 , sistemul de operare oferă aplicației informații despre capabilitățile acceptate. Standardul POSIX oferă un mecanism simetric numit macrocomenzi de verificare a caracteristicilor, permite aplicațiilor să își facă reclamă dorința de a accesa anumite prototipuri și nume. Principala macrocomandă de verificare a capacității este _POSIX_C_SOURCE. Cerințele pentru aplicațiile strict compatibile cu POSIX includ definirea constantei simbolice _POSIX_C_SOURCE cu o valoare de 200112L înainte de a include orice fișiere antet. Astfel, o aplicație compatibilă cu POSIX declară că necesită nume POSIX. Un rol similar îl joacă macrocomanda _XOPEN_SOURCE (cu o valoare de 600 ). Un exemplu de utilizare a macrocomenzii _POSIX_C_SOURCE în include fișiere Sistemul de operare Linux poate servi ca fragment prezentat în Lista 1.2.

    #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 , F_ , O_ , S_ sunt folosite ca prefixe. Instrumentele de comunicare interproces descrise în dosar , prefixul este IPC_ . Din păcate, există o mulțime de fișiere antet și nu există o disciplină generală de denumire din motive istorice. Deci, pentru a manipula caracteristicile terminalelor din fișier sunt definite multe nume diferite: EXTB, VDSUSP, DEFECHO, FLUSHO etc. Există, de asemenea, patru sute șaptesprezece nume precum _Exit, abort, abs, acos etc., care pot fi folosite pentru editare relații Externe program de aplicare. Ca urmare, programator de aplicatii poate „întrerupe” accidental o macrocomandă de sistem, o variabilă externă sau o funcție, de aceea este indicat să folosiți toate instrumentele de diagnosticare ale mediului de compilare și să studiați cu atenție mesajele pe care le produc.

    Portabilitatea aplicațiilor compatibile cu POSIX

    Portabilitatea aplicațiilor compatibile cu POSIX este în mod fundamental realizabilă datorită a doi factori principali. În primul rând, prezența unui număr mare de servicii de sistem standardizate și, în al doilea rând, capacitatea de a determina în mod dinamic caracteristicile platformei țintă și de a ajusta aplicația la acestea. (Desigur, ne referim la mobilitate în cadrul reglementat de standard.) Aplicațiile care respectă standardul POSIX pot fi cu un singur proces sau cu mai multe procese, cu capacitatea de a adapta dinamic configurația la proprietățile platformei țintă. Mijloacele de generare şi finalizarea proceselor, schimbându-și programele, sondarea și/sau modificarea diferitelor caracteristici. Procesele pot fi întrerupte și reactivate la momente specificate. Mecanismul de semnal vă permite să notificați despre evenimente și să încheiați procesele în exterior. Există mijloace pentru gruparea lor managementul locurilor de muncă. Aplicațiile sunt echipate cu controale pentru a controla programarea și prioritățile procesului. Gamă largă de instrumente de comunicare între procese ( cozile de mesaje, memorie partajată, semafoare) și gestionarea memoriei. În cele din urmă, mai multe fire de control pot fi organizate în cadrul unui proces. Gradul necesar de determinism de execuție este atins datorită instrumentelor de suport în timp real (acestea includ controlul disciplinei de alocare a procesorului, semnale în timp real, reținerea paginii în RAM, cronometre de înaltă rezoluție etc.). Funcțiile de lucru cu fișiere satisfac nevoile aplicațiilor de a citi și scrie date pe termen lung și de a proteja aceste date de accesul neautorizat. Mecanism blocarea fragmentelor de fișiere vă permite să asigurați atomicitatea tranzacțiilor. I/O asincron face posibilă combinarea operațiunilor de schimb, optimizând astfel aplicațiile. Procesarea complexă a datelor se poate face cu relativă uşurinţă folosind o varietate de programe utilitare. Standardul POSIX ia în considerare cu atenție problemele de acces la dispozitive externe conectat prin linii seriale, în special la terminale. Poate că instrumentele pentru lucrul cu medii obișnuite precum banda magnetică au nevoie de mai multe detalii. Standardizat limbajul de comandă shell este un instrument adecvat pentru scrierea procedurilor mobile mici și depanarea lor interactivă rapidă. Să evidențiem mecanismul conductei, care vă permite să combinați comenzile în lanțuri cu filtrare rezultate intermediare. Utilitare oferă un mediu de execuție bogat pentru procedurile shell. Datorită modului de fundal, puteți organiza execuția simultană a mai multor programe și interacțiunea cu acestea printr-un terminal obișnuit fără capabilități multi-ferestre (cu toate acestea, Windows nu ar strica cu siguranță). POSIX standardizează Linia de comandă. În principiu, este suficient, moderat convenabil și, important, creează un minim de probleme în ceea ce privește mobilitatea. Este probabil ca versiunile viitoare ale standardului să reglementeze GUI, dar, desigur, acest lucru este plin de dificultăți suplimentare pentru dezvoltatorii de aplicații mobile. Mediul lingvistic și cultural este unul dintre cele mai importante concepte ale standardului POSIX din punct de vedere al mobilității. Aplicațiile sunt capabile să detecteze mediul de care au nevoie și să se adapteze la nevoile utilizatorilor. Sistemele multi-utilizator necesită organizarea interacțiunii între un număr mare de persoane. POSIX rezolvă această problemă prin reglementarea mijloacelor de schimb direct și poștal de informații. Standardul POSIX prevede dotări de bază suport de dezvoltare (în primul rând pentru limbajul C), care, desigur, nu reduce nevoia de sisteme specializate și dezvoltate atunci când vine vorba de lucrul cu proiecte software cu adevărat mari. Aplicațiile sunt prevăzute cu mijloace standardizate pentru a determina atât caracteristicile blocurilor mari ale sistemului țintă (de exemplu, gama de caracteristici opționale acceptate), cât și caracteristicile la scară mai mică (cantitatea curentă de spațiu liber pe disc). Problema mobilității aplicațiilor este extrem de complexă și ar fi exagerat să spunem că standardul POSIX-2001 o rezolvă complet. În primul rând, probleme atât de importante precum grafica, interfața cu mai multe ferestre și întreaga linie alții. În al doilea rând, există „pete albe” în zonele reglementate comportament nespecificat implementari. Cu toate acestea, să subliniem acest lucru din nou, aderarea la standardul POSIX este un element obligatoriu al disciplinei moderne de dezvoltare a sistemelor de aplicații.