practica 4 en laboratorio
sistemas operativos
miércoles, 4 de enero de 2012
jueves, 24 de noviembre de 2011
TERCER PARCIAL ACTIVIDAD 1
EJERCICIO 1
Dibuja la jerarquía de procesos que resulta de la ejecución del siguiente código. Introduce las llamadas al sistema wait para que una vez generado el árbol de procesos los hijos sean esperados por sus respectivos padres. Ademas, haz que se informe de los tiempos de ejecución de las aplicaciones xload y kcalc que se generen así como del tiempo total de ejecución. Para calcular el tiempo transcurrido, puedes utilizar la función´ time() de la librería estándar time.h. La llamada time(NULL) devuelve los segundos transcurridos desde las 00:00:00 del 1/1/1970 hasta el instante de la llamada.
int main (int argc, char ∗argv[]) {
int i, j;
pid t pid, nuevo, nuevo1;
time t ini, fin;
for (i= 0; i< 2; i++){
pid= getpid();
for (j= 0; j< i+2; j++){
nuevo= fork();
if(nuevo== 0){
break;
nuevo1= fork();
if(nuevo1== 0)
execlp ("xload", "xload", NULL);
}
}
if (pid!= getpid())
execlp ("kcalc", "kcalc", NULL);
}
return 0;
}
jueves, 3 de noviembre de 2011
PRACTICAS KDE
PRACTICAS EN KDE DE LINUX
PRACTICA 1
AQUI SE MATA UN PROCESO DENTRO DEL CONTOL GRAFICO
AQUI SE MATA UN PROCESO DENTRO DEL CONTOL GRAFICO
PRACTICA 2
SE MATA UN PROCESO DESDE EL MODO CONSOLA
SE MATA UN PROCESO DESDE EL MODO CONSOLA
PRACTICA 3
Matando procesos desde una carpeta interna y de la terminal
Matando procesos desde una carpeta interna y de la terminal
PRACTICA 4
Muestra la lista de procesos realizados al instante
Muestra la lista de procesos realizados al instante
PRACTICA 5
Lista de procesos en uso y la memoria q utiliza cada uno
Lista de procesos en uso y la memoria q utiliza cada uno
PRACTICA 6
SE USA ESTE COMANDO PARA VER PROCESOS Y EL ESTADO DE LA MEMORIA RAM
SE USA ESTE COMANDO PARA VER PROCESOS Y EL ESTADO DE LA MEMORIA RAM
PRACTICA 7
PROCESOS REALIZADOS
PROCESOS REALIZADOS
PRACTICA 8
PROCESOS EN TIEMPO REAL
PROCESOS EN TIEMPO REAL
PRACTICA 9
PARA ARRANCAR MAS PROCESOS DESDE LA CONSOLA
PARA ARRANCAR MAS PROCESOS DESDE LA CONSOLA
PRACTICA 10
CREACION DE UN FIFO
CREACION DE UN FIFO
PRACTICA 11
SE AGREGA UN PROCESO A UNA LISTA FIFO Y SE USA UNA TAREA LLAMADA CAT
SE AGREGA UN PROCESO A UNA LISTA FIFO Y SE USA UNA TAREA LLAMADA CAT
PRACTICA 12
VER LISTAS DE PROCESOS CREADOS
VER LISTAS DE PROCESOS CREADOS
PRACTICA 13
PREACTICA 14
PRACTICA 15
ARBOL DE PROCESOS NOS MUESTRA LOS PROCESOS PADRES CON SUS HIJO O HILOS
ARBOL DE PROCESOS NOS MUESTRA LOS PROCESOS PADRES CON SUS HIJO O HILOS
viernes, 21 de octubre de 2011
practica 2
codigo de practica
int cuenta= 0;
tipo_flag flag_lleno, flag_vacio;
tipo_cerrojo mutex;
productor()
{
int elemento;
while (1) {
producir_elemento(&elemento);
while (cuenta == N)
dormir(flag_lleno);
lock(mutex);
dejar_elemento(elemento);
cuenta= cuenta+1;
unlock(mutex);
if (cuenta == 1)
despertar(flag_vacio);
}
}
consumidor()
{
int elemento;
while (1) {
while (cuenta == 0)
dormir(flag_vacio);
lock(mutex);
retirar_elemento(&elemento);
cuenta= cuenta-1;
unlock(mutex);
if (cuenta == N-1)
despertar(flag_lleno);
consumir_elemento(elemento);
}
}
lock_lp (tipo_flag flag)
{
BOOL entrar= 0;
while (!entrar) {
lock(cerrojo_flags);
if (flag) {
unlock(cerrojo_flags);
dormir(flag);
}
else {
entrar= 1;
flag= 1;
unlock(cerrojo_flags);
}
}
}
unlock_lp (tipo_flag flag)
{
lock(cerrojo_flags);
flag= 0;
despertar(flag);
unlock(cerrojo_flags);
}
int cuenta= 0;
tipo_flag flag_lleno, flag_vacio;
tipo_cerrojo mutex;
productor()
{
int elemento;
while (1) {
producir_elemento(&elemento);
while (cuenta == N)
dormir(flag_lleno);
lock(mutex);
dejar_elemento(elemento);
cuenta= cuenta+1;
unlock(mutex);
if (cuenta == 1)
despertar(flag_vacio);
}
}
consumidor()
{
int elemento;
while (1) {
while (cuenta == 0)
dormir(flag_vacio);
lock(mutex);
retirar_elemento(&elemento);
cuenta= cuenta-1;
unlock(mutex);
if (cuenta == N-1)
despertar(flag_lleno);
consumir_elemento(elemento);
}
}
lock_lp (tipo_flag flag)
{
BOOL entrar= 0;
while (!entrar) {
lock(cerrojo_flags);
if (flag) {
unlock(cerrojo_flags);
dormir(flag);
}
else {
entrar= 1;
flag= 1;
unlock(cerrojo_flags);
}
}
}
unlock_lp (tipo_flag flag)
{
lock(cerrojo_flags);
flag= 0;
despertar(flag);
unlock(cerrojo_flags);
}
jueves, 13 de octubre de 2011
CARACTERISTICAS FIFO Y LIFO
TAREA # 1 SEGUNDO PARICIAL
CARACTERISTICAS FIFO Y LIFO
MEMORIAS FIFO
Son memorias serie en las que la primera información que entra es la primera que sale (First Input First Output), pueden implementarse con registros de desplazamiento estáticos y una unidad de
control. Esta última debe tener en cuenta las siguientes características de este tipo de memoria.
- La lectura es destructiva, es decir que al leer, el dato leído ya no está más en la memoria.
- Cada operación de lectura o escritura debe producir un desplazamiento del resto de la memoria.
- Cuando la memoria está llena no podrá escribirse, por lo tanto la Unidad de Control deberá ser
capaz de generar una señal de Memoria llena.
- Generar las señales de control necesarias para que el primer dato escrito esté disponible para la
primera lectura.
- Deberá aceptar al menos tres entradas exteriores: señal de lectura/escritura, señal de inicio de ciclo
y señal de sincronismo.
es normalmente empleada en los ordenadores para guardar datos cuando hay una solicitud de interrupción en el programa principal y luego volverlos a recuperar.
MEMORIAS FILO (LIFO)
En estas memorias al última información que entra es la primera que sale (Last Input First Output). Puede implementarse con un registro de desplazamiento reversible,.Un registro de desplazamiento reversible está formado por biestables síncronos y multiplexores. La salida de la memoria es la salida del primer biestable y la entrada es el segundo canal del primer multiplexor.
La inserción de una fifo resulta ideal como elemento de interconexión cuando dos sistemas que poseen información, cuyo flujo cuyo flujo presenta una cadencia o asíncrona deben inter cambiar datos. Los datos pueden introducirse o recuperarse ya sea en flujo uniforme, a ráfagas, irregular o incluso en una combinación de los citados.
Suscribirse a:
Entradas (Atom)