Diseño y Evaluación de Configuraciones: Ejercicios de autoevaluación (II)

Indicar qué tipo de medidas sueles tomar para medir las prestaciones de un ordenador

Depende mucho del uso que le vaya a dar. Por ejemplo:

  • Para jugar uso mi PC de sobremesa. Ahí me importa mucho el rendimiento de la tarjeta gráfica y el procesador. Así que desde el punto de vista hardware, me fijo en qué cantidad de memoria dedicada tiene la tarjeta de vídeo, tipo de procesador gráfico, memoria RAM disponible en mi PC y velocidad del procesador. Luego, alguna vez he ejecutado 3DMark como benchmark para medir el rendimiento gráfico de mi ordenador.
  • Cuando comencé a programar en Java y con Netbeans como entorno de desarrollo aplicaciones medianas, noté como el rendimiento de mi PC dejaba mucho que desear, así que comencé a monitorizar la CPU y la memoria RAM para ver dónde estaba el problema, tomando medidas cuando desplegaba el IDE, la aplicación que estaba desarrollando, etc, descubriendo que el 1GB de RAM de que disponía no era suficiente.

Indicar en qué casos de los que te encuentras en tu trabajo (u otro quehacer) diario necesitarás medir las prestaciones del ordenador.

Bueno, hace no mucho estuve trabajando en una empresa de desarrollo de aplicaciones informáticas con software libre. Varios de nosotros trabajábamos sobre una máquina virtual. Dicha máquina virtual estaba alojada en un servidor UNIX. El problema, relacionado con la pregunta anterior, era que el rendimiento del entorno de desarrollo en Java (Netbeans) era muy pobre, hasta el punto de que en ocasiones simplemente escribir lineas de código era tedioso por los tiempos de espera.

Como los recursos de que disponía el servidor estaban limitados, tanto el administrador de sistemas como cada uno de los usuarios, tuvimos que empezar a tomar medidas de consumo de memoria  e ir haciendo pruebas hasta que encontramos un equilibrio razonable entre el rendimiento del IDE y la asignación de memoria RAM a la máquina virtual.

Indicar en qué casos percibes una falta de prestaciones de los ordenadores que sueles manejar.

Está claro que durante los juegos y cuando lanzo una aplicación tipo netbeans (memoria), básicamente porque mi PC tiene ya más de 4 años (un Pentium IV). Ni siquiera tengo puerto PCI Express para la tarjeta gráfica. En cuanto a la memoria RAM, aparte de tener solamente 1GB, el bus va a 266 Mhz, con lo que se acentúa el problema.

Mirar qué servicios hay activos en nuestro ordenador personal y en algún otro ordenador al que tengamos acceso. ¿Qué usas para saber los servicios que hay activos? ¿Sabes lo que hacen? ¿Si suprimes alguno de ellos, qué pasa?

Voy a centrarem en Windows. Normalmente sí que estoy pendiente de los servicios que tengo activos en mi PC, y procuro que haya sólo los justos, servicios de Microsoft, antivirus, servicios de la tarjeta gráfica y poco más. Procuro prescindir de servicios adicionales, ya que estoy escaso de memoria RAM y todos los recursos recursos que puedo liberar aumentan el rendimiento de mi PC.

En Windows Para ver los servicios que hay activos suelo usar el msconfig, y para ver los procesos que desencadenan dichos servicios, el administrador de tareas.

Cuando suprimimos algún servicio importante, que suelen ser los de Microsoft, lo que ocurre básicamente es que Windows se jode. Lo mismo te desaparece la barra de tareas, que te quedas sin internet… algunos no se pueden siquiera suprimir “en caliente” (hay que reinciar), y otros se vuelven a ejecutar automáticamente (como el servicio explorer).

Diseño y Evaluación de Configuraciones: Ejercicios de autoevaluación (I)

Mencionar sistemas operativos que no estén entre los que ya mencionados (Unix/Linux, WindowsNT/2K/XP/Vista, BSD)y el nicho de mercado que suelen cubrir.

Como hasta ahora las clasificaciones que he visto están hechas en función de la plataforma (Mainframes, Pcs de sobremesa, Plataformas móviles…), mi clasificación va a ser en función del tipo de núcleo.

Hay cuatro grandes tipos de núcleos:

  • Los núcleos monolíticos facilitan abstracciones del hardware subyacente realmente potentes y variadas.
  • Los micronúcleos (en inglés microkernel) proporcionan un pequeño conjunto de abstracciones simples del hardware, y usan las aplicaciones llamadas servidores para ofrecer mayor funcionalidad.
  • Los núcleos híbridos (micronúcleos modificados) son muy parecidos a los micronúcleos puros, excepto porque incluyen código adicional en el espacio de núcleo para que se ejecute más rápidamente.
  • Los exonúcleos no facilitan ninguna abstracción, pero permiten el uso de bibliotecas que proporcionan mayor funcionalidad gracias al acceso directo o casi directo al hardware.

Algunos ejemplos de micronúcleos:

Monolíticos:
Ejemplos de núcleos híbridos
Vía | Wikipedia

Definición general de algoritmo y tipos de problemas

Desde el punto de vista de la computación, podemos aceptar la siguiente definición de algoritmo:

Secuencia ordenada de datos exentos de ambigüedad y determinísticos tal que al llevarse a cabo con fidelidad dan como resultado que se realice la tarea para el que sea ha diseñado en un tiempo finito (se obtiene la solución del problema planteado)

Existen también algoritmos lingüísticos, pero quedan fuera del ámbito de este artículo.

Los algoritmos en los que nos vamos a centrar son determinísticos, esto es, para unos mismos datos de entrada, producen siempre una salida y además es la misma. Existen también algoritmos no determinísticos o aleatorios.

Propiedades de los algoritmos:

  • Finitud: Siempre acaban después de un número finito de etapas
  • Precisión: Cada etapa está debe estar definida de forma precisa y las acciones a realizar rigurosamente especificadas
  • Entrada: Necesita unos datos de entrada
  • Salida: Siempre produce una salida
  • Efectividad: Todas las acciones que hay que realizar deben ser tan básicas como para que se puedan realizar exacatamente y en un tiempo finito.

Pasos genéricos para la resolución de problemas de computación:

  • Entender el problema
  • Análisis del problema
  • Diseñar un algoritmo para el problema
  • Expresar el algoritmo como un programa
  • Ejecutar el programa correctamente

Estudio/Clasificación de problemas:

  • Década 30: Problemas computables y no computables. ¿Cuáles son los problemas abordables por un informático?
    Ejemplo de problema no abordable: Programa que tenga como entrada otro programa y sus datos de entrada y que responda en la salida a si el programa terminará algún día de hacer el cálculo. Es imposible resolver este problema, se conoce como “Problema de la parada
  • Década 50: Complejidad de los problemas computables (búsqueda de algoritmos más eficaces). ¿Presentan todos los problemas la misma dificultad? NO.
    Ejemplo: Problema del viajante de comercio que tiene que visitar un número finito de ciudades. ¿Cómo hacerlo en un tiempo mínimo? Si tratamos de abordar el problema intuitivamente, buscando todas las rutas posibles y eligiendo luego la más corta, para n ciudades, tenemos n-n! rutas posibles. Es un número inabordable, de ahí la necesidad de buscar algoritmos más eficaces.
  • Década 70: Clasificación de los problemas computables: P y NP

Problemas P y NP:

  • Problemas P: Problemas para los que conozco un algoritmo que lo resuelve en un tiempo polinomial, asumiendo que es un tiempo eficiente.
  • Problemas NP: Problemas no determinísticos. Sólo se pueden resolver de manera polinomial realizando una etapa aleatoria.

Vía | Teoría de Algoritmos [ETSIIT]

Sagasoft


import es.sagasoft.salmax
import es.sagasoft.ronin
import es.sagasfot.palcraft

/**
* @Author SagaSoft
*/

public class Blog extends SagaTec {

public Post (Author autor){

autor.displayContent();
}