Características

De Wikiunix

Características de Unix
En esta sección se introducen los sistemas operativos que se encuendran bajo la familia Unix, especificando sus características
Tiempo 1 hora
Nivel Principiante
Bibliografía What is UNIX?
The Unix Philosophy: A Brief Introduction
Libros SO
Prerrequisitos Unix

Unix es un sistema operativo portable, multitarea y multiusuario, cuyo desarrollo comenzó en 1969 a manos de un grupo de empleados de los laboratorios Bell de AT&T, entre los que figuran Ken Thompson, Dennis Ritchie y Douglas McIlroy.

Por norma general, el término "Unix" tradicional suele emplearse para describir a Unix o a un sistema operativo que cuenta con las características de UNIX Versión 7 o UNIX System V.

A continuación, vamos a profundizar en dichas características comunes.

Contenido

Portabilidad

La portabilidad es uno de los conceptos clave en la programación de alto nivel. Se define como la característica que posee un software para ejecutarse en diferentes plataformas, el código fuente del software es capaz de reutilizarse en vez de crearse un nuevo código cuando el software pasa de una plataforma a otra. A mayor portabilidad menor es la dependencia del software con respecto a la plataforma.

El prerrequisito para la portabilidad es la abstracción generalizada entre la aplicación lógica y las interfaces del sistema. Cuando un software se puede compilar en diversas plataformas (x86, IA64, amd64, etc.), se dice que es multiplataforma. Esta característica es importante para el desarrollo de reducción costos, cuando se quiere hacer una misma aplicación.

En algunos casos el software es "independiente" de la plataforma y puede ejecutarse en plataformas diversas sin necesidad de ser compilado específicamente para cada una de ellas, a este tipo de software se le llama interpretado, donde un "interprete" traduce (propiamente interpreta) las intrucciones a tiempo de ejecución para que sean entendidas por diferentes plataformas.

Multitarea

El sistema permite que los usuarios estén ejecutando varias aplicaciones simultáneamente utilizando la técnica de tiempo compartido. Para ello se aplican los diferentes algoritmos de planificación como veremos más adelante.

Multiusuario

En general se le llama multiusuario a la característica de un sistema operativo o programa que permite proveer servicio y procesamiento a múltiples usuarios simultáneamente (tanto en paralelismo real como simulado).

En contraposición a los sistemas monousuario, que proveen servicio y procesamiento a un solo usuario, en la categoría de multiusuario se encuentran todos los sistemas que cumplen simultáneamente las necesidades de dos o más usuarios, que comparten los mismos recursos. Actualmente este tipo de sistemas se emplean especialmente en redes, pero los primeros ejemplos de sistemas multiusuario fueron sistemas centralizados que se compartían a través del uso de múltiples dispositivos de interfaz humana (e.g. una unidad central y múltiples pantallas y teclados).

Otras características

Además de las características básicas, es interesante observar las que vamos a describir a continuación, porque son las que lo distinguen más específicamente de otras familias de sistemas.

Algoritmo por prioridades o multinivel

Es uno de los más complejos y eficaces. Asigna los tiempos de ejecución de la UCP según una lista de prioridades. En cada una de estas listas, el sistema operativo incluirá aquellos procesos a los que se les haya asignado esa prioridad. El tiempo de ejecución del procesador se irá destinando, en primer lugar, de forma secuencial a los procesos de mayor nivel. Terminados éstos, se ejecutarán los procesos del nivel inferior, y así sucesivamente hasta los procesos del nivel más bajo. Archivo:Ejemplo.jpg

Memoria virtual

Esta técnica permite a los usuarios del sistema ejecutar programas, de tal forma que dé la sensación de que toda la memoria RAM es para ellos. Concretamente en Unix/Linux se utiliza la paginación de la memoria. Esta técnica es la que utilizan la mayoría de los sistemas operativos multiusuario. Dividen la memoria en páginas al igual que los programas y de esta forma se realiza el intercambio entre disco y RAM para ejecutar los mismos.

Sistema de archivos jerárquico

Utiliza un sistema de archivos en forma de árbol invertido. La particularidad esencial frente a otros sistemas es que Unix no gestiona dispositivos (como una disquetera) de forma directa. Gestiona los dispositivos como si fueran directorios, de tal forma que cuando estemos accediendo al directorio asociado a una disquetera, en realidad lo que estarás haciendo es acceder a la información contenida en el disquete.

Comunicación con otros ordenadores

Un sistema Unix permite no solamente trabajar con él en una máquina, sino también conectar varios ordenadores centrales Unix entre sí, de tal forma que cada usuario tenga acceso a la información contenida en todos ellos. La conexión se realiza a través del conjunto de protocolos y servicios que ofrece TCP/IP. Gracias a él puedes ejecutar programas en máquinas Unix que estén a varios kilómetros de distancia entre sí; enviar correo electrónico de unos equipos a otros; realizar conversación directa entre dos usuarios, etcétera.

Sistemas de seguridad

Es una de las características más importantes, ya que la información a la que un usuario puede tener acceso puede limitarse de forma sencilla. De este modo, el administrador del sistema operativo, a través de palabras clave (para archivos empaquetados o comprimidos) o mediante la asignación de derechos a los usuarios, hace que la información contenida en un servidor Unix esté totalmente protegida de usuarios no deseados.


Filosofía

Unix es mucho más un sistema operativo: se caracteriza por tener una filosofía y una forma diferente de ver las cosas. La complejidad de uso que le achacan los defensores de otros sistemas se percibe por parte de sus entusiastas como uno de sus mayores atractivos. Además trabajando en Unix se tiene la posibilidad de conocer el funcionamiento interno del sistema, modificar sus partes, añadir nueva funcionalidad y se puede confiar en su enorme fiabilidad y ausencia de cuelgues totales.

Unix tiene una cultura propia, un estilo de programación característico y lleva consigo una potente filosofía de diseño. Entender el mundo y la comunidad que rodea a UNIX es esencial para poder adentrarse en este sistema. En ocasiones se acusa a esta comunidad de cerrada y reticente al cambio, por lo que para entrar en este mundo resulta imprescindible familiarizarse con su forma de trabajo.

La filosofía de Unix se puede resumir en una única frase descriptiva: "Do one thing and do it well". Sin embargo, se deben tener en cuenta una especie de normas generales tales como:

  • Haz que cada programa haga una cosa y la haga bien.
  • Para llevar a cabo una nueva tarea escribe un programa nuevo. No compliques uno viejo añadiendo nueva funcionalidad.
  • Escribe tu programa teniendo en cuenta que su salida probablemente sea la entrada de otro programa. No llenes la salida estándar con información innecesaria ni utilices formatos raros.
  • Guarda los datos en archivos de texto plano. Si necesitas seguridad, confía en los permisos.
  • Usa nombres cortos y en minúscula.
  • Si no es imprescindible, no pidas nada de forma interactiva: haz que el usuario suministre los datos por línea de comandos en la llamada.
  • Haz partes simples conectadas mediante interfaces limpias y bien definidas.
  • Céntrate en los datos. Si has elegido las estructuras adecuadas y organizado todo correctamente, los algoritmos serán evidentes.
  • Claridad mejor que complejidad. La solución más simple es frecuentemente la mejor: añade complejidad solo donde sea indispensable.
  • Portabilidad mejor que eficiencia.
  • Piensa en paralelo. Hay otros procesos en el mundo, incluso instancias de tu mismo programa funcionando al mismo tiempo.
  • Haz un programa grande sólo cuando haya quedado demostrado que no puede hacerse con uno pequeño.
  • Si tu programa no tiene nada interesante que decir, que no diga nada.
  • No existe una única manera de hacerlo. Cada problema tiene múltiples soluciones.
  • Diseña pensando en el futuro, está más cerca de lo que piensas.
  • Unix no pide por favor.

En caso de duda la regla universal a tener en cuenta es siempre la norma KISS: Keep it simple, stupid!.

Resumiendo: no compliques las cosas si pueden hacerse de una forma simple, y seguramente haya una forma muy simple de hacerlo.

Herramientas personales