Llamado: (Algoritmo de Dijkstra)

Este algoritmo se usa para evitar interbloqueos en el sistema, básicamente procede de la siguiente manera: cada proceso declara el máximo de recursos a utilizar y cada vez que se hace una solicitud de asignación de recursos, se determina si al asignar los recursos se deja en un estado inseguro y de ser así se pospone la asignación, de lo contrario, se asignan los recursos solicitados.

Asignación

Se determina si hay disponiboles
Se valida que no exceda su máximo declarado
Se verifica que si se concede la petición, el sistema quede en estado seguro
Si no se cumple cualquiera de estas condiciones, el proceso queda suspendido hasta que exista una liberación de recursos.

Desventajas

Se necesita saber desde un principio el máximo de recursos que usará cada proceso
Este proceso implica un retardo en cada asignación de recursos, lo que puede degradar el sistema si se manejan muchos recursos y/o procesos
Se requiere una garantía de devolución: c/proceso liberará los recursos asignados


proceso\recursoR1 (7)R2(7)R3(7)
MaximosP1531
P2323
P3231
P4503
AsignadosP1331
P2222
P3011
P4001
NecesariosP1200
P2101
P3220
P4502
Disponibles212
Anteriormente era bastante difícil de creer que Microsoft y Google pudieran colaborar en algún desarrollo, sin embargo, hoy en día las grandes compañías han formado alianzas para mejorar algunas tecnologías web. En este caso Google y Microsoft han contribuirán para mejorar el Framework AngularJS, el cual ha llegado para brindar una serie de mejoras para los desarrolladores web.

En ng-conf en Salt Lake City, el equipo angular anunció que ha estado trabajando en estrecha colaboración con el equipo de TypeScript de Microsoft para desarrollar Angular 2, y converge los idiomas de TypeScript y AtScript.

TypeScript es un superconjunto de JavaScript, el cual ofrece características adicionales, pero compila de nuevo en JavaScript plano.

Angular es uno de los Frameworks más populares de JavaScript, pero la versión dos ha sido decepcionante con los desarrolladores, ya que no ofrece ninguna opción de migración desde la primera versión de angular y trae una serie de cambios importantes que requieren aprender de nuevo algunos conceptos.

Una vez mas vemos que Google y Microsoft pueden colaborar en un proyecto tan grande, lo cual es magnifico. Esto demuestra una vez más que Microsoft está abriendo lentamente y dando el soporte a tecnologías libres.



La terminal es muy sencilla y a la vez sumamente poderosa, te permite interactuar con el sistema operativo sin necesidad de una interfaz gráfica ¿no es acaso maravillosa?

Si bien las distribuciones Linux hacen cada vez más completas y funcionales sus GUI (del inglés graphical user interface), la terminal siempre ha estado y estará allí para ayudarte y no lo contrario, como quizá hayas pensado. De hecho, en algunas distribuciones es el primer contacto entre el usuario y el sistema.

¿Cuando instalaste Linux por primera vez imaginaste que podrías administrar todo tu sistema desde una simple línea de comandos?. Si comienzas a usar la terminal con regularidad, no solo le perderás el miedo, sino que notaras que es una potente herramienta que permite mantener y en algunos casos hasta salvar tu instalación de esos indeseables problemas que ocurren justo después de una gran actualización del sistema, por solo nombrar un ejemplo.

Anteriormente les habíamos hablado de algunos comandos básicos, a continuación te presentamos 10 más para que sigas aprendiendo sobre las bondades de la terminal en Linux.

Cat


Cat (de concatenar), es una maravillosa utilidad que nos permite visualizar el contenido de un archivo de texto sin la necesidad de un editor. Para utilizarlo solo debemos mencionarlo junto al archivo que deseamos visualizar:

$ cat prueba.txt

Ls


Ls (de listar), permite listar el contenido de un directorio o fichero. La sintaxis es:

$ ls /home/directorio


El comando ls tiene varias opciones que permiten organizar la salida, lo que resulta particularmente útil cuando es muy grande. Por ejemplo, puedes usar -a para mostrar los archivos ocultos y -l para mostrar los usuarios, permisos y la fecha de los archivos. Así como para todos los comandos Linux, estas opciones pueden combinarse, terminando en algo como:

$ ls -la /home/directorio

Cd


Cd (de change directory o cambiar directorio), es como su nombre lo indica el comando que necesitarás para acceder a una ruta distinta de la que te encuentras. Por ejemplo, si estas en el directorio /home y deseas acceder a /home/ejercicios, seria:

$ cd /home/ejercicios


Si estás en /home/ejercicios y deseas subir un nivel (es decir ir al directorio /home), ejecutas:

$ cd ..

Touch


Touch crea un archivo vacío, si el archivo existe actualiza la hora de modificación. Para crear el archivo prueba1.txt en /home, seria:

$ touch /home/prueba1.txt

Mkdir


Mkdir (de make directory o crear directorio), crea un directorio nuevo tomando en cuenta la ubicación actual. Por ejemplo, si estas en /home y deseas crear el directorio ejercicios, sería:

$ mkdir /home/ejercicios


Mkdir tiene una opción bastante útil que permite crear un árbol de directorios completo que no existe. Para eso usamos la opción -p:

$ mkdir -p /home/ejercicios/prueba/uno/dos/tres

Cp


Cp (de copy o copiar), copia un archivo o directorio origen a un archivo o directorio destino. Por ejemplo, para copiar el archivo prueba.txt ubicado en /home a un directorio de respaldo, podemos usar:

$ cp /home/prueba.txt /home/respaldo/prueba.txt


En la sintaxis siempre se especifica primero el origen y luego el destino. Si indicamos un nombre de destino diferente, cp copiará el archivo o directorio con el nuevo nombre.

El comando también cuenta con la opción -r que copia no sólo el directorio especificado sino todos sus directorios internos de forma recursiva. Suponiendo que deseamos hacer una copia del directorio /home/ejercicios que a su vez tiene las carpetas ejercicio1 y ejercicio2 en su interior, en lugar de ejecutar un comando para cada carpeta, ejecutamos:

$ cp -r /home/ejercicios /home/respaldos/

Mv


Mv (de move o mover), mueve un archivo a una ruta específica, y a diferencia de cp, lo elimina del origen finalizada la operación. Por ejemplo:

$ mv /home/prueba.txt /home/respaldos/prueba2.txt


Al igual que cp, en la sintaxis se especifica primero el origen y luego el destino. Si indicamos un nombre de destino diferente, mv moverá el archivo o directorio con el nuevo nombre.

Rm


Rm (de remove o remover), es el comando necesario para borrar un archivo o directorio. Para borrar el archivo prueba.txt ubicado en /home, ejecutamos:

$ rm /home/prueba.txt


Este comando también presenta varias opciones. La opción -r borra todos los archivos y directorios de forma recursiva. Por otra parte, -f borra todo sin pedir confirmación. Estas opciones pueden combinarse causando un borrado recursivo y sin confirmación del directorio que se especifique. Para realizar esto en el directorio respaldos ubicado en el /home, usamos:

$ rm -fr /home/respaldos


Este comando es muy peligroso, por lo tanto es importante que nos documentemos bien acerca de los efectos de estas opciones en nuestro sistema para así evitar consecuencias nefastas.

Pwd


Pwd (de print working directory o imprimir directorio de trabajo), es un conveniente comando que imprime nuestra ruta o ubicación al momento de ejecutarlo, así evitamos perdernos si estamos trabajando con múltiples directorios y carpetas. Su sintaxis seria:

$ pwd

Clear


Clear (de limpiar), es un sencillo comando que limpiara nuestra terminal por completo dejándola como recién abierta. Para ello ejecutamos:

$ clear
Round-robin es un método para seleccionar todos los elementos en un grupo de manera equitativa y en un orden racional, normalmente comenzando por el primer elemento de la lista hasta llegar al último y empezando de nuevo desde el primer elemento. El nombre del algoritmo viene del principio de Round-Robin conocido de otros campos, donde cada persona toma una parte de un algo compartido en cantidades parejas.

Una forma sencilla de entender el Round-robin es imaginar una secuencia para "tomar turnos". En operaciones computacionales, un método para ejecutar diferentes procesos de manera concurrente, para la utilización equitativa de los recursos del equipo, es limitando cada proceso a un pequeño período (quantum), y luego suspendiendo este proceso para dar oportunidad a otro proceso y así sucesivamente. A esto se le denomina comúnmente como Planificación Round-Robin.

Aplicación circular

Round-robin es un algoritmo de planificación de procesos simple de implementar, dentro de un sistema operativo se asigna a cada proceso una porción de tiempo equitativa y ordenada, tratando a todos los procesos con la misma prioridad. En Sistemas operativos, la planificación Round-robin da un tiempo máximo de uso de CPU a cada proceso, pasado el cual es desalojado y retornado al estado de listo, la lista de procesos se planifica por FIFO, del inglés "First In, First Out" (primero en entrar, primero en salir o primero llegado, primero atendido).

Pasos de ciclos

Para averiguar los pasos de ciclos de procesos totales se toman todos los números de procesos y se calculan con los procesos necesarios para la realización de estos...

Suponga que hay tres procesos y se desea averiguar cuanto tarda.

proceso A: 3 veces
proceso B: 4 veces
proceso C: 5 veces
siguiendo tp = tProceso + [(tProceso ultimo - tProceso) - (tProceso ultimo - tProceso proximo)] + tProceso \!

Planificación circular

Este algoritmo de planificación, conocido por Round robin, está diseñado especialmente para sistemas de tiempo compartido. Se define un intervalo de tiempo denominado "Quantum", cuya duración varía según el sistema. La cola de procesos se estructura como una cola circular. El planificador la recorre asignando un cuanto de tiempo a cada proceso. La organización de la cola es FIFO. El Quantum se suele implantar mediante un temporizador que genera una interrupción cuando se agota el Quantum de tiempo. Si el proceso agota su ráfaga de CPU antes de finalizar el Quantum, el planificador asigna la CPU inmediatamente a otro proceso. Este algoritmo tiene un tiempo de espera relativamente grande. Sin embargo, garantiza un reparto de la CPU entre todos los usuarios y arroja tiempos de respuesta buenos. Como ejemplo, supongamos los siguientes tres procesos en un instante en el sistema: Proceso Duración de la ráfaga tw P1 24 6 P2 3 4 P3 3 7

¯tw = 5,66: Tiempos de proceso y de espera según la planificación RR.
Vemos que el tiempo de espera podría ser inferior, por ejemplo 3 unidades para el algoritmo SJF. Si tenemos n procesos, y un Quantum de tiempo de q, el resultado es que cada trabajo recibe 1/n de tiempo de CPU en Quantum's de q unidades. Ningún proceso debe esperar más de (n − 1)q unidades de tiempo antes de recibir servicio. El rendimiento del algoritmo depende mucho del tamaño del Quantum. Si se utiliza un valor muy grande el algoritmo tiende a degenerar hacia el FCFS. Si el tamaño del Quantum es muy pequeño, el costo de los constantes cambios de contexto degrada mucho el rendimiento del procesador. Hay que tener en cuenta que el porcentaje relativo de cambio de contexto respecto al cuanto, es el porcentaje relativo de pérdida de la CPU. Una regla empírica dice que el cuanto de tiempo debe ser inferior al 80 % de las ráfagas de CPU.