Un sistema operativo es un programa que maneja el hardware de la
computadora. De igual manera proporciona una base para los programas de aplicación y funciona como u intermediario entre el usuario y el hardware. Algunos sistemas operativos están designados a ser convenientes, otros a ser eficientes, y algunos otros para ser la combinación entre ambos. ¿Qué hace un sistema operativo? Un sistema de computadora puede ser dividida en cuatro componentes: hardware, sistema operativo, programas de aplicaciones, y los usuarios. El hardware; el sistema central de proceso (CPU), la memoria, y los dispositivos de entrada y salida, proporcionan los recursos básicos para el sistema. Los programas de aplicaciones; como procesador de palabras, hojas de cálculo, compiladores y los exploradores web, definen la manera en la cual los recursos son usados para resolver los problemas computacionales del usuario. El sistema operativo controla el hardware y coordina su uso entre varios programas de aplicaciones para varios usuarios. La vista de usuario para la computadora varía de acuerdo a la interfaz que está siendo usada. Desde el punto de vista de computadora, el sistema operativo es el programa íntimamente más involucrado con el hardware. En este contexto, podemos ver al sistema operativo como un colocador de recursos. Un sistema operativo es un control de programa. Un control de programa gestiona la ejecución de los programas de usuario para prevenir errores y el incorrecto uso de la computadora. Es especialmente dirigido a la operación y control de los dispositivos de entrada/salida. Organización sistema-computadora Un moderno propósito general del sistema de computadora consiste en una o más CPUs y un número de controladores de dispositivos conectados a través de un bus común el cual provee acceso a la memoria compartida. Para que una computadora pueda arrancar, cuando se encienda o se reinicie, necesita de un programa inicial. Este programa tiende a ser simple, generalmente está almacenado dentro del hardware de la computadora en la ROM o EEPROM, conocido como el término general de firmware. El CPU puede cargar las instrucciones solamente de la memoria, así que cualquier programa a ejecutar debe de ser almacenado ahí. El propósito general de las computadoras es que ejecutan la mayoría de sus programas de la memoria RAM. Idealmente, se quiere que los programas y los datos estén en la memoria principal de manera permanente. Este acuerdo no es posible debido a las siguientes dos razones: 1) La memoria principal usualmente es demasiado pequeña para almacenar todos los programas y datos necesarios de manera permanente. 2) La memoria principal es volátil; pierde toda su información contenida cuando se apaga. La mayoría de los sistemas de computadora proporcionan una memoria secundaria como una extensión de la memoria principal. El principal requerimiento para una memoria secundaria es que sea capaz de mantener largas cantidades de datos de manera permanente. La amplia variedad de almacenamiento de los sistemas puede organizarse en jerarquía de acuerdo al costo y la velocidad. El almacenamiento de tipo volátil pierde toda la información contenida cuando se apaga el equipo. El almacenamiento es sólo uno de varios tipos de dispositivos de I/O dentro de una computadora. El propósito general del sistema de computadora consiste en CPUs y múltiples dispositivos que están conectados a través de un bus en común. Cada controlador de dispositivo está a cargo de un tipo específico de dispositivo. Generalmente los sistemas operativos contienen drivers para cada controlador de dispositivo. Para comenzar una operación de I/O, el controlador de dispositivo carga el registro apropiado dentro del controlador de dispositivo. Cuando llega su turno éste, examina el contenido de esos registros para determinar qué acción tomar (como leer un carácter del teclado, etc.) Arquitectura del sistema de computadora. Sistema monoprocesador. En un sistema monoprocesador, hay un solo CPU principal capaz de ejecutar el propósito general de la instrucción, incluyendo instrucciones de los procesadores de usuario. Sistemas multiprocesadores También son conocidos como sistemas en paralelo o sistemas multi- núcleos. Estos sistemas tienen dos o más procesadores en comunicación cerrada, compartiendo el bus de la computadora y en ocasiones el reloj, la memoria y el dispositivo periférico. Este tipo de sistemas tiene 3 ventajas: 1) Mayor rendimiento. Al incrementar el número de procesadores, se espera tener más trabajo realizado en menos tiempo.
2) Economía de escala. Los sistemas multiprocesadores pueden
costar menos que el equivalente de un sistema monoprocesador, debido a que pueden compartir periféricos, almacenamiento masivo, y fuentes de alimentación. 3) Mayor confiabilidad. Si las funciones pueden ser distribuidas propiamente entre muchos procesadores, entonces la falla de un procesador no detendrá el sistema, solamente lo ralentizará. Incrementar la confiabilidad de un sistema de computadora es crucial en muchas aplicaciones. La habilidad de continuar proporcionando un servicio proporcional al nivel de sobrevivencia de hardware es llamada degradación elegante. Algunos sistemas van detrás de esta degradación y son llamados tolerante a fallas, debido a que pueden sufrir alguna falla de algún solo componente y sigue operando. La tolerancia a fallas, requiere de un mecanismo que permita que la falla sea detectada, diagnosticada, y si es posible, corregirla. Los sistemas multiprocesadores en la actualidad son de dos tipos: a) Multiprocesador asimétrico (AMP). Cada procesador es asignado a una tarea específica. Un procesador jefe controla el sistema, mientras que los demás procesadores esperan a que se les asigne alguna tarea. b) Multiprocesador simétrico (SMP). Es el sistema más común, en este sistema, cada procesador desarrolla todas las tareas dentro del sistema operativo. SMP significa, que todos los procesadores son compañeros. El multiprocesador puede causar un cambio en el sistema al cambiar el acceso a memoria de un acceso a memoria uniforme (UMA) a un acceso a memoria no uniforme (NUMA). UMA se define como la situación en el que el acceso a cualquier RAM de cualquier CPU tiene la misma cantidad de tiempo. Con NUMA, algunas partes de la memoria pueden tomar más tiempo acceder que otras partes. Otro tipo de sistema multiprocesador, es un sistema agrupado, en donde están agrupados múltiples CPUs. Características: Es usado para dar un servicio de alta disponibilidad Puede ser de dos formas: o Agrupado asimétrico. Una máquina está en estado de reposo, mientras que otra ejecuta las aplicaciones. o Agrupado simétrico. Dos o más hosts están ejecutando aplicaciones y monitoreando cada una. Un sistema operativo proporciona el entorno dentro del cual los programas son ejecutados. Aspectos importantes: Multiprogramación. Un solo programa no puede mantener el CPU ni los puertos I/O ocupados todo el tiempo. Job pool. Consiste en que todos los procesos residen en el disco esperando alguna asignación de la memoria principal. Tiempo compartido (multi-tarea). CPU ejecuta trabajos múltiples, intercambiando entre ellos, pero esos cambios ocurren de manera frecuente que el usuario puede interactuar con cada programa mientras se está ejecutando. Un programa cargado y ejecutándose dentro de la memoria es llamado proceso. Cuando un proceso de ejecuta, es típicamente ejecutado por un corto periodo de tiempo antes de que se termine o necesite utilizar una I/O. Intercambio, donde se intercambian procesos dentro y fuera de la memoria principal al disco. Los sistemas operativos modernos están controlados mediante interrupciones. Un sistema operativo debe de estar inactivo esperando que algo ocurra. Los sucesos casi siempre, se indican mediante la ocurrencia de interrupción o excepción. Una excepción es una interrupción generada por software, debido a un error. Operación en modo dual: Dos modos diferentes: o Modo de usuario. El sistema ejecuta una aplicación de usuario. o Modo kernel. Cuando una aplicación de usuario solicita un servicio del sistema operativo. Temporizador: El sistema operativo debe de mantener el control sobre la CPU. Puede configurarse un temporizador para interrumpir la computadora después de un periodo especificado. Cuando el temporizador interrumpe, el control se transfiere automáticamente al sistema operativo. Gestión de procesos: Un proceso necesita para llevar a cabo su tarea ciertos recursos, entre los que incluyen, tiempo de CPU, memoria, archivos y dispositivos I/O. Es responsable de: Crear y borrar los procesos de usuario y sistema Proporcionar mecanismos para la sincronización de procesos Proporcionar mecanismos para la comunicación entre procesos Proporcionar mecanismos para el tratamiento de los interbloqueos. Gestión de memoria: Controlar qué partes de la memoria están actualmente en uso y por parte de quien. Decidir qué datos y procesos (o partes de procesos) añadir o extraer de la memoria. Asignar y liberar la asignación de espacio de memoria según sea necesario. Gestión de almacenamiento Gestión de archivos: o Creación y borrado de archivos o Creación y borrado de directorios para organizar los archivos o Soporte de primitivas para manipular archivos y directorios o Asignación de archivos a los dispositivos de almacenamiento secundario o Copia de seguridad de los archivos en medios de almacenamiento estables. Gestión de almacenamiento masivo: o Gestión de espacio libre o Asignación de espacio de almacenamiento o Planificación del disco Almacenamiento en caché: o La información se mantiene en algún sistema de almacenamiento, como por ejemplo la memoria principal. Cuando se usa, esa información se copia de forma temporal en un sistema de almacenamiento más rápido, la caché. Sistemas E/S: o Consta de varios componentes: Un componente de gestión de memoria que incluye almacenamiento en búfer, gestión de caché y gestión de colas. Una interfaz general para controladores de dispositivo. Controladores para dispositivos hardware específicos. Protección y seguridad: Un sistema informático tiene múltiples usuarios y permite la ejecución concurrente de múltiples procesos, entonces el acceso a los datos debe regularse. Protección es cualquier mecanismo que controle el acceso de procesos y usuarios a los recursos definidos por un sistema informático. Este mecanismo debe proporcionar los medios para la especificación de los controles que hay que imponer y para la aplicación de dichos controles. Es responsabilidad de los mecanismos de seguridad defender al sistema frente a ataques internos y externos. Tales ataques abarcan un enorme rango, en el que se incluyen los virus, gusanos, los ataques de denegación de servicio, el robo de identidad y el robo de servicio. Sistemas distribuidos: Un sistema distribuido es una colección de computadoras físicamente separadas y posiblemente heterogéneas que están conectadas en red para proporcionar a los usuarios acceso a los diversos recursos que el sistema mantiene. Acceder a un recurso compartido incrementa la velocidad de cálculo, la funcionalidad, la disponibilidad de los datos y la fiabilidad. Red. Es una vía de comunicación entre dos o más sistemas. Red de área local (LAN). Conecta una serie de computadoras que se encuentran en una misma habitación, planta o edificio. Red de área extendida (WAN). Conecta varios edificios, ciudades o países. Red de área metropolitana (MAN). Puede conectar diversos edificios de una ciudad. Sistemas de propósito general: Sistemas embebidos en tiempo real. Ejecutan sistemas operativos en tiempo real. Un sistema en tiempo real se usa cuando se han establecido rígidos requisitos de tiempo en la operación de un procesador o del flujo de datos. Sistemas multimedia. Incorporación de datos multimedia en los sistemas. Los datos multimedia abarcan tanto archivos de audio, vídeo, como archivos convencionales. Sistema de mano. Incluyen PDA (Personal digital assistant), tales como teléfonos móviles. Entornos informáticos: Sistema informático tradicional. Sistema cliente-servidor. Sistemas servidor satisfacen las solicitudes generadas por el sistema cliente. Sistema entre iguales. Los clientes y servidores no se diferencian entre sí, en su lugar, todos los nodos del sistema se consideran iguales y cada uno pude actuar como cliente o servidor dependiendo de si solicita o proporciona un servicio. Sistema basado en la web.