lunes, 17 de septiembre de 2012

Kernel

Kernel (Nivel General)

En informática, un núcleo o kernel (de la raíz germánica Kern, núcleo, hueso) es un software que constituye la parte más importante del sistema operativo. Es el principal responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora o en forma básica, es el encargado de gestionar recursos, a través de servicios de llamada al sistema.

En informática, el núcleo es el programa informático que se asegura de:
  • La comunicación entre los programas que solicitan recursos y el hardware.
  • Gestión de los distintos programas informáticos (tareas) de una máquina.
  • Gestión del hardware (memoria, procesador, periférico, forma de almacenamiento, etc.)
A continuacion una imagen mostrando las capas de un computador desde el hardware hasta el software


 Kernel de Linux

El kernel ó núcleo de linux se puede definir como el corazón de este sistema operativo. Es el encargado de que el software y el hardware de tu ordenador puedan trabajar juntos.
Las funciones más importantes del mismo, aunque no las únicas, son:
  • Administración de la memoria para todos los programas y procesos en ejecución.
  • Administración del tiempo de procesador que los programas y procesos en ejecucion utilizan.
  • Es el encargado de que podamos acceder a los periféricos/elementos de nuestro ordenador de una manera cómoda.
Hasta que empezó el desarrollo de la serie 2.6 del núcleo, existieron dos tipos de versiones del núcleo:
  • Versión de produccion: La version de produccion, era la version estable hasta el momento. Esta version era el resultado final de las versiones de desarrollo o experimentales.
    Cuando el equipo de desarrollo del núcleo experimental, decidia que tenia un núclo estable y con la suficiente calidad, se lanzaba una nueva versión de producción ó estable. Esta versión era la que se debia utilizar para un uso normal del sistema, ya que eran las versiones consideradas más estables y libres de fallos en el momento de su lanzamiento.
  • Versión de desarrollo: Esta versión era experimental y era la que utilizaban los desarrolladores para programar, comprobar y verificar nuevas características, correcciones, etc. Estos núcleos solian ser inestables y no se debian usar sin saber lo que se hacia.
Acontinuacion un mapa del mapa kernel de linux






FUENTES

Imagen
http://kushelmex.com/wp-content/uploads/2010/02/linux_kernel_map_img_3.png

General
http://es.wikipedia.org/wiki/N%C3%BAcleo_%28inform%C3%A1tica%29

Linux
http://www.linux-es.org/kernel

Benchamark

Benchmark

El benchmark es una técnica utilizada para medir el rendimiento de un sistema o componente del mismo, frecuentemente en comparación con el que se refiere específicamente a la acción de ejecutar un benchmark.



Software para benchmarking

Prime95 (Con link de descarga)(Descarga aquí)

A decir verdad, Prime95 no es una herramienta de benchmarking per se. Prime95 fue creado para asistir a investigadores en la búsqueda de nuevos "primos Mersenne", pero con el paso del tiempo se convirtió en la punta de lanza para toda prueba de estabilidad en un ordenador. El nivel de esfuerzo al que un procesador puede ser sometido con Prime95 es impresionante, a un extremo tal que puede colgar ordenadores presuntamente estables. ¿Por qué nombrar a Prime95 entonces? Porque las herramientas de benchmarking comparten muchas características con este programa. Un benchmark puede aplicar un gran estrés sobre el hardware, y si el conjunto no es estable, en vez de un resultado sólido obtendrás un ordenador colgado. Si has hecho overclocking y quieres pasar al benchmarking, antes debes comprobar que sea estable. Prime95 es tu primera parada. (Descarga aquí)

Si alguna vez has imaginado un "Acid3" para procesadores, esto es lo que buscas 





Unigine Heaven (Con link de descarga)(Descarga aquí)

Es el turno de dar paso al vídeo, y aunque no tengamos a nuestra disposición al famoso 3DMark, Unigine Heaven es una aplicación que incluso se ha anticipado al software de Futuremark, ofreciendo soporte para DirectX 11, aunque también puedes evaluar DirectX 9, 10, y OpenGL 4.0. Existen varias opciones que pueden alterar las condiciones del benchmark, pero la idea general es colocar todo al máximo y ver qué tan bien (o qué tan mal) le va a tu hardware. La descarga de Unigine Heaven es grande, aproximadamente 230 megabytes, pero si recientemente has comprado hardware con soporte DirectX 11, no encontrarás mejor opción que esta, al menos hasta que Futuremark lance el próximo 3DMark11, que tendrá el mismo soporte. (Descarga aquí)

Un benchmark que vale la pena ver, especialmente si tienes DX11


FurMark (Descarga aquí)

Otra opción gratuita y muy interesante para evaluar hardware de vídeo es FurMark, desarrollada por la gente de oZone3D. A diferencia de Heaven, FurMark entrega varias opciones de configuración que son en parte similares a Prime95. Con FurMark no sólo puedes determinar la velocidad, sino que también es posible realizar intensas pruebas de estabilidad. El overclocking de las tarjetas de vídeo es algo a lo que los juegos pueden ser especialmente receptivos, pero un exceso puede generar errores visuales, y en el peor de los casos, cuelgues en el sistema. Si has ajustado en algunos megahertz la velocidad de la memoria en tu tarjeta, no te conformes con las pruebas por defecto que pueda realizar el controlador. Corre una sesión con FurMark y verifica que todo esté en orden, además de saber qué tanta velocidad has ganado. Dos pájaros de un tiro. (Descarga aquí)

Un excelente software para benchmark, que hace temblar a las tarjetas de vídeo

 

3DMark (PAGO y FREE)

Caracteristicas

  • Medir el rendimiento en gaming usando renderizado, pruebas de CPU y físicas.
  • Impresionante gráficos en tiempo real llevando al límite la API OpenGL ES
  • Servicio complementario en línea para comparar resultados entre dispositivos

 


FRAPS (FREE)

Uno de los benchmarks de juegos gratuitos más populares que existen, FRAPS es diferente de todos los demás software libre evaluación comparativa con los de esta lista, ya que es el único no-sintético de referencia. En lugar de poner el equipo a través de una serie de pruebas que han sido diseñados para juzgar su desempeño general, los registros FRAPS cómo su equipo realiza efectivamente.

 

SiSoft Sandra(PAGO Y FREE)

Sandra representa System Analyzer, Asistente de diagnóstico y presentación de informes. Se trata de un conjunto de pruebas con todas las funciones que está dirigido a usuarios que están muy bien informados sobre el funcionamiento interno de los ordenadores y para las empresas que necesitan para llevar a cabo un análisis detallado en varios equipos. SiSoft Sandra amablemente ofrece una versión gratuita del software.

 

Novabench(TOTAL FREE)

 

Novabench es una prueba de benchmark suite de software libre. A diferencia de muchos conjuntos de herramientas, Novabench no es una versión de prueba o una versión anterior publicado de forma gratuita. La versión gratuita es la versión disponible solamente, y medidores de múltiples aspectos del rendimiento de su equipo.

Fuente

http://www.makeuseof.com/tag/5-free-benchmark-programs/ 

 

Esta de los benchamark que tienen enlaces de descarga

http://www.neoteo.com/ocho-de-los-mejores-benchmarks-gratuitos

Rendimiento de un computador

Medidas del rendimiento de un computador(resumen para leer el articulo completo revisar la fuente)
Cuando se quieren comparar diferentes procesadores es necesario establecer el criterio de
medida que permita cuantificar los resultados de la comparación. En este sentido existen dos
conceptos que conviene aclarar previamente: la unidad de medida y el patrón de medida. El
primero se refiere a la métrica utilizada para cuantificar la comparación. Y el segundo a la carga
de trabajo respecto a la que se realiza la comparación.

El tiempo es la unidad de medida


 por excelencia cuando se comparan varios
procesadores, aunque no siempre coincidan los puntos de vista de los diferentes observadores. Así,
el usuario de un procesador puede decir que el procesador A es mejor que el procesador B cuando A
ejecuta su programa en menor tiempo que B. En cambio el responsable de un centro de cálculo
entenderá que A es mejor que B si es capaz de ejecutar mayor número de trabajos por unidad de
tiempo. El primero estará interesado en el tiempo de respuesta (response time) del procesador
mientras que el segundo lo estará en la productividad (throughput). Pero en ambos casos la clave es
el tiempo: el procesador que realiza la misma cantidad de trabajo en el menor tiempo posible será
el más rápido, la diferencia estriba en si medimos una tarea (tiempo de respuesta) o muchas
(productividad).
El patrón de medida más significativo es el conjunto de programas reales que se
ejecutan en los procesadores. Sin embargo aquí surge de nuevo y con más intensidad la diversidad
de puntos de vista. En efecto, el usuario de un editor de texto querrá medir el rendimiento de un
procesador respecto a la eficiencia para ejecutar su programa, que posiblemente no coincida con el


Tiempo de ejecución

El tiempo que tarda un programa en ser ejecutado por un computador puede ser difícil de
medir, debido a los Sistemas Operativos Multitarea y a los dispositivos de E/S, que tienen tiempos
de respuesta que son independientes de la frecuencia de reloj del ordenador. Por ello es necesario
diferenciar entre el tiempo que tarda una CPU en ejecutar el código de un programa, el tiempo que
utiliza el S.O. para realizar sus tareas, y el tiempo necesario para acceder a los dispositivos de E/S.

El tiempo de ejecución de un programa lo dividiremos en las siguientes componentes:

• Tiempo de respuesta

• Tiempo de CPU

A su vez, el tiempo de CPU lo dividimos en:

• Tiempo de CPU utilizado por el usuario.

• Tiempo de CPU utilizado por el S.O.
Tiempo de respuesta Es el tiempo necesario para completar una tarea, incluyendo los accesos
al disco, a la memoria, las actividades de E/S y los gastos del S.O. Es el tiempo que percibe el
usuario.
Tiempo de CPU Es el tiempo que tarda en ejecutarse un programa, sin tener en cuenta el
tiempo de espera debido a la E/S o el tiempo utilizado para ejecutar otros programas. Se divide
en:
Tiempo de CPU utilizado por el usuario. Es el tiempo que la CPU utiliza para ejecutar el
programa del usuario. No se tiene en cuenta el tiempo de espera debido a la E/S o el tiempo
utilizado para ejecutar otros programas
Tiempo de CPU utilizado por el S.O. Es el tiempo que el S.O. emplea para realizar su
gestión interna.

La función time de Unix produce una salida de la forma: 90.7u 12.9s 2:39 65%, donde:

Tiempo de CPU del usuario = 90.7 segundos
Tiempo de CPU utilizado por el sistema = 12.9 segundos
Tiempo de CPU= 90.7 seg.+ 12.9seg = 103.6
Tiempo de respuesta = 2 minutos 39 segundos =159 segundos
Tiempo de CPU = 65% del tiempo de respuesta = 159 segundos*0.65 = 103.6
Tiempo esperando operaciones de E/S y/o el tiempo ejecutando otras tareas 35% del tiempo de
respuesta = 159 segundos*0.35 = 55.6 segundos
El tiempo de respuesta se utiliza como medida del rendimiento del sistema (con el sistema no
cargado), mientras que el rendimiento de la CPU normalmente hace referencia al tiempo de CPU
del usuario sobre un sistema no cargado.

El tiempo de CPU de un programa podemos expresarlo como:

Tiempo_de_CPU = Número_de_ciclos_de_reloj_de_la_ CPU • Tc

donde Tc = Duración_del_ciclo_de_reloj

Tiempo _ de _ CPU

Número _ de _ ciclos _ de _ reloj _ de _ la _ CPU



Patrones de medida (Benchmarks)

  • Modelos analíticos (matemáticos) de la máquina
  • Modelos de simulación (algorítmicos) de la máquina
  • La máquina real
     
 Las dos primeras alternativas se utilizan cuando la máquina no está  disponible. Los modelos analíticos tienen limitado su ámbito de utilización por la dificultad de expresar en forma de ecuaciones matemáticas el  comportamiento detallado de la máquina y su carga de trabajo. Se utilizan en fases muy tempranas de diseño para realizar estimaciones generales del rendimiento.
Los modelos de simulación pueden construirse con mayor precisión, recogiendo especificaciones detalladas de diseño. Sin embargo, estos modelos requieren una gran capacidad computacional cuando se incorporan todos los componentes básicos de la máquina.

Clasificación general

En función del ámbito de aplicación que representan :

  • Enteros: aplicaciones en las que domina la aritmética entera, incluyendo procedimientos de búsqueda, operaciones lógicas, etc. Por ejemplo, SPECint2000.
  • Punto flotante: aplicaciones intensivas en cálculo numérico con reales. Por ejemplo,SPECfp2000 y LINPACK.
  • Transacciones: aplicaciones en las que dominan las transacciones on-line y off-line sobre bases de datos. Por ejemplo, TPC-C.

En segundo lugar los agruparemos por la naturaleza del programa que implementan:

  • Programas reales: Compiladores, procesadores de texto, etc. Permiten diferentes opciones de ejecución. Con ellos se obtienen las medidas más precisas.
  • Núcleos (Kernels): Trozos de programas reales. Adecuados para analizar rendimientos específicos de las características de una determinada máquina: Linpack, Livermore Loops.
  • Patrones conjunto (benchmarks suits) Conjunto de programas que miden los diferentes modos de funcionamiento de una máquina: SPEC y TPC.
  • Patrones reducidos (toy benchmarks): Programas reducidos (10-100 líneas de código) y de resultado conocido. Son fáciles de introducir y ejecutar en cualquier máquina (Quicksort,...)
  • Patrones sintéticos (synthetic benchmarks): Código artificial no perteneciente a ningún programa de usuario y que se utiliza para determinar perfiles de ejecución. (Whetstone, Dhrystone)
Fuente

Resumen corto del como funciona el rendimiento de un computador:

http://www.uclm.es/profesorado/licesio/Docencia/ETC/15_MedidasRendimiento_itis.pdf


Version Completa si te interesan las formulas y numeros puedes vicitar este link que contiene un pdf muy completo del como se analiza el rendimiento de un computadorç

http://www.fdi.ucm.es/profesor/jjruz/WEB2/Temas/EC4.pdf


Maquinas Virtuales

 

Definición

Una máquina virtual es simplemente una computadora abstracta, una computadora  o  máquinaemulada a partir de software. Una idea para nada nueva y cuyo término acuño IBM en 1959.Existen varios tipos de ellas, con ciertas diferencias entre si, pero a grandes rasgos todas son muyparecidas al siguiente diagrama

Se pueden encontrar varios tipos de máquinas virtuales:
  • Máquinas virtuales software: este tipo de máquinas virtuales se sitúan por encima del sistema operativo y tratan de aislar a las aplicaciones del entorno sobre el que se ejecutan. Proporcionan una capa entre l??) z???????yStr = dÍas aplicaciones y el sistema operativo que captura todas las llamadas al sistema y las traduce al sistema concreto de ejecución. La máquina virtual de Java o la máquina virtual del entorno .NET son dos claros ejemplos de máquinas virtuales software.
  • Entornos virtuales: este tipo de máquinas se crean para ejecutar directamente aplicaciones que necesitan un entorno determinado de ejecución sobre otro entorno totalmente diferente.
  • Maquinas virtuales hardware: este tipo de aplicaciones tratan de emular directamente el hardware. Las llamadas al hardware del sistema operativo instalado serán capturadas y convertidas en llamadas al sistema del hardware emulado. En general, la emulación del hardware recibe el nombre de virtualización. Al emularse directamente el hardware, el usuario tiene la impresión de que la máquina sobre la que está trabajando es totalmente independiente. Este tipo de máquinas virtuales serán el objeto del presente monográfico y a partir de ahora nos centraremos en ellas.

Utilidades y usos más frecuentes de las máquinas virtuales

¿Para qué se pueden usar las máquinas virtuales?. La capacidad de aprovechar al máximo el hardware disponible ofrece una gran cantidad de posibilidades a nivel empresarial y a nivel doméstico. A continuación se detallan algunos de los usos más frecuentes que se le puede dar al software de virtualización:
·Consolidación de servidores: convertir muchos servidores físicos en virtuales. De este modo se aprovecha el hardware disponible de la mejor manera posible.
·Recuperación ante desastres: las máquinas virtuales se pueden salvar muy fácilmente, y además su estado se puede almacenar, por lo que en caso de desastre se puede recuperar la información con rapidez.
·Pruebas de aplicaciones: en muchas ocasiones se necesita un entorno limpio para probar una aplicación. Usar una máquina virtual permite instalar un sistema operativo desde cero, probar la aplicación y luego eliminar la máquina.
·Ejecución de entornos completos sin instalación ni configuración: la posibilidad de descargar máquinas virtuales desde Internet permite ahorrar tiempo en instalaciones y configuraciones. Existen muchas máquinas virtuales con servidores LAMP (Linux, Apache, mySQL y PHP) completos listos para ser usados, máquinas con gestores de contenidos, wikis, etc., gratuitos y funcionales desde el primer momento.
·Aplicaciones portátiles: con el uso de las máquinas virtuales se pueden tener PCs completos listos para usar en dispositivos USB, lo que puede ser de mucha utilidad para tener un entorno privado y usarlo en cualquier PC.

Fuente:
Todo lo que siempre quiso saber so-bre
Máquinas 
Virtuales pero nuncase atrevió a preguntar
 
http://es.scribd.com/doc/2437126/Maquinas-Virtuales
 
 
 
 
http://recursostic.educacion.es/observatorio/web/es/software/software-general/462-monografico-maquinas-virtuales

La Ley de Amdahl

La Ley de Amdahl

Eugene Amdahl analizó este problema y en 1967 propuso lo que se conoce como la Ley de Amdahl, que indica la mejora de rendimiento que se puede esperar incrementando los elementos de procesamiento. La Ley de Amdahl toma en cuenta la parte ``secuencial'' del proceso, es decir, aquella que independientemente de cuántos elementos de procesamiento tengamos, puede ser realizada por uno solo de ellos; y el resto del cálculo no podrá continuar hasta que se haya completado la parte secuencial. La Ley de Amdahl propone normalizar el tiempo que toma realizar la operación en un solo procesador al valor de 1. La fracción del cálculo que sólo se puede realizar secuencialmente será F, entonces la fracción paralelizable es $(1-F)$. Con estos datos, el incremento de velocidad máximo que puede obtenerse con P elementos de procesamiento está dado por la fórmula:

\begin{displaymath}
\frac{1}{F+\frac{(1-F)}{P}}
\end{displaymath}

Como un ejemplo, si nuestra aplicación no tiene sección secuencial (es decir, $F=0$ y $(1-F)=1$), entonces el incremento de velocidad máximo estará dado exactamente por el número de elementos de procesamiento:

\begin{displaymath}
\frac{1}{\frac{1}{P}}=P
\end{displaymath}

Por otro lado, si el 50% del código es secuencial (es decir, $F=0.5$ y $(1-F)=0.5$), la ecuación queda:

\begin{displaymath}
\frac{1}{0.5+\frac{(0.5)}{P}}=\frac{P}{0.5P}+\frac{0.5}{P}
\end{displaymath}

Suponiendo un número infinito de procesadores, esta ecuación da como resultado 2. Si el 50% del código es secuencial, por más procesadores que se agreguen el rendimiento nunca será más de 2 veces mayor que una implementación uniprocesador.
En general el incremento de velocidad máximo si el número de procesadores tiende a infinito será de $1/F$. Si tenemos 10% de código secuencial, aumentar el número de procesadores no llevará un incremento de rendimiento mayor a 10 ($1/0.1$). Similarmente, 90% de código secuencial significa que el rendimiento no podrá crecer más allá de un factor de 1.111 ($1/0.9$).
Realizando una gráfica de número de procesadores contra incremento de rendimiento máximo, se observa que la gráfica es logarítmica, aproximándose al valor máximo determinado anteriormente, sin llegar a alcanzarlo nunca. Ya se determinó el factor de incremento máximo, sin embargo estas gráficas pueden ser una herramienta útil para decidir cuantos elementos de procesamiento se deben dedicar al problema. Dentro de los límites del incremento máximo ya mencionado, para cada valor de $F$ la curva es diferente. Para algunos valores de $F$ la curva se aproxima a la asíntota muy rápidamente según el número de elementos de procesamiento, en este caso puede no ser muy útil agregar más elementos. Para otros valores de $F$, la curva es menos pronunciada, acercándose más lentamente a la asíntota, y el incremento de rendimiento con más procesadores puede ser substancial hasta el límite propuesto por la Ley de Amdahl.

Fuente

http://www.tomechangosubanana.com/tesis/escrito-1-split/node18.html

domingo, 16 de septiembre de 2012

Mi primer computadora


Bueno no tengo mucho que decir por que me acuerdo poco.

Procesador celeron de 600 Ghz intel
Tarjeta de video Ati de 32 Mb ranura vga
Ram 128 Dim
Disco duro de 30 Gb
Placa intel -> cual ? ni idea
Fax modem xD para internet que nunca tuve



mnnmmn bueno eso es todo lo q recuerdo



Compu actual, no me quejo tiene un rendimiento tremendo sin envargo no creo estar dandole el uso adecuando ya que actuamente puedo conseguir el rendimiento de i7 930 en procesadores AMD que son mas baratos y tienen un rendimiento increible(las buldozer por ejm)

Agregando a los siguiente mi tarjeta de video es una Ati 5770 que hasta el momento me corre todo al maximo.


Algunos conceptos basicos

Programa Informatico

Un programa informático es un conjunto de instrucciones que una vez ejecutadas realizarán una o varias tareas en una computadora.

Fuente
http://es.wikipedia.org/wiki/Programa_inform%C3%A1tico

Estos programas son necesarios para el funcionamiento de las computadoras, estos programas informaticos tambien se les denomina Software (en ingles claro xD)

Bit (Binary Digit)

O digito binario, este perteneceal sistema de numeracion binario (1 y 0) a diferencia del sistema de decimal que va del 0 al 9.

Aun no queda claro? pueden la siguiente imagen puede ayudar.

apagada                                                                                                  encendida
Y esto es el sistema de nuemeracion binario unos y ceros o en este caso apagado y encendidos

Fuente_
http://es.wikipedia.org/wiki/Bit   de nuevo ¬ ¬

Codigo

Codigo a secas puede hacer referencia a varios conceptos, pondre a continuacion algunos

Codigo Fuente (Para los informaticos)


El código fuente, en programación, el texto escrito en un lenguaje de programación que ha de ser compilado o interpretado para ejecutarse en una computadora.

Codigo Binario (Para los electronicos)

El código binario, código fundamental en el que se basan los ordenadores, el más simple pues solo consta de dos elementos (0) y (1) que combinados de distintas maneras como impulsos eléctricos ponen las bases para la informática

Fuente

http://es.wikipedia.org/wiki/C%C3%B3digo otra vez!!! google solo quiere a wikipedia no es mi culpa xD

Lenguajes de programación de Alto y Bajo nivel

Lenguajes de programación de bajo nivel: Son mucho mas fáciles de utilizar que el lenguaje máquina, pero dependen mucho de la máquina o computadora como sucedía con el lenguaje máquina. El lenguaje ensamblador fue el primer lenguaje de programación que trato de sustituir el lenguaje máquina por otro mucho más parecido al de los seres humanos.
En este lenguaje se conoce como programa fuente a un programa de instrucciones escrito en lenguaje ensamblador por el programador, y programa objeto es la traducción a lenguaje máquina del programa fuente.
Los lenguajes de este tipo pueden crear programas muy rápidos, pero son difíciles de aprender, son específicos de cada procesador, si nos llevamos el programa a otro computador será preciso reescribir el programa desde el comienzo.

Ahora los del alto nivel

Lenguajes de programación de alto nivel: Este tipo de lenguajes de programación son independientes de la máquina, lo podemos usar en cualquier computador con muy pocas modificaciones o sin ellas, son muy similares al lenguaje humano, pero precisan de un programa interprete o compilador que traduzca este lenguaje de programación de alto nivel a uno de bajo nivel como el lenguaje de máquina que la computadora pueda entender.
Los lenguajes de programación de alto nivel son más fáciles de aprender porque se usan palabras o comandos del lenguaje natural, como por ejemplo del inglés. Este es el caso del BASIC, el lenguaje de programación más conocido.
Existen muchos lenguajes de programación de alto nivel con sus diferentes versiones. Por esta razón es difícil su tipificación, pero una clasificación muy extendida desde el punto de vista de trabajar de los programas y la filosofía de su creación es la siguiente:
  • Lenguajes de programación imperativos: entre ellos tenemos el Cobol, Pascal, C y Ada.
  • Lenguajes de programación declarativos: el Lisp y el Prolog.
  • Lenguajes de programación orientados a objetos: el Smalltalk y el C++.
  • Lenguajes de programación orientados al problema: son aquellos lenguajes específicos para gestión.
  • Lenguajes de programación naturales: son los nuevos lenguajes que pretender aproximar el diseño y la construcción de programas al lenguaje de las personas.
Otra clasificación de los lenguajes de programación de alto nivel, es teniendo en cuenta el desarrollo de las computadoras según sus diferentes generaciones:
  • Lenguajes de programación de primera generación: el lenguaje máquina y el ensamblador.
  • Lenguajes de programación de segunda generación : los primeros lenguajes de programación de alto nivel imperativo (FROTRAN, COBOL).
  • Lenguajes de programación de tercera generación: son lenguajes de programación de alto nivel imperativo pero mucho más utilizados y vigentes en la actualidad (ALGOL 8, PL/I, PASCAL, MODULA).
  • Lenguajes de programación de cuarta generación: usados en aplicaciones de gestión y manejo de bases de dados (NATURAL, SQL).
  • Lenguajes de programación de quinta generación: creados para la inteligencia artificial y para el procesamiento de lenguajes naturales (LISP, PROLOG).


 Ya que la info esta buena y estamos hablando de lenguajes aqui les traigo el concepto de lenguaje de maquina

El Lenguaje Máquina: es el lenguaje de programación que entiende directamente la computadora o máquina. Este lenguaje de programación utiliza el alfabeto binario, es decir, el 0 y el 1.
Con estos dos únicos dígitos, conocidos como bits, forma lo que se conoce como cadenas binarias (combinaciones de ceros y unos) son con las que se escriben las instrucciones que el microprocesador de la computadora entiende nuestra peticiones. Fue el primer lenguaje de programación. Este tipo de lenguaje de programación dejo de utilizarse por su gran dificultad y por la facilidad para cometer errores.

Fuente

http://www.larevistainformatica.com/clasificacion-de-los-lenguajes-de-programacion.html

Abastracion (desde un punto de vista de la informatica ya que el blog es de solo conceptos geek xD)

La abstracción consiste en aislar un elemento de su contexto o del resto de los elementos que lo acompañan. En programación, el término se refiere al énfasis en el "¿qué hace?" más que en el "¿cómo lo hace?" (característica de caja negra). El común denominador en la evolución de los lenguajes de programación, desde los clásicos o imperativos hasta los orientados a objetos, ha sido el nivel de abstracción del que cada uno de ellos hace uso.


Instruccion

En informática, una instrucción es una única operación de un procesador definida por un conjunto de instrucciones de una arquitectura.

Fuente:

http://www.alegsa.com.ar/Dic/instruccion.php





Estructura de datos


Una estructura de datos define la organización e interrelacion de estos y un conjunto de operaciones que se pueden realizar sobre ellos. Las operaciones básicas son:
  • Alta, adicionar un nuevo valor a la estructura.
  • Baja, borrar un valor de la estructura.
  • Búsqueda, encontrar un determinado valor en la estructura para realizar una operación con este valor, en forma secuencial o binario (siempre y cuando los datos estén ordenados).

Cada estructura ofrece ventajas y desventajas en relación a la simplicidad y eficiencia para la realización de cada operación.


Fuente

http://ocw.upm.es/lenguajes-y-sistemas-informaticos/estructuras-de-datos
http://es.wikipedia.org/wiki/Estructura_de_datos

Compilador

Un compilador es un programa que permite traducir el código fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (típicamente lenguaje de máquina). De esta manera un programador puede diseñar un programa en un lenguaje mucho más cercano a como piensa un ser humano, para luego compilarlo a un programa más manejable por una computadora.


Aqui una pequeña imagen para su interpretacion






Que es un computador?

Es un máquina electromecánica capaz una gran cantidad de operaciones a alta velocidad y con mucha presición, siempre que se le den las instrucciones adecuadas.
ESQUEMA BASICO DE UN COMPUTADOR


Los datos que provienen del exterior se introducen en el sistema para ser procesados      El computador realiza operaciones con los datos que tiene almacenados en memoria      El computador produce nuevos datos o información para uso externo


Los datos que provienen del exterior se introducen en el sistema para ser procesados
El computador realiza operaciones con los datos que tiene almacenados en memoria
El computador produce nuevos datos o información para uso externo
El computador de maneja atravez de instrucciones

Entrada y Salida

Dispositivos de entrada y salida

En computación, entrada/salida, también abreviado E/S o I/O (del original en inglés input/output), es la colección de interfaces que usan las distintas unidades funcionales (subsistemas) de un sistema de procesamiento de información para comunicarse unas con otras, o las señales (información) enviadas a través de esas interfaces. Las entradas son las señales recibidas por la unidad, mientras que las salidas son las señales enviadas por ésta.

Entre cada categoria y dispositivo, hay grandes diferencias:
  • Velocidad de transferencia de datos: varios órdenes de magnitud para transferir los datos, según las necesidades de cada dispositivo
  • Aplicación: la funcionalidad para la que esta diseñado un dispositivo tiene influencia sobre el software por ende lo tendrá sobre el sistema operativo.
  • Complejidad de control: cada dispositivo tiene una complejidad asociada, no es lo mismo controlar un ratón que gestionar un disco duro.
  • Unidad de transferencia: datos transferidos como un flujo de bytes/caracteres o en bloques de tamaño fijo
  • Representación de datos: cada dispositivo puede usar su propia codificación de datos
  • Condiciones de error: el porqué del error, su manera de notificarlo así como sus consecuencias difiere ampliamente entre los dispositivos
E aqui una foto por si te dio flojera leer




Fuentes

http://bufoland.blogspot.com/2008/02/qu-es-un-computador.html

http://es.wikipedia.org/wiki/Computadora