educación, informática y demás

Sistema operativo

Definición

Básicamente un sistema operativo es un conjunto de software que se encarga de hacer de intermediario entre el usuario y las aplicaciones y el hardware del sistema.

Para ello, el S.O. se encarga de gestionar el hardware del sistema para ofrecer una serie de servicios al usuario y aplicaciones de forma que éstos se abstraen de los detalles del hardware.

Por tanto, de lo anterior se podría decir que un sistema operativo es un software cuya función es:

  1. Hacer de intermediario entre el usuario y las aplicaciones y el hardware del sistema.
  2. Gestionar el hardware del sistema, para ofrecer una serie de servicios más elaborados tanto al resto de aplicaciones como al propio usuario.


Un sistema operativo está compuesto por varias piezas o componentes de software donde podemos destacar los siguientes elementos: kernel o núcleo del sistema, getor de procesos, gestor de memoria, gestor de entrada / salida, gestor de sistemas de ficheros, interfaz de usuario y herramientas del sistema.

El mapa completo

De esta forma tenemos el mapa completo del sistema informático, por un lado usuarios y aplicaciones interactuan con el sistema operativo a través de la interfaz de usuario o la API del sistema operativo respectivamente.

El sistema operativo interactua con el hardware a través de los controladores o drivers. Los controladores son proporcionados por los fabricantes del hardware, que son los que realmente conocen como funciona, al sistema operativo para permitir o facilitar la comunicación entre dispositivo harware y sistema operativo.

Las distintas partes del sistema operativo encargadas de gestionar el hardware se encargan de proporcionar esa capa de abstracción necesaria para trabajar con la complejidad de la gestión de los recursos disponibles en el sistema. Por ejemplo, el gestor de procesos se encarga de gestionar la CPU entre los distintos procesos que se ejecutan en el sistema, así como gestionar los propios procesos.

Funciones del sistema operativo: Gestión del Hardware

Para poder realizar su función principal, que es la de hacer de intermediario entre aplicaciones y usuarios y el hardware del sistema, el S.O. debe encargarse de gestionar los recursos hardware del sistema.

Para ello, como ya hemos visto, el S.O. debe proporcionar una capa de abstracción sobre el hardware existente y debe proporcionar una serie de servicios que permitan acceder a estos recursos hardware.

Además, el S.O. deberá encargarse de gestionar estos recursos a través de esos servicios.

El sistema operativo se encarga de gestionar los recursos hardware del sistema para ofrecer una serie de servicios a las aplicaciones y usuario del sistema.

Hay una serie de servicios que son comunes a los sistemas operativos y que se encargan de gestionar recursos importantes del sistema informático.

Los principales recursos hardware que debe gestionar todo sistema operativo son la CPU, la memoria principal, los sistemas de archivos (almacenamiento secundario y auxiliar) y los dispositivos de E/S.

A continuación se enumeran estos recursos hardware y la parte del sistema operativo que los gestiona.

Gestión de la CPU

La CPU es un recurso más que debe ser gestionado por el sistema
operativo.

«Un proceso es un programa en ejecución»

sistemas operativos

Los programas que se ejecutan en el sistema, denominados procesos, quieren utilizar la CPU para poder ejecutar sus instrucciones. Sin embargo, solo hay una CPU (o varias CPUs o una CPU con varias unidades funcionales o núcleos) y muchos procesos compitiendo por utilizarla.

El sistema operativo se tiene que encargar de decidir qué proceso (programa en ejecución) utilizará la CPU, durante cuanto tiempo, quien será el siguiente proceso en ejecutarse, etc.

Gestión de procesos en Windows

Windows es un sistema operativo multitarea, es decir, es capaz de tener varios procesos en ejecución a la vez. Realmente es un sistema operativo pseudomultitarea, porque en la realidad no se pueden ejecutar a la vez más procesos que núcleos o unidades funcionales tengan los microprocesadores del sistema.

Por ejemplo, supongamos que en nuestro sistema tenemos un microcesador con 8 núcleos o unidades funcionales. Esto significa que cómo mucho se pueden ejecutar 8 instrucciones a la vez, cada una de un proceso distinto. Si solo tuvieramos 8 procesos en ejecución y no hubiera ning´ún bloqueo entre procesos, estaríamos en multitarea real. Pero esto no es lo habitual.

¿Entonces, cómo consigue el sistema operativo tener varios procesos a la vez en ejecución cuando solo tiene un microprocesador con varios núcleos?. Utilizando técnicas de planificación de proceso y compartiendo la CPU o núcleos entre varios procesos a la vez. Básicamente lo que se hace es alternar la CPU, dejar el uso de la CPU, un ratito a cada proceso. Estos intercambios son tan rápidos que para el usuario es c´ómo si se estuvieran ejecutando los procesos a la vez. Estudiaremos estas técnicas más adelante.

Jugando con Windows

En Windows tenemos la herramienta Administrador de tareas para poder comprobar qué procesos se están ejecutando en el sistema, entre otras opciones. Para lanzar el administrador de tareas podemos pulsar aceleradores de teclado o pulsar con el botón secundario sobre la barra de tareas y seleccionamos administrador de tareas.

Lanzando el administrador de tareas desde la barra de tareas

Podemos usar el acelerador CTRL+ALT+SUPR, sin embargo si estamos en un sistema invitado (máquina virtual) esta pulsación de teclado la capturará el sistema anfitrión. Así que deberíamos utilizar HOST+SUPR.

Si estamos en VirtualBox pulsamos HOST + Supr. Si no lo hemos cambiado, la tecla de Host será CTRL derecho.

Quizá la mejor opción sea utilizar el acelerador de teclado CTRL+SHIFT+ESC.

Esta es la ventana principal del Administrador de tareas. Ahora mismo no hay ninguna aplicación en ejecución, no obstante si nos fijamos en la barra de información que aparece en la parte inferior de la ventana, nos indica que hay 30 procesos.

Vamos a lanzar dos exploradores de windows y un Internet Explorer.

Si nos fijamos el número de procesos solo ha aumentado en dos

Según la pantalla, tenemos tres aplicaciones en ejecución, así que deberíamos tener tres procesos en ejecución. Nuestro sistema solo tiene un núcleo, ¿cómo es posible esto?.

Primero, porque el sistema operativo se encarga de gestionar la CPU dejando que cada proceso en ejecución pueda usarla durante un tiempo finito llamado Quantum. Así lo que hace es alternar el uso de la CPU entre los procesos en ejecución.

Segundo, aunque hayamos ejecutado tres aplicaciones, hay aplicaciones del sistema en ejecución en segundo plano. Una aplicación se ejecuta en segundo plano cuando no tiene interfaz de usuario, no necesita interactuar directamente con el usuario.

Vamos a la pestaña procesos.

Procesos en ejecución en nuestro sistema del usuario alumno.

Si queremos que se muestren todos los procesos en ejecución de todos los usuarios tenemos que pulsar en mostrar procesos de todos los usuarios.

El sistema operativo es el que se encarga de gestionar todos estos procesos. Para ello, tiene que conocer cada proceso en ejecución e identificarlo de forma única.

Para identificar cada proceso de forma única se utiliza un número que se le asigna al proceso antes de que esté listo para ejecutarse. Este número o identificador se llama Identificador del Proceso o PID (Process Identificator)

Vamos a mostrar el identificador de proceso en el Administrador de tareas. Seleccionamos la opcion Ver del menú y elegimos Seleccionar columnas..

Seleccionamos Identificador de proceso y aceptamos.

Mostrando el PID en la información de procesos.

Podemos ordenar la lista de procesos por cada columna de forma ascendente o descendente haciendo clic en la columna. Por ejemplo, vamos a ordenar los procesos por su PID de menor a mayor.

Procesos en ejecución ordenados por PID. Los primeros procesos serán los que primero se ejecutaron al lanzar el S.O.

Si nos fijamos el proceso con PID 0 se llama Proceso inactivo del sistema. Este proceso es un proceso ficticio que nos indica el tiempo de CPU que está sin utilizarse. Es decir, el tiempo que la CPU está ociosa porque no está ejecutando realmente nada.

El gestor de procesos es la parte del sistema operativo que se encarga de gestionar los procesos en ejecución dentro del sistema. Se tiene que encargar de crear y gestionar procesos, anotar la información necesaria para gestionar cada proceso (BCP y tabla de procesos), planificar qué procesos cogen la CPU en cada instante (planificador), qué procesos se quedan en espera de E/S, etc.

Gestión de memoria principal

Para que un proceso se pueda ejecutar, tiene que estar en memoria principal.

Necesitan cargar sus instrucciones para que la CPU pueda ejecutarlas, necesita cargar sus datos (variables) para que las instrucciones hagan uso de ellas, etc.

El sistema operativo deberá gestionar la memoria como un recurso más, puesto que tiene una capacidad limitada. Deberá asignar memoria a procesos, liberar memoria cuando un proceso termine de utilizarla, proteger las zonas de memoria de accesos no autorizados, etc.

La parte del sistema operativo que se encarga de gestionar la memoria principal es el Gestor de memoria.

Jugando con Windows

Vamos a echar un vistazo al Administrador de tareas para ver la cantidad de memoria que tiene asignada cada proceso en ejecución en el sistema.

Administrador de tareas. Cantidad de memoria que está usando cada proceso en ejecución en el sistema

Vamos a ordenar los procesos por el uso que hacen de la memoria principal.

Vamos a echar un vistazo al proceso que más memoria tiene asignada svchot.exe. Vamos a buscar información sobre ese proceso, qué es, qué funcion tiene en el sistema, etc.

Por lo pronto sabemos que es el sistema el que lo ha ejecutado: Nombre de usuario System. Además nos dice en descripción que es un Proceso host para los servicios de Windows, pero no tenemos muy claro qué significa. Vamos a buscar información en Internet de este proceso.

Entrada de la wikipedia. Lo ideal es consultar la página del desarrollador.

Podemos consultar información sobre rendimiento y uso de la CPU y la memoria en la pestaña Rendimiento.

Recursos CPU y Memoria. Podemos observar el uso de memoria que se está haciendo en el sistema actualmente, tanto de forma gráfica como con información numérica.
Información detallada del uso de memoria

Toda esta información que se está mostrando está almacenada en alguna estructura de datos que utiliza para gestionar la memoria principal el sistema operativo, concretamente el Gestor de memoria.

Gestión de sistemas de ficheros

La información debe almacenarse en memorias no volátiles si se desea que no se pierda al apagar el sistema. Para ello se utilizan memorias secundarias y auxiliares cuya tecnología permite el almacenamiento de información de forma persistente.

Sin embargo, estas memorias suelen estar estructuradas históricamente en bloques (sectores) y hay que llevar un registro
de qué sectores están libres y cuales ocupados, la estructura de directorios, qué ficheros hay y qué sectores tienen asignado y en que orden, etc.

Para gestionar esta información hay una parte del sistema opertivo denominada Gestor de sistemas de ficheros. La información que permite gestionar los ficheros en una partición de disco se denomina Sistema de ficheros.

Jugando con Windows

Vamos a lanzar el explorador de Windows.

Según la información que nos muestra el Explorador de Windows en Equipo podríamos pensar que tenemos dos discos duros, uno de 24,3 GB del que estamos utilizando 15,4 GB y otro de 19,5 GB del que estamos usando 0,1GB. Sin embargo esto no es así.

Vamos a lanzar la herramienta del sistema Administrador de equipos. Vamos a herramientas del sistema en el menú de windows.

Herramientas administrativas. Conjunto de herramientas del sistema que utilizaremos para administrar distintas partes del sistema

Si nos fijamos, realmente si tenemos dos discos duros físicos en nuestro sistema, pero lo que nosotros hemos pensado inicialmente que eran discos duros, no lo son.

Se trata de unidades lógicas que representan a los sistemas de ficheros de dos particiones distintas.

Cada partición para poder almacenar ficheros debe contar con un sistema de ficheros. Un sistema de ficheros es la estructura de datos, toda la información necesaria, que permita gestionar ficheros en dicha partición. Por ejemplo, el sistema de ficheros debería almacenar la siguiente información:

  • Lista de sectores libres.
  • Ficheros almacenados y los sectores asociados a cada fichero en orden.

En nuestro caso en el disco duro 0 tenemos una partición de 100MB y otra de 25 GB aprox. ambas tienen sistema de ficheros NTFS.

También tenemos una zona sin asignar de 75GB dónde podemos crear más particiones si las necesitamos. La partición de 100MB con sistema de ficheros NTFS no tiene asignada letra de unidad lógica por eso no aparece en el explorador de Windows.

Gestión de Entrada / Salida: Periféricos

Hay gran cantidad de dispositivos de E/S diferentes. Dentro de cada tipo, por ejemplo un teclado existen multitud de variantes en función de distintas características: teclas especiales, disposición de las teclas, características especiales (altavoces incorporados, pantalla táctil, dispositivo apuntador incorporado, etc).

El sistema operativo debe proporcionar mecanismos de acceso uniforme a los distintos tipos de dispositivos hardware disponibles gestionando todas estas diferencias.

La gestión de E/S se puede llevar a cabo en gran medida gracias al uso de controladores o drivers que hacen de interfaz y permiten la comunicación entre el sistema operativo y cada uno de estos dispositivos de E/S con sus características “únicas”.

Jugando con Windows

Administrador de dispositivos. Desde el administrador de equipos podemos comprobar el administrador de dispositivos.

También podemos lanzarlo dentro de su propia ventana.

Realmente esta herramienta se encarga de mostrar y permitir al administrador administrar la información que mantiene el sistema sobre los dispositivos hardware conectados al mismo.

La parte del sistema operativo que se encarga de gestionar los dispositivos periféricos es el Gestor de Entrada / Salida y gracias a esta herramienta del sistema, el administrador de dispositivos, podemos comprobar la configuración del hardware del sistema así como gestionar sus controladores o drivers.

Vamos a echar un vistazo por ejemplo a las controladores de sonido, al dispositivo de High Definition Audio.

Vamos a ver información sobre el dispositivo de Audio. Si hacemos clic con el botón secundario nos aparecerá un menu contextual donde elegimos propiedades o bien podemos hacer doble clic sobre el dispositivo.

Si nos vamos a controlador, podemos obtener información sobre el controlador o driver del dispositivo.

Por ejemplo, podemos obtener información sobre el controlador concreto que estamos usando en Detalles del controlador.

Ahí aparecen las piezas de software que hacen de intermediario entre el hardware concreto y el sistema operativo. Esos son los controladores, las librerías que proporciona el fabricante del dispositivo para facilitar la comunicación entre dispositivo y sistema operativo.

Si una aplicación quiere hacer uso de un dispositivo lo hace a través del sistema operativo, el cual se comunica con el dispositivo a través del controlador.