Anda di halaman 1dari 21

Creación de Lenguaje de Programación y

Gestión de Sistemas Operativos


Ingeniería de Sistemas

Tarea Unidad 4

Miguel Andrés Santana Muñoz


Natalia Villegas Jiménez
Francisco Javier Rendón Rodas
Yoinar Alexander Perea Gonzalez

Presentado a:
Docente
Carlos Armando López

CORPORACIÓN UNIVERSITARIA REMINGTON


2019
Creación de Lenguaje de Programación y 2
Gestión de Sistemas Operativos
Ingeniería de Sistemas

TAREA UNIDAD 4

Describa y presente un ejemplo de un algoritmo utilizado en cada proceso del SO,

 Planificación (FIFO-SJF-STRF-ROUD ROBIN- Por Prioridad)


 Gestión de Memoria (Estática - Dinámica - Segmentación - Paginación
 Comunicación en Sistemas operativos Distribuidos (Arquitecturas Cliente servidor y
sincronización)

PLANIFICACIÓN (FIFO-SJF-STRF-ROUD-ROBIN-POR PRIORIDAD)

Estos algoritmos surgen debido a la necesidad de poder organizar los procesos de una manera
eficiente para el procesador.

Los algoritmos de planificación se encargan de asegurar que un proceso no monopoliza el


procesador. Un proceso es un programa que está en ejecución. Este proceso puede estar en
3 estados distintos “Listo” “Bloqueado” y “En Ejecución”. Los procesos son almacenados en
una lista junto con la información que indica en qué estado está el proceso, el tiempo que ha
usado el CPU, etc.

FCFS “FIRTS-COME, FIRST-SERVED”


Creación de Lenguaje de Programación y 3
Gestión de Sistemas Operativos
Ingeniería de Sistemas

En esta política de planificación, el procesador ejecuta cada proceso hasta que termina, por
tanto, los procesos que en cola de procesos preparados permanecerán encolados en el orden
en que lleguen hasta que les toque su ejecución. Este método se conoce también como fifo
(fist input, first output, primero en llegar primero en salir).

Se trata de una política muy simple y sencilla de llevar a la práctica, pero muy pobre en
cuanto a su comportamiento.

La cantidad de tiempo de espera de cada proceso depende del número de procesos que se
encuentren en la cola en el momento de su petición de ejecución y del tiempo que cada uno
de ellos tenga en uso al procesador, y es independiente de las necesidades del propio
proceso.

Sus características son:

No apropiativa
Es justa, aunque los procesos largos hacen esperar mucho a los cortos
Predecible.
El tiempo medio de servicio es muy variable en función del número de procesos y su
duración.

Ejemplo:

Proceso a → tiempo ejecución → tiempo llegada → tiempo finaliza → tiempo retorno → tiempo
espera.
Creación de Lenguaje de Programación y 4
Gestión de Sistemas Operativos
Ingeniería de Sistemas

En el caso de que los procesos de mayor tiempo de duración llegasen los primeros, el tiempo
medio de espera sería mucho mayor. Podemos llegar a la conclusión de que este no es un
algoritmo eficiente.

Conclusión:

Este algoritmo está bien lo único es que los procesos largos hacen esperar mucho a los cortos.
Predecible, el tiempo medio de servicio es muy variable en función del número de procesos y
su duración.

SJF “SHORTEST JOB FIRST”

En este algoritmo, da bastante prioridad a los procesos más cortos a la hora de ejecución y los
coloca en la cola.

Ejemplo:

Una cola de personas en Mercadona delante de la caja, la persona que menos compra lleva
esa pasa primero.
Creación de Lenguaje de Programación y 5
Gestión de Sistemas Operativos
Ingeniería de Sistemas

Conclusión

En resumen, este algoritmo selecciona al proceso con el próximo tiempo ejecución más
corto. En proceso corto saltará a la cabeza de la cola. Ejecución de un proceso consiste en
ciclos de ejecución de CP y ciclos de espera por E/S. El algoritmo selecciona aquel proceso
cuyo próximo ciclo de ejecución de CP sea menor. El problema está en conocer dichos
valores, pero podemos predecirlos usando la información de los ciclos anteriores ejecutados

SRTF “SHORT REMAINING TIME FIRST”

Es similar al sjf, con la diferencia de que si un nuevo proceso pasa a listo se activa
el dispatcher para ver si es más corto que lo que queda por ejecutar del proceso en ejecución.
Si es así, el proceso en ejecución pasa a listo y su tiempo de estimación se decremento con el
tiempo que ha estado ejecutándose.

Los procesos llegan a la cola y solicitan un intervalo de CPU.

 Si dicho intervalo es inferior al que le falta al proceso en ejecución para abandonar la


CPU, el nuevo proceso pasa a la CPU y el que se ejecutaba a la cola de preparados.
Creación de Lenguaje de Programación y 6
Gestión de Sistemas Operativos
Ingeniería de Sistemas

Conclusión:

El intervalo de CPU es difícil de predecir:

 Posibilidad de inanición: los trabajos largos no se ejecutarán mientras haya un trabajo


corto.

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.

Round Robin es uno de los algoritmos de planificación de procesos más complejos y difíciles,
dentro de un sistema operativo asigna a cada proceso una porción de tiempo equitativa y
ordenada, tratando a todos los procesos con la misma prioridad.
Se define un intervalo de tiempo denominado cuanto, cuya duración varía según el sistema.
La cola de procesos se estructura como una cola circular. El planificado la recorre asignando
un cuanto de tiempo a cada proceso. La organización de la cola es FIFO.
Creación de Lenguaje de Programación y 7
Gestión de Sistemas Operativos
Ingeniería de Sistemas

Conclusión:

Cada proceso tiene asignado un intervalo de tiempo de ejecución, llamado cuantum o cuánto.
Si el proceso agota su cuantum de tiempo, se elige a otro proceso para ocupar la CPU. Si el
proceso se bloquea o termina antes de agotar su cuantum también se alterna el uso de la CPU.
El round robín es muy fácil de implementar. Todo lo que necesita el planificado es mantener
una lista de los procesos listos.

ALGORITMO SJF

El algoritmo SJF (Shortest-Job-First) se basa en los ciclos de vida de los procesos, los cuales
transcurren en dos etapas o periodos que son: ciclos de CPU y ciclos de entrada/salida,
también conocidos por ráfagas.

La palabra shortest (el más corto) se refiere al proceso que tenga el próximo ciclo de CPU más
corto. La idea es escoger entre todos los procesos listos el que tenga su próximo ciclo de CPU
más pequeño.

El SJF se puede comportar de dos formas:

1. Con Desalojo: Si se incorpora un nuevo proceso a la cola de listos y este tiene un ciclo
de CPU menor que el ciclo de CPU del proceso que se está ejecutando, entonces dicho
proceso es desalojado y el nuevo proceso toma la CPU.

Sin desalojo: Cuando un proceso toma la CPU, ningún otro proceso podrá apropiarse de ella
hasta que el proceso que la posee termine de ejecutarse

Ejemplo del Algoritmo SJF (Con Desalojo)


Creación de Lenguaje de Programación y 8
Gestión de Sistemas Operativos
Ingeniería de Sistemas

Para el siguiente ejemplo se tienen 4 procesos (P1, P2,P3 y P4). A medida que estos se van
incorporando a la cola de listos, se les calcula su próximo ciclo de CPU.

Para calcular el próximo ciclo de CPU se pueden emplear: métodos estadísticos, cálculos
probabilísticos, entre otros.

CCPU: próximo ciclo de CPU

En el ejemplo se toma como criterio que la cola


de procesos listos esta inicialmente vacía.

En la figura se representa la llegada de P1 a la


cola de listos con un tiempo de llegada (0,0).
Luego a P1 se le calcula su CCPU (CCPU = 7)
y en ese instante se comienza a ejecutar.

Estando en ejecución el proceso P1, se


incorpora a la cola de listos P2, al cual se le
calcula su CCPU (CCPU = 4).

Pero como el CCPU de P2 es menor que el


CCPU de P1, entonces P1 es desalojado y P2
toma la CPU. En este caso P1 se reincorpora a
la cola de listos porque no ha terminado su
ejecución, y en ese instante se le vuelve a
calcular el valor del CCPU (CCPU = 6).
Creación de Lenguaje de Programación y 9
Gestión de Sistemas Operativos
Ingeniería de Sistemas

Luego llega el proceso P3 a la cola de listos y


se le calcula el CCPU (CCPU = 1).

Por lo que sucede igual que el caso anterior,


el CCPU de P3 es menor que el CCPU de P2,
por lo que se desaloja P2 para cederle la CPU
a P3.

P2 es reincorporado a la cola de listos porque


no ha terminado su ejecución CCPU y se le
vuelve a calcular su CCPU (CCPU = 3).

El proceso P4 se incorpora a la cola de listos


y se le calcula su CCPU (CCPU = 4).

Luego P3 termina su ejecución para cederle


la CPU al próximo proceso que le
corresponda según el criterio que establece el
algoritmo.

Para el ejemplo le corresponde el turno a P2,


luego a P4 y finalmente a P1.

Código del algoritmo FIFO

package fifo;

/**
*
* @author MundoChocCacA
*/

import java.util.LinkedList;
Creación de Lenguaje de Programación y 10
Gestión de Sistemas Operativos
Ingeniería de Sistemas
import java.util.Queue;
import java.util.Iterator;
import java.util.*;
import java.io.*;

public class FIFO {


public static void main(String args[]) {

Queue<String> fifo = new LinkedList<String>();


int i;
int procesos=0;
int conta;
Scanner sc = new Scanner(System.in);
System.out.print("Ingrese el numero los procesos a iniciar: ");
procesos = sc.nextInt();
conta=0;
for(i=1;i<=procesos;i++)
{
conta++;
System.out.println("Creando nuevo proceso en..."+" ms"+" Numero: P_"+conta);
fifo.offer("P_"+Integer.toString(i));
}

System.out.println("Numero procesos: " + fifo.size()+" Activos");


conta=0;
Object data;
while ((data = fifo.poll()) != null) {
conta++;
try {
Thread.sleep(1500);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}

System.out.println("Proceso terminado "+data);


}
System.out.println("Numero procesos: " + fifo.size()+" Activos");

}
}

 Gestión de Memoria (Estática - Dinámica - Segmentación - Paginación

Memoria
Creación de Lenguaje de Programación y 11
Gestión de Sistemas Operativos
Ingeniería de Sistemas

En sistemas de cómputo dispositivo conocido como memoria hace referencia a un arreglo de


transistores que permite almacenar un estado de alto o bajo que corresponde a un bit, estos
arreglos se encuentran formando una cuadricula a la que se accede mediante una dirección
dada por la fila y la columna que le corresponde tanto como para leer como para almacenar
un dato, conocido también como bytes. El tipo de memoria principal más conocido es una
memoria de acceso aleatorio con canal doble conocida como DRAM y que se encuentra en
pequeños módulos denominados DIMM, en sus versiones DDR1, DDR2, DDR3, DDR4, donde
lo que varía es la taza de transferencia por segundo.

RAM (Random Access Memory, Memoria de Acceso Aleatorio) tiene la capacidad de


almacenar los datos durante el tiempo que se haya energizada volviendo a su estado inicial (0
o 1) todo cuando no es así

ESTATICA

La RAM estática se basa en una forma de circuito biestable (flip-flop en inglés), un circuito
eléctrico que tiene dos condiciones estables, cada una correspondiente a una de dos posibles
señales de entrada, para contener datos en cada celda de memoria. Un circuito biestable para
una celda de memoria consiste comúnmente de entre cuatro y seis dispositivos electrónicos
de estado sólido, conocidos como transistores, que controlan el flujo de electricidad. La
característica definitoria de la RAM estática es que nunca necesita ser actualizada, por lo que
los datos permanecen en sus celdas de memoria hasta que se sobrescriben o se extrae la
fuente.

Pros y contras: La RAM estática es mucho más rápida que la RAM dinámica, con tiempos de
acceso comunes entre 10 y 30 mil millonésimas de segundo, o nanosegundos. La RAM
estática se utiliza comúnmente para los búferes de alta velocidad, cachés y registros, tales
como la memoria intermedia de trama en un adaptador de pantalla de video, donde el acceso
rápido a los datos es la principal preocupación. Sin embargo, cada celda de memoria RAM
estática tiene más partes que una celda de memoria RAM dinámica y ocupa más espacio en
un chip de memoria. Esto significa menos memoria por chip, por lo que la memoria RAM
estática es más cara que la RAM dinámica.

Dinámica

La forma más simple de una celda de memoria RAM dinámica se compone de un solo transistor
y un único dispositivo para la acumulación y posesión de carga eléctrica, conocido como un
condensador. La presencia o ausencia de una carga en el condensador determina si la celda
de memoria contiene un dígito binario 1 o un dígito 0. Las celdas de memoria RAM dinámica
descargan cada poca milésima de segundo, o milisegundos, por lo que deben ser leídas y
actualizadas varias veces si sus contenidos se van a mantener por mucho tiempo.

Pros y contras: Las celdas RAM dinámicas requieren actualización de los circuitos para
revitalizar los condensadores, pero, aun así, requieren mucho menos espacio que las celdas
de memoria RAM estática. La RAM dinámica es algo más lenta que la RAM estática, con
Creación de Lenguaje de Programación y 12
Gestión de Sistemas Operativos
Ingeniería de Sistemas

tiempos de acceso típicos por encima de 30 nanosegundos, pero es muy densa, con un solo
transistor y un condensador para cada bit. La RAM dinámica es más económica de instalar
que la RAM estática y, como resultado, es el tipo más común de memoria en una computadora.
La memoria principal de una computadora es normalmente RAM dinámica.

PAGINACIÓN

Se divide el Espacio Lógico del programa en bloques de igual tamaño.

El tamaño es fijo, definido por la arquitectura.

Cada bloque se llama página (o página lógica).

La última página tendrá una parte no ocupada (fragmentación interna).

La memoria física también se divide en trozos de igual tamaño.

Cada trozo se llama trama (o página física).

Por simplicidad es del mismo tamaño que la página (a veces, múltiplo).

Cargar un programa en memoria significa encontrar un sitio para cada página.

En general, encontrar tantas tramas libres como páginas ocupe.

Esta división en páginas es automática para la MMU.

No existe ninguna modificación en el espacio de direcciones lineal.

Es transparente al usuario, a los programas de traducción y a la CPU.


Creación de Lenguaje de Programación y 13
Gestión de Sistemas Operativos
Ingeniería de Sistemas

SEGMENTACIÓN

El Espacio Lógico del programa se construye en bloques.

El tamaño máximo de un bloque es fijo, definido por la arquitectura.


Creación de Lenguaje de Programación y 14
Gestión de Sistemas Operativos
Ingeniería de Sistemas

Cada bloque se llama segmento.

El número de bloques que conforman el programa lo determina el usuario.

Cada trozo puede tener una semántica asociada (código, datos).

Se asocia memoria física a segmentos lógicos (segmentos físicos).

Cargar un programa en memoria significa encontrar un sitio para cada segmento.

Aparece fragmentación externa.

Esta división en segmentos es competencia del programador.

Se definen en la construcción del ejecutable (programador, compilador...).

El espacio de direcciones es de dos dimensiones, disperso.


Creación de Lenguaje de Programación y 15
Gestión de Sistemas Operativos
Ingeniería de Sistemas

 COMUNICACIÓN EN SISTEMAS OPERATIVOS DISTRIBUIDOS (ARQUITECTURA


CLIENTE SERVIDOR Y SINCRONIZACIÓN)

Modelos de comunicación:

Una de las tareas más complejas del Sistema operativo es la implementación y uso de la
memoria compartida, teniendo en cuenta que esto obliga a atravesar las capas del software
construyendo un puente de comunicación con una estructura de memoria no monolítica sobre
la arquitectura de red. Algunas soluciones son las variables compartidas (similar a variables
de entorno), cuyo acceso sincroniza mediante cerrojos de exclusión mutua u otras primitivas
(condicionales, banderas, semáforos) han sido estudiadas desde hace tiempo y están
perfectamente establecidas como paradigma tecnológico, para poderla transferirla se requiere
un mecanismo de paso de mensaje, (mediante colas FIFO y BUFFERS) a menudos integrados
en el sistema de archivos Como por ejemplo: mediante pipes de UNIX.

El paso del mensaje parece el mecanismo de comunicación natural en sistemas débilmente


coplados, pero al igual que toda tecnología tiene sus pro y sus contras, en este caso respecto
Creación de Lenguaje de Programación y 16
Gestión de Sistemas Operativos
Ingeniería de Sistemas

a las alternativas con RPC´s, (llamadas a procedimientos remotos) independientemente si usa


o no variables compartidas; Entonces el costo de recursos para mantener variables
compartidas en un ambiente multi-equipos es alto y equivalente al costo de diseñar y operar
algoritmos de paso de mensajes o administrar RPC´s, y si se desea restar complejidad a
cualquiera de ambos métodos habrá de ser mediante el sacrificio de la eficiencia por la
simplicidad.

Comunicación cliente - Servidor

Es una arquitectura de paso del mensaje, que puede operar variables compartidas mediante
un archivo público de acceso remoto tipo GCI-BIN o MINE, su distribución de trabajo a
provecha la versatilidad de que un servidor pueda también ser cliente de otros servidores, El
acceso a los terceros se hace mediante el intermedio del servidor, quien se convierte en cliente
de otros.
El acceso a los terceros recursos se hacen mediante el intermedio del servidor, por ejemplo
un servidor web puede ser cliente de los servicios DNS, MySQL, POP3, SMTP, pero ser
anfitrión de Java, PHP, ASP, HTML, FTP, o por ejemplo un buscador web en donde hace sus
búsquedas.

Las siguientes imágenes muestra un modelo cliente-servidor de dos capas, el típico esquema
de web HOSTING con varios servidores es una sola máquina, para el servicio HTTP en
internet; los servidores forman una línea frontal en la que si una petición no puede ser atendida,
se traslada al servidor contiguo. En el caso de requerirse un servicio de más bajo nivel,
entonces se pueden agregar capas de servidores que operan detrás de la línea frontal , por
ejemplo un PHP, o SQL Server, Para esto se usa el modelo común de tres capas, por ejemplo
el servidor HTTP; PHP; SQL. Según la configuración del software se pueden mover y alterar
el balance de carga hacia los clientes o hacia los servidores

En un sistema distribuido, las necesidades de comunicación conducen a utilizar esquemas


específicos de gestión de los recursos para los que el paso de mensajes resulta adecuado. Un
recurso estará a cargo de un proceso gestor, con quien deberá comunicarse cualquier proceso
que pretenda acceder a él, siguiendo un esquema cliente-servidor; lo que permite expresar el
acceso a servicios mediante un protocolo de petición-respuesta. El modelo cliente-servidor se
puede implementar mediante un mecanismo de paso de mensajes específico, como por
ejemplo el mecanismo de transporte TCP para HTTP y HTTPS, la Interfaz CGI/BIN o la interfaz
de sockets de UNIX para TCP/IP o UDP/IP.

Ejemplo:

Imagen 1 -
Creación de Lenguaje de Programación y 17
Gestión de Sistemas Operativos
Ingeniería de Sistemas

Fuente: Internet

Imagen 2

Elaboración propia.

En la siguiente tabla se muestra un resumen de las modalidades más utilizadas en la


comunicación Cliente Servidor
Creación de Lenguaje de Programación y 18
Gestión de Sistemas Operativos
Ingeniería de Sistemas

MODELO ÁMBITO EJECUCIÓN ALMACENAMIENTO

Cliente - servidor Un servicio Servidor Servidor

Código móvil Un programa Cliente - (Previa descarga) Clientes


Cliente - (descarga - viaje
Clientes
Agente móvil Un programa inteligente)
Computador de Todo/ Casi todo el
Servidor
red software Cliente
Todo/ Casi todo el
Servidor
Cliente ligero software Servidor
Cloud Computing Algunos programas Servidor Servidor

Algoritmo de Lamport para sincronización de relojes en un sistema distribuido

Debido a la dificultad de utilizar el tiempo físico en sistemas distribuidos para administrar el


orden de los sucesos que se presentan en este, Lamport propone la utilización de tiempos
lógicos, con el fin de lograr una mayor sincronización en el sistema asociando los sucesos con
una marca de tiempo independiente del reloj físico del sistema de computación.

Al tener identificado cada suceso con una marca de tiempo lógica se puede indicar que estos
suceden o se procesan antes que. Debido a que en sistemas computacional distribuido
suceden N procesos se debe simular su administración en un vector que permita identificar
para ellos los tiempos donde se registre cada marca, cumpliendo 4 reglas básicas en la
actualización de los relojes.

1. Inicialmente Vi[j]=0 para j=1, 2, …, N.


2. Antes de que ocurra un evento en Pi: Vi[i]=Vi[i]+1.
3. Pi incluye el marca de tiempo t=Vi en cada mensaje que envía.
4. Cuando Pi tiene un evento de recepción con marca de tiempo t, Vi[j]=max(Vi[j], t[j])
para j=1,2,…,N.

En el siguiente sistema distribuido cliente servidor se pretende modelar la sincronización de


relojes lógicos en el proceso de atención de peticiones de sus clientes por parte del servidor.
Creación de Lenguaje de Programación y 19
Gestión de Sistemas Operativos
Ingeniería de Sistemas

Las peticiones se reciben y se despachan con el tiempo del servidor, y se entregan al cliente
con el tiempo que fue despacha por el servidor más la duración de envío actualizando el tiempo
en el cliente (tener presente son tiempos lógicos).

Regla de envío del cliente

reloj = reloj + 1;

marca_temporal_mensaje = reloj;

enviar(mensaje, marca_temporal_mensaje);

Evalúa antes del registro lo siguiente:

1. Que la comunicación es fiable por lo que todos los mensajes se reciben intactos y una
única vez.
2. Los canales son unidireccionales con entrega de tipo FIFO, primero en entrar primero
en salir.
3. El grafo de los procesos y canales está fuertemente conectado, hay canal de
comunicación directa entre todos los estados.
4. Cualquier proceso puede tomar una instantánea global en cualquier instante.
5. Mientras tiene lugar una instantánea los procesos pueden continuar su ejecución y
comunicación.
Creación de Lenguaje de Programación y 20
Gestión de Sistemas Operativos
Ingeniería de Sistemas

Regla de recepción del servidor

recibir() = (mensaje, marca_temporal_mensaje);

reloj = max(marca_temporal_mensaje,reloj) + 1;

Prepara el registro de la marca

Condición para el registro de la marca del Pi enviado por el canal C

Si (Pi no ha registrado su estado todavía)

Registra su estado de proceso ahora;

Registra el estado del canal C como vacío;

Activa el registro de mensajes que lleguen por otros canales entrantes

Sino

Pi registra el estado de C como el conjunto de mensajes que ha recibido sobre C desde


que guardó su estado (mensajes posteriores a la instantánea).

FinSi

Evalúa él envió de la marca del Pi.

Asigna marca de tiempo al registrar su propio estado, para canal de salida de C, Pi envía un
mensaje de instantánea por el canal c.

Fuente:

https://sites.google.com/site/mrtripus/home/sistemas-operativos-2/2-1-comunicacion-
comunicacion-con-cliente-servidor-comunicacion-con-llamada-a-procedimiento-remoto-
comunicacion-en-grupo-tolerancia-a-fallos

http://es.wikipedia.org/wiki/Planificaci%C3%B3n_Round-robin

http://es.scribd.com/doc/44358964/FSO-Algoritmos-de-Planificacion-Algoritmo-SJF-Shortest-Job-First

http://pachel.tripod.com/materias/material3sis.htm

http://people.ac.upc.edu/marisa/miso/memo_slides.pdf
Creación de Lenguaje de Programación y 21
Gestión de Sistemas Operativos
Ingeniería de Sistemas

https://techlandia.com/tipos-ram-estatica-dinamica-info_290309/

http://blog.rolandopalermo.com/2009/12/algoritmo-de-lamport-para-la.html

https://es.wikipedia.org/wiki/Algoritmo_de_la_panader%C3%ADa_de_Lamport

https://www.youtube.com/watch?v=3HKkLoF8gOI

http://sistemasdistribuidosaisseccion1.blogspot.com/p/sincronizacion-en-sistemas-distribuidos.html

https://www.youtube.com/watch?v=t3RBHsapexI

Anda mungkin juga menyukai