1)Un procesador manexa unha memoria de 256Mx64. ¿Cál deberia ser o tamaño do rexistro contador de programa, PC?
28
24
32
Todas as afirmacións citadas son incorrectas
256M= 2⁸M=2⁸*2²⁰=2²⁰⁺⁸ =2²⁸
2) Dada a seguinte situacion para o 8085:
SP=150h
B-C= 2A65h
D-E= B34Ch
H-L= 4F45h
Despois de realizar as instruccións:
PUSH D; PUSH B; PUSH H;
¿Cal sera o contido da direccion de memoria 014Ch?
4Fh
2Ah
65h
Ningunha das respostas anteriores é correcta
Despues de realizar la simulación (Codigo Simulación Stack) el contenido de la memoria es el siguiente:
O sumador binario completo tarda 12ns en facer a suda de 2 operandos de 1 bit. ¿Cánto tardaría un suamdr paralelo para operandos de 32 bits?
120ns
384ns V
284ns
Depende do tempo de propagación do acarreo
3) O sumador binario completo tarda 12ns en facer a suda de 2 operandos de 1 bit. ¿Cánto tardaría un suamdr paralelo para operandos de 32 bits?
120ns
384ns
284ns
Depende do tempo de propagación do acarreo
32bits*12ns=384
4) Na instruccion da maquina 8085: MOV M,C ¿Que tipo de direccionamento leva o operando Destino?
Directo
Indirecto a parella de rexistros
Por rexistro
Ningunha das respostas anteriores é correcta
O rexistro M obtense pola dirección apuntada por HL
5) O tamaño do Rexistro de estado, de sinalizadores, ou de flags (RF)
Ten o mesmo tamaño que o bus de direccions
Ten o mesmo tamaño que a palabra que manexa o procesador
Ten un tamaño de 2^n, sendo n o número de sinalizadores do RF
Ningunha das respostas anteriores é correcta
6) Un procesador A ten unha f=4MHz e un CPI=8 outro procesador B ten unha f=8Mhz e un CPI=4. pon unha X na resposta correcta
Ambos teñen a mesma velocidade
O procesador A é máis rápido que o B
O procesador B é máis rápido que o A
Faltan datos para contestar a pregunta
Calculo do numero de instruccions que executa un procesador
7)Sabendo que o contido dos rexistros A=7Ah, D=37h, E=7Ch, F=2Eh e que o das posicions de memoria coincida coa parte da sua propia dirección, indicar o contido final de A e F despois de executar a instruccion: LDAX D
A=7Ch F=2Eh
A=37h F=2Eh
A=7Ch F=7Ah
Ningunha das respostas anteriores é correcta
8)¿En cal dos seguintes casos, o ancho de palabro ou tamaño das posicions de memoria de control (MC) é maior?
Nunha MC microprogramada con secuenciamento explícito
Nunha MC microprogramada con secuenciamento implícito
É igual en ámbalas dúas
Ningunha das respostas anteriores é correcta
No secuenciamento explicito debese de indicar cal sera a dirección da seguinte instrucción a executar, no implicito non
9)¿Cantos bloques de memoria de 16Kx8 se necesitan para formar unha memoria de 32Kx32?
4
8
16
Ningunha das respostas anteriores é correcta
32*32=1024 | 16*8=128 | 1024/128=8
10)Dada a seguinte instruccion da maquina 8085: STA 6B42 ¿Cál será a súa codificación, expresada en notación hexadecimal?
Ante la inclusión en el Anteproyecto de Ley de Economía sostenible de modificaciones legislativas que afectan al libre ejercicio de las libertades de expresión, información y el derecho de acceso a la cultura a través de Internet, los periodistas, bloggers, usuarios, profesionales y creadores de internet manifestamos nuestra firme oposición al proyecto, y declaramos que…
1.- Los derechos de autor no pueden situarse por encima de los derechos fundamentales de los ciudadanos, como el derecho a la privacidad, a la seguridad, a la presunción de inocencia, a la tutela judicial efectiva y a la libertad de expresión.
2.- La suspensión de derechos fundamentales es y debe seguir siendo competencia exclusiva del poder judicial. Ni un cierre sin sentencia. Este anteproyecto, en contra de lo establecido en el artículo 20.5 de la Constitución, pone en manos de un órgano no judicial -un organismo dependiente del ministerio de Cultura-, la potestad de impedir a los ciudadanos españoles el acceso a cualquier página web.
3.- La nueva legislación creará inseguridad jurídica en todo el sector tecnológico español, perjudicando uno de los pocos campos de desarrollo y futuro de nuestra economía, entorpeciendo la creación de empresas, introduciendo trabas a la libre competencia y ralentizando su proyección internacional.
4.- La nueva legislación propuesta amenaza a los nuevos creadores y entorpece la creación cultural. Con Internet y los sucesivos avances tecnológicos se ha democratizado extraordinariamente la creación y emisión de contenidos de todo tipo, que ya no provienen prevalentemente de las industrias culturales tradicionales, sino de multitud de fuentes diferentes.
5.- Los autores, como todos los trabajadores, tienen derecho a vivir de su trabajo con nuevas ideas creativas, modelos de negocio y actividades asociadas a sus creaciones. Intentar sostener con cambios legislativos a una industria obsoleta que no sabe adaptarse a este nuevo entorno no es ni justo ni realista. Si su modelo de negocio se basaba en el control de las copias de las obras y en Internet no es posible sin vulnerar derechos fundamentales, deberían buscar otro modelo.
6.- Consideramos que las industrias culturales necesitan para sobrevivir alternativas modernas, eficaces, creíbles y asequibles y que se adecuen a los nuevos usos sociales, en lugar de limitaciones tan desproporcionadas como ineficaces para el fin que dicen perseguir.
7.- Internet debe funcionar de forma libre y sin interferencias políticas auspiciadas por sectores que pretenden perpetuar obsoletos modelos de negocio e imposibilitar que el saber humano siga siendo libre.
8.- Exigimos que el Gobierno garantice por ley la neutralidad de la Red en España, ante cualquier presión que pueda producirse, como marco para el desarrollo de una economía sostenible y realista de cara al futuro.
9.- Proponemos una verdadera reforma del derecho de propiedad intelectual orientada a su fin: devolver a la sociedad el conocimiento, promover el dominio público y limitar los abusos de las entidades gestoras.
10.- En democracia las leyes y sus modificaciones deben aprobarse tras el oportuno debate público y habiendo consultado previamente a todas las partes implicadas. No es de recibo que se realicen cambios legislativos que afectan a derechos fundamentales en una ley no orgánica y que versa sobre otra materia.
Este manifiesto, elaborado de forma conjunta por varios autores, es de todos y de ninguno. Si quieres sumarte a él, difúndelo por Internet.
1. (Kernel Lista) Modifica la cabecera “include/linux/list.h” del kernel para que se pueda
utilizar en un programa de usuario. Escribe un programa que utiliza las funciones de listas enlazadas dentro de list.h para:
insertar números aleatorios.
recorrer la lista imprimiendo los valores.
eliminar un nodo de la lista (utilizando un menú de selección).
2. (Simulador de Procesos) En este problema, queremos estudiar el efecto de diferentes
parámetros relacionado con “timeslice” a diferentes algoritmos de planificación. Escribe un
programa que es simula el comportamiento del gestor de planificación con diferentes valores
de timeslice y para diferentes cargas de cambio de contexto de procesos. Para ello debe
seguir los siguientes pasos:
a) Utilizando su libraría de funciones que ha creado en practicas anteriores, genera los
siguientes datos para procesos que van a querer utilizar el CPU: (i) el PID de cada
procesos, un número aleatorios que representa el tiempo de llegada, y un numero
aleatorio que representa el tiempo total que va a ejecutar en el CPU. Como ejemplo,
los números puede ser como las siguientes:
PID T_llegada T_total
1 30 0.783560
2 54 17.282004
3 97 32.814522
Que significa que el primer proceso llega a 30 segundos y quiere 0.783560 segundos para ejecutar, el segundo proceso llega a t=54 segundos y necesita 17.28 segundos para ejecutar, ect.
b) Escribe un función que dado los valores generado, es capaz de contar el timeslice y
utilizar planificación de “preemption”, si necesario, para intercambiar procesos cuando
el timeslice de un proceso se agota.
c) Escribe un algoritmo de político “Round Robin”.
d) Escribe un función que calcula el tiempo media de espera y el tiempo media de la tasa de terminar para todos los procesos.
e) Ejecuta su simulación para tiempos de sobrecargo de cambio de contexto de 0, 5, 10, 15, 20 y 25 milisegundos; y por valores de timeslice de: 50, 100, 250, y 500
milisegundos. Hacer gráficos (plots) de lo que encuentras.
Lo primero que tenemos que hacer es copiar la libreria list.h a un archivo nuevo (el kernel de linux no esta en C estándar) y compilar para ver si lo acepta.
Al primer intento nos va a decir que no por las librerías así que tendremos que borrarlas del código
El uso de las listas del kernel difiere del uso clásico que tenemos en mente.
Diagrama clásico de la estructura de una lista
aquí tenemos el esquema de uso de una kernel list
comportamiento de una kernel list
la principal diferencia es que los enlaces de la lista son una estructura dentro de nuestra estructura, por lo tanto no nos movemos a través de nuestra lista sino que vamos accediendo a partes internas de la lista. El principal problema de utilizar este método es acceder a la estructura que contiene los enlaces, esto se realiza mediante el calculo del offset de un puntero.
/*
* getCustomListPointer — gets the customlist memory address from a listPointer calculating the offsett
* listPointer — a pointer that point a list element
*/
struct customList *getCustomListPointer(struct list_head *listPointer)//DONE
{
void * toret=NULL;
toret=listPointer; //We use a void pointer because i can’t sobrem problems with pointers aritmetic
toret= (toret – ((unsigned long) &((struct customList *)0)->list));
return toret;
}
Toret es un puntero a void para evitar problemas en la aritmética de punteros, si este fuera un char puntero -1 seria iguar a puntero -1(tamaño char) por lo que tendríamos problemas de fallo de segmento.
La estructura del código se puede observar en el siguiente esquema:
Organización del simulador de procesos
Existen unos pequeños bugs y características no implementadas en la aplicación
El iterador usa variable global que puede sufrir efectos laterales (las funciones copyCustomList tiene el problema arreglado al ser recursivas y utilizar un registro como indicador de fin de recursividad)
Habría que mirar el tamaño de una variable void* (si es >1 produce segmentation fault por mal calculo de offset)
Añadir elemento y otras funciones no esta implementado solo seria añadir una sucesión de printf y scanf en el código.
No esta implementado el paso de parámetros como por ejemplo establecer el numero de procesos que se simularan (cambiar 15000, por una variable en linea 113 de main.c)
Codigo Fuente
Funcionamiento:
La ejecución muestra por pantalla los datos de cada proceso, timeslice y contextChangue según termina cada proceso, se ha definido un conjunto de 15000 procesos para sacar estadísticas.
Los ejecución recomendada es ./ejecutable> salida.cvs siendo salida.cvs un archivo comma separated values que se importara a mysql para realizar calculos de forma mas sencilla. La definición de la tabla que se usara esta en el siguiente enlace (Database struct Definitión)
Una vez obtenida la salida la importación a MySql se realiza ejecutando un orden similar a esta.
LOAD DATA LOCAL INFILE’/home/luzem/NetBeansProjects/Practica3/dist/Debug/GNU-Linux-x86/salida.csv’
INTO TABLE roundrobin
FIELDS TERMINATED BY ‘,’
LINES TERMINATED BY ‘\n’
Con esto y un conjunto de consultas SQL podemos obtener los datos para procesar en GNUPLOT.
Gráficas
Como Afecta el ContextChangue en la media global
En la anterior gráfica podremos ver los efectos del incremento del contextChangue sobre el tiempo medio de espera, observando como el impacto es independiente del timeslice.
Tiempo medio de espera
El tiempo medio de espera de cada proceso aumenta en función de timeslice y dada que la diferencia entre timeslice y contextchangue es muy alta es el aumento del timeslice quien castiga mas a los tiempos de espera.
En cambio si tenemos en cuenta la media del tiempo total de espera para los conjuntos de timeslice y contextchangue obtenemos la siguiente media
Impacto sobre el la media del tiempo total de espera
Cuando el timeslice es muy pequeño el numero de cambios de contexto aumenta penaliza el tiempo total de espera de una forma mas que considerable.
Si extraemos el 15% inicial y el 15% final y calculamos las medias para cada segmento obtenemos las siguiente grafica
Differences between short long process
En la anterior gráfica observamos que el impacto sobre la media de tiempo de espera, afecta mayormente a la parte central del conjunto de procesos.
Mejoras:
Utilizar varias listas round robin con diferente timeslice y mover los elementos customList en función del contador de paradas (timeslice grande para procesos largos y timeslice pequeño para procesos cortos)
Escapandoseme hoy el dedo por el mando adelante acabe viendo Auria TV (televisión local de la ciudad de Ourense) y me encuentro este cartel ocupando media pantalla:
Cartel en Auria TV
transcribo que sacar fotos con el móvil no es mi especialidad
Auria TV no retransmite este año la carrera de San Martiño, por la competencia desleal fomentada por el BNG-Tenencia Alcaldía al subvencionar exclusivamente a Telemiño como tele local, y al no facilitar credenciales a Auria TV para grabar en distintas partes de la carrera. Esta clara que estos tios aun no han entendido el por que de su debacle en las elecciones autonómicas.
buscando en google la pagina web de este canal de televisión tan docto en temas de asesoramiento politico encuentro esta noticia El responsable de ’Auria TV’ declara ante el juez por emitir programas pirateados y una relación política con Auria TV (los cabeza de lista trabajan en Auria TV)
Chistes aparte, me gustaría saber que condiciones pidieron los señores de Auria TV para grabar en la calle, y si la rabieta esta generada por la inexistencia de una subvención por parte del ayuntamiento a una cadena que la mayor parte de su tiempo reinyecta la señal de la BBC Internacional (en ingles británico Of course).
Me parece a mi que si quieres montar un canal de televisión a nivel local lo que mas le interesa a la gente es que el canal cree y emita contenidos propios enfocados al publico local (y obtener publicidad para financiarse en lugar de llorar subvenciones) y no reinyectar la emisión de otras cadenas.
Por cierto me parece una gilipollez que un ayuntamiento financie a dos televisiones para seguir una carrera por muy popular que sea en la localidad.
Vamos a empezar estudiar como el proceso es un parte fundamental para entender el funcionamiento del kernel. En este practica, vamos a compilar el kernel….
Otra conjunta de problemas que queremos ver tiene que ver con threads, como hemos visto en clase. Vamos a comprobar algunos problemas y ver como funcionan.
Escribe un código para comparar el tiempo de ejecución para crear N procesos de fork y N threads. Plot su resultado como función de N.
Comprobar como funciona el código de “mutexes” con threads. Intenta ejecutar este codigo sin los mutex locks. ¿Cuantos veces tiene un “race condition”. Puedes indicar como un % cuantos veces tienes un races?
Compilar el kernel para que se puede compilar un kernel. Para ello tiene que instalar las utilidades de make y el libraría de “libncurses-dev”.
Parte 1
Cuando queremos aprovechar las ventajas de los nuevos procesadores de varios núcleos tenemos que recurrir a hacer fork’s del proceso o invocar threads
¿Cual es mejor?, usando el codigo para los fork process y para los c threads (recordar añadir la opción -lpthread en gcc al compilar este ultimo)
aqui la tabla de tiempos en mi equipo
FORK
FORK
FORK
Threads
Threads
Threads
real
user
sys
real
user
sys
50
0.016
0.002
0.007
0.004
0.001
0.002
300
0.074
0.005
0.049
0.014
0.001
0.005
500
0.129
0.019
0.107
0.019
0.004
0.008
1000
0.238
0.023
0.226
0.037
0.000
0.017
5000
1.152
0.161
0.266
0.176
0.003
0.058
10000
2.306
0.255
2.685
0.354
0.018
0.114
30000
7.116
0.685
7.108
1.032
0.055
0.481
50000
11.665
1.048
11.665
1.764
0.114
0.693
y como interpretar datos de una tabla no es muy rapido ni intuitivo podemos crearemos unos gráficos con gnuplot, guardamos la tabla en un archivo de texto, (Fork and Threads Stats) abrimos el gnuplot y escribimos
set xlabel “Number of Process”
set ylabel “Seconds to Create”
plot “stats.txt” using 1:2 w lines title ‘Fork Real’,”stats.txt” using 1:3 w lines title “Fork User”,”stats.txt” using 1:4 w lines title ‘Fork Sys’,”stats.txt” using 1:5 w lines title ‘Threads Real’,”stats.txt” using 1:6 w lines title ‘Threads User’,”stats.txt” using 1:7 w lines title ‘Threads Sys’
y aparece en nuestra pantalla el siguiente gráfico
threads_vs_fork_total_times
puede dar lugar a confusión así que lo sacaremos solo con el tiempo real
total_time_fork_vs_threads
en definitiva si quieres ganar rendimiento el uso de los threads es mas adecuado.
Parte 2
Threads con Mutex
Threads sin Mutex
Tras ejecutar los threads sin mutex varias veces el contador solo llega a valores entre 110-130 lo que significa que el 50-60% de los threads entran en “race condicion”
Parte 3
Documentación detallada para compilar el nucleo (Gentoo Handbook)
Sábado noche carretera comarcal sin iluminar una de la mañana, lloviendo a cantaros y te encuentras en la cuneta a un anciano al que han atropellado.
El pobre hombre tirado en la cuneta y el cabronazo que lo atropello se dio a la fuga,
Hay que ser un gran cabrón para dejar a un anciano con la pierna rota tirado en una cuneta.
Espeto que pillen al campeón que atropello al anciano
Parece ser que los señores de los supermercados tienen ganas de entrar en una brutal competencia
Competencia Carrefour vs Mercadona
Me gustaria ver algun dia la traza de como un yogurt de danone o una lata de atun Isabel se va encareciendo en el paso de intermediario a intermediario, pero claro eso es “secreto de empresa”, seguro que danone les vende el yogur a 0,01€ y la marca blanca a 0,01€.
No estoy en contra de las marcas blancas para nada, de lo que si estoy un poco cansado es de las mega multinacionales que me cuentan películas de lo héroes que son salvando el mundo al dejar de lado a las marcas simplemente porque la marca blanca les genera unos céntimo mas de beneficio o les ayudan a mejorar las ventas.
/*
*getRandomInt — returns a random int value
*/
int getRandomInt()
{
int toret=0;
srand(time(NULL));//inicializamos la semilla aleatoria utilizando la hora del sistema
toret= (int) (random());
return toret;
}
Os recomiendo observar el valor de la variable RAND_MAX si queréis evitar que la secuencia sea poco aleatoria, evitar generar menos de 2/3 del valor de RAND_MAX
Cunado estas compilando tus fuentes en Linux una de las opciones son el tipo de enlace que quieres realizar en tus librerías estático o dinámico ¿en que se diferencian?
Librerías estáticas (lib_nombrelibreria.a)
Una librería estática se “encastra” dentro de nuestro ejecutable lo que significa que podemos llevarlo a otro ordenador sin temer a que nos falten librerías.
pero si las librerías tienen un bug y aparece una versión que arregla ese fallo tienes que recompilar el código
son mas grandes al llevar las librerías encastradas
son mas rápidos en la ejecución porque las funciones están dentro del ejecutable no tenemos que buscarlas
Librerías dinámicas (lib_nombre_libreria.so)
Una librería dinámica no se “encastra” dentro de nuestro ejecutable por lo que nuestro ejecutable sera mas pequeño pero
Si nos llevamos nuestro ejecutable a otra maquina las librerías tienes que ir con el
La ejecución es mas lenta a causa de tener que ir a buscar la librería fuera del ejecutable
Si existe un bug en la librería se actualiza y arreglado en todos los ejecutables que la usan , si es un cambio en una función (mas parámetros,cambio de comportamiento ..) tenemos que volver a compilar todo.
¿Como se compilan?
Estaticas
Crear los ficheros objero (.o) a partir de nuestro codigo fuente (.c)
gcc -c fuente.c -o fuente.o
Crear las librerías (.a)
ar -rv libnombre.a fuente1.o fuente2.o … fuenten.o
This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish.AcceptRejectRead More
Privacy & Cookies Policy
Privacy Overview
This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.