Primero tendremos que definir que es un nucleo, y pues el nucleo es la parte o componente mas importante de un sistema operativo ya que es el que actua como interfaz entre los distintos software y hardware del computador, existen varios tipos de nucleos, pero este en particular es una de las nuevos diseños para la creacion de nucleos en donde no se virtualizan o abstraen los recursos del hardware es decir que no se ocultan los recursos del hardware a las aplicaciones y lo que se obtenia como resultado eran una limitacion en el rendimiento pero para los programadores era mucho mas fácil escribir programas ya que para acceder a los recursos del hardware lo hacian de una forma conceptual, todo lo contrario a lo que ocurre con este nucleo en donde los programas desarrollados por los programadores pueden acceder directamente a la memoria, bloques del disco duro, y el nucleo se limita unicamente a asegurar la proteccion de los recursos es decir que esten disponibles y que puedan ser utilizados por las aplicaciones y tambien el multiplexado de los recursos
Como funciona ?
Para asegurar la proteccion de los recursos el exokernel se vale de tres tecnicas las cuales son:
Secure Bindings: utiliza estos enlaces seguros para que las aplicaciones de forma segura puedan unir recursos del hardware y controlar asi los eventos.
Visible Resource Revocation: utilizando la revocacion de los recursos visibles las aplicaciones solicitan un recurso mediante el uso de un protocolo de revocacion de los recursos.
Abort Protocol:utilizando un protocolo de aborto el exonucleo puede romper los enlaces de las solicitudes que no responden.
Como se puede observar solo se proporciona una interfaz ha muy bajo nivel es por eso que ademas de las especificaciones anteriores el exokernel brinda una "Biblioteca del Sistema Operativo" para facilitar de cierta forma al programador a crear soluciones de software con funcionalidades extendibles.
Caracteristicas :
El exokernel es eficiente debido al numero limitado de operaciones primitivas sencillas que aporta.
Debido al bajo nivel de seguridad en la multiplexación de los recursos de hardware proporciona baja utilizacion de los recursos del sistema.
Abstracciones tradicionales como la Memoria Virtual (VM) y los Interprocesos de Comunicacion (IPC) pueden ser implementados de forma eficiente a nivel de aplicación, en donde podria extenderse fácilmente, especializarse o sustituirse.
Las aplicaciones pueden crear efectos especiales de las implementaciones de las abstracciones adaptandolas a sus necesidades y funcionalidades de rendimiento.
Ventajas:
Mejor utilización de los recursos.
Mayor rendimiento en los recursos.
Mayor eficiencia en lautilizacion de los recursos.
Desventajas:
Mayor complejidad para el desarrollo de software.
Carece de funcionalidades de alto nivel a comparacion de otros Sistemas Operativos.
Son programas maliciosos o malware por su abreviatura en ingles, los cuales viajan por la red residiendo en la memoria y pueden reproducirse de si mismo en grandes cantidades, por esta razón de que se reproduzcan en grandes cantidades son fácilmente detectados ya que consume los recursos inmediatamente del sistema, son conocidos también como IWorm.
Como funcionan ?
A diferencia de los virus no necesitan alojarse en el disco duro y se reproducen de si mismos sin la intervención del usuario y pueden viajar de terminal en terminal únicamente conociendo la dirección de otra terminal y así sucesivamente un ejemplo de estos podría ser en los correos en donde el gusano informático podría enviarse como adjunto del correo y al ejecutarse podría obtener las direcciones de correo de todos los usuarios y reenviarse, también puede reenviarse conociendo las cabeceras de los correos para obtener las direcciones ip y basándose en protocolos para viajar como el ICMP el cual es un protocolo de transferencia de correos e IRC que es un protocolo de comunicación utilizado para chat, y así lograr su propagación.
Que daños provoca ?
Sus principales objetivos son la de ocupar el ancho de banda, distribuyéndose por toda la red ya sea Intranet o Internet, lo que provoca que las conexiones se vuelvan lentas y así hacer que servidores completos caigan o que un usuario tenga que esperar bastante tiempo por un servicio ofrecido por uno de estos servidores y en el peor de los casos pueden provocar que un usuario sin autorización tome control remotamente del sistema..
Que sistemas operativos pueden ser afectados ?
Todos los sistemas operativos se encuentran propensos a sufrir de este tipo software malicioso algunos quizá en menor medida que otros pero debido a que viajan por protocolos estándar de red de comunicacion mayormente pueden estar presentes en cualquier sistema, por ejemplo uno de los primeros ataques que se dio con este tipo de malware fue acceder a un servidor Unix de donde se obtuvieron las ips de las terminales que accedían a el y así poder replicarse. Información de este tipo de malware en otros sistemas diferentes a windows se puede encontrar en los siguientes enlaces
Es la capa que se encuentra entre el hardware y el software, o que actúa como interfaz entres estas dos partes, es un intermedio entre software y hardware, se dice que es software porque es almacenado en memorias de solo lectura (ROM) estableciendo una lógica para el manejo de componentes del hardwarey se crea bajo un lenguaje, también se dice que es hardware porque se incrusta en el circuito mismo del algún dispositivo de hardware, en síntesis el firmware es un contenido programado incrustado en dispositivos de hardware para su manejo, ejemplos de estos son los celulares , procesadores, iphone, calculadoras, pantallas electrónicas, etc.
Para qué Sirve? Sirve para controlar los componentes de los dispositivos a los cuales pertenezca dicho firmware, para que cumpla con diferentes funciones a nivel del hardware, ya sea para iniciarlo al momento de encender el aparato, como lo son las BIOS de los computadores y los Celulares Programables, etc..
Donde se Implementan?
Los Firmware son implementados en todos aquellos dispositivos que son programables, es decir en aquellos dispositivos a los cuales se les puede dar instrucciones para que las ejecute el hardware, es entonces cuando el Firmware entra en acción y estas acciones introducidas por el usuario son implementadas o realizadas por el hardware debido a esta interfaz o capa de comunicacion.
Ventajas/Desventajas de Actualización Las ventajas que uno puede obtener al actualizar un Firmware son que se corrijan algunos bugs que contiene el firmware que actualmente se tiene, o que incorporen nuevas características en el manejo del hardware, ejemplos de estos hardwares que actualizan su firmware son los iPod, calculadoras programables, BIOS, camaras fotograficas, unidades de CD, impresoras, desventajas realmente no se tienen ya que siempre en una actualización se esperan mejoras, únicamente lo que existe son riesgos al momentos de realizar la actualización, ya que algunos procesos de actualizacion son complicados, aunque actualmente las actualizaciones de firmware liberados por las empresas creadoras del hardware, son bastante faciles de instalar ya que ahora traen interfaces vistosas y muy faciles de utilizar, ejemplo de estos tipos de software para instalar Firmware es RockBox el cual brinda un software para instalar un Firmware Open Source para controlar los iPod.
Afirma que dos objetos no se refieren al mismo objeto.
assertNull (Object objeto)
Afirma que un objeto es nulo.
assertNull ( String mensaje, Object objeto)
Afirma que un objeto es nulo.
assertSame (Object esperado, Object real)
Afirma que dos objetos se refieren al mismo objeto.
assertSame (String mensaje, Object esperado, Object real)Afirma que dos objetos se refieren al mismo objeto.
assertTrue (boolean condicion) Afirma que una condición es verdadera.
assertTrue (String mensaje, boolean condicion) Afirma que una condición es verdadera.
fail () Falla una prueba y sin mensaje.
fail (String message) Falla una prueba con un mensaje dado.
CREANDO UNAS PRUEBAS PARA UNAS CLASES EN NETBEANS
Primero que nada creamos un nuevo proyecto, y por ejemplo creamos la clase llamada Usuario, en el podremos agregar un metodo que nos pida como parametros el anio de nacimiento del usuario y que
nos devuelva la edad que tiene el usuario, seria un metodo asi:
Ahora creamos seleccionamos la clase que contiene este metodo, nos vamos a la opciones de herramientas
de NETBEANS seleccionamos la opcion de CREATE JUNITS TEST nos aparece una ventanita donde podemos elegir algunas opciones que deseemos como los comentarios y algunos otros metodos que pueden ser generados automaticamente, nos despreocupamos de eso por el momento y clikeamos en la opcion OK, esto hace que se genere una nueva clase con el postfijo TEST es decir en mi caso la claseseria UsuarioTest.java aca estan los metodos que podemos utilizar para realizar nuestras pruebas unitarias haciendo uso de ASSERTS como vamos ha ver a continuacion
public void testAgregarANacimiento() {
System.out.println("agregarANacimiento");
int anio = 0;
Usuario instance = new Usuario();
int expResult = 0;
int result = instance.agregarANacimiento(anio);
assertEquals(expResult, result);
// TODO review the generated test code and remove the default call to fail.
fail("The test case is a prototype.");
}
el codigo anterior es lo que nos genera NETBEANS, ahora supongamos q OBLIGATORIAMENTE los usuarios deben tener una edad igual a 18 años, entonces podemos hacer uso del metodo "assertEquals" para comparar si el metodo agregarANacimiento(int anio) devuelve un valor igual a 18, para asi determinar si el usuario tiene 18 años, modificando el codigo generado queda de la siguiente forma.
public void testAgregarANacimiento() {
System.out.println("agregarANacimiento");
int anio = 2000;
Usuario instance = new Usuario();
int expResult = 18;
int result = instance.agregarANacimiento(anio);
assertEquals("USTED NO TIENE 18 años",expResult, result);
}
podemos darnos cuenta que "anio" ahora tiene un valor de 2000 esto quiere decir que al querer hacer el calculo de la edad tendremos un resultado igual a 9, por lo que el metodo
assertEquals("USTED NO TIENE 18 años",expResult, result);
espera un resultado igual a 18, sino es asi lanza el mensaje que nosotros queramos que seria el primer parametro enviado, luego el "expResult" es donde hemos dicho que lo compare con el valor de 18 y "result" es el resultado de la operacion realizada por el metodo que se esta testeando(probando), ahora para probarlo seleccionamos la clase de prueba en este caso UsuarioTest.java y le damos click derecho y le damos RUN, observamos lo siguiente
podemos observar que aparece el mensaje que nosotros definimos si quisieramos que el TEST o prueba sea satisfactorio unicamente deberemos colocar un valor a "expResult" de 9 q es el resultado de 2009 - 2000 o restarle con un anio igual 1991 y eso es lo que nos dara como resultado una prueba satisfactoria.