# Sistema operativo.

Un sistema operativo (S.O., SO ò frecuentemente OS, del inglés Operating System) es un programa informático o conjunto de programas que, en un sistema informático, gestionan los recursos de hardware y proveen servicios a los programas de aplicación, ejecutándose en un modo privilegiado respecto de los restantes. Los programas se crean para un Sistema Operativo en concreto, ya que es el sistema operativo el que sabe cómo se ha de interactuar con el hardware. Podemos decir que un Sistema Operativo se encuentra entre el Hardware y el Software de usuario, aunque es en sí mismo parte Software. Actúa como intermediario para crear una capa de abstracción sobre la que las aplicaciones de usuario trabajan independientemente del hardware que tengan debajo. Ejemplos de Sistemas Operativos son:
* Microsoft Windows.
* Mac OS X.
* GNU/Linux.
* Solaris.
* FreeBSD.
* OpenBSD.
* Google Chrome OS.
* Android.
* Symbian.
* Debian.
* Ubuntu.
* Fedora.

# Tipos del sistema operativo

Atendiendo a la diversidad de hardware posible y considerando que ese hardware debe disponer de los recursos lógicos (software) que permitan su utilización por parte del usuario, podemos encontrar una gran variedad de tipos diferentes de Sistemas Operativos. Los más reconocibles, son los sitemas operativos que controlan los ordenadores personales, como Windows, IOs o Linux; pero todo aparato hardware que permita una interacción con un usuario lleva incrustado un sistema operativo, televisiones, teléfonos, reproductores mp3, sintonizadores TDT... En los productos hardware más rudimentarios, que sólo tiene un conjunto de funciones para manejar el hardware, no permiten programación y no hay aplicaciones que puedan ser instaladas (por ejemplo una lavadora moderna). Al software que maneja directamente el hardware del aparato y nos permite interactuar, en cierta medida con él, se le llama Firmware. Es difícil, en ciertos dispositivos, distinguir si esos programas son Firmware o un verdadero Sistema Operativo, ya que la definición de Firmware se ha ido ampliando con el tiempo.

## Según el número de usuarios

Los sitemas operativos albergan usuarios. Según el número de éstos, los sitemas operativos pueden ser:

### Sistemas Operativos Monousuario

Sólo permiten un usuario a la vez, o sólo un usuario dentro del sistema. Éstos sistemas pueden ser de propósito general o específico y no incluyen una ventana de Login (entrada al sistema) aunque su uso sí puede estar protegido por una contraseña.

### Sistemas Operativos Multiusuario

Los sistemas operativos multiusuario permiten la ejecución simultánea de aplicaciones por diferentes usuarios. A estos usuarios se les reserva un espacio en la memoria principal (R.A.M.)en cuanto inician sesión en el sistema para albergar sus ejecuciones de aplicaciones. Además, los Sistemas Operativos multiusuario reservan un conjunto de carpetas en el sistema de archivos (memoria secundaria, disco duro) para el guardado de los archivos personales del mismo, y de las configuraciones y personalizaciones de los programas y del propio sistema operativo (por ejemplo, el color del escritorio, o los programas por defecto para las diferentes extensiones de archivo)

## Según la disponibilidad del código

Cuando se elabora un Sistema Operativo, mejor dicho, cuando se programa; el creador de este software puede dar diferentes licencias al mismo.

### Sistemas operativos propietarios

Los sistemas operativos propietarios tienen el código fuente oculto, y sólo permiten obtener los ejecutables necesarios para su instalación, pero no permiten acceder al mismo. A menudo, estos sistemas son creados dentro de grandes compañías que los comercializan como por ejemplo Microsoft, con el Sistema Operativo Windows; o Apple, con el sistema iOS o MAC OS. Estos sistemas basan su seguridad en el desconocimiento de los posibles atacantes del funcionamiento interno del programa.

### Sistemas operativos libres

Los sitemas operativos libres, tienen el código fuente liberado o abierto, y disponible para cualquiera que quiera estudiarlo. Estos sistemas se distribuyen libremente con licencias de software libre como GPL y basan su seguridad en el conocimiento absoluto del funcionamiento interno del programa. Cualquier informático o programador puede hacerse cargo de la modificación pertinente para evitar un fallo de seguridad o de cualquier otra índole. Estos sistemas pueden estar mantenidos por la comunidad, por una empresa o por una institución pública.

# Partes y funciones del sistema operativo
## Drivers

El hecho de tener un sistema operativo multipropósito y multitud de hardware diferente con el que trabajar, hace imposible que un sistema operativo pueda gestionar cualquier tipo de hardware desde un inicio. Además, las compañías que fabrican hardware quieren que el rendimiento del mismo sea óptimo dentro de cada sistema operativo, por ello crean módulos de software para el control de sus dispositivos dentro de cada sistema operativo. Aunque no sean una parte del sistema operativo, los drivers son módulos que se añaden a él para el control de un Hardware específico, como una tarjeta de sonido, una webcam o una pantalla táctil. Normalmente es lo primero que se instala tras la instalación del sistema operativo; y los periféricos o los ordenadores nuevos, llevan un CD con los drivers necesarios para varios tipos de sistemas operativos.

## Intérprete de comandos

Es una pantalla textual que nos permite interactuar con el Sistema Operativos mediante unos códigos conocidos como comandos.

## Permisos

Los permisos son unas políticas de seguridad, acceso y control que establece el sitema operativo para gestionar el acceso a los recursos de los usuarios y grupos. Los permisos pueden gestionar desde los accesos al disco duro, los accesos a la red hasta el acceso a los dispostivos. Se establecen unas listas de control de acceso (ACLs) para asociar un determinado usuario o grupo, un recurso y un tipo de permisos, que puede ser de denegación o de permisión. Normalmente los permisos son de 3 tipos, sean de denegación o de permisión, que son: lectura, modificación (escritura) y ejecución.

## Usuarios

Un usuario es una entidad del sistema que guarda una configuración personal. Los usuarios se identifican con un login (nombre de usuario) y una contraseña. El usuario por defecto de un sistema es el usuario Administrador, que tienen la potestad de crear otros usuarios, manejar todos los gestores y asignar permisos especiales para la gestión de recursos a los otros usuarios.

## Grupos de usuarios

En los sistemas operativos multiusuario, lo habitual es que haya diversos tipos de usuarios diferentes, pero que pueden tener configuraciones en común. Los grupos de usuarios, facilitan la organización al administrador del sistema, permitiendo asignar los permisos al grupo al que pertenecen un número de usuarios, en lugar de a cada usuario por separado. Un grupo es un conjunto de usuarios que comparten unas políticas de acceso a los recursos comunes.

## Gestión de recursos

Una de las funciones más importantes del Sistema Operativo es gestionar los recursos hardware. Para cada tipo de recurso, el sistema tiene un proceso que lo controla.

### Memoria Principal (R.A.M.)

El gestor de memoria se encarga de asignar trozos vacíos de la memoria principal y los diferentes programas que la utilizan, con el fin de organizar la memoria de la mejor manera posible, liberando las zonas que ya no están siendo utilizadas al cerrar el programa con el fin de reasignarlas a otros procesos o usuarios.

### Gestión de procesos

El gestor de procesos se encarga de la ejecución de los procesos por el procesador. Un procesador sólo puede ejecutar una orden a la vez, así que para simular el multiprocesado, el gestor de procesos establece una política de prioridades para una cola por la que van pasando las diferentes instrucciones de las aplicaciones o del sistema operativo que tienen que ser procesadas.

### Memoria Secundaria

Como la memoria principal sólo almacena el contenido mientras el ordenador se mantiene activo y no tiene una gran capacidad, el sistema operativo se encarga de la gestión de otra memoria permanente (no volátil) donde guarda el estado de los archivos y las configuraciones personalizadas cuando el ordenador está apagado.

#### Sistema de ficheros

El sistema de ficheros es la manera en que los ficheros se organizan dentro del dispositivo de almacenamiento (Disco duro, pen drive, tarjeta de memoria). Son una serie de funciones que permiten al sistema operativo guardar, proteger, borrar y leer del dispositivo de almacenamiento. Además constituyen una organización de la información eficiente dentro del dispositivo con una serie de tablas e índices que permiten localizar la información. Cada dispositivo puede estar formateado con uno u otro sistema de ficheros. Ejemplos de sistemas de ficheros son: FAT32, NTFS, ext2, ext3, ext4, VFAT,... Los sistemas de ficheros no son las carpetas y archivos que nosotros podemos ver en un ordenador, sino la manera de organizarse que tienen esas carpetas y esos archivos, como 1's y 0's dentro de las memorias que los alojan.

# Virtualización
## Definición

La virtualización es un proceso por el cual, podemos instalar Sistemas Operativos virtuales dentro de Sistemas Operativos anfitriones instalados en una máquina física. Para ello, se necesita un programa gestor de máquinas virtuales como VirtualBox, VMWare y Parallel Desktops; sobre el que instalar las diferentes máquinas virtuales. A las máquinas virtuales, se les asignan parte de los recursos del sistema.

## Gestor de máquinas virtuales

El programa gestor de máquinas virtuales emula una serie de dispositivos hardware sobre el que se instalarán los sistemas operativos y programas de las máquinas virtuales. Estos dispositivos son: la memoria, el teclado, la pantalla, el disco duro, las unidades de almacenamiento...

## Máquina virtual

Una máquina virtual (a menudo MV o VM) es un proceso que emula todos los componentes de un ordenador, dentro de un programa informático. Su utilización es cada vez más habitual en enseñanza, servidores, pruebas..., pero también en ordenadores de usuario, ya que permite la inclusión de sistemas operativos diferentes dentro de la misma máquina y su ejecución en paralelo.

## Utilización, propiedades, ventajas e inconvenientes

Para utilizar la virtualización, es necesario tener instalado un sistema operativo anfitrión. Además hay que instalar sobre él, un sistema gestor de máquinas virtuales. Para cada máquina virtual, hay que asignar una serie de recursos (capacidad, memoria principal, gráfica) e instalar el sistema operativo dentro de la máquina virtual, que se encargará de gestionar esos recursos virtuales como si de una máquina física fuera. Las ventajas de la virtualización son muchas:
* Permite la simlutaneidad de sistemas operativos diferentes dentro de la misma máquina.
* Optimiza el aprovechamiento de recursos de la máquina, pudiendo tener más ordenadores a la vez funcionando.
* Reduce el consumo energético, al poder disponer de varias máquinas funcionando dentro de una sola.
* Aumenta la seguridad en servidores, si un servidor tiene que albergar 3 páginas web diferentes, por ejemplo, puede hacerlo mediante la creación y mantenimiento de 3 máquinas virtuales separadas, que a ojos de cualquier atacante, serán independientes. Si una página tiene un agujero de seguridad, el resto de las páginas no se verán afectadas ya que están, virtualmente, en otro servidor.
* Permite la exportación de servidores de manera fácil, segura y rápida en caso de traslado o accidentes catastróficos. Las máquinas virtuales se pueden exportar.
* Facilita las copias de seguridad, pudiendo hacer imágenes del estado de una máquina, y no sólo de sus datos. Haciendo innecesaria la reconfiguración de la computadora.