Curso Básico de UNIX

Conceptos de Sistemas Operativos

Hardware
Qué es un Sistema Operativo
Historia de los Sistemas Operativos
Conceptos de Sistemas Operativos
Procesos
Archivos
Llamadas al Sistema
El intérprete de comandos ("shell")
Ejemplos de comandos
Referencias


Una computadora sin software no presta ninguna utilidad. El software puede clasificarse en dos grandes grupos:

El Sistema Operativo es el programa fundamental entre los programas de sistemas; controla todos los recursos de la computadora y proporciona la base sobre la que pueden escribirse los programas de aplicación. Es un nivel de software por encima del hardware que controla todas las partes del sistema y presenta al usuario una interfaz o máquina virtual.

En un sistema de computación se reconocen los siguientes niveles, yendo desde el usuario hacia la máquina física:

Hardware:

Lenguaje de máquina: instrucciones directas a la máquina. Tiene de 50 a 300 instrucciones y es muy difícil de programar.

Microprogramación: control directo de dispositivos. En memoria de sólo lectura, o a veces en el propio hardware; interpreta el lenguaje de máquina.

Dispositivos físicos: chips, barras, cables, fuentes de potencia, conectores, etc.

El sistema operativo ejecuta en modo superusuario, con plenos poderes; no puede ser alterado por el usuario. Los compiladores y editores se ejecutan en modo usuario, con poderes limitados. Cada usuario podría escribir su propio editor, compilador u otro utilitario. Los programas de aplicación son escritos por los usuarios para resolver problemas particulares.

Qué es un sistema operativo.

Como máquina extendida. El sistema operativo presenta al usuario una máquina extendida o máquina virtual más fácil de programar que accionar en forma directa sobre el hardware subyacente. En este sentido se dice que el sistema operativo "define un ambiente de trabajo".

Como controlador de recursos. Permite la asignación ordenada de procesadores, memoria y dispositivos de entrada/salida para los varios programas que compiten por el uso de estos recursos.

Historia de los Sistemas Operativos.

Primera generación (1945-1955): bulbos y conexiones. Programación en lenguaje de máquina absoluto, o realizando directamente las conexiones eléctricas. Alrededor de 1950 se introducen las tarjetas perforadas.

Segunda generación (1955-1965): transistores y sistemas de procesamiento por lotes. Los programas y datos se entregaban en tarjetas, se acumulaban y luego eran procesados todos juntos por la máquina, buscando minimizar los tiempos muertos.

Tercera generación (1965-1980): circuitos integrados y multiprogramación. El sistema 360 de IBM unifica computadoras comerciales y científicas en una sola línea de máquinas con software compatible. Se introduce la multiprogramación, que divide la memoria en partes y ejecuta un programa distinto en cada una. El spooling permite la operación simultánea y en línea de periféricos. El tiempo compartido es una variante de multiprogramación que habilita a cada usuario una terminal en línea. MULTICS, un gigantesco sistema operativo, fracasa en su construcción pero aporta muchas ideas que hacen surgir UNIX.

Cuarta generación (1980-1990): estaciones de trabajo y computadoras personales. Sistemas operativos DOS y UNIX. Software "amigable con el usuario". Sistemas operativos de red, con varias computadoras interconectadas que pueden ser accedidas por un mismo usuario. Sistemas operativos distribuídos, compuestos por varios procesadores que se presentan al usuario como un sistema único.

Conceptos de Sistemas Operativos.

La interfaz entre los programas de usuario y el sistema operativo está formada por llamadas al sistema capaces de crear, utilizar y eliminar procesos y archivos.

Procesos.

Un proceso es básicamente un programa en ejecución. Consta del programa ejecutable, datos, pilas, registros y toda la información necesaria para ejecutar. Un intérprete de comandos (shell) es un proceso que lee los comandos de usuario desde una terminal y crea procesos hijo para ejecutar ese comando. Se crea así un árbol de procesos en ejecución. Los procesos se manejan mediante señales que los obligan a suspender, reiniciar o terminar su acción. Las señales se utilizan también para comunicación entre procesos.

Cada usuario tiene asignado un identificador de usuario (uid), y grupos de usuarios tienen un identificador de grupo (gid). Un proceso tiene asignado el uid y gid del usuario que lo inició. Ambos identificadores se utilizan para proteger la información manejada por el proceso.

Archivos.

Existen llamadas al sistema para crear, eliminar, leer y escribir archivos. Los archivos se agrupan en directorios, y existen llamadas al sistema para crear y eliminar directorios, y para colocar y quitar archivos de ellos. Esto crea una jerarquía de directorios y archivos llamada sistema de archivos. Un archivo se reconoce unívocamente dando la ruta de acceso, que es la sucesión de directorios que permiten alcanzar el archivo a partir del directorio raíz. Cada proceso activo tiene un directorio de trabajo en el que se buscan primariamente los archivos cuando se indica sólo el nombre y no la ruta de acceso.

En un sistema multiusuario, es preciso dar privacidad a los archivos de cada persona. UNIX utiliza un código de 9 bits en 3 grupos de 3 bits. Estos grupos correspondientes al dueño, el grupo y el resto del mundo. Cada conjunto de 3 bits corresponde a permiso de lectura, escritura y ejecución. Se presentan como rwx (Read, Write, eXecute); cuando uno de estos permisos está denegado se sustituye la letra por -, como en r-- o en rw-.

Para acceder a un archivo, se verifican primero sus permisos; si son correctos, el sistema devuelve un descriptor de archivo o "entrada de manejo", un número entero que se utiliza en todas las operaciones subsiguientes. Al cerrarse el archivo, el descriptor es desasignado y el número entero queda disponible para otro acceso.

UNIX maneja los dispositivos de entrada y salida con un artificio que los presenta como archivos especiales, lo que permite escribir y leer en ellos con las mismas llamadas al sistema que se usan para los archivos. Los archivos especiales de bloque se usan para dispositivos que organizan los datos en bloques de tamaño fijo y acceso aleatorio, como los discos. Los archivos especiales de caracteres modelan los dispositivos formados con flujos de caracteres como las terminales, impresoras e interfaces de red.

En UNIX y DOS, al iniciar un proceso se establece el descriptor de archivo 0 como entrada estándar para recibir datos desde el teclado y el descriptor de archivo 1 como salida estándar para presentar información en la pantalla. El descriptor de archivo 2 es el de error estándar; se usa para mensajes de error y se asigna normalmente a la pantalla.

La interconexión de procesos se realiza a través de una tubería, entubamiento, tubo o secuencia de comandos, indicado por el caracter | (barra vertical). Un tubo es un seudoarchivo en el cual un primer proceso escribe su salida para ser leída por un segundo proceso; la salida del primero es la entrada del segundo.

Llamadas al sistema.

Los programas de usuario se comunican con el sistema operativo mediante llamadas al sistema. Para cada llamada existe un procedimiento de biblioteca que puede ser invocado desde un programa de usuario mediante un nombre y parámetros.

El intérprete de comandos (shell).

El intérprete de comandos de UNIX, o shell, es un proceso que muestra un indicador de comandos ($, %, o #) y aguarda que el usuario digite un comando. Toda vez que el usuario digita un comando, el intérprete lo valida, y si es correcto crea un proceso hijo que realiza la acción encomendada. Al terminar el proceso hijo, exhibe nuevamente el indicador de comando e intenta leer una nueva línea de la entrada.

Ejemplos de comandos (UNIX):

  date
imprime la fecha.
  date >archivo1
imprime la fecha pero la redirecciona hacia el archivo1.
  sort <archivo1 >archivo2
lee archivo1, reordena sus líneas y las graba en archivo2.
  cat arch1 arch2 arch3 | sort >/dev/lp
concatena los archivos arch1, arch2 y arch3, dirige su salida hacia el comando sort que ordena las líneas de los tres archivos juntos y las envía al dispositivo de impresión /dev/lp.

 

 
 

Referencias:  Tanenbaum[1992]
 
 


Víctor A. González Barbone vagonbar en fing edu uy
Instituto de Ingeniería Eléctrica - Facultad de Ingeniería - Montevideo, Uruguay.