Generalidades acerca de los sistemas operativos Hoy en día muchas personas, usan las computadoras de una forma muy fácil, muchos incluso creen que la máquina 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 nos 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? 9 A la primera pregunta se responde de forma obvia: “el agente es el sistema operativo”. 9 Responder la segunda pregunta es un poco complicado y solo se podrá contestar una vez que se hayan estudiado todas y cada una de las complejas operaciones que realiza un sistema operativo. El sistema de enseñanza con el que usted actúa en este momento pretende dar una pequeña ayuda para resolver esta interrogante. 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 los usuarios o del alto nivel (el software de aplicación). Por encima de todo eso están los usuarios (figuras 1 y 2). Usuario Programas de Aplicación Sistema Operativo Hardware Figura 1. Sistema de cómputo estructurado por capas. 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 1 Compilador Usuario 2 Ensamblador Usuario 3 Editor de texto … … Usuario n Sistema de base de datos Programas de aplicaciones y sistema Sistema operativo Hardware Figura 2. 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 más 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. Para poder ejecutar un programa se necesita tenerlo en memoria, una posible solución es la que se muestra en la figura 3, aunque en realidad no es necesario que el programa esté completamente cargado en la memoria (aunque sí una parte de él). Esa idea de no tener el programa completo cargado en memoria permite hacer creer que la memoria es mayor de lo que realmente es y se puede ver en el mapa de memoria. 0 Sistema operativo Trabajo 1 Trabajo 2 Trabajo 3 512K Trabajo 4 Figura 3. Varios trabajos en memoria permiten multiplexar el procesador. Basado en el análisis anterior los sistemas operativos pueden clasificarse como: a) Multiprogramados. Ejemplos: Unix, Windows. b) Monoprogramados. Ejemplo: MS-DOS. La multiprogramación se logra compartiendo el procesador, o sea, en realidad solo un trabajo se ejecuta a la vez y se intercambia el procesador entre todos, dándonos la idea que todos se están ejecutando al mismo tiempo. Hoy en día es muy común que una computadora tenga más de un procesador. El concepto de usar esos procesadores al mismo tiempo no debe confundirse con la multiprogramación ya que en el primer caso se tiene una ejecución paralela real y en el segundo una ejecución “paralela” virtual. Los sistemas operativos que permiten el uso simultáneo de más de un procesador se denominan de multiprocesamiento, basado en ese análisis los sistemas operativos pueden ser: a) Multiprocesamiento. Windows XP, Unix. b) Monoprocesamiento. Windows 95. 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 (figura 4): • Modo usuario. • Modo kernel (también se conocen como modo sistema y modo supervisor). Los programas de usuario actúan siempre en modo usuario y cuando necesitan hacer operaciones que se consideran privilegiadas le piden al sistema operativo que las haga, para lo cual se cambia a modo kernel y las efectúa, dando de esa forma una protección efectiva a los recursos. 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. Proceso de usuario Llamada al sistema Ejecutando procesos de usuario Regreso de la llamada al sistema Modo usuario Modo Kernel Kernel (núcleo) Función del sistema Figura 4. Transición de modo de operación. Visión general. En general, el SO lleva a cabo 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 límite 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 abstrayéndose de sus particularidades físicas, 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. Bajo 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.