Sistemas Operativos: Conceptos, Funciones y Tipos
Sistemas Operativos
Un sistema operativo es un conjunto de programas de computadora diseñados especialmente para cumplir los siguientes objetivos:
- Servir como interfaz entre el equipo físico (hardware) de una computadora y el usuario, con el fin de presentar una “cara” más sencilla y amistosa al mismo, en el cual el usuario pueda ejecutar programas. El objetivo principal de un sistema operativo es lograr que el sistema de computación se use de manera cómoda, y el objetivo secundario es que el hardware del computador se emplee de manera eficiente.
- Optimizar los recursos (tanto de software como de hardware) con que cuenta una computadora y hacer utilizable esta última.
Desde el punto de vista del usuario, el sistema operativo consiste en una serie de programas y funciones que ocultan los detalles del hardware.
Funciones de los Sistemas Operativos
Las funciones de los sistemas operativos son diversas y han ido evolucionando de acuerdo con los progresos que la técnica y la informática han experimentado. Como principales funciones, podríamos enumerar las siguientes:
- Gestión de procesos: Hay que diferenciar entre los conceptos programa y proceso. Un programa es un ente pasivo, que cuando se carga en memoria y comienza a ejecutarse, puede originar una gran cantidad de procesos.
- Gestión de la memoria: La gestión de memoria suele ir asociada a la gestión de procesos. Para ejecutar un proceso es necesario asignarle unas direcciones de memoria exclusivas para él y cargarlo en ellas. Cuando el proceso finaliza su ejecución, es necesario liberar las direcciones de memoria que estaba usando.
- Gestión de ficheros: Un fichero es una abstracción para definir una colección de información no volátil. Su objetivo es proporcionar un modelo de trabajo sencillo con la información almacenada en los dispositivos de almacenamiento.
- Gestión de los dispositivos de E/S: La gestión de la E/S tiene como objetivo proporcionar una interfaz de alto nivel de los dispositivos de E/S sencilla de utilizar.
- Gestión de la red: El sistema operativo es el encargado de gestionar los distintos niveles de red, los drivers (manejadores) de los dispositivos involucrados en la red, los protocolos de comunicación, las aplicaciones de red, etc.
- Protección y seguridad: Mecanismos para permitir o denegar el acceso a los usuarios y a sus procesos a determinados recursos (ficheros, dispositivos de E/S, red, etc.).
Clasificación de los Sistemas Operativos por los Servicios que Ofrecen
Por el Número de Usuarios
- Monousuarios: Los sistemas operativos monousuarios son aquellos que soportan a un usuario a la vez. Todos los dispositivos de hardware están a disposición de ese usuario y no pueden ser utilizados por otros hasta que este no finalice su uso. Ejemplos: DOS y Microsoft Windows 3.x, 9X, ME, NT 4.0 Workstation, 2000 Professional, XP Home Edition y Professional.
- Multiusuarios: En este sistema, varios usuarios pueden utilizar los recursos del sistema simultáneamente. Pueden compartir, sobre todo, los dispositivos externos de almacenamiento y los periféricos de salida como, por ejemplo, impresoras. Ejemplos: UNIX, Novell, Windows NT Server, Windows 2000 Server, Windows Server 2003, VMS (Digital), MVS (grandes equipos IBM), OS/400 (IBM AS/400).
Por el Número de Tareas
- Monotarea: Este tipo de sistema operativo solo puede ejecutar un programa o proceso por vez; por tanto, los recursos del sistema estarán dedicados al programa hasta que finalice su ejecución. El sistema operativo DOS o Windows 9X es monotarea.
- Multitarea: Este tipo de sistema operativo puede ejecutar varios programas o procesos de forma concurrente o simultánea. Para ello, la CPU comparte el tiempo de uso del procesador entre los diferentes programas que se desean ejecutar. Ejemplos: Windows NT 4.0, Windows 2000, Windows XP Professional, Windows Server 2003, Unix, Novell, etc. Casi todos los SO multiusuario son multitarea.
Por el Número de Procesadores
- Uniproceso o Monoproceso: En este tipo de sistema operativo, el ordenador solo tiene un procesador. Todos los trabajos a realizar pasarán por él. El ordenador que tenga instalado este tipo de sistema operativo puede ser monousuario o multiusuario; monotarea o multitarea. Ejemplos: Unix, Linux, Novell.
- Multiproceso: El ordenador cuenta con dos o más procesadores. De esta forma, determinados SO pueden aprovechar las ventajas de este tipo de hardware. Ejemplos: Windows NT 4.0, Windows 2000, Windows XP, Linux, Unix.
- Multiproceso simétrico (SMP, Symmetrical MultiProcessing): El sistema operativo utilizará los procesadores por igual; es decir, alternará el uso de los procesadores con los que cuente el sistema de forma simultánea.
- Multiproceso asimétrico (AMP, Asymmetrical MultiProcessing): El SO reparte las tareas que está realizando a los procesadores con los que cuenta el sistema informático. Determinados procesos los ejecutará siempre un procesador, y el otro procesador solo se utilizará para realizar procesos o programas de usuario.
Gestión de la Memoria
Organización y Gestión de la Memoria: Conceptos Generales
Para que un proceso pueda ejecutarse debe estar ubicado en la memoria principal del ordenador. Una parte del sistema operativo se va a encargar de gestionar la memoria principal, de forma que los procesos puedan residir en la memoria sin conflictos. La gestión de la memoria implica varias tareas, una de ellas es llevar un registro de qué zonas están libres (es decir, no están siendo utilizadas por ningún proceso), y qué zonas están ocupadas por qué procesos. Otros dos temas importantes en la gestión de la memoria son el de la carga de los programas de disco a memoria y el de la protección.
Jerarquía de la Memoria
Los programas y datos necesitan estar en la memoria principal para ser ejecutados, o para poder ser referenciados. Los programas o datos que no se necesitan de inmediato pueden guardarse en la memoria secundaria hasta que se necesiten, y en ese momento se transfieren a la memoria principal para ser ejecutados o referenciados. En los sistemas con varios niveles de memoria hay muchas transferencias constantes de programas y datos entre los distintos niveles. Estas transferencias consumen recursos del sistema, como tiempo de la CPU, que de otro modo podrían utilizarse provechosamente.
Gestión de la Memoria en los Sistemas Monoprogramados
En los sistemas de monoprogramación solo existe un proceso de usuario, que disfruta de todos los recursos del ordenador. Esto va a simplificar notablemente la gestión de la memoria, ya que esta solo debe ser compartida por los programas del sistema operativo, y por el único proceso de usuario existente.
Gestión de la Memoria en los Sistemas Multiprogramados
En un sistema de multiprogramación la memoria debe ser compartida por varios procesos de cara a obtener una mayor utilización de los recursos del ordenador.
Asignación de Memoria Contigua
En un esquema de asignación de memoria contigua, un proceso se ubica en su totalidad en posiciones consecutivas de memoria. En este apartado se estudian dos métodos de asignación contigua empleados históricamente en sistemas multiprogramados.
Asignación de Memoria no Contigua
Un proceso puede dividirse en bloques, y estos bloques pueden situarse en posiciones no contiguas de memoria principal. Es más, no es preciso que se encuentren en la memoria todos los bloques de un proceso para que se pueda ejecutar, basta con que se encuentren los bloques que contienen código o datos actualmente referenciados, el resto puede permanecer en memoria secundaria.
Gestión de Procesos
¿Qué es un Proceso?
Un programa es una secuencia de instrucciones escrita en un lenguaje dado. Un proceso es una instancia de ejecución de un programa, caracterizado por su contador de programa, su palabra de estado, sus registros del procesador, su segmento de texto, pila y datos, etc. Es posible que un programa sea ejecutado por varios usuarios en un sistema multiusuario, por cada una de estas ejecuciones existirá un proceso, con su contador de programa, registros, etc. El sistema operativo necesita el concepto de proceso para poder gestionar el procesador mediante la técnica de multiprogramación o de tiempo compartido, de hecho, el proceso es la unidad planificable, o de asignación de la CPU.
Estados de un Proceso y Transiciones de Estado de los Procesos
- En ejecución: El proceso ocupa la CPU actualmente, es decir, se está ejecutando.
- Listo o preparado: El proceso dispone de todos los recursos para su ejecución, solo le falta la CPU.
- Bloqueado: Al proceso le falta algún recurso para poder seguir ejecutándose, además de la CPU. Por recurso se pueden entender un dispositivo, un dato, etc. El proceso necesita que ocurra algún evento que le permita poder proseguir su ejecución.
Transiciones de Estado de los Procesos
- De ejecución a Bloqueado: Un proceso se pone en el estado Bloqueado si solicita algo por lo que debe esperar. Las solicitudes al sistema operativo suelen ser en forma de llamadas a servicios del sistema, es decir, llamadas desde el programa que está ejecutándose a un procedimiento que forma parte del código del sistema operativo.
- De ejecución a Listo: Por ejemplo, en un sistema de tiempo compartido, cuando el proceso que ocupa la CPU ha alcanzado el tiempo máximo permitido de ejecución ininterrumpida (agota su cuanto), el sistema operativo decide que otro proceso ocupe la CPU, pasando el proceso que ocupaba la CPU a estado listo.
- De Listo a en ejecución: Cuando es hora de seleccionar un nuevo proceso para ejecutar, el sistema operativo elige uno de los procesos del estado Listo.
- De Bloqueado a Listo: Un proceso que está en el estado Bloqueado pasará al estado Listo cuando se produzca el suceso que estaba esperando.
El Bloque de Control de Proceso
El bloque de control de proceso es la estructura de datos central y más importante de un sistema operativo. Cada bloque de control de proceso contiene toda la información de un proceso que necesita un sistema operativo para su control. Estos bloques son leídos y/o modificados por casi todos los módulos de un sistema operativo, incluyendo aquellos que tienen que ver con la planificación, la asignación de recursos, el tratamiento de interrupciones y el análisis y supervisión del rendimiento.
Sistemas de Archivos
Los sistemas de archivos varían de un sistema operativo a otro. Algunos sistemas de archivos importantes son:
- FAT16: Además de ser soportado actualmente por la mayoría de los sistemas operativos, posee una doble herencia de los primeros lenguajes de programación de Microsoft y del sistema operativo CP/M de Digital Research. Heredó características de sus dos ancestros que se han ido convirtiendo progresivamente en handicaps en esta era de la multitarea, modo protegido, memoria virtual y grandes discos duros.
- FAT32: Se produjo una actualización del sistema de ficheros FAT, como un intento de mejorar su rendimiento. Esta actualización conllevó un cambio de nombre, pasando a llamarse FAT32. Las características principales son:
- Soporte para volúmenes de hasta 2 Terabytes de tamaño.
- Aprovechamiento más eficiente del espacio de disco.
- FAT32 es un sistema de ficheros más robusto y flexible.
- Minimiza el efecto de la fragmentación de archivos.
- Permite nombres de ficheros más largos que 11 caracteres.
Al ser una actualización, todo lo dicho anteriormente para el sistema de archivos FAT se puede aplicar en este caso, ya que su filosofía y su estructura son las mismas, salvo las mejoras incorporadas. El principal cambio de una FAT a otra radica en la ampliación del tamaño de las entradas, que pasa de 16 a 32 bits. Esto permite mucho más espacio de disco, ya que con una entrada de FAT de 32 bits se permitirían discos de casi 4 Tb., lo que hoy en día es espacio más que suficiente. (2 elevado a 32 es 4.294.967.296).
- NTFS: Es su sistema de archivos nativo. Desde su nacimiento, NTFS ha sido un sistema de archivos netamente superior al heredado FAT. Capacidad para discos más grandes, atributos de seguridad en archivos y carpetas, múltiples flujos de datos por archivo, estructura en árbol que acelera las búsquedas, etc. Todas estas características se han visto complementadas, en unos casos, y mejoradas.
- Sistemas de Ficheros para Linux:
- Ext3: Que permitía particiones de 2 GB y tenía nombres de ficheros de 255 caracteres, aunque presentaba diversos problemas. Un año más tarde apareció un Second Extended File System (Ext2). Es un sistema de ficheros indexado, basado en índices.
- ReiserFS: ReiserFS es un sistema de ficheros montado y desmontado y un esquema para reducir la fragmentación interna. Comparado con EXT2 y EXT3 en el uso de archivos menores de 4k, ReiserFS es normalmente más rápido en un factor de 10–15.
- XFS: XFS es un sistema de archivos con journaling de alto rendimiento creado por SGI para su implementación en UNIX. Todo esto hace de XFS un sistema de archivos altamente escalable y fiable. Su principal problema se encuentra en que está mucho menos probado que otros sistemas de ficheros, y que se encuentra al inicio de su desarrollo.
Fragmentación Interna
Fenómeno en el que se malgasta el espacio interno de una partición cuando el bloque de datos cargado sea más pequeño que la partición.
Fragmentación Externa
La memoria externa a todas las particiones se fragmenta cada vez más, a diferencia de la fragmentación interna.
Paginación Simple
Tanto las particiones de tamaño fijo como las de tamaño variable hacen un uso ineficiente de la memoria; las primeras generan fragmentación interna, mientras que las segundas originan fragmentación externa. Supóngase, no obstante, que la memoria principal se encuentra particionada en trozos iguales de tamaño fijo relativamente pequeños y que cada proceso está dividido también en pequeños trozos de tamaño fijo y del mismo tamaño que los de memoria. En tal caso los trozos del proceso, conocidos como páginas, pueden asignarse a los trozos libres de memoria, conocidos como marcos o marcos de página.