martes, 26 de noviembre de 2013

Algoritmos de planificación.

Los algoritmos de planificación son los siguientes:

FCFS (first come first serverd)

Este método se conoce también como “primero en entrar, primero en salir”.
Es una política no apropiativa.

Cuenta con el inconveniente de que sus prestaciones son bastante pobres, pues si se asigna un trabajo largo a la CPU, todos los demás permanecen a la espera, por lo que se retienen los procesos cortos, es decir, se produce el efecto convoy.

Sin embargo, si aplicamos prioridades a los procesos, los cortos entraran si tienen una mayor prioridad, pues se tendrá en cuenta el orden de llegada.

La ventaja sería que los procesos con prioridad se ejecutarían sin problemas.
El inconveniente es la posibilidad de que los procesos entren en un estado de inanición y nunca lleguen a ejecutarse.

SJF (shortest job first)

Este algoritmo se basa en ejecutar primero los procesos de menor tamaño, y en caso de que haya dos iguales, se prioriza el que llegó antes al sistema.

Es un algoritmo no apropiativo.

Una de las ventajas es que con este método el tiempo de espera medio se reduce, sin embargo, el inconveniente que presenta este algoritmo es que en la vida real tendríamos que intentar predecir el tiempo que un proceso tarda en ejecutarse en función de tiempos de referencia tomados de ejecuciones anteriores.

SRT (shortest remaining time first)

La evolución lógica será convertir el algoritmo anterior en apropiativo.
Para ello tenemos en cuenta el tiempo restante de ejecución y no el tiempo inicial.

Las ventajas de este algoritmo son su eficiencia y su excelente tiempo medio de servicio.
El inconveniente es que es injusto, pues una serie de procesos cortos quitan repetidamente el procesador a uno largo que a la vez lo está usando y está terminando.

RR (round-robbin)

Se trata de un algoritmo apropiativo.
El diseño del algoritmo RR consiste en definir una unidad de tiempo llamada quantum.
Los procesos ya no pelean por los recursos si no que estos se asignan equitativamente a todos ellos por turnos, los cuales finalizan cuando lo indique el quantum.

Se pueden dar dos casos:
- Que el proceso requiera menos tiempo que el quantum asignado.
- Que el proceso requiera más tiempo que el quantum asignado.

El inconveniente de este método es que cuando finalizan los quantums nos encontramos con una interrupción procedente del temporizador que provoca que haya que salvar todos los registros del proceso antiguo y restaurar los del nuevo. Es lo que se conoce como cambio de contexto. Además, si el proceso es demasiado corto el sistema puede llegar a bloquearse.

La ventaja de este algoritmo es que se establecen turnos equitativos entre las colas de menor prioridad, por lo que todos los procesos pueden avanzar y finalizarse.

martes, 19 de noviembre de 2013

Procesos apropiativos y no apropiativos.

El sistema operativo considera un proceso como una progresión de estados desde que comienza su ejecución hasta su finalización; en otras palabras, es un programa en ejecución.
Dependiendo de cómo planifiques tu tiempo, podrás dedicarle más a unas cosas que a otras. Es lo que sucede en el interior de los ordenadores.
Según cómo planifiquemos el tiempo que dedicamos a cada proceso, las políticas de planificación se dividen en apropiativas y no apropiativas.
- Apropiativas: permiten que un proceso con mayor prioridad quite la CPU al proceso que se está ejecutando antes de su finalización. Los inconvenientes son el coste en pérdidas de tiempo al cambiar de proceso, la coordinación del acceso a datos compartidos y evitar que estructuras de datos del núcleo puedan quedar inconscientes por los cambios de contexto.
- No apropiativas: una vez que un proceso obtiene la CPU no se le puede quitar hasta que no acabe su ejecución. Esta política genera un problema de acaparamiento injusto de la CPU.

jueves, 14 de noviembre de 2013

Esdger Dijkstra

Edsger Wybe Dijkstrfue fue un científico contemporáneo de la computación. 
Nació el 11 de mayo de 1930 en los Países Bajos y estudió física teórica en la Universidad de Leiden. 


Dijkstra escribió más de 1300 artículos, pero indudablemente hay una de sus contribuciones cuyo impacto está presente en numerosos ámbitos de la computación moderna: 

Algoritmo para encontrar el camino más corto en un grafo: Fue el primer problema de grafos que resolvió Dijkstra en 1956 y publicado en 1959.


Se utiliza para la determinación del camino más corto dado un vértice origen al resto de vértices en un grafo con pesos en cada arista.

La idea subyacente en este algoritmo consiste en ir explorando todos los caminos más cortos que parten del vértice origen y que llevan a todos los demás vértices; cuando se obtiene el camino más corto desde el vértice origen, al resto de vértices que componen el grafo, el algoritmo se detiene.

El algoritmo es una especialización de la búsqueda de costo uniforme, y como tal, no funciona en grafos con aristas de coste negativo (al elegir siempre el nodo con distancia menor, pueden quedar excluidos de la búsqueda nodos que en próximas iteraciones bajarían el costo general del camino al pasar por una arista con costo negativo).




En los años 50, un algoritmo era difícilmente considerado un logro científico. Hoy en día, este algoritmo ha sido usado como la base para protocolos de enrutamiento en Internet, sistemas de posicionamiento global o simplemente para itinerarios de viaje.




miércoles, 13 de noviembre de 2013

Código ASCII

El código ASCII o US-ASCII es un sistema de codificación que trabaja sustituyendo las letras por números.
Fue creado en 1963 para transferir información entre equipos eléctricos y entre equipos electrónicos basados en los caracteres comunes del alfabeto norteamericano.

Consiste en una tabla numérica que asocia un código numérico de 7 bits consecutivos a cada una de las letras, números y otro tipo de caracteres (signos de puntuación, símbolos, caracteres especiales, etc.).
Esta codificación es la que permite trabajar con ordenadores y que éstos se comuniquen entre ellos, mediante dicho código binario.

Actualmente, el código ASCII está compuesto por 128 códigos.



Mi nombre codificado en ASCII sería: 
C L A R A
0100 0011 0100 1100 0100 0001 0101 0010 0100 0001