Dispositivos Físicos
Circuitos integrados, cables, fuente de alimentación y otros dispositivos similares. La construcción y funcionamiento de estos dispositivos es competencia de los ingenieros electrónicos.
Microarquitectura
Nivel en el cual los dispositivos físicos se agrupan formando unidades funcionales, controlando el ciclo del reloj, los registros de datos internos de la CPU y la ruta que siguen estos.
Lenguaje Máquina
Contiene entre 50 y 300 instrucciones para mover datos dentro de la máquina, operaciones aritméticas y de comparación de valores. Los dispositivos se controlan cargando valores en registros especiales de los dispositivos.
Sistema Operativo
Programa que controla la ejecución de los programas de aplicación y que actúa como interfaz entre el usuario y el hardware de la computadora (Andrew S. Tanenbaum).
Programa que administra todos los dispositivos proporcionando una interfaz con el hardware más sencilla (William Stallings).
Funciones Básicas de un Sistema Operativo
Administración de Recursos
Asegura el reparto ordenado y controlado de los procesadores, memorias y dispositivos de E/S entre los programas que desean obtenerlos.
Máquina Extendida
Oculta detalles de bajo nivel propios de cada uno de los dispositivos proporcionando una abstracción de alto nivel sencilla.
Generaciones de Computadoras e Historia de los Sistemas Operativos
Primera Generación (1945 – 1955): Tubos de Vacío y Tableros de Conexiones
La programación se efectuaba en lenguaje máquina, conectando cables en tableros de conexiones. Se desconocían los lenguajes de programación y sistemas operativos. A principios de la década de 1950, se introdujeron las tarjetas perforadas que la máquina podía leer, pero el procedimiento de operación era el mismo.
Segunda Generación (1955 – 1965): Transistores y Sistemas por Lotes
Para ejecutar un programa, este se escribía en papel (Fortran o Ensamblador) y se creaban las tarjetas con una perforadora. El operador colocaba las tarjetas correspondientes al compilador y las del programa en el lector; al terminarlo de ejecutar, el operador iba a la impresora por el resultado, cortaba las hojas y se lo entregaba al programador. Se observó el desperdicio de cómputo. La solución fue el sistema de procesamiento por lotes, el cual pasaba todos los lotes de trabajo y su compilador a una cinta magnética. Después, el operador cargaba un programa especial que ejecutaba todo el lote o conjunto de programas y el resultado lo grababa a una segunda cinta. Los resultados de esta segunda cinta se imprimían.
Tercera Generación (1965 – 1980): Circuitos Integrados, Multiprogramación y Tiempo Compartido
Los fabricantes tenían dos líneas de productos distintas:
- 7094 utilizado en cálculos numéricos en ciencias e ingeniería.
- 1401 para ordenar en cintas e imprimir.
Para unificar estas dos líneas de productos, diseñaron la línea 360 (System/360) que utilizaba circuitos integrados. Se diseñó el sistema operativo OS/360, el cual tenía que ser compatible con los dos modelos anteriores. El resultado fue un sistema operativo sumamente complejo con miles de líneas de código y miles de errores. Se necesitaba un flujo continuo de nuevas versiones para corregirlos, y cada nueva versión introducía nuevos errores. Multiprogramación: Es dividir la memoria en varias partes con un trabajo distinto en cada partición. Mientras un trabajo estaba esperando la E/S, otro podía estar usando la CPU.
Spooling (Simultaneous Peripheral Operation On Line): Cada vez que se terminaba un trabajo, el sistema operativo podía cargar otro trabajo en la partición recién desocupada.
Tercera Generación (1965 – 1980): Circuitos Integrados, Multiprogramación y Tiempo Compartido (Continuación)
Tiempo Compartido: Variante de la multiprogramación en la cual cada usuario tiene una terminal en línea. La CPU asigna un tiempo de trabajo a cada uno de los usuarios. El primer sistema de tiempo compartido fue el CTSS (Compatible Time Sharing System) del MIT. MIT, Laboratorios Bell y GE desarrollaron MULTICS (MULTiplexed Information and Computing Service), el cual estaba escrito en PL/I. Se le diseñó para dar servicios de computación a cientos de usuarios (los usuarios comúnmente trabajaban con pequeños programas). Ken Thompson, científico de los laboratorios Bell, escribió una versión de MULTICS para un solo usuario recortando partes del original. Esta labor dio pie al sistema operativo UNIX. Su código fuente fue fácil de conseguir y, por lo tanto, se desarrollaron versiones incompatibles de este sistema. Los laboratorios Bell decidieron ya no compartir el código fuente de su sistema operativo. En 1987, Andrew S. Tanenbaum desarrolló un clon de UNIX con fines educativos llamado MINIX. El deseo de una versión libre y no meramente educativa llevó a un estudiante finlandés llamado Linus Torvalds a escribir Linux basado en MINIX.
Cuarta Generación (1980 – Actualidad): Microprocesadores, Computadoras Personales
Con el desarrollo de los circuitos integrados a gran escala, surge el microprocesador. En 1974, Intel presenta el microprocesador 8080. Gary Kildall escribió un sistema operativo basado en disco llamado CP/M, el cual se ejecutaba en numerosas computadoras basadas en el 8080. Fundó la compañía Digital Research, con la cual desarrolló aplicaciones y nuevas versiones de su sistema operativo. A inicios de 1980, IBM diseñó el PC y contactó a Kildall, el cual rechazó reunirse con IBM y buscó a Bill Gates (un estudiante que vendía un intérprete de Basic) para solicitarle un sistema operativo. Gates se percató que un fabricante (Seattle Computer Products) tenía un sistema operativo apropiado llamado DOS (Disk Operating System). Gates vendía su sistema operativo a compañías de computadoras para venderlo con su hardware. Doug Engelbart, en Stanford Research Institute, desarrolló la GUI (Interfaz Gráfica de Usuario). Los investigadores de Xerox adoptaron estas ideas. Visitando las instalaciones de Xerox, Steve Jobs vio el potencial de la GUI y la adoptó a su computadora Lisa.
Tipos de Sistemas Operativos
Sistemas Operativos de Mainframe
Son sistemas operativos que se encuentran en centros de cálculo corporativo. Tales máquinas se distinguen por su capacidad de E/S; pueden administrar 1000 discos duros y miles de gigabytes de datos. Se encuentran orientados al procesamiento de varios trabajos a la vez, ofrecen procesamiento por lotes (procesa datos rutinarios sin la necesidad de un usuario presente), procesamiento de transacciones (atienden un gran número de peticiones pequeñas) y tiempo compartido (permiten a gran cantidad de usuarios remotos ejecutar trabajos en la computadora simultáneamente). Ejemplos: OS390, z/OS, Windows 2008 Data Center Edition.
Sistemas Operativos de Servidor
Se ejecutan en computadoras personales muy capaces o incluso en mainframes. Dan servicio a múltiples usuarios a través de una red, permitiéndoles compartir recursos de hardware y software. Prestan servicios de impresión, archivos, servicio web. Los ISP tienen en funcionamiento muchas máquinas servidoras para dar soporte a sus clientes, y los sitios web utilizan estos servidores para almacenar sus páginas web. Ejemplos: Windows 2008 Server, UNIX y Linux.
Sistemas Operativos de Multiprocesador
Una común forma de obtener una mayor potencia de computación es conectar varias CPUs en un mismo sistema. A estos sistemas se les llama multiprocesadores. Necesitan sistemas operativos especiales, pero con frecuencia son solo variaciones de los sistemas operativos de servidor, con características especiales para la comunicación y conectividad. Actualmente, Windows 2008 Server incorpora esta capacidad en el sistema operativo. En versiones anteriores, era necesario software adicional como Linux Rocks o Microsoft Cluster Services (MSCS).
Sistemas Operativos de Computadora Personal
Su cometido consiste en presentar una interfaz agradable para un usuario único. Se les utiliza para el procesamiento de texto, hoja de cálculo y conectarse al internet. Ejemplo: Windows 7 Home Basic, Home Premium, sistema operativo Macintosh.
Sistemas Operativos de Tiempo Real
Se caracterizan por tener al tiempo como su principal parámetro. Por ejemplo, en sistemas industriales donde ciertos plazos se deben cumplir estrictamente. Si es indispensable que una acción se efectúe en cierto momento (o dentro de un cierto intervalo), tenemos un sistema de tiempo real riguroso (hard real-time system); otro tipo es el sistema de tiempo real moderado (soft real time system), en el cual es aceptable dejar de cumplir ocasionalmente algún plazo. Ejemplo: VxWorks, QNX.
Sistemas Operativos Empotrados
Se utilizan en computadoras de bolsillo (palmtop) y sistemas empotrados. Los sistemas empotrados operan en computadoras que controlan dispositivos que por lo general no se consideran computadoras, como televisores, hornos de microondas y teléfonos móviles; tienen características de los sistemas de tiempo real, pero tienen limitaciones de tamaño, memoria y consumo de electricidad que los hacen especiales. Ejemplo: PalmOS, Windows CE.
Sistemas Operativos de Tarjeta Inteligente
Dispositivos del tamaño de una tarjeta de crédito que tienen un solo chip de CPU. Es común que solo desempeñen una función, como es el pago electrónico. Algunas están orientadas a Java y contienen un intérprete de la máquina virtual de Java. Los applets se descargan a la tarjeta y son interpretados por el intérprete. Algunas pueden ejecutar varios applets al mismo tiempo. Ejemplo: son sistemas patentados de uso específico.
Estructura de los Sistemas Operativos
Monolíticos
Carecen de estructura. Todos sus componentes se encuentran integrados en un único programa (planificación, sistema de archivos, controladores, administración de memoria). Es difícil modificarlos para añadir funcionalidades y servicios. Ejemplos: OS-360, DOS, UNIX.
Por Capas
Capa | Función |
5 | El operador |
4 | Programas de usuario |
3 | Administración de E/S |
2 | Comunicación operador-proceso |
1 | Administración de memoria, tambor |
0 | Reparto del procesador y multiprogramación |
Capa 0: Se encarga de la asignación del procesador (permitiendo la multiprogramación básica).
Capa 1: Se realiza la asignación de memoria para los procesos mediante paginación.
Capa 2: Se encarga de la comunicación entre la consola y el proceso. Cada proceso tiene su propia consola de operador.
Capa 3: Controla los dispositivos de E/S y almacena los flujos de información de cada dispositivo.
Capa 4: Aquí se localizan los programas de usuario.
Capa 5: En esta capa se localiza el proceso operador del sistema.
Ejemplo: MULTICS utilizaba este modelo como anillos concéntricos.
Cliente – Servidor
En este enfoque se implementa la mayor parte del sistema operativo en procesos de usuario. Para solicitar un servicio, tal como la lectura de un bloque, un proceso de usuario (que ahora se denomina proceso cliente) envía una solicitud a un proceso servidor, que realiza el trabajo y devuelve una respuesta. Lo único que hace el núcleo es manejar la comunicación entre clientes y servidores. El cliente obtiene un servicio enviando mensajes a un proceso servidor.
Exokernels
Su labor consiste en asignar recursos a las máquinas virtuales y luego comprobar cualquier intento de utilizarlos para garantizar que ninguna máquina trate de utilizar los recursos de cualquier otra. El exokernel se mantiene al tanto de qué recursos se han asignado a las máquinas virtuales. La tarea del exokernel es evitar que las máquinas virtuales se interfieran mutuamente.
Subsistemas del Sistema Operativo
Subsistemas: Administrador de memoria, Sistema de entrada/salida, Administrador de archivos, Núcleo o Kernel.
Núcleo o Kernel
Es el subsistema de más bajo nivel de un sistema operativo. Entre las tareas que desempeña se incluyen el manejo de interrupciones, la asignación de trabajo al procesador y el proporcionar una vía de comunicación entre los distintos programas. El núcleo contiene un subsistema llamado «planificador», el cual se encarga de asignar tiempo del procesador a los programas, de acuerdo a una cierta política de planificación que varía de un sistema operativo a otro.
Administrador de Memoria
Se encarga de asignar ciertas porciones de memoria RAM a los diferentes programas o partes de los programas que la necesitan, mientras el resto de los datos y programas se mantienen en los dispositivos de almacenamiento.
Sistema de Entrada/Salida
Este subsistema presenta al usuario la E/S de datos como una cuestión independiente del dispositivo; es decir, para los usuarios, todos los dispositivos tienen las mismas características y son tratados de la misma forma, siendo el sistema operativo el encargado de atender las particularidades de cada uno de ellos. Una técnica muy común, especialmente en salida, es el uso de «spoolers». Los datos de salida se almacenan de forma temporal en una cola situada en un dispositivo de almacenamiento masivo (el spool), hasta que el dispositivo periférico requerido se encuentre libre; de este modo se evita que un programa quede retenido porque el periférico no esté disponible.
Administrador de Archivos
Se encarga de mantener la estructura de los datos y los programas del sistema y de los diferentes usuarios (que se mantienen en archivos) y de asegurar el uso eficiente de los medios de almacenamiento masivo. El administrador de archivos también supervisa la creación, actualización y eliminación de los archivos.
Administración de Memoria: Monoprogramación sin Intercambio ni Paginación
Consiste en ejecutar un solo programa a la vez, repartiendo la memoria entre ese programa y el sistema operativo. Se da en tres presentaciones:
- El sistema operativo se encuentra al inicio de la memoria RAM.
- El sistema operativo se encuentra en la ROM.
- Los controladores en la ROM y el sistema operativo al final de la RAM.
Nota 1: 1 Ciclo = número de pulsaciones por segundo y se expresa en Hertz. 200 Mhz = 200,000,000 pulsos por segundo. Con cada pulso de reloj, el procesador ejecuta una acción o una parte de ella.
Nota 2: Usualmente, estas computadoras contaban con más de 20,000 bulbos.
Nota 3: Sistemas operativos de esta generación: FMS (Fortran Monitor System), IBSYS (Sistema operativo de IBM para la IBM 7094).
Nota 4: En los sistemas de paginación de memoria, se dividen los procesos (programas en ejecución) en pequeñas partes de 512Kb llamadas páginas, y la memoria se divide en partes del mismo tamaño llamadas marcos de página. De esta forma, el desperdicio de memoria solo ocurre al final de cada página. En un momento dado, la memoria se encuentra ocupada con páginas de diferentes procesos. El sistema operativo mantiene una lista de los últimos marcos y una tabla donde indica en qué marco de página se encuentra cada proceso.
Nota 5: La desventaja se hace evidente cuando una partición grande está vacía (partición 3) pero la cola de espera de una partición pequeña está llena (partición 1). Fue utilizado por el OS/360 y se le denominó MFT (Multiprogramming with a Fixed Number of Tasks).
Nota 6: Su desventaja principal con esta forma de administrar memoria es que, una vez que se ha traído a memoria un proceso de n unidades, el administrador de memoria debe examinar el mapa de bits en busca de una secuencia de n bits 0’s consecutivos. Buscar en el mapa una secuencia de cierta longitud es una operación lenta.