Organización y Arquitectura de Computadoras

.

sábado, 24 de abril de 2010

Sistemas Operativos

Un Sistema operativo es un software que actúa de interfaz entre los dispositivos de hardware y los programas usados por el usuario para manejar un computador. Es responsable de gestionar, coordinar las actividades y llevar a cabo el intercambio de los recursos y actúa como estación para las aplicaciones que se ejecutan en la máquina.


Uno de los propósitos de un sistema operativo como programa estación principal, consiste en gestionar los recursos de localización y protección de acceso del hardware, hecho que alivia a los programadores de aplicaciones de tener que tratar con estos detalles. Se encuentran en la mayoría de los aparatos electrónicos que utilizan microprocesadores para funcionar.

Un usuario normalmente interactúa con el sistema operativo a través de un sistema de comandos, por ejemplo, el sistema operativo DOS contiene comandos como copiar y pegar para copiar y pegar archivos respectivamente. Los comandos son aceptados y ejecutados por una parte del sistema operativo llamada procesador de comandos o intérprete de la línea de comandos. Las interfaces gráficas permiten que utilices los comandos señalando y pinchando en objetos que aparecen en la pantalla.




---NECESIDADES DE SISTEMAS OPERATIVOS

En sistemas grandes, el sistema operativo tiene incluso mayor responsabilidad y poder, es como un policía de tráfico, se asegura de que los programas y usuarios que están funcionando al mismo tiempo no interfieran entre ellos. El sistema operativo también es responsable de la seguridad, asegurándose de que los usuarios no autorizados no tengan acceso al sistema.


Los sistemas operativos, en su condición de capa software que posibilitan y simplifica el manejo de la computadora, desempeñan una serie de funciones básicas esenciales para la gestión del equipo. Entre las más destacables, cada una ejercida por un componente interno (módulo en núcleos monolíticos y servidor en micronúcleos), podemos reseñar las siguientes:

*Proporcionar comodidad en el uso de un computador.
*Gestionar de manera eficiente los recursos del equipo, ejecutando servicios para los procesos (programas)
*Brindar una interfaz al usuario, ejecutando instrucciones (comandos).
*Permitir que los cambios debidos al desarrollo del propio SO se puedan realizar sin interferir con los servicios que ya se prestaban (evolutividad).
*Un sistema operativo desempeña 5 funciones básicas en la operación de un sistema informático: suministro de interfaz al usuario, administración de recursos, administración de archivos, administración de tareas y servicio de soporte y utilidades.




---TIPOS DE SISTEMAS OPERATIVOS

Los sistemas operativos pueden ser clasificados de la siguiente forma:


* Multiusuario: Permite que dos o más usuarios utilicen sus programas al mismo tiempo. Algunos sistemas operativos permiten a centenares o millares de usuarios al mismo tiempo.
* Multiprocesador: soporta el abrir un mismo programa en más de una CPU.
* Multitarea: Permite que varios programas se ejecuten al mismo tiempo.
* Multitramo: Permite que diversas partes de un solo programa funcionen al mismo tiempo.
* Tiempo Real: Responde a las entradas inmediatamente. Los sistemas operativos como DOS y UNIX, no funcionan en tiempo real.

Familia Windows


* Windows 95
* Windows 98
* Windows ME
* Windows NT
* Windows 2000
* Windows 2000 server
* Windows XP
* Windows Server 2003
* Windows CE
* Windows Mobile
* Windows XP 64 bits
* Windows Vista (Longhorn)

Familia Macintosh

* Mac OS 7
* Mac OS 8
* Mac OS 9
* Mac OS X

Familia UNIX


* AIX
* AMIX
* GNU/Linux
* GNU / Hurd
* HP-UX
* Irix
* Minix
* System V
* Solaris
* UnixWare




---COMPONENTES Y SERVICIOS BASICOS DE SISTEMAS OPERATIVOS

Gestión de procesos

Un proceso es simplemente, un programa en ejecución que necesita recursos para realizar su tarea: tiempo de CPU, memoria, archivos y dispositivos de E/S. El SO es el responsable de:

* Crear y destruir los procesos.
* Parar y reanudar los procesos.
* Ofrecer mecanismos para que se comuniquen y sincronicen.

Gestión de la memoria principal

La Memoria (informática) es una gran tabla de palabras o bytes que se referencian cada una mediante una dirección única. Este almacén de datos de rápido accesos es compartido por la CPU y los dispositivos de E/S, es volátil y pierde su contenido en los fallos del sistema. El SO es el responsable de:

* Conocer qué partes de la memoria están utilizadas y por quién.
* Decidir qué procesos se cargarán en memoria cuando haya espacio disponible.
* Asignar y reclamar espacio de memoria cuando sea necesario.

Gestión del almacenamiento secundario

Un sistema de almacenamiento secundario es necesario, ya que la memoria principal (almacenamiento primario) es volátil y además muy pequeña para almacenar todos los programas y datos. También es necesario mantener los datos que no convenga mantener en la memoria principal. El SO se encarga de:

* Planificar los discos.
* Gestionar el espacio libre.
* Asignar el almacenamiento.

El sistema de E/S

Consiste en un sistema de almacenamiento temporal (caché), una interfaz de manejadores de dispositivos y otra para dispositivos concretos. El sistema operativo debe gestionar el almacenamiento temporal de E/S y servir las interrupciones de los dispositivos de E/S.

Sistema de archivos

Los archivos son colecciones de información relacionada, definidas por sus creadores. Éstos almacenan programas (en código fuente y objeto) y datos tales como imágenes, textos, información de bases de datos, etc. El SO es responsable de:

* Construir y eliminar archivos y directorios.
* Ofrecer funciones para manipular archivos y directorios.
* Establecer la correspondencia entre archivos y unidades de almacenamiento.
* Realizar copias de seguridad de archivos.

Sistemas de protección

Mecanismo que controla el acceso de los programas o los usuarios a los recursos del sistema. El SO se encarga de:

* Distinguir entre uso autorizado y no autorizado.
* Especificar los controles de seguridad a realizar.
* Forzar el uso de estos mecanismos de protección.

Programas de sistema

Son aplicaciones de utilidad que se suministran con el SO pero no forman parte de él. Ofrecen un entorno útil para el desarrollo y ejecución de programas, siendo algunas de las tareas que realizan:

* Manipulación y modificación de archivos.
* Información del estado del sistema.
* Soporte a lenguajes de programación.
* Comunicaciones.




---ADMINISTRACION DE PROCESO

Uno de los conceptos mas importantes que gira entorno a un sistema operativo es el de proceso. Un proceso es un programa en ejecución junto con el entorno asociado (registros, variables ,etc.).

El corazón de un sistema operativo es el núcleo, un programa de control que reacciona ante cualquier interrupción de eventos externos y que da servicio a los procesos, creándolos, terminándolos y respondiendo a cualquier petición de servicio por parte de los mismos.


*Planificación del Procesador

La planificación del procesador se refiere a la manera o técnicas que se usan para decidir cuánto tiempo de ejecución y cuándo se le asignan a cada proceso del sistema. Obviamente, si el sistema es monousuario y monotarea no hay mucho que decidir, pero en el resto de los sistemas esto es crucial para el buen funcionamiento del sistema.

Caracteristicas a considerar de los Procesos:

* Cantidad de Entrada/Salida: Existen procesos que realizan una gran cantidad de operaciones de entrada y salida (aplicaciones de bases de datos, por ejemplo).
* Cantidad de Uso de CPU: Existen procesos que no realizan muchas operaciones de entrada y salida, sino que usan intensivamente la unidad central de proceso. Por ejemplo, operaciones con matrices.
* Procesos de Lote o Interactivos: Un proceso de lote es más eficiente en cuanto a la lectura de datos, ya que generalmente lo hace de archivos, mientras que un programa interactivo espera mucho tiempo por las respuestas de los usuarios.

* Procesos en Tiempo Real: Si los procesos deben dar respuesta en tiempo real se requiere que tengan prioridad para los turnos de ejecución.
* Longevidad de los Procesos: Existen procesos que típicamente requerirán varias horas para finalizar su labor, mientras que existen otros que solo necesitan algunos segundos.

Los sistemas operativos actuales poseen una serie de funciones cuyo objetivo es el de la manipulación de los procesos.




---ADMINISTRACION DE MEMORIA

Cuando el diseñador se plantea lo que es la gestión de memoria del sistema debe tener en cuenta que la memoria es unos de los recursos críticos del sistema, es crítica porque un programa al ejecutarse debe estar cargado en M. entonces cuanta más memoria tengamos o mejora la optimicemos más programas podremos guardar en ella.

¿Qué quiere un diseñador?Que sea barata, gran capacidad y muy rápida.

Pero no se pueden conseguir las tres cosas.

A mayor capacidad el tiempo de acceso es mucho mayor, es más lenta.

Se observa que ha mayor capacidad menor coste por bit, comparamos Módulo de memoria y disco duro, no cuesta lo mismo un disco duro de 8 gigas que 8 gigas de memoria Ram.

A menor tiempo de acceso, si queremos memoria más rápida, el coste se nos dispara.
Los diseñadores del sistema no pueden tener un solo tipo de memoria donde alojar todoas las memorias, existe una jerarquía de memoria.
Esa jerarquía intenta solucionar esos inconvenientes a la hora de diseñar el esquema de memoria.

---MEMORIA VIRTUAL

Es una técnica que permite al software usar más memoria principal que la que realmente posee el ordenador. La mayoría de los ordenadores tienen cuatro tipos de memoria: registros en la CPU, la memoria caché (tanto dentro como fuera del CPU), la memoria física (generalmente en forma de RAM, donde la CPU puede escribir y leer directa y razonablemente rápido) y el disco duro que es mucho más lento, pero también más grande y barato.

Esta memoria utiliza una parte de almacenamiento secundario de la computadora (disco duro) como si fuera memoria. Cada dirección a la que hace referencia la CPU recorre un mapeo de dirección de la supuesta dirección virtual a una dirección física en la memoria principal.

Se usa la memoria virtual para dar a los programadores la ilusión de que tienen a su disposición una memoria muy grande, aunque la computadora tenga en realidad una memoria relativamente pequeña.

Con la memoria virtual el sistema operativo asigna una porcion de un medio de almacenamiento, usaulamente el disco duro para funcionar como RAM adicional.

La memoria virtual usualmente (pero no necesariamente) es implementada usando paginación. En paginación, los bits menos significativos de la dirección de memoria virtual son preservados y usados directamente como los bits de orden menos significativos de la dirección de memoria física. Los bits más significativos son usados como una clave en una o más tablas de traducción de direcciones (llamadas tablas de paginación), para encontrar la parte restante de la dirección física buscada.

Compiladores

Es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, generando un programa equivalente que la máquina será capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de máquina, pero también puede ser simplemente texto.



*Tipos de Compiladores

* Compiladores cruzados: generan código para un sistema distinto del que están funcionando.
* Compiladores optimizadores: realizan cambios en el código para mejorar su eficiencia, pero manteniendo la funcionalidad del programa original.
* Compiladores de una sola pasada: generan el código máquina a partir de una única lectura del código fuente.
* Compiladores de varias pasadas: necesitan leer el código fuente varias veces antes de poder producir el código máquina.
* Compiladores JIT (Just In Time): forman parte de un intérprete y compilan partes del código según se necesitan.

La diversidad de compiladores puede parecer abrumadora. Hay miles de lenguajes fuente, desde los lenguajes de programación tradicionales, como FORTRAN o Pascal. Hasta los lenguajes especializados que han surgido virtualmente en todas las áreas de aplicación de la informática. Los lenguajes objeto son igualmente variados; un lenguaje objeto puede ser otro lenguaje de programación o el lenguaje de máquina de cualquier computador entre un microprocesador y un supercomputador.

martes, 20 de abril de 2010

Ensambladores

Se refiere a un tipo de programa informático que se encarga de traducir un fichero fuente escrito en un lenguaje ensamblador, a un fichero objeto que contiene código máquina, ejecutable directamente por la máquina para la que se ha generado. El propósito para el que se crearon este tipo de aplicaciones es la de facilitar la escritura de programas, ya que escribir directamente en código binario, que es el único código entendible por la computadora, es en la práctica imposible.


*Funcionamiento

El programa lee el fichero escrito en lenguaje ensamblador y sustituye cada uno de los códigos nemotécnicos que aparecen por su código de operación correspondiente en sistema binario para la plataforma que se eligió como destino en las opciones específicas del ensamblador.

*TIPOS DE ENSAMBLADORES

-Ensambladores básicos: Son de muy bajo nivel, y su tarea consiste básicamente en ofrecer nombres simbólicos a las distintas instrucciones, parámetros y cosas tales como los modos de direccionamiento.


-Ensambladores modulares, o macro ensambladores: Descendientes de los ensambladores básicos, fueron muy populares en las décadas de los 50 y los 60, antes de la generalización de los lenguajes de alto nivel. Hacen todo lo que puede hacer un ensamblador, y además proporcionan una serie de directivas para definir e invocar macroinstrucciones (o simplemente, macros).


-Ensambladores modulares 32-bits o de alto nivel: Son ensambladores que aparecieron como respuesta a una nueva arquitectura de procesadores de 32 bits, muchos de ellos teniendo compatibilidad hacia atrás pudiendo trabajar con programas con estructuras de 16 bits.

lunes, 19 de abril de 2010

Tipos de Lenguajes de Programación



Un lenguaje de programación es un lenguaje diseñado para describir el conjunto de acciones consecutivas que un equipo debe ejecutar. Por lo tanto, un lenguaje de programación es un modo práctico para que los seres humanos puedan dar instrucciones a un equipo.

Los lenguajes que los equipos usan para comunicarse entre ellos no tienen nada que ver con los lenguajes de programación; se los conoce como protocolos de comunicación. Se trata de dos conceptos totalmente diferentes. Un lenguaje de programación es muy estricto:

A CADA instrucción le corresponde UNA acción de procesador.

*Lenguaje de Máquina



El lenguaje utilizado por el procesador se denomina lenguaje máquina. Se trata de datos tal como llegan al procesador, que consisten en una serie de 0 y 1 ( datos binarios). El lenguaje máquina, por lo tanto, no es comprensible para los seres humanos, razón por la cual se han desarrollado lenguajes intermediarios comprensibles para el hombre.

*Lenguajes de programación imperativos y funcionales

Los lenguajes de programación generalmente se dividen en dos grupos principales en base al procesamiento de sus comandos:

* lenguajes imperativos.
* lenguajes funcionales.

*Lenguaje de programación imperativo

Un lenguaje imperativo programa mediante una serie de comandos, agrupados en bloques y compuestos de órdenes condicionales que permiten al programa retornar a un bloque de comandos si se cumple la condición.

*Lenguaje de programación funcional

Un lenguaje de programación funcional, también llamado lenguaje procedimental, es un lenguaje que crea programas mediante funciones, devuelve un nuevo estado de resultado y recibe como entrada el resultado de otras funciones.



Algunos ejemplos de lenguajes ampliamente usados

A continuación, encontrará una breve lista de los lenguajes de programación actuales:

Lenguajes --> Principal área de Aplicación

ADA --> Tiempo real
BASIC --> Programación para fines educativos
C --> Programación de sistema
C++ --> Programación de sistema orientado a objeto
Cobol --> Administración
Fortran --> Cálculo
Java --> Programación orientada a Internet
MATLAB --> Cálculos matemáticos
Cálculos matemáticos --> Cálculos matemáticos
LISP --> Inteligencia artificial
Pascal --> Educación
PHP --> Desarrollo de sitios web dinámicos
Inteligencia artificial --> Inteligencia artificial
Perl --> Procesamiento de cadenas de caracteres

Interpretes

Es un programa informático capaz de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel. Los intérpretes se diferencian de los compiladores en que mientras estos traducen un programa desde su descripción en un lenguaje de programación al código de máquina del sistema, sólo realizan la traducción a medida que sea necesaria, típicamente, instrucción por instrucción, y normalmente no guardan el resultado de dicha traducción.

Usando un intérprete, un solo archivo fuente puede producir resultados iguales incluso en sistemas sumamente diferentes (ej. una PC y un PlayStation 3). Usando un compilador, un solo archivo fuente puede producir resultados iguales solo si es compilado a distintos ejecutables específicos a cada sistema.


Los intérpretes, por definición, realizan la fase de análisis y ejecución a la vez, lo cual imposibilita tales optimizaciones. Por esta razón, los sistemas interpretados suelen ser menos eficientes que los compilados. No obstante, los nuevos avances informáticos aumentan la velocidad de procesamiento y capacidad de memoria de los ordenadores.