Introducción Hoy en día muchas personas, usan las computadoras de una forma muy fácil, muchos llegan a creer que la máquina con la cual trabajan tiene incorporada todas las potencialidades con las que están habituados a trabajar. En realidad eso no es así ya que debajo de todas esas facilidades está presente un agente que facilita las cosas y que convierte a la computadora en un ente mucho más poderoso de lo que realmente es, en palabras técnicas, ese agente convierte la computadora real en una computadora virtual mucho más poderosa. ¿Quién es ese agente y cómo actúa? El quién tiene una respuesta muy obvia “El agente es el Sistema Operativo”, el cómo es uno de los objetivos de este mapa conceptual que les ofrece el Grupo de Informática Educativa (GIE) de la Facultad de Matemática, Física y Computación (MFC) de la Universidad Central de las Villas (UCLV) desde la ciudad de Santa Clara en el centro de la República de Cuba. Los sistemas operativos constituyen una parte importante de cualquier sistema de cómputo, los cuales se pueden ver como un conjunto de capas que van desde lo más básico o de bajo nivel (el hardware), hasta lo más cercano a nosotros o del alto nivel (el software de aplicación). Por encima de todo eso están los usuarios (figura 1). Esta concepción, muy frecuente en los diseños, permite que las capas superiores se nutran de los servicios que brindan las capas inferiores, de forma que cada una se especialice en lo que realmente tiene que hacer, sin involucrarse en detalles complejos que son resueltos por sus antecesores. Usuario Programas de Aplicación Sistema Operativo Hardware Figura 1. Sistema de cómputo estructurado por capas. Los sistemas operativos son grandes y complejos, por ese motivo se programan como piezas separadas de software (módulos) que tienen funciones específicas. Las partes interactúan entre sí para lograr alcanzar el objetivo común: Hacer más fácil el uso de los recursos del sistema y mejorar la eficiencia con que se usan. Definición: Un sistema operativo es un programa que manipula los recursos de la computadora los cuales pueden ser de hardware o de software. Algunos tipos de sistemas operativos se diseñan para ser eficientes otros para ser fáciles de usar y otros tratan de lograr ambas cosas estableciendo un determinado compromiso. Estructura y operaciones de los sistemas operativos. Uno de los aspectos mas importantes de los sistemas operativos actuales es la capacidad de ejecutar varios programas a la vez, lo que se conoce con el nombre de multiprogramación o multitarea. Para poder ejecutar un programa se necesita tenerlo en memoria, una posible solución es la que se muestra en la figura 2, aunque en realidad no es necesario que el programa completo esté cargado en la memoria (solo una parte de él). Sistema Operativo Trabajo 1 Trabajo 2 Trabajo 3 Trabajo 4 Figura 2. Varios trabajos en memoria permiten multiplexar el procesador. La idea de no tener el programa completo cargado en memoria permite hacer creer que la memoria es mayor de lo que realmente es y da surgimiento al concepto de memoria virtual. Operación Dual Debido a que el sistema operativo es un programa más (que necesita determinadas prioridades) es importante comprender el modo de operación dual. La mayoría de las computadoras actuales permiten varios modos de operación (al menos dos) y el sistema operativo aprovecha esa oportunidad para distinguir entre dos modos: • Modo usuario. • Modo kernel (también se conoce como modo sistema y modo supervisor). Los programas de usuario actúan siempre en modo usuario, cuando necesitan hacer operaciones que se consideran privilegiadas (solo las puede hacer el SO) le piden al sistema operativo que las haga. Cuando el SO recibe la solicitud de ejecutar una tarea privilegiada, se cambia a modo kernel y efectúa la operación, dando de esa forma una protección efectiva a los recursos, una vez realizada la operación privilegiada pasa el procesador a modo usuario y le devuelve el control al programa. La idea se ilustra en la figura 3. Área de procesos de usuario Proceso ejecutando instrucciones de usuario … Llamada al SO Retorno de la llamada . Área del núcleo o kernel del SO Ejecuta la Llamada Figura 3. Transición de modo de operación Cuando se enciende una computadora, comienza el proceso de inicialización del sistema operativo (bootstrap) el hardware de la computadora está en ese instante en modo kernel, mas adelante los modos se irán intercambiando y el SO asume la responsabilidad de efectuar los intercambios dándole las instrucciones precisas al hardware. Esta forma de operación permite al SO proteger a los usuarios y protegerse a sí mismo. Visión general. En general, se pueden destacar las siguientes tareas: • Manipulación del procesador. Para que un programa pueda llevar a cabo la tarea para la cual fue diseñado precisa tiempo del procesador, este último puede ser uno solo o pueden ser varios pero en cualquier caso habrá que compartirlo para poder realizar diversas tareas a la vez. Es importante destacar que un programa es un ente pasivo ya que desde que se escribe, ya sea en una hoja, en la pizarra o se guarda en una unidad de almacenamiento, existe como tal pero no realiza tarea alguna. Por ese motivo los sistemas operativos usan el concepto de proceso definido como un programa en ejecución, debe observarse que un proceso necesita recursos para poder ejecutarse, entre ellos, el procesador. El SO será el responsable de: o Crear y eliminar los procesos (de usuarios y del propio SO). o Suspender y volver a activar los procesos. o Facilitar mecanismos para sincronizar procesos que cooperan entre sí. o Facilitar mecanismos para que los procesos se comuniquen entre sí, etc. • Manipulación de la memoria. Para que los procesos se puedan ejecutar precisan de memoria para almacenarse a sí mismo y a sus datos, como la memoria no es infinita y se quieren ejecutar muchos procesos a la vez, algunos de los cuales pueden rebasar el limite de • • memoria física, habrá que disponer de mecanismos que ayuden a repartirla de forma efectiva. El SO es responsable de: o Conocer las partes de la memoria que están disponible y ocupadas. o Decidir cuáles procesos (o partes de ellos) deben ser cargados en la memoria y cuáles deben ser desalojados de la memoria (puede ser que hacia dispositivos externos), etc. Manipulación de los equipos externos de almacenamiento. Para poder almacenar programas y datos de forma permanente, el SO usa el concepto de archivo y se abstrae de las particularidades físicas de los equipos sobre los que residen los datos. El módulo denominado Sistema de Archivo se encarga de esa responsabilidad. Protección y seguridad. Un sistema de cómputo tiene muchos usuarios y existen muchos procesos que se ejecutan a la vez, el SO es el responsable de proteger a todos estos elementos. Con el concepto de Protección se engloba al conjunto de mecanismos que permiten controlar el acceso de usuarios y procesos a los recursos del sistema, mientras la seguridad se refiere a la defensa ante los eventos externos tales como virus, etc.