¿Cuál es el significado de "POSIX"?

Respuestas:

622

POSIX es una familia de estándares, especificada por el IEEE , para aclarar y uniformar las interfaces de programación de aplicaciones (y problemas auxiliares, como las utilidades de shell de línea de comandos) proporcionadas por los sistemas operativos Unix-y. Cuando escribe sus programas para confiar en los estándares POSIX, puede estar seguro de poder portarlos fácilmente entre una gran familia de derivados de Unix (¡incluido Linux, pero no limitado a él!); si usa alguna API de Linux que no está estandarizada como parte de Posix, tendrá más dificultades si quiere portar ese programa o biblioteca a otros sistemas Unix-y (por ejemplo, MacOSX) en el futuro.

Alex Martelli
fuente
34
No, el estándar está en un nivel API: cada llamada especificada se puede implementar en el núcleo o en la biblioteca C en términos de otra llamada, y eso está bien para Posix (y para sus programas también ;-). MacOSX es compatible con Posix, consulte devworld.apple.com/leopard/overview/osfoundations.html . Para Windows, consulte en.wikipedia.org/wiki/POSIX#POSIX_for_Windows : el cumplimiento de Posix se incluye actualmente solo en las ediciones Enterprise y Ultimate (¡no en las más baratas! -), aunque puede obtener parcialmente con Cygwin, en.wikipedia. org / wiki / Cygwin .
Alex Martelli el
23
Su comentario es defectuoso, ya que la participación de mercado de Microsoft en computadoras de escritorio, al menos, lo convierte en "lo que sigue el mundo".
Jed Smith el
29
Creo que lo que significan las garras es que Microsoft no pone mucho esfuerzo en ser interoperable con otras plataformas.
mipadi el
12
@deltaray abraza, extiende y extingue . MS java (no estándar java.util. Java.security, java.io, java.lang y java.awt), Internet Explorer (casi dijo 'exploder') y .NET (sí, sé que han lanzado una versión parcial fuente para .NET, pero su licencia es restrictiva y todavía NO es un puerto de Linux. Mono está incompleto). Además, las patentes exFAT . Tienes toda la razón.
Wyatt8740
25
Microsoft's market share on desktops, at least, makes it "what the world follows"- Interesante observar cuánto han cambiado las cosas desde este comentario de 2009 :)
GMA
516

Las cosas más importantes que POSIX 7 define

  1. API C

    Extiende enormemente ANSI C con cosas como:

    • más operaciones de archivo: mkdir, dirname, symlink, readlink, link(enlaces duros), poll(), stat, sync,nftw()
    • procesan y los hilos: fork, execl, wait, pipe, semaphors sem_*, la memoria compartida ( shm_*), kill, parámetros de programación ( nice, sched_*), sleep, mkfifo,setpgid()
    • redes: socket()
    • gestión de memoria: mmap, mlock, mprotect, madvise,brk()
    • utilidades: expresiones regulares ( reg*)

    Esas API también determinan los conceptos de sistema subyacentes de los que dependen, por ejemplo, forkrequiere un concepto de proceso.

    Muchas llamadas al sistema Linux existen para implementar una función de API específica POSIX C y hacer compatible con Linux, por ejemplo sys_write, sys_read, ... Muchas de esas llamadas al sistema también tienen extensiones específicas de Linux sin embargo.

    Implementación principal de escritorio de Linux: glibc, que en muchos casos solo proporciona una envoltura superficial para las llamadas al sistema.

  2. Utilidades CLI

    Por ejemplo: cd, ls, echo, ...

    Muchas utilidades son interfaces directas de shell para una función correspondiente de C API, por ejemplo mkdir.

    Mayor Linux aplicación de escritorio: GNU coreutils para los más pequeños, proyectos GNU separadas para los grandes: sed, grep, awk, ... Algunas de las utilidades de la CLI son ejecutadas por Bash como muebles empotrados .

  3. Lenguaje de shell

    P.ej, a=b; echo "$a"

    Implementación principal de escritorio de Linux: GNU Bash .

  4. Variables de entorno

    Por ejemplo: HOME, PATH.

    PATH Se especifica la semántica de búsqueda , incluida la forma en que las barras impiden la PATHbúsqueda .

  5. Estado de salida del programa

    ANSI C dice 0o EXIT_SUCCESSpara el éxito, EXIT_FAILUREpara el fracaso, y deja el resto de la implementación definida.

    POSIX agrega:

  6. Expresión regular

    Hay dos tipos: BRE (Básico) y ERE (Extendido). Basic está en desuso y solo se mantiene para no romper las API.

    Esos son implementados por las funciones de la API de C y se usan en todas las utilidades de la CLI, por ejemplo, grepacepta BRE de forma predeterminada y ERE con -E.

    P.ej: echo 'a.1' | grep -E 'a.[[:digit:]]'

    Implementación principal de Linux: glibc implementa las funciones bajo regex.h que programas como greppueden usarse como backend.

  7. Estructura de directorios

    Por ejemplo: /dev/null,/tmp

    El FHS de Linux extiende mucho POSIX.

  8. Nombres de archivo

    • / es el separador de ruta
    • NUL No puede ser usado
    • .es cwd, ..los padres
    • nombres de archivos portátiles
      • utilizar como máximo 14 caracteres y 256 para la ruta completa
      • solo puede contener: a-zA-Z0-9._-

    Ver también: ¿qué es el cumplimiento posix para el sistema de archivos?

  9. Convenciones de API de utilidad de línea de comando

    No obligatorio, utilizado por POSIX, pero casi en ningún otro lugar, especialmente en GNU. Pero es cierto, es demasiado restrictivo, por ejemplo, solo banderas de una letra (por ejemplo -a), no hay versiones largas de doble guión (por ejemplo --all).

    Algunas convenciones ampliamente utilizadas:

    • - significa stdin donde se espera un archivo
    • --termina banderas, por ejemplo, ls -- -lpara enumerar un directorio llamado-l

    Ver también: ¿Hay estándares para los parámetros y argumentos de la línea de comandos de Linux?

  10. "POSIX ACL" (Listas de control de acceso), por ejemplo, tal como se usa como backend setfacl.

    Esto se retiró pero se implementó en varios sistemas operativos, incluso en Linux consetxattr .

¿Quién se ajusta a POSIX?

Muchos sistemas siguen a POSIX de cerca, pero pocos están realmente certificados por Open Group, que mantiene el estándar. Los certificados notables incluyen:

  • OS X (Apple) X significa 10 y UNIX. Fue el primer sistema POSIX de Apple, lanzado alrededor de 2001. Vea también: ¿Es OSX un sistema operativo POSIX?
  • AIX (IBM)
  • HP-UX (HP)
  • Solaris (Oracle)

La mayoría de las distribuciones de Linux son muy compatibles, pero no están certificadas porque no quieren pagar la verificación de cumplimiento. El K-UX de Inspur y el EulerOS de Huawei son dos ejemplos certificados.

La lista oficial de sistemas certificados se encuentra en: https://www.opengroup.org/openbrand/register/ y también en la página wiki .

Ventanas

Windows implementó POSIX en algunas de sus distribuciones profesionales.

Como era una característica opcional, los programadores no podían confiar en ella para la mayoría de las aplicaciones de usuario final.

El soporte quedó obsoleto en Windows 8:

En 2016 se anunció una nueva API oficial similar a Linux llamada "Windows Subsystem for Linux". Incluye llamadas al sistema Linux, ejecución ELF, partes del /procsistema de archivos, Bash, GCC, (¿TODO probablemente glibc?), apt-getY más: https://channel9.msdn.com/Events/Build/2016/P488, así que creo que permitirá que Windows ejecute mucho, si no todo, POSIX. Sin embargo, se centra en desarrolladores / despliegue en lugar de usuarios finales. En particular, no había planes para permitir el acceso a la GUI de Windows.

Descripción histórica de la compatibilidad oficial de Microsoft POSIX: http://brianreiter.org/2010/08/24/the-sad-history-of-the-microsoft-posix-subsystem/

Cygwin es un conocido proyecto de terceros de la GPL que "proporciona una funcionalidad sustancial de API POSIX" para Windows, pero requiere que "reconstruya su aplicación desde el origen si desea que se ejecute en Windows". MSYS2 es un proyecto relacionado que parece agregar más funcionalidades además de Cygwin.

Androide

Android tiene su propia biblioteca C (Bionic) que no es totalmente compatible con POSIX a partir de Android O: ¿Es compatible con Android POSIX?

Nivel de bonificación

La base estándar de Linux amplía aún más POSIX.

Utilice los índices sin marcos, son mucho más legibles y buscables: http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html

Obtenga una versión completa comprimida de las páginas HTML para grepping: ¿Dónde está la lista de las funciones de la API POSIX C?

Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
fuente
18
Ejemplos fantásticos, si tuviera una definición así como la respuesta aceptada, esta sería la respuesta principal.
Marc
8
@ Marc gracias! Intento no repetir lo que se dice en otras respuestas ya que las personas probablemente ya las hayan leído y para evitar la duplicación ;-) Este es un dilema conocido: meta.stackoverflow.com/questions/305645/…
Ciro Santilli 郝海东 冠状 病 六四事件 法轮功
1
Es una buena idea explicar qué cubre POSIX (y qué no).
sleske
44
En todas partes de la literatura, aparecen referencias al "cumplimiento de POSIX", y la definición típica de POSIX que la gente encuentra es "un conjunto de estándares para la interoperabilidad entre los sistemas operativos tipo Unix". Aunque útil, esta definición deja muchas dudas, especialmente con respecto a las características que se espera que interoperen. Claro, puedes ir y leer toda la especificación POSIX para profundizar en los detalles (y dedicar mucho tiempo a eso). Pero, esta respuesta proporciona el resumen muy necesario para obtener una visión general del alcance de POSIX. ¡Un agradecimiento especial a Ciro por tomarse el tiempo de escribirlo!
ARX
También podría ser bueno agregar algunas garantías de Posix sobre tipos enteros. No sé exactamente qué es y qué no se especifica, pero sé que, como mínimo, Posix requiere la existencia de uint8_t, uint16_t, uint32_t y los tipos con signo correspondientes. No estoy seguro de si garantiza que tipos como "int" tienen potencias de dos tamaños y que un sistema no hará algo desagradable como tener un "int" con 32 bits de valor, 1 bit de signo y 31 bits de relleno [así que incrementar un uint32_t podría producir UB]; Si tiene el Estándar a la mano, podría ser bueno decir qué es y qué no está garantizado a ese respecto.
supercat
74

POSIX es:

POSIX (pronunciado / ˈpɒzɪks /) o "Interfaz del sistema operativo portátil [para Unix]" 1 es el nombre de una familia de estándares relacionados especificados por el IEEE para definir la interfaz de programación de aplicaciones (API), junto con interfaces de shell y utilidades para software compatible con variantes del sistema operativo Unix, aunque el estándar puede aplicarse a cualquier sistema operativo.

Básicamente, se trataba de un conjunto de medidas para aliviar el dolor del desarrollo y el uso de diferentes sabores de UNIX al tener una API y utilidades (en su mayoría) comunes. El cumplimiento limitado de POSIX también se extendió a varias versiones de Windows.

cletus
fuente
1. Quiere decir que POSIX dice que todos los sistemas operativos * nix (kernels) deberían tener al menos este conjunto de llamadas al sistema. ¿Correcto? 2. ¿WINDOWS / MAC sigue a POSIX? Si / Si no, ¿WINDOWS (95,98,2000, xp, vista, 7) sigue algún estándar común (puede ser su propio propietario)? En otras palabras, POSIX en Microsoft world ==?
garras
1
Básicamente, "fue" un conjunto de medidas para aliviar el dolor del desarrollo. ¿¿FUE??
garras
55
Me preguntan por el uso de la palabra fue , también, pero es discutible. Para responder a sus preguntas: (1) no, POSIX tiene absolutamente nada que ver con el núcleo, solo describe cómo debe funcionar; (2) OS X es BSD y es bastante compatible con POSIX, pero hay áreas grises. Windows 2008 está más cerca de la queja POSIX; no hay equivalente de POSIX en el mundo de Microsoft.
Jed Smith el
1
@claws: No quiero ensuciar el área bajo la respuesta de cletus ... pero. Vinculaba POSIX.1-2008 en mi respuesta ... allí mismo.
Jed Smith el
3
@Jed Smith, no hay áreas grises en términos de cumplimiento de Mac OS X; Mac OS X está certificado conforme con la especificación Single UNIX v3, un estándar del cual POSIX es un subconjunto.
Michael Aaron Safyan el
43

Permítanme dar la grosera explicación "no oficial".

POSIX es un conjunto de estándares que intenta distinguir los sistemas "UNIX" y similares a UNIX de aquellos que son incompatibles con ellos. Fue creado por el gobierno de los Estados Unidos con fines de adquisición. La idea era que las adquisiciones federales de los EE. UU. Necesitaran una forma de especificar legalmente los requisitos para varios tipos de ofertas y contratos de una manera que pudiera usarse para excluir sistemas en los que una base de código existente o un personal de programación NO serían portátiles.

Dado que POSIX se escribió post facto ... para describir un conjunto de sistemas competitivos más o menos similares ... NO se escribió de una manera que pudiera implementarse.

Entonces, por ejemplo, el NT de Microsoft fue escrito con suficiente conformidad POSIX para calificar para algunas ofertas ... a pesar de que el subsistema POSIX era esencialmente inútil en términos de portabilidad práctica y compatibilidad con sistemas UNIX.

Varias otras normas para UNIX se han escrito a lo largo de las décadas. Cosas como el SPEC1170 (especificó mil ciento setenta llamadas de función que tuvieron que implementarse de manera compatible) y varias encarnaciones del SUS (Especificación UNIX única).

En su mayor parte, estos "estándares" han sido inadecuados para cualquier aplicación técnica práctica. La mayoría existen por argumentación, disputas legales y otras razones disfuncionales.

Jim Dennis
fuente
1
Entonces, ¿cómo es que Linux implementa la mayoría de POSIX, incluidas muchas de las extensiones?
ninjalj
8
@ninjalj: Linux fue escrito para implementar un conjunto práctico de funciones similares a UNIX. Hacerlo mientras se ajusta a POSIX tiene mucho sentido. Sin embargo, mi punto fue que POSIX no se creó como una especificación para implementar nuevos sistemas operativos ... se creó como una forma para que el personal de adquisiciones del gobierno de EE. UU. Distinguiera entre los que calificaban para ciertas categorías en las ofertas de aquellos que no lo harían . El enfoque en Linux es proporcionar las características utilizables de una manera razonablemente compatible, robusta y eficiente. POSIX no es un accidente en el camino.
Jim Dennis
3
¡Muy ingenioso de su parte afirmar que el POSIX fue escrito post facto! Ese es el sello distintivo de una buena organización de desarrollo de estándares (SDO) donde el consenso no se logra hasta que exista al menos una implementación conforme.
fpmurphy
44
@fpmurphy: la creación de una especificación ex post facto basada en una o dos implementaciones interoperables es la norma para los estándares de protocolo de red IETF ... que interactúan sobre acoplamientos sueltos intencionalmente. No ha sido un proceso exitoso para la estandarización del sistema operativo. La API entre los programas y el sistema (kernel o microkernel y sus servidores del subsistema) está mucho más estrechamente acoplada que los clientes y servidores o pares en las redes. (No digo que sea imposible; simplemente señalar que hay diferencias y que la historia no ha demostrado que sea prometedor).
Jim Dennis
2
Los esfuerzos del IEEE para especificar POSIX en 1985 fueron impulsados ​​por el gobierno de los EE. UU. Investigue un poco, lea un libro de historia o algo así.
rustyx
29

POSIX es un estándar para sistemas operativos que supuestamente facilitaría la escritura de software multiplataforma. Es un gran problema en el mundo de Unix.

Hank Gay
fuente
15
No solo "se supone que hace" que sea más fácil escribir código multiplataforma, sino que también hace que sea más fácil escribir código multiplataforma. La única excepción es Windows, porque Microsoft piensa que de alguna manera es mejor que todos los demás y no necesita cumplir. Sin embargo, predigo que esto funcionará en su contra, especialmente a medida que Mac y Linux ganan más participación en el mercado. Si realmente son para los "desarrolladores, desarrolladores, desarrolladores", se darán cuenta de que los desarrolladores quieren el cumplimiento de UNIX.
Michael Aaron Safyan el
Según lo que he escuchado de personas que trabajan con él mucho más de cerca que nunca, puede haber facilitado las cosas, pero ciertamente no fue suficiente para la impresión de escribir una sola vez, ejecutar cualquier POSIX más las personas se enteran cuando escuchan que es un "estándar" para los sistemas operativos.
Hank Gay el
66
No piensan que son "mejores que los demás"; ellos saben que son más grandes que todos los demás. Es por eso que cambiarán su tono a medida que pierdan participación de mercado. No es exclusivo de ellos, por ejemplo, Netscape comenzó a preocuparse mucho más por los estándares web cuando ya no eran los más populares.
Ken
Escribir una aplicación para usar solo las API POSIX hace que sea mucho más fácil portar entre diferentes sistemas operativos Unix y similares a Unix. Sin embargo, es un estándar de consenso de denominador común más bajo, por lo que las utilidades o aplicaciones que son específicas del sistema operativo o del hardware generalmente requerirán cierta reescritura.
fpmurphy
2
@Ken y por eso no deberíamos dejar que el cromo de Google se vuelva demasiado cómodo.
Wyatt8740
29

POSIX es un conjunto de estándares presentados por IEEE y The Open Group que describe cómo funcionaría un Unix ideal. Los programadores, los usuarios y los administradores pueden familiarizarse con el documento POSIX y esperar que un Unix de reclamo POSIX proporcione todas las instalaciones estándar mencionadas.

Dado que cada Unix hace las cosas de manera un poco diferente: Solaris, Mac OS X, IRIX, BSD y Linux tienen sus peculiaridades, POSIX es especialmente útil para aquellos en la industria, ya que define un entorno estándar para operar. Por ejemplo, la mayoría de las funciones en la biblioteca C se basan en POSIX; un programador puede, por lo tanto, usar uno en su aplicación y esperar que se comporte igual en la mayoría de los Unices.

Sin embargo, las áreas divergentes de Unix suelen ser el foco, en lugar de las estándar.

Lo mejor de POSIX es que puedes leerlo tú mismo:

The Open Group Base Especificaciones Número 7

El número 7 se conoce como POSIX.1-2008, y hay cosas nuevas allí; sin embargo, Google-fu para POSIX.1 y eso le permitirá ver toda la historia detrás de lo que es Unix.

Jed Smith
fuente
2
Creo que está utilizando el término "UNIX" incorrectamente. UNIX ahora se refiere a la Especificación UNIX única, y cualquier sistema operativo UNIX es un sistema operativo que se ajusta a la Especificación UNIX única. ¿Quizás te refieres a UNIX?
Michael Aaron Safyan el
8
@Michael: Teniendo en cuenta tus comentarios en otras respuestas, obviamente eres una persona muy polarizada con opiniones que no son exactamente constructivas. Este comentario específico es muy pedante, y mi significado se transmitió independientemente de la elección de una etiqueta con la que no esté de acuerdo. Además, Windows es compatible con POSIX en las versiones de gama alta. Respira y da un paso atrás, por favor.
Jed Smith el
1
@Jed Smith, con fuertes opiniones a un lado, la implicación de la publicación es que algunos sistemas operativos que están certificados como compatibles con UNIX no lo son ... entonces, creo que es justo decir que eso es engañoso. Además, con respecto a Windows, siempre que haya ediciones que no cumplan, los desarrolladores no pueden confiar en POSIX cuando se dirigen a la plataforma de Windows, lo que niega todo el propósito de tener POSIX.
Michael Aaron Safyan
Unix es un sistema operativo. UNIX es una marca de The Open Group. Los sistemas que están certificados para los perfiles de marca UNIX95, UNIX98 o UNIX03, cuya conformidad con una versión particular de la Especificación UNIX única constituye la mayoría de los requisitos de marca, pueden usar el término UNIX.
fpmurphy
6

En 1985, personas de empresas de toda la industria informática se unieron para desarrollar el estándar POSIX (Interfaz de sistema operativo portátil para entornos informáticos), que se basa en gran medida en la definición de interfaz del sistema V de UNIX (SVID) y otros esfuerzos de estandarización anteriores. Estos esfuerzos fueron impulsados ​​por el gobierno de los EE. UU., Que necesitaba un entorno informático estándar para minimizar sus costos de capacitación y adquisición. Lanzado en 1988, POSIX es un grupo de estándares IEEE que definen las interfaces API, shell y utilidades para un sistema operativo. Aunque está dirigido a sistemas similares a UNIX, los estándares pueden aplicarse a cualquier sistema operativo compatible. Ahora que estos estándares han ganado aceptación, los desarrolladores de software pueden desarrollar aplicaciones que se ejecutan en todas las versiones conformes de UNIX, Linux,

Del libro: una guía práctica para Linux

Koray Tugay
fuente
4

Posix es más como un sistema operativo, es un "estándar del sistema operativo". Puede imaginarlo como un sistema operativo imaginario, que en realidad no existe, pero tiene una documentación. Estos documentos son el "estándar posix", definido por el IEEE, que es la gran organización estándar de los Estados Unidos. Los sistemas operativos que implementan esta especificación son "compatibles con Posix".

Las regulaciones gubernamentales prefieren soluciones compatibles con Posix en sus inversiones, por lo que cumplir con Posix tiene una ventaja financiera significativa, particularmente para las grandes empresas de TI de los Estados Unidos.

La recompensa de que un sistema operativo sea totalmente compatible con posix, es una garantía de que compilará y ejecutará todas las aplicaciones compatibles con Posix sin problemas.

Linux es el más conocido. OSX, Solaris, NetBSD y Windows NT también juegan aquí. Free- y OpenBSD son solo "casi" compatibles con Posix. El cumplimiento posix de WinNT es solo una pseudo-solución para evitar esta regulación gubernamental anterior.

peterh - Restablece a Monica
fuente
3

Este estándar proporciona una base común para sistemas operativos tipo Unix. Especifica cómo debería funcionar el shell, qué esperar de comandos como ls y grep, y una serie de bibliotecas C que los autores de C pueden esperar tener disponibles.

Por ejemplo, las tuberías que usan los usuarios de la línea de comandos para unir los comandos se especifican aquí en detalle, lo que significa que la función popen (tubería abierta) de C es el estándar POSIX, no el estándar ISO C.

Koray Tugay
fuente
3

POSIX significa Interfaz de sistema operativo portátil y es un estándar IEEE diseñado para facilitar la portabilidad de la aplicación. POSIX es un intento de un consorcio de proveedores para crear una única versión estándar de UNIX.

Farruh Habibullaev
fuente
0

POSIX define un conjunto de estándares para un sistema operativo o un programa. El objetivo es escribir un nuevo software que sea compatible con sistemas similares a UNIX.

Por ejemplo, un programa que se ejecuta en Linux también se puede compilar y ejecutar en otros sistemas similares a UNIX como Solaris, HP-UX y AIX, etc.

Los ejemplos más populares son GNU Bashel 100% de cumplimiento y gawkutilidad POSIX .

sras
fuente
0

Posix rige la interoperabilidad, la portabilidad y en otras áreas, como el uso y el mecanismo de la bifurcación, los permisos y los estándares del sistema de archivos como / etc, / var, / usr, etc. . Por lo tanto, cuando los desarrolladores escriben un programa bajo un sistema compatible con Posix como, por ejemplo, Linux, generalmente, no siempre, se garantiza que se ejecute en otro sistema compatible con Posix, como el sistema AIX de IBM u otras variantes comerciales de Unix. Es bueno tener Posix como tal, ya que facilita el desarrollo de software para la máxima portabilidad por la que se esfuerza. Espero que esta respuesta tenga sentido.

Gracias a Jed Smith & Tinkertim por señalar mi error: ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ :(

t0mm13b
fuente
Los estándares del sistema de archivos se manejan fuera de POSIX.
Jed Smith el
Está confundiendo POSIX con cosas como LSB (Linux Standard Base). Dos (en su mayoría) sistemas operativos compatibles con POSIX serían FBSD y Linux, pero ambos tienen una organización de sistema de archivos bastante diferente e instalaciones de biblioteca predeterminadas.
Tim Post
0

Una especificación (plan) sobre cómo hacer que un sistema operativo sea compatible con el sistema operativo UNIX tardío (¡que Dios lo bendiga!). Esta es la razón por la cual macOS y GNU / Linux tienen líneas de comando de terminal, GUI, bibliotecas, etc. muy similares, porque ambos fueron diseñados de acuerdo con el plan POSIX.

POSIX no les dice a los ingenieros y programadores cómo codificar sino qué codificar.

MCH
fuente
-1

Algunos hechos sobre POSIX que no son tan brillantes.

POSIX también es la interfaz de llamada del sistema o API, y tiene casi 30 años.

Fue diseñado para el acceso de datos en serie al almacenamiento local , utilizando computadoras individuales con CPU individuales.

La seguridad no era una preocupación importante en POSIX por diseño, lo que condujo a numerosos ataques de condición de carrera a lo largo de los años y obligó a los programadores a evitar estas limitaciones.

Todavía se están descubriendo errores graves, errores que podrían haberse evitado con un diseño de API POSIX más seguro.

POSIX espera que los usuarios emitan una llamada síncrona a la vez y esperen sus resultados antes de emitir la siguiente. Los programadores de hoy esperan emitir muchas solicitudes asíncronas a la vez para mejorar el rendimiento general.

Esta API síncrona es particularmente mala para acceder a objetos remotos y en la nube, donde la alta latencia es importante.

prosti
fuente
La API de núcleo síncrono no necesita significar procesos de subproceso único y E / S serializadas. Tampoco tiene nada que ver con las máquinas SMP. Estos no tienen relación alguna. (Aunque estoy de acuerdo que la API de sincronización del núcleo no es óptima, pero no tan fuertemente como en su entrada parece.)
Peterh - Restablecer Mónica