martes, 26 de septiembre de 2017

¿ Qué es un sistema operativo?

¿Qué son los sistemas operativos?

Para que un software funcione se necesita que el ordenador sea capaz de realizar tareas preaparatorias para el intercambio entre el procesador, memoria y recursos físicos (periféricos y componenetes). 
Resultado de imagen para sistema operativo con usuarioEl SO (Sistema operativo) se encarga de establecer el vínculo entre recursos materiales, usuario y aplicaciones. Todo software se comunica con el procesador para que el envie los datos y requisiciones a los preriféricos o área correspondiente con el uso de drivers.


Funciones del SO

  1. Administrador del procesador: Con un algoritmo de programación administra la distribución del procesador entre programas.
  2. Gestión de memoria de acceso aleatoria: Gestiona la memoria asignada a acada aplicación, y cuando la memoria física es insuficiente, el SO puede crear una zona de memoria en el HDD llamada memoria virtual.
  3. Gestión de entradas y salidas: Es el manejo de los recursos, monitoreando entradas y salidas de los mismos.
  4. Gestión de ejecución de aplicaciones: Se encarga del arranque (ejecución) de las aplicaciones del computador, es decir, es el encargado de iniciar los programas.
  5. Administra autorizaciones: Para mantener el equipo seguro y en funcionamiento, se encarga de igual manera de controlar la seguridad y accesos a los archivos del computador, casos como requerir permisos de administrador o solicitar contraseña en archivos encriptados.
  6. Gestión de archivos: Se hace cargo del control de lectura, escritura de datos en el sistema y aplicaciones.
  7. Gestión de información: Realiza diagnosticos del funcionamiento del equipo. 
 

Características

  • Nucleo: Se tienen las funciones básicas del SO, memoria, proceso, entrada/salida.
  • Interprete de comandos: Comunicación  del SO con un lengüaje de control para periféricos sin conocer características del hardware.
  • Sistema de archivos: Registrar archivos en estructura árborea.
Fuentes
Carlos vialfa, marzo 2017, Sistemas Operativos, Página CCM, es.com.net/contents/651-sistema-operativo#desc


Máquinas Virtuales

Máquina virtual

Una máquina virtual no es más que un software capaz de cargar en su interior otro sistema operativo haciéndole creer que es un PC de verdad. Tal y como su nombre indica, el concepto es tan sencillo como crear una máquina (PC, consola, móvil o lo que sea) que en vez de ser física es virtual o emulada.
En computación, virtualización se refiere a crear una versión virtual de cualquier cosa, así sea un dispositivo de almacenamiento, recursos de red o un sistema operativo. Este tipo de prácticas no son solo útiles para profesionales y amantes de la tecnología, ya que ofrece soluciones para todo tipo de usuarios, permitiéndote probar distintas cosas en un solo ordenador.

Cuando creas una máquina virtual para instalar otro sistema operativo tendrás que asignar todos los recursos que necesitas: cuánto espacio de disco duro, cuánta memoria RAM, cuanta memoria gráfica, decidir en qué lugar se tendrá el disco duro virtual, etc. Todo esto será tomado de los recursos que tengas en tu ordenador. Esto quiere decir que si, por ejemplo, tienes 16GB de RAM y quieres una máquina virtual con 6GB de RAM, puedes hacerlo. Pero, el sistema operativo original solo tendrá disponible 10GB de RAM cuando la máquina virtual esté encendida. Lo mismo pasa con el disco duro. Si le designas 30GB de espacio en disco, ese espacio quedará clausurado y será usado únicamente por la máquina virtual.A grandes rasgos, la única diferencia entre tu ordenador real y una máquina virtual que ejecutes en ese mismo ordenador, es que tu ordenador sí cuenta con un hardware real, mientras que la máquina virtual emula todos sus componentes para funcionar con los tuyos. 
Por lo general es recomendable que en la asignación de recursos, previamente se haga una busqueda  a cerca de lo que el sistema requiere para funcionar correctamente, si se cuenta con más de la cuenta, perfecto, se podrán añadir más recursos.

Vm

Utilidad:
  1. Puedes instalar sistemas operativos para probar o experimentar con ellos. Es una buena solución si quieres probar una versión inestable o nueva de Windows antes de actualizar tu ordenador.
  2. Puedes ejecutar aplicaciones viejas, de esas que nunca actualizaron y solo funcionan en Windows XP o algo incluso más antiguo. Si tu sistema operativo actual es mucho más moderno y existen incompatibilidades, entonces puedes crear una máquina virtual para este tipo de programas.
  3. Puedes hacer pruebas con actualizaciones de software en la máquina virtual antes de instalarlo en tu sistema operativo actual. Usualmente las actualizaciones son para mejorar un programa, pero en algunos casos solo pueden empeorar la experiencia de usuario. Nunca se puede ser muy precavido.
  4. Instala una distribución de Linux que siempre has querido probar. Con la máquina virtual todo será más seguro porque podrás eliminar el sistema operativo con facilidad en caso de que no te guste y no tendrás problemas de incompatibilidad de hardware.
  5. Si eres usuario de Linux pero necesitas algún programa o juego que solo funciona en Windows, puedes hacerlo a través de una máquina virtual. De esta manera te evitas tener que instalar los dos sistemas en el ordenador.
Dado que requiere de un software encargado de general la virtualización, a continuación se listan de igual forma las opciones que actualmente se conocen para crear máquinas virtuales:
  •  VirtualBox (Windows,Linux,Gratuito)

  • Parallels (Mac, $80 dlls)

  • VMware (Windows/Linux/Mac, básico: gratis, pro: $200+) 



  • QEMU (Linux, Gratis)

Resultado de imagen para QEMU

Fuentes
https://www.xataka.com/especiales/maquinas-virtuales-que-son-como-funcionan-y-como-utilizarlas 

http://es.gizmodo.com/los-cinco-mejores-programas-para-crear-maquinas-virtual-1789667830

http://computerhoy.com/noticias/software/que-es-virtual-machine-maquina-virtual-46606
 

Procesos

Definición proceso

Un proceso no es mas que un programa en ejecución, e incluye los valores actuales del contador de programa, los registros y las variables.
En un proceso las instrucciones de un programa destinadas a ser ejecutadas por el microprocesador. Su estado de ejecución en un momento dado, esto es, los valores de los registros de la CPU para dicho programa. Su memoria de trabajo, es decir, la memoria que ha reservado y sus contenidos. Otra información que permite al sistema operativo su planificación.
Esta definición varía ligeramente en el caso de sistemas operativos multihilo, donde un proceso consta de uno o más hilos, la memoria de trabajo (compartida por todos los hilos) y la información de planificación. Cada hilo consta de instrucciones y estado de ejecución.

Estados y transiciones de los procesos

 Desde que se crea hasta que se destruye, un proceso pasa por diferentes estados. Un proceso puede variar entre 5 distintos estado

  • Nuevo: Se dice que un proceso está en estado de nuevo cuando apenas se encuentra en proceso de crearse.
  • Listo: Un proceso está en estado de listo, cuando podría usar una CPU, si hubiera una disponible.
  • En ejecución: Se dice que un proceso está estado de ejecución, si en ese momento tiene esta ocupando la CPU.
  • Bloqueado: Se dice que un proceso está en estado de bloqueado, si espera que ocurra algo, como por ejemplo, la terminación de una E/S, para así poder ponerse en marcha.
  • Terminado: Cuando un proceso se ha completado su ejecución pasa a ser un proceso terminado. Los bloques de control de los procesos se almacenan en colas, cada una de las cuales representa un estado particular de los procesos, existiendo en cada bloque, entre otras informaciones. Los estados de los procesos son internos del sistema operativo y transparentes al usuario.



1.- Estados activos


Son aquellos que compiten con el procesador o están en condiciones de hacerlo. Se dividen en:

  • Ejecución:Estado en el que se encuentra un proceso cuando tiene el control del procesador. En un sistema monoprocesador este estado sólo lo puede tener un proceso.
  • Preparado: Aquellos procesos que están dispuestos para ser ejecutados, pero no están en ejecución por alguna causa (Interrupción, haber entrado en cola estando otro proceso en ejecución, etc.).
  • Bloqueado: Son los procesos que no pueden ejecutarse de momento por necesitar algún recurso no disponible (generalmente recursos de entrada/salida). 


2.- Estados inactivos

Son aquellos que no pueden competir por el procesador, pero que pueden volver a hacerlo por medio de ciertas operaciones. En estos estados se mantiene el bloque de control de proceso aparcado hasta que vuelva a ser activado. Se trata de procesos que no han terminado su trabajo que lo han impedido y que pueden volver a activarse desde el punto en que se quedaron sin que tengan que volver a ejecutarse desde el principio.

Son de dos tipos:
Suspendido bloqueado: Es el proceso que fue suspendido en espera de un evento, sin que hayan desaparecido las causas de su bloqueo.

Suspendido programado: Es el proceso que han sido suspendido, pero no tiene causa parta estar bloqueado.

Transiciones

Un proceso puede encontrarse en estado de ejecución, bloqueado o listo (que también se llama ejecutable). De estos estados de los procesos se derivan las siguientes transiciones y estados:

Transición: El paso de un estado a otro.

1. El proceso se bloquea en la entrada.

2. El planificador elige otro proceso.

3. El planificador elige este proceso.

4. La entrada se vuelve disponible.

Estados:

1. Ejecución (que en realidad hace uso del CPU en ese instante).

2. Bloqueado (incapaz de correr hasta que suceda algún evento externo.

3. Listo (ejecutable; se detiene temporalmente para permitir que se ejecute otro

proceso).

En estos tres estados son posibles cuatro transiciones:

1. Ocurre cuando un proceso descubre que no puede continuar. En algún sistema el proceso debe ejecutar una llamada al sistema, BLOCK, para entrar en estado bloqueado.

2 y 3. Son ocasionadas por el planificador del proceso, que es parte del sistema operativo sin que el proceso llegue a saber de ella.

2. Ocurre cuando el planificador decide que el proceso en ejecución ya ha corrido el tiempo suficiente y es tiempo de permitir que otro proceso tome tiempo de CPU.

3. Ocurre cuando todos los procesos han utilizado su parte del tiempo y es hora de que el primer proceso vuelva a correr.

4. Ocurre cuando aparece el evento externo que estaba esperando un proceso (como el arribo de alguna entrada). Si ningún otro proceso corre en ese instante, la transición 3 se activará de inmediato y el proceso iniciara su ejecución, de lo contrario tendrá que esperar, en estado listo.

Fuentes
http://eq2-sistemasoperativos.blogspot.mx/2012/04/21-concepto-de-proceso.html

http://openaccess.uoc.edu/webapps/o2/bitstream/10609/8179/1/fserranocaTFC0611.pdf

lunes, 25 de septiembre de 2017

Niveles, objetivos y criterios de planificación



La planificación es el proceso por el cual el sistema operativo selecciona que proceso ejecutar.

        La planificación de la CPU, en el sentido de conmutarla entre los distintos procesos, es una de las funciones del sistema operativo. Este despacho es llevado a cabo por un pequeño programa llamado planificador a corto plazo o dispatcher (despachador). La misión del dispatcher consiste en asignar la CPU a uno de los procesos ejecutables del sistema, para ello sigue un determinado algoritmo.
Los acontecimientos que pueden provocar la llamada al dispatcher dependen del sistema (son un subconjunto de las interrupciones), pero son alguno de estos:
  • El proceso en ejecución acaba su ejecución o no puede seguir ejecutándose (por una E/S, operación WAIT, etc). Un elemento del sistema operativo ordena el bloqueo del proceso en ejecución
  • El proceso en ejecución agota su cuantum o cuanto de estancia en la CPU. Un proceso pasa a estado listo. 
 Es importante manejar una correcta admonistración de procesos, para de está manera maximizar el aprovechamiento de recursos en la obtención de mayores resultados, por esto, existen tres niveles que definene el orden o tipo de admisión de procesos:
  • Planificación de alto nivel: También se denomina Planificación de trabajos. Determina a qué trabajos se les va a permitir competir activamente por los recursos del sistema, lo cual se denomina Planificación de admisión.
  • Planificación de nivel intermedio: Determina a qué procesos se les puede permitir competir por la cpu. Responde a fluctuaciones a corto plazo en la carga del sistema y efectúa “suspensiones” y “activaciones” (“reanudaciones”) de procesos. Debe ayudar a alcanzar ciertas metas en el rendimiento total del sistema.
  • Planificación de bajo nivel: Determina a qué proceso listo se le asigna la cpu cuando esta queda disponible y asigna la cpu al mismo, es decir que “despacha” la cpu al proceso.

Objetivos

a) Reparto equitativo del tiempo de procesador
b) Eficiencia en el uso del procesador
c) Menor tiempo de respuesta en uso interactivo
d) Cumplir plazos de ejecución de los sistemas de tiempo real

Dentro de los objetivos debemos destacar que se busca que todo proceso lleve a una resolución, es decir que todos sean resultos y ninguno se postergue indefinidamente.  Seguir las prioridades de procesos, y hacer que aquellos procesos prioritarios sean resultos rápidamente, inclusive es escencial que a los procesos que requieran baja paginación, darles un mejor tratamiento.
Siempre se va a tratar de equilibrar los recursos que se están utilizando, dado que se genera un mejor tiempo de respuesta cuando se usan todos los recursos necesarios en una tarea pero de esta manera, el uso de recursos puede ser pobre al momento que se quieran mejorar tiempos en otros procesos.

Criterios

  • Equidad Garantizar que cada proceso obtiene su proporción justa de la cpu.
  • Eficacia Mantener ocupada la cpu el ciento por ciento del tiempo.
  • Tiempo de respuesta Minimizar el tiempo de respuesta para los usuarios interactivos.
  • Tiempo de regreso Minimizar el tiempo que deben esperar los usuarios por lotes(batch) para obtener sus resultados.
  • Rendimiento Maximizar el número de tareas procesadas por hora.



Fuentes

http://www.uhu.es/rafael.lopezahumada/descargas/tema7_fund_0405.pdf

http://administraciondeprocesos-uscanga.blogspot.mx/2008/10/25-niveles-objetivos-y-criterios-de.html

http://www.slideserve.com/olga-gilliam/niveles-objetivos-y-criterios-de-planificaci-n







Concurrencia y secuencialidad

Concurrencia y secuencialidad en sistemas operativos

Concurrencia

Los procesos son concurrentes si existen simultáneamente. La concurrencia comprende un gran número de cuestiones de diseño, incluyendo la comunicación entre procesos, comparición y competencia por los recursos, sincronización de la ejecución de varios procesos y asignación del tiempo de procesador a los procesos y es fundamental para que existan diseños como Multiprogramación, Multiproceso y Proceso distribuido. La concurrencia puede presentarse en tres contextos diferentes:
  • Varias aplicaciones: La multiprogramación se creó para permitir que el tiempo de procesador de la máquina fuese compartido dinámicamente entre varios trabajos o aplicaciones activas.
  • Aplicaciones estructuradas: Como ampliación de los principios del diseño modular y la programación estructurada, algunas aplicaciones pueden implementarse eficazmente como un conjunto de procesos concurrentes.
  • Estructura del sistema operativo: Las mismas ventajas de estructuración son aplicables a los programadores de sistemas y se ha comprobado que algunos sistemas operativos están implementados como un conjunto de procesos. Existen tres modelos de computadora en los que se pueden ejecutar procesos concurrentes:
  • Multiprogramación con un único procesador. El sistema operativo se encarga de ir repartiendo el tiempo del procesador entre los distintos procesos, intercalando la ejecución de los mismos para dar así una apariencia de ejecución simultánea.
  • Multiprocesador. Es una maquina formada por un conjunto de procesadores que comparten memoria principal. En este tipo de arquitecturas, los procesos concurrentes no sólo pueden intercalar su ejecución sino también superponerla.
  • Multicomputadora. Es una maquina de memoria distribuida, que está formada por una serie de computadoras. En este tipo de arquitecturas también es posible la ejecución simultánea de los procesos sobre los diferentes procesadores. 
 
En un sistema monoprocesador, la existencia de multiprogramación es condición necesaria, pero no suficiente para que exista concurrencia, ya que los procesos pueden ejecutarse independientemente. Por ejemplo, un editor y un compilador pueden estar ejecutándose simultáneamente en una computadora sin que exista concurrencia entre ellos. Por otro lado si un programa se está ejecutando y se encuentra grabando datos en un archivo, y otro programa también en ejecución está leyendo datos de ese mismo archivo, sí existe concurrencia entre ellos, pues el funcionamiento de uno interfiere en el funcionamiento de otro.
Los procesos del sistema pueden ejecutarse concurrentemente, puede haber múltiples tareas en el CPU con varios procesos. Existen varias razones para permitir la ejecución concurrente:
* Compartir recursos físicos.
            Ya que los recursos del hardware de la computadora son limitados, nos podemos ver obligados a compartirlos en un entorno multiusuario.
* Compartir recursos lógicos.
Puesto que varios usuarios pueden interesarse en el mismo elemento de información (por ejemplo un archivo compartido), debemos proporcionar un entorno que permita el acceso concurrente a estos tipos de recursos.
* Acelerar los cálculos.
            Si queremos que una tarea se ejecute con mayor rapidez, debemos dividirla en subtareas, cada una de las cuales se ejecutara, en paralelo con las demás.
* Modularidad.
            Podremos construir el sistema en forma modular, dividiendo las funciones del sistema en procesos separados.
* Comodidad.
       Un usuario puede tener que ejecutar varias tareas a la vez, por ejemplo puede editar, imprimir y compilar en paralelo.
        La ejecución concurrente que requiere la cooperación entre procesosnecesita un mecanismo para la sincronización y comunicación de procesos, xclusión mutua y sincronización, pueden ser señales,tuberías, semáforos, mutex y variables condicionales o paso de mensajes.

Secuencialidad


Según la forma de realizar el elemento de memoria nos podemos encontrar
distintos tipos de sistemas secuenciales, principalmente dos:

  • Sistemas Secuenciales Síncronos, en los que su comportamiento puede definirse en instantes de discretos de tiempo, se necesita una sincronización de los elementos del sistema mediante una señal de reloj, que no es más que un tren de pulsos periódico. Las variables internas no cambian hasta que no llega un pulso del reloj.
  • Sistemas Secuenciales Asíncronos, actúan de forma continua en el tiempo, un cambio de las entradas provoca cambios en las variables internas sin esperar a la intervención de un reloj. Son sistemas más difíciles de diseñar.
Imagen relacionada
 El cambio de las variables internas se puede producir de dos maneras en un sistema secuencial síncrono:

    • Por niveles, cuando permiten que las variables de entrada actúen sobre el sistema en el instante en el que la señal de reloj toma un determinado nivel lógico (0 ó 1).
    • Por flancos, o cambios de nivel, cuando la acción de las variables de entrada sobre el sistema se produce cuando ocurre un flanco activo del reloj. Este flanco activo puede ser de subida (cambio de 0 a 1) o de bajada (cambio de 1 a 0).

    http://florysel.blogspot.mx/2012/11/24-concurrencia-y-secuenciabilidad.html

     mitecnologico.com/Main/ConcurrenciaYSecuenciabilidad

    https://sites.google.com/site/materiasisoperativo/unidad-2-administrador-del-proceso-y-del-procesador/2-4-concurrencia-y-secuenciabilidad

    ¿Cómo crear una máquina virtual?

    Creación de una máquina virtual

    Tal como hemos visto en una entrada anterior (Link aquí) las máquinas virtuales son una gran herramienta en la extensión de un usuario para pruebas y tareas que requieren aplicaciones antiguas y algunas otras funciones más.
    Pero ahora bien, en algunas de las ocasiones las plataformas encargadas de creas las máquinas virtuales no son claras en los requisitos que estas puedan tener, en todo caso, se hará una explicación en VMware a cerca de que puntos debemos cubrir al generar una máquina virtual.
     Antes de crear nuestra máquina virtual debemos tener en cuenta lo siguiente:
    1. Conocer los elementos de hardware de nuestro computador que alojará la máquina virtual.
    2. Conocer los requisitos mínimos de hardware del sistema que queremos virtualizar.
    3. Establecer un tamaño aproximado de disco duro que le concederemos a la maquina virtual en función de las tareas que realizaremos con el, de otra manera o lo desperdiciaremos o siemplemente, quedaremos cortos del mismo.  
    A continuación se les comparte un video en el cuál se asesora en la creación  de la máquina virtual y así mismo, la previa instalación del software VMware para su manipulación. Video tutorial: Video tutorial

    Procesos ligeros

    Hilos o Hebras

    Un thread (Hilo) es un flujo de control perteneciente a un proceso (a veces se habla de tareas con threads). Dentro de un proceso puede haber uno o más hilos de control cada uno con:
    • Un estado de ejecución (en ejecución, listo, bloqueado).
    • Un contexto de procesador, que se salva cuando no esté ejecutándose.
    • Una pila de ejecución.
    • Algún almacenamiento estático para variables locales.
    • Acceso a la memoria y a los recursos de ese trabajo que comparte con los otros hilos.
     Características:
    • Se comparten recursos. La compartición de la memoria permite a las hebras pares comunicarse sin usar ningún mecanismo de comunicación inter-proceso del SO.
    • La conmutación de contexto es más rápida gracias al extenso compartir de recursos
    • No hay protección entre las hebras. Una hebra puede escribir en la pila de otra hebra del mismo proceso
    • Estado de los procesos ligeros