El Sistema Unix
Aunque los conceptos de sistemas operativos se pueden considerar en términos puramente teóricos, a menudo es útil ver cómo se implementan en la práctica. Este capítulo presenta un examen a fondo del sistema operativo 4.3BSD, una, versión de UNIX, como ejemplo de los distintos conceptos presentados en este libro. Al examinar un sistema real completo podremos ver cómo losdistintos conceptos estudiados en el libro se reía-donan tanto unos con otros como con la práctica. Primero haremos una breve reseña histórica de UNIX y luego presentaremos las interfaces del sistema con el usuario y el programador. Después, trataremos las estructuras de datos y algoritmos internos que el núcleo de UNIX usa para apoyar la interfaz con el usuario-programador.
Principios de diseño
UNIXse diseñó como sistema de tiempo compartido. La interfaz estándar con el usuario (el shell) es sencilla y puede ser sustituida por otra si se desea. El sistema de archivo. es un árbol con múltiples niveles, que permite a los usuarios crear sus propios subdirectorios. Cada archivo de datos de usuario es tan solo una secuencia de bytes.
Los archivos de disco y los dispositivos de E/S se tratan dela manera más similar posible. Así, las dependencias de dispositivos y las peculiaridades se mantienen en el núcleo hasta donde es posible; aun en el núcleo, la mayor parte de ellas estar confinadas a los drivers de dispositivos.
UNIX apoya múltiples procesos. Un proceso puede crear fácilmente procesos nuevos. La planificación de la CPU es un sencillo algoritmo de prioridades. 4.3BSL usapaginación por demanda como mecanismo para apoyar las decisiones de gestión de memoria y planificación de la CPU. Se usa intercambio si el sistema esta experimentando una paginación excesiva.
Puesto que UNIX fue creado primero por un programador Ken Thompson, y luego por otro, Dennis Ritchie, como sistema para su propia comodidad, era lo bastante pequeño como para poderse entender La mayor parte delos algoritmos se escogieron buscando sencillez, no rapidez ni sofisticación. La intención era que el núcleo y las bibliotecas proporcionaran un conjunto pequeño de recursos con la suficiente potencia como para que una persona pudiera construir un sistema más complejo en caso de necesitarlo. El limpio diseño de UNIX ha dado pie a muchas imitaciones y modificaciones.
Aunque los diseñadores de UNIXtenían conocimientos sustanciales de otros sistemas operativos, no establecieron un diseño detallado para UNIX antes de implementarlo. Al parecer, esta flexibilidad ha sido uno de los factores clave en e] desarrollo del sistema. No obstante, sí se aplicaron algunos principios de diseño, aunque no se hicieron explícitos inicialmente.
El sistema UNIX fue diseñado por programadores paraprogramadores; por ello1 siempre ha sido interactivo, y las funciones para desarrollar programas siempre han tenido prioridad. Tales recursos incluyen el programa make (que puede servir para verificar cuáles de una colección de archivos fuente de un programa necesitan compilarse, y luego compilarlos) y el Sistema de Control de Código Fuente (SCCS, Source Code Control System) (que sirve para mantenerdisponibles versiones sucesivas de los archivos sin tener que almacenar todo el contenido de cada paso).
El sistema operativo está escrito principalmente en C, que se creó para apoyar a UNIX, ya que ni Thompson ni Ritchie disfrutaban programando en lenguaje ensamblador. También fue necesario evitar el lenguaje ensamblador porque no se sabía con certeza en qué máquina o máquinas se ejecutaría UNIX. Estoha simplificado mucho los problemas de trasladar UNIX de un sistema de hardware a otro.
Desde el principio, los sistemas de desarrollo UNIX han tenido todas las fuentes UNIX disponibles en línea, y los desarrolladores han usado los sistemas que están creando como sistemas primarios. Este patrón de desarrollo ha facilitado mucho el descubrimiento de deficiencias y su corrección, así como el…