Puncte:-2

De ce un sistem de operare ar dori să fie compatibil POSIX?

drapel de

Care este marea problemă în jurul POSIX și cum interferează în utilizarea generală a unui sistem de operare?

joeqwerty avatar
drapel cv
Cum intervine, mai exact? Nu înțeleg ce întrebi.
Ricardo Silva avatar
drapel de
@joeqwerty întrebarea este mai degrabă, dacă un sistem de operare nu este compatibil POSIX, care sunt consecințele, interferează în utilizarea sistemului de operare sau nu face nicio modificare?
drapel jm
Dacă aplicația dvs. necesită conformitate POSIX, atunci aceasta va fi afectată. Dacă scrieți o anumită aplicație pentru un anumit sistem de operare, atunci dificultatea poate varia. Conformitatea POSIX poate face aplicațiile mai portabile.
Ricardo Silva avatar
drapel de
@doneal24 mulțumesc mult pentru răspuns... de fapt, marea problemă este că, dacă scrieți o aplicație pentru a rula pe un sistem de operare compatibil POSIX, este posibil (sau nu?) să trebuiască să scrieți și o aplicație care este compatibilă, altfel va afecta rularea acelei aplicații, corect?
drapel jm
Nu. Atâta timp cât urmați API-urile furnizate de sistemul de operare, sunteți bine. Există multe standarde pe care le puteți urma.De exemplu, biblioteca GNU C este compatibilă cu ISO C11, POSIX.1-2008, BSD și mai multe API-uri specifice sistemului de operare. Link obligatoriu [xkcd](https://xkcd.com/927).
Puncte:1
drapel jo

O analogie rezonabilă ar fi să înveți să conduci. Există reguli, protocoale de urmat și standarde de calitate și robustețe atât în ​​mașină, cât și în șofer.

  • Mașinile au volan.
  • Unele au o treaptă manuală, iar altele sunt automate.
  • Conduceți (în majoritatea țărilor) pe partea dreaptă a unui drum.
  • Semnele oferă instrucțiuni despre cum să conduceți pe un anumit drum.
  • Unitățile de măsură sunt (mai ales) în km/h.
  • Combustibilul luat în vehicul este de un anumit amestec și standard.
  • Șoferii sunt instruiți și se așteaptă să respecte un anumit standard de conducere.

Acum, ați putea sugera (totuși nu sunt atât de cultivat și îmi dau o licență poetică) că drumurile europene sunt „conforme cu standardele” între ele, astfel încât, dacă învățați să conduceți în Spania, puteți conduce oriunde în Europa, posibil cu aceeași mașină sau cel puțin poate cu o mașină diferită, în care toate anexele și bastoanele sunt într-un loc în care te-ai putea aștepta să fie.

Ați putea, de exemplu, să inventați un mod complet nou de a conduce, poate cu semnalizare total diferită, pe care să conduceți pe ambele părți ale drumului, să folosiți un joystick pentru a conduce și să vă măsurați distanța în coți pe oră, totuși, migrând la acel sistem de la cel cu care te-ai obișnuit necesită o barcă întreagă de mai mult efort.

POSIX se potrivește într-un fel unui model similar, dar în loc de mașini, drumuri, viteze și destinații se referă la intrări, mesaje, programe, ieșiri și caracteristici.

În general, cel mai bine este (ca programator și utilizator) să aveți la dispoziție anumite reguli care guvernează caracteristicile/funcțiile și intrările/ieșirile, așa că puteți scrie un program care se potrivește acestor standarde și apoi, fără prea mult efort, să reconstruiți același program pe care să îl rulați. un sistem diferit, care preia și aceleași intrări/ieșiri.

De exemplu, apelurile de sistem Linux citit și scrie sunt conforme cu posix. Ei preiau anumite intrări, într-o anumită ordine și returnează anumite ieșiri cu reguli care guvernează ce ar putea fi sau reprezenta ieșirile în anumite circumstanțe.

Puteți scrie un program pe Linux care deschide două fișiere, folosește citit și scrie pentru a transfera date între ele și le închide din nou. Apoi, eventual, reconstruiți-l pentru a rula și pe un Mac fără a fi nevoie să rescrieți codul sursă de bază.

De asemenea, puteți face exact aceeași operațiune -- mult mai rapid -- prin deschiderea a două fișiere, folosind Trimite fișier apel de sistem pentru a muta datele între ele și a le închide din nou (cu excepția cazului în care utilizați nuclee foarte, foarte vechi). Problema aici este că Trimite fișier apel de sistem nu este Compatibil cu POSIX -- nu puteți fi garantat că un astfel de apel de sistem există în mod corespunzător pe sistem pentru a face ceea ce doriți.

De fapt, dacă consultați pagina de manual Mac pentru Trimite fișier apel, deși se numește aceeași operațiune, necesită un set diferit de parametri și oferă caracteristici diferite (de asemenea, din punct de vedere tehnic, nu îl puteți folosi pentru a copia de pe un fișier de pe disc pe altul de pe disc).

Prin urmare, nu veți putea rula un program folosind Linux Trimite fișier previzibil pe un sistem, cel puțin fără a schimba programul sau a utiliza alt nivel de compatibilitate.

Acesta este motivul pentru care oamenilor le pasă de POSIX. Evită reinventarea roții și vă permite potențial să migrați la un sistem de operare general mai bun, „compatibil cu Posix”, sau cel puțin să vă concentrați pe livrarea produsului, mai degrabă decât să vă faceți griji cu privire la calitatea materialelor folosite pentru a construi fundația.

Am omis o mare parte din ipotezele când POSIX nu este cu adevărat urmat în totalitate și în totalitate chiar și de cei care pretind că sistemul lor este compatibil cu POSIX, dar asta este principiul conceptului.

Un ultim punct pe care aș vrea să-l clarific. Dacă codificați la cel mai mic numitor comun al unui standard (cum ar fi POSIX), veți pierde câștiguri mari de performanță pe care altfel le-ați fi putut profita folosind extensii non-standard pe sistemul de operare pentru care codificați.

Deci, este, de asemenea, o alegere de proiectare, dacă doriți să obțineți performanță înaltă/performanță ridicată, atunci s-ar putea să nu codificați pentru conformitatea cu POSIX.

Deși, angajarea unui programator care știe să programeze „posixal” (știe cum deschis, citit, scrie pthread și închide funcționează în POSIX) va fi mult mai simplu decât angajarea pe cineva care doar programează la un standard ciudat nefolosit.

Deci nu este vorba doar de performanță (mașini), ci și de potențialul de adaptare (abilitatea lor de a conduce mașina).

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.