¿Cuáles son las diferencias entre la filosofía de Unix y la de Windows?

Realmente depende de cómo se defina «sistema operativo». Para mí, esto es lo que destaca.

Para los usuarios finales que ejecutan una aplicación como un navegador web, que podrían definir un sistema operativo como una interfaz de usuario, una conexión de red y un sistema de archivos, podría decirse que no hay mucha diferencia. Por ejemplo, lanzar, interactuar y salir de Google Chrome en sistemas Unix es muy parecido a hacer lo mismo en Google Chrome en Windows.

Para un desarrollador, especialmente aquellos que programan en C, hay bastante diferencia:

  • La noción de procesos, cómo se crean, la comunicación entre procesos y cómo un proceso ve e interactúa con el sistema de archivos son todos diferentes.
  • «Todo es un archivo» en Unix, mientras que se podría argumentar que «todo es un recurso» en Windows.
  • Las API del sistema Unix son POSIX, mientras que en Windows son propietarias (Win32).
  • Las aplicaciones de Windows están dominadas en su mayor parte por una estructura que sitúa la interfaz de usuario en primer plano, con la mayor parte de la acción sucediendo en un bucle de eventos impulsado por la interacción del usuario y los mensajes de la capa de interfaz de usuario, mientras que las aplicaciones clásicas de Unix están dominadas por el concepto de lectura de flujos de bytes a través de stdin, escritura de flujos de bytes a stdout, y el uso de tuberías para conectar la salida de una aplicación a la entrada de otra. Esta es una visión simplificada, por supuesto, y hay un gran número de aplicaciones de interfaz de usuario de Unix que podría ser similar en la estructura de las aplicaciones de Windows (aunque el uso de diferentes APIs y modelos de eventos), pero si nos fijamos en las manifestaciones clásicas de Unix y Windows, se verá esta distinción entre las aplicaciones que tienen un enfoque en los flujos de entrada y salida de caracteres en Unix y una estructura de aplicación basada en la interfaz de usuario, impulsada por eventos en Windows.
  • Los controladores de dispositivos y el desarrollo del kernel son también un poco diferentes. En Unix, realmente no hay una API del kernel estándar como la que hay con POSIX en la tierra de usuario, aunque hay una estructura básica impuesta por POSIX en la que los controladores de dispositivos se interconectan desde la tierra de usuario usando llamadas open(), read(), write(), ioctl() y close() (por lo que los puntos de entrada al menos son similares y algo predecibles). El desarrollo del núcleo en Windows es totalmente diferente. Sin embargo, si usted toma una vista de 30.000 pies, tanto Windows como Unix son, al menos en teoría, similares en términos de sus responsabilidades (la gestión de los recursos del sistema, y la prestación de los procesos y las formas de gestionar sus tiempos de vida y ejecución).
  • Note que un desarrollador de secuencias de comandos (python, ruby, perl, etc.) en gran medida considera que estos sistemas son los mismos, porque estos lenguajes y sus bibliotecas / módulos en su mayoría abstraen las diferencias de la plataforma.

.