El & # 039; Unix Way & # 039;

 a la manera de Unix

Probablemente no debería, pero habitualmente me asombra lo mucho que vivimos en la Web. Incluso yo me encuentro con las botas enteras sin usar nada más que el navegador web. Con tal énfasis en los servicios basados ​​en la Web, uno puede olvidarse de apreciar el humilde sistema operativo.

Dicho esto, descuidamos nuestro sistema operativo a riesgo de subutilizar radicalmente las increíbles herramientas que permite que nuestro dispositivo sea.

La mayoría de nosotros solo entramos en contacto con una, o posiblemente ambas, de dos familias de sistemas operativos: "House Windows" y "House Practically Everything". Este último es más conocido como Unix.

Windows ha hecho grandes avances en usabilidad y seguridad, pero para mí nunca puede acercarse a Unix y su progenie. Aunque tiene más de 50 años, Unix tiene una simplicidad, elegancia y versatilidad que no tiene rival en ninguna otra clase de SO.

Esta columna es mi exégesis de los elementos de Unix que personalmente encuentro más significativos. Los doctores en ciencias de la computación reconocerán la inmensa dificultad de encapsular lo que hace especial a Unix. Así que yo, decididamente menos instruido, ciertamente no podré acercarme. Sin embargo, espero que expresar mi admiración por Unix pueda despertar la suya.

La ​​raíz del árbol genealógico

Si no ha oído hablar de Unix, es sólo porque sus descendientes no tienen todos el mismo parecido con él, y definitivamente no comparten un nombre. MacOS es una rama lejana que, si bien podría decirse que es la menos parecida a sus antepasados, todavía incorpora suficientes rasgos rudimentarios de Unix para trazar un linaje claro.

Las tres ramas principales de BSD, notablemente FreeBSD, son las más cercanas a la fórmula de Unix, y continúan formando la columna vertebral de algunos de los sistemas informáticos más importantes del mundo. Una buena parte de los servidores del mundo, hardware militar computarizado y consolas PlayStation son todos algún tipo de BSD bajo el capó.

Finalmente, está Linux. Si bien no ha conservado su herencia Unix tan puramente como BSD, Linux es el portador de la antorcha Unix más prolífico y visible. Una pluralidad, si no la absoluta mayoría, de los servidores del mundo son Linux. Además de eso, casi todos los dispositivos integrados ejecutan Linux, incluidos los dispositivos móviles Android.

¿De dónde vino este indispensable sistema operativo?

Para dar una lección de historia lo más condensada posible, Unix fue creado por un conjunto de las mejores mentes en ciencias de la computación en Bell Labs en 1970. En su tarea, se fijaron objetivos simples. Primero, querían un sistema operativo que pudiera funcionar sin problemas en cualquier hardware que pudieran encontrar, ya que, irónicamente, tenían dificultades para encontrar computadoras con las que trabajar en Bell. También querían que su sistema operativo permitiera a varios usuarios iniciar sesión y ejecutar programas al mismo tiempo sin chocar entre sí. Finalmente, querían que el sistema operativo fuera simple de administrar y organizado intuitivamente. Después de adquirir dispositivos del departamento vecino, que tenía un excedente, el equipo finalmente creó Unix.

Unix fue adoptado inicialmente, y enérgicamente, por los departamentos universitarios de informática con fines de investigación. La Universidad de Illinois en Champaign-Urbana y la Universidad de California Berkeley lideraron la carga, y esta última llegó a desarrollar su propia marca de Unix llamada Berkeley Software Distribution, o BSD.

Finalmente, AT&T, el sucesor de Bell , perdió interés en Unix y lo abandonó a principios de los 90. Poco después de esto, BSD ganó popularidad y AT&T se dio cuenta del grave error que había cometido. Después de lo que probablemente sigue siendo la batalla legal de la industria tecnológica más prolongada y agresiva de todos los tiempos, los desarrolladores de BSD ganaron la custodia exclusiva de la línea principal de facto de Unix. BSD ha sido el estadista más antiguo de Unix desde entonces, y protege una de las versiones más puras y ampliamente disponibles de Unix.

Estructura organizativa

Mi concepción de Unix y el enfoque general de la informática que lo acompaña es lo que llamo el "Modo Unix". Es la intersección de la estructura Unix y la filosofía Unix.

Para comenzar con el lado estructural de la ecuación, consideremos el sistema de archivos. El diseño es un árbol, con cada archivo comenzando en la raíz y ramificándose desde allí. Es solo que el "árbol" está invertido, con la raíz en la parte superior. Cada archivo tiene su propia relación con "/" (la notación de barra inclinada llamada "raíz"). Todo el sistema está contenido en los directorios que se encuentran aquí. Dentro de cada directorio, puede tener un número prácticamente ilimitado de archivos u otros directorios, cada uno de los cuales puede tener un número ilimitado de archivos y directorios propios, y así sucesivamente.

Más importante aún, cada directorio bajo raíz tiene un propósito. Cubrí esto hace un tiempo en un artículo sobre Estándar de jerarquía del sistema de archivos así que no lo repetiré todo aquí. Pero para dar algunos ejemplos ilustrativos, el directorio / boot almacena todo lo que su sistema necesita para arrancar. Los directorios / bin, / sbin y / usr retienen todos los binarios de su sistema (las cosas que ejecutan programas). Los archivos de configuración que pueden alterar el funcionamiento de los programas propiedad del sistema viven en / etc. Todos sus archivos personales, como documentos y medios, van en / home (para ser más precisos, en el directorio de su cuenta de usuario en / home). El tipo de datos que cambian todo el tiempo, a saber, los registros, se archivan bajo /var.

. De esta manera, Unix realmente vive según el viejo adagio "un lugar para todo, y todo en su lugar". Esta es exactamente la razón por la que es muy fácil encontrar lo que está buscando. La mayoría de las veces, puede seguir el árbol un directorio a la vez para llegar exactamente a lo que necesita, simplemente eligiendo el directorio cuyo nombre parece el lugar más apropiado para su archivo. Si eso no funciona, puede ejecutar comandos como 'buscar' para desenterrar exactamente lo que está buscando. Este esquema organizativo también mantiene el desorden al mínimo. Las cosas que están fuera de lugar se destacan, momento en el que se pueden mover o eliminar.

Todo es un archivo

Otra convención que da utilidad a través de la elegancia es el hecho de que todo en Unix es un archivo. En lugar de crear otra estructura digital distinta para cosas como hardware y procesos, Unix piensa en todos estos como archivos. Puede que no todos sean archivos como los entendemos comúnmente, pero son archivos en el sentido informático de ser grupos de bits.

Esta uniformidad significa que puede utilizar una variedad de herramientas para tratar cualquier cosa en su sistema. que lo necesita. Los documentos y los archivos multimedia son archivos. Por muy obvio que parezca, significa que son tratados como objetos individuales a los que otros programas pueden hacer referencia, ya sea de acuerdo con su formato de contenido, metadatos o composición de bits sin procesar.

Los dispositivos también son archivos en Unix. No importa qué hardware conecte a su sistema, se clasifica como un dispositivo de bloque o un dispositivo de transmisión. Los usuarios casi nunca se meten con estos dispositivos en su forma de archivo, pero la computadora necesita una forma de clasificar estos dispositivos para saber cómo interactuar con ellos. En la mayoría de los casos, el sistema invoca algún programa para convertir el "archivo" del dispositivo en una forma inmediatamente utilizable.

Los dispositivos de bloque representan bloques de datos. Si bien los dispositivos de bloque no se tratan como "archivos" en su totalidad, el sistema puede leer segmentos del dispositivo de bloque solicitando un número de bloque. Los dispositivos de flujo, por otro lado, son "archivos" que presentan flujos de información, es decir, bits que están siendo creados o enviados constantemente por algún proceso. Un buen ejemplo es un teclado: envía un flujo de datos a medida que se presionan las teclas.

Incluso los procesos son archivos. Cada programa que ejecuta genera uno o más procesos que persisten mientras el programa lo hace. Los procesos inician regularmente otros procesos, pero todos pueden ser rastreados por su ID de proceso único (PID) y agrupados por el usuario que los posee. Al clasificar los procesos como archivos, localizarlos y manipularlos es sencillo. Esto es lo que hace posible cambiar las prioridades de los procesos egoístas o matar los rebeldes.

Para perderse un poco en la maleza, puede presenciar el poder de construir todo como un archivo ejecutando el comando 'lsof'. Abreviatura de "lista de archivos abiertos", 'lsof' enumera todos los archivos actualmente en uso que cumplen con ciertos criterios. Los criterios de ejemplo incluyen si los archivos utilizan o no conexiones de red del sistema, o qué proceso los posee.

Virtudes de la apertura

El último elemento que quiero señalar (aunque ciertamente no es el último que gana mi admiración) es el estándar informático abierto de Unix. La mayoría, si no todos, de los principales proyectos de Unix son de código abierto, lo que significa que son accesibles. Esto tiene varias implicaciones clave.

Primero, cualquiera puede aprender de él. De hecho, Linux nació del deseo de aprender y experimentar con Unix. Linus Torvalds quería una copia de Minix para estudiar y modificar, pero sus desarrolladores no querían entregar su código fuente. En respuesta, Torvalds simplemente hizo su propio kernel de Unix, Linux. Más tarde publicó el kernel en Internet para cualquier otra persona que también quisiera jugar con Unix. Baste decir que hubo cierto grado de interés en su trabajo.

En segundo lugar, la apertura de Unix significa que cualquiera puede implementarlo. Si tiene un proyecto que requiere una computadora, Unix puede alimentarlo; y al ser altamente adaptable debido a su arquitectura, lo hace ideal para prácticamente cualquier aplicación, desde retoques hasta administrar un negocio global.

En tercer lugar, cualquiera puede extenderlo. Nuevamente, debido a su modelo de código abierto, cualquiera puede tomar un sistema operativo Unix y ejecutarlo. Los usuarios son libres de bifurcar sus propias versiones, como sucede habitualmente con las distribuciones de Linux. Más comúnmente, los usuarios pueden construir fácilmente su propio software que se ejecuta en cualquier tipo de sistema Unix.

Esta portabilidad es tanto más valiosa en virtud de que Unix y sus derivados se ejecutan en más hardware que cualquier otro tipo de sistema operativo. Linux por sí solo puede ejecutarse esencialmente en todos los dispositivos de escritorio o portátiles, esencialmente en todos los dispositivos integrados, incluidos los dispositivos móviles, todos los dispositivos de servidor e incluso las supercomputadoras.

Por lo tanto, no diría que no hay nada Unix no puede hacer, pero sería difícil encontrarlo.

Una escuela de pensamiento, y la clase está en sesión

Teniendo en cuenta la formidable empresa que es escribir un sistema operativo, la mayoría de los desarrolladores de sistemas operativos centran su trabajo en la definición de una filosofía que lo sustenta. Ninguno se ha vuelto tan icónico e influyente como la filosofía Unix. Su impacto se ha extendido más allá de Unix para inspirar a generaciones de informáticos y programadores.

Hay múltiples formulaciones de la filosofía Unix así que describiré lo que considero sus principios básicos.

En Unix , cada herramienta debe hacer una cosa, pero hazla bien. Eso suena lo suficientemente intuitivo, pero suficientes programas no fueron (y aún no lo están) diseñados de esa manera. Lo que este precepto significa en la práctica es que cada herramienta debe construirse para abordar solo un segmento reducido de tareas informáticas, pero que también debe hacerlo de una manera que sea simple de usar y lo suficientemente configurable para adaptarse a las preferencias del usuario con respecto a ese segmento informático. .

Una vez que se construyen algunas herramientas siguiendo estas líneas filosóficas, los usuarios deberían poder usarlas en combinación para lograr mucho (más sobre eso en un segundo). Los comandos Unix "clásicos" pueden hacer prácticamente todo lo que una computadora fundamentalmente útil debería ser capaz de hacer.

Con sólo unas pocas docenas de herramientas, los usuarios pueden:

  • Administrar procesos
  • Manipular archivos y su contenido independientemente del tipo de archivo
  • Configurar hardware y dispositivos de red
  • Administrar el software instalado
  • Escribir y compilar código en binarios de trabajo

Otra enseñanza central de la filosofía Unix es que las herramientas no deben asumir ni imponer expectativas sobre cómo los usuarios utilizarán sus productos o resultados. Este concepto parece abstracto, pero está destinado a lograr el beneficio pragmático de garantizar que las herramientas se puedan encadenar juntas. Esto sólo amplifica lo que es capaz de hacer el potente conjunto de herramientas básicas de Unix.

En la práctica, esto permite que la salida de un comando sea la entrada de otro. ¿Recuerdas que dije que todo es un archivo? Las salidas del programa no son una excepción. Entonces, cualquier comando que normalmente requeriría un archivo puede tomar alternativamente el "archivo" que es el resultado del comando anterior.

Por último, para resaltar un aspecto menos conocido de Unix, privilegia el manejo y manipulación de texto. La razón de esto es bastante simple: el texto es lo que los humanos entienden. Por lo tanto, es en lo que queremos que se entreguen los resultados computacionales.

Básicamente, todo lo que las computadoras realmente hacen es transformar un texto en texto diferente (por medio de binario para que pueda darle sentido al texto). Las herramientas de Unix, entonces, deberían permitir a los usuarios editar, sustituir, formatear y reorientar el texto sin ningún problema. Al mismo tiempo, las herramientas de texto de Unix nunca deben negar al usuario el control granular.

Al observar los dogmas anteriores, la manipulación de texto se divide en herramientas separadas. Estos incluyen los gustos de 'awk', 'sed', 'grep', 'sort', 'tr', 'uniq' y muchos otros. Aquí, también, cada uno es formidable por sí mismo, pero inmensamente poderoso en conjunto.

El verdadero poder viene de adentro

Independientemente de lo fascinantes que pueda encontrarlos, es comprensible que estas distinciones arquitectónicas e ideológicas parezcan abstrusas. Pero ya sea que use o no su computadora de una manera que sea congruente con estos ideales, las personas que diseñaron el sistema operativo y las aplicaciones de su computadora definitivamente lo hicieron. Estos desarrolladores, y los pioneros antes que ellos, utilizaron las poderosas herramientas de Unix para crear la experiencia informática que disfruta todos los días.

Tampoco estos implementos están relegados a algún banco de trabajo digital en Silicon Valley. Todos ellos están allí, colocados en su sistema en cualquier momento que desee acceder a ellos, y es posible que tenga más oportunidades de usarlos de lo que cree. La mayoría de los problemas que podría querer que su computadora resuelva no son nuevos, por lo que generalmente existen herramientas antiguas que ya los resuelven. Si se encuentra realizando una tarea repetitiva en una computadora, probablemente haya una herramienta que lo haga por usted, y probablemente deba su existencia a Unix.

En mi tiempo escribiendo sobre tecnología, he cubierto algunas de estas herramientas, y probablemente cubriré aún más con el tiempo. Hasta entonces, si ha encontrado el "Camino Unix" tan convincente como yo, le animo a que busque el conocimiento por sí mismo. Internet no tiene escasez de esto, se lo aseguro. Ahí es donde lo conseguí.


Leave a Reply

Your email address will not be published. Required fields are marked *

CLip art of Flip Day 2 CLip art of Flip Day 1 CLip art of Flip Day 1