miércoles, 18 de noviembre de 2009

Historia de la Informática

ANTECEDENTES HISTÓRICOS DE LA INFORMÁTICA
• DEFINICIÓN DE INFORMÁTICA
A la ciencia que estudia los sistemas inteligentes se información se le denomina informática. En otras palabras, la informática es la ciencia enfocada al estudio de las necesidades de información, de los mecanismos y sistemas requeridos para producirla y aplicarla, de la existencia de insumos y de la integración coherente de los diversos elementos informativos que se necesitan para comprender una situación.
La definición del IBI (Oficina Intergubernamental para la Informática) es: "La aplicación racional y sistemática de la información en los problemas económicos, sociales y políticos"; también señala que la informática es la "ciencia de la política de la información".
• PRECURSORES DEL COMPUTADOR
Carles Babbage es considerado como el padre de la informática.
• DESARROLLO DEL COMPUTADOR
*Charles Babbage
• GENERACIONES Y TECNOLOGÍAS
El avance de la tecnología de las computadoras, a partir de los primeros años del siglo XX ha sido sorprendente. El descubrimiento de los nuevos dispositivos electrónicos, los grandes avances de la programación y el acelerado desarrollo de los nuevos sistemas operativos, han marcado fechas que permiten clasificar a las computadoras de acuerdo a sus componentes y a su capacidad de procesamiento, agrupándolas por generaciones.
Hay quienes ubican a la primera a partir de 1937, otros desde 1951 que fue cuando apareció la primera computadora comercial la UNIVAC (Universal Automatic Computer), pero no es conveniente tomar partido por alguna de estas teorías, sino considerar a las fechas en que se dieron los grandes cambios, como parámetros para determinar el fin de una etapa y el comienzo de otra.
Primera generación
Las computadoras de esta generación se caracterizaron por estar constituidas de relevadores (relés) electromecánicos como la MARK I, o de tubos de vacío como la ENIAC. Eran de un tamaño tan grande que ocupaban espaciosos salones en las universidades donde fueron desarrolladas.
Su capacidad de almacenamiento en la memoria era muy reducida, como en el caso de la ENIAC que almacenaba 1kB. La cantidad de condensadores, resistencias y válvulas de vació propiciaba un consumo excesivo de energía eléctrica, por lo que se calentaban demasiado. Esto obligó a incluir en las salas de computación costosos sistemas de enfriamiento; para la entrada de datos era por medio de tarjetas perforadas y la programación solamente se desarrollaba en lenguaje de máquina o binario, los trabajos para construir estas primeras computadoras comenzaron con la máquina analítica de Babbage.
La fecha final de esta etapa es en la década de los cincuenta, ya que en 1947 se descubre el primer transistor (Transfer Resistance), elemento que dio origen a las primeras computadoras de la segunda generación.
Segunda generación
En la segunda generación de computadoras la característica principal en cuanto a los equipos (hardware) es la inclusión de transistores. Respecto a la programación o software, siguen dominando los sistemas de tarjeta o cinta perforada para la entrada de datos. Los laboratorios Bell logran avances muy significativos como la construcción en 1954, de la primera computadora transistorizada, la TRADIC (Transistorized Airborne Digital Computer).
Otro gran logro de esta época es el desarrollo del primer lenguaje de alto nivel, el FORTRAN (FORmula TRANslator), el cual es muy apropiado para trabajos científicos, matemáticos y de ingeniería. Un año después, John McCarthy desarrolla el lenguaje LISP (acrónimo de LISt Processor), que aporta grandes avances en la investigación sobre Inteligencia Artificial por la facilidad con que permite el manejo de símnbolos y listas.
Uno más de los asombrosos descubrimientos en el ámbito del software entre 1959 y 1960 es el lenguaje de programación COBOL (COmmon Business Oriented Language).
La inclusión de memorias de ferrita en estas computadoras hizo posible que se redujeran de tamaño considerablemente, reduciendo también su consumo de energía eléctrica. Esto significó una notable baja de la temperatura y, aunque necesitaban todavía sistemas de enfriamiento, podían estar más tiempo operando sin presentar problemas. En esta generación se construyen las supercomputadoras Remington Rand UNIVAC LARC, e IBM Stretch (1961).
Tercera generación
Lo siguiente fue la integración a gran escala de transistores en microcircuitos llamados procesadores o circuitos integrados monolíticos LSI (Large Scale Integration), así como la proliferación de lenguajes de alto nivel y la introducción de sistemas operativos (comunicación entre el usuario y la computadora).
El descubrimiento en 1958 del primer Circuito Integrado (chip) por el ingeniero Jack S. Kilby, así como los trabajos del DR. Robert Noyce de Fairchild Semiconductors, acerca de los circuitos integrados, dieron origen a la tercera generación.
IBM marca el inicio de esta generación, cuando el 7 de abril de 1964 presenta la impresionante IBM 360, con su tecnología SLT (Solid Logic Technology).
También en ese año, Control Data Corporation presenta la supercomputadora CD 6600, que se consideró como la más poderosa de las computadoras de la época, ya que tenía la capacidad de ejecutar unos 3 000 000 de instrucciones por segundo.
Se empieza a utilizar los medios magnéticos de almacenamiento, como cintas magnéticas de 9 canales, enormes discos rígidos, etc. Algunos sistemas todavía usan las tarjetas perforadas para la entrada de datos, pero las lectoras de tarjetas ya alcanzan velocidades respetables.
Cuarta generación
Una fecha en la cual de manera inobjetable todos están de acuerdo, e el final de la tercera generación marcado claramente por la aparición del primer microprocesador. En 1971, Intel Corporation, que era una pequeña compañía fabricante de semiconductores ubicada en Silicon Valley, presenta el primer microprocesador o Chip de 4 bit, que en un espacio de aproximadamente 4 x 5 mm contenía 2250 transistores. Este primer microprocesador fue bautizado como el 4004.
Esta generación se caracterizó por grandes avances tecnológicos realizados en un tiempo uy corto. En 1977 aparecen las primeras microcomputadoras, entre las cuales, las mas famosas fueron las fabricadas por Apple Computer, Radio Shack y Commodore Business Machines. IBM se integra al mercado de las microcomputadoras con su Personal Computer; se incluyo un sistema operativo estandarizado, el MS-DOS (MicroSoft Disk Operating System).
Los sistemas operativos han alcanzado un notable desarrollo, sobre todo por la posibilidad de generar gráficosa grandes velocidades, lo cual permite utilizar las interfaces gráficas de usuario, que son pantallas con ventanas, iconos y menús desplegables que facilitan las tareas de comunicación entre el usuario y la computadora, tales como la selección de comandos del sistema operativo para realizar operaciones de copiado o formato con una simple pulsación de cualquier botón del ratón (mouse) sobre uno de los iconos o menús.
Quinta generación
Hay quienes consideran que la cuarta y quinta generaciones han terminado , y las ubican entre los años 1971-1984 la cuarta y entre 1984-1990 la quinta. Ellos consideran que la sexta generación está en desarrollo desde 1990 hasta la fecha.
Hay que mencionar dos grandes avances tecnológicos que quizás sirvan como parámetro para el inicio de dicha generación: la creación en 1982 de la primera supercomputadora con capacidad de proceso paralelo, diseñada por Seymouy Cray, quien ya experimentaba desde 1968 con supercomputadoras, y que funda en 1976 la Cray Research Inc; y el anuncio por parte del gobierno japonés del proyecto "quinta generación", que según se estableció en el acuerdo con seis de las más grandes empresas japonesas de computación, debería terminar en 1992.
Según este proyecto, la característica principal sería la aplicación de la inteligencia artificial. Las computadoras de esta generación contiene una gran cantidad de microprocesadores trabajando en paralelo y pueden reconocer voz e imágenes.
El almacenamiento de información de información se realiza en dispositivos magneto ópticos con capacidades de decenas de Gigabytes; se establece el DVD (Digital Video Disk o Digital Versatile Disk) como estándar para el almacenamiento de vídeo y sonido.
Los componentes de los microprocesadores actuales utilizan tecnologías de alta y ultra integración, denominadas VLSI (Very Large Scale Integration) y ULSI (Ultra Large Scale Integration). El único proceso que se venido realizando sin interrupciones en el transcurso de esta generación, es la conectividad entre computadoras, que a partir de 1994, con el advenimiento de la red Internet y del World Wide Web, ha adquirido una importancia vital en las grandes, medianas y pequeñas empresas y, entre los usuarios particulares de computadoras.
Sexta generación
Supuestamente la sexta generación de computadoras está en marcha desde principios de los años noventa. Esta generación cuenta con arquitecturas combinadas Paralelo/Vectorial, con ciento s de microprocesadores vectoriales trabajando al mismo tiempo; se han creado computadoras capaces de realizar más de un millón de millones de operaciones aritméticas de punto flotante por segundo (teraflops); las redes de área mundial (Wide Area Network, WAN) seguirán creciendo desorbitadamente utilizando medios de comunicación a través de fibras ópticas y satélites, con anchos de banda impresionantes.

Componentes de una computadora

Conceptos de Hardware y Software


Una computadora consiste en una variedad de componentes de equipo que trabajan junto a programas para realizar cálculos, organizar datos y comunicarse con otras computadoras. Los equipos que componen una computadora son: Equipos de entrada, Equipos de salida, System Unit, Equipos de almacenamiento y Equipos de comunicación.

Equipos de Entrada

Un equipo de entrada es cualquier componente de hardware que permite que un usuario entre datos o instrucciones a la computadora. Seis equipos de entrada (o de Input) comunes son: teclado (“keyboard”), “mouse”, micrófono, “scanner”, cámara digital y cámara de computadoras personales.

· Teclado – contiene teclas que permiten escribir números, letras, espacios, signos de puntuación y otros símbolos. También contiene teclas que permiten entrar datos e instrucciones a la computadora.

· “Mouse” – es un equipo de mano, pequeño, que contiene por lo menos un botón. El “mouse” controla el movimiento de un símbolo en la pantalla llamado “pointer”.

· Micrófono – permite al usuario hablar a la computadora para entrar datos e instrucciones.

· “Scanner” – lee texto e imágenes impresas y convierte lo leído a un formato que la computadora pueda usar.

· Cámara digital – se usa para tomar fotos y transferir la imagen fotografiada a la computadora.

· Cámara de PC – es una cámara de video digital que se conecta a una computadora. Esta tecnología permite al usuario editar videos, crear películas, tomar fotos con su computadora y realizar llamadas telefónicas con video.

Equipos de Salida

Un equipo de salida es cualquier componente de hardware que puede recibir y presentar información para un usuario. Tres tipos comunes son: impresora (“printer”), monitor y bocinas.

· Impresora – produce texto y gráficas en un medio físico como el papel o transparencia.

· Monitor – parece una pantalla de televisor, presenta texto, gráficas y video.

· Bocinas – permite escuchar música, voz y otros sonidos generados por la computadora.

System unit

También es conocido como chasis. Es parecido a una caja, hecho de metal o plástico, que protege los componentes electrónicos internos de la computadora. Los circuitos del “system unit” usualmente son parte de una tarjeta de circuito llamada tarjeta madre o “motherboard”. Hay dos componentes principales del “motherboard”: el CPU (Central Processing Unit) y la memoria.

· El CPU o procesador es el equipo electrónico que interpreta y lleva a cabo las instrucciones básicas que realiza la computadora.

· La memoria es un lugar temporero que mantiene datos e instrucciones. El procesador coloca las instrucciones que se van a ejecutar y los datos usados por esas instrucciones en la memoria temporera.

Los componentes internos de la computadora son aquellos que residen en el interior del “system unit”, como el CPU, la memoria, el disco duro, etc. Los equipos periféricos (“peripherals”) son los componentes que están localizados fuera del “system unit”, como el teclado, mouse, etc.

Equipos de almacenamiento

En el ambiente de computadoras, almacenar es guardar datos, instrucciones e información para uso futuro. El equipo de almacenamiento registra o guarda a un medio de almacenamiento; y recupera o extrae de un medio de almacenamiento. El medio de almacenamiento es el lugar físico en donde la computadora mantiene datos, instrucciones e información. El almacenamiento difiere de la memoria en que éste es permanente, mientras que la memoria es temporera.

Seis equipos de almacenamiento comunes son: floppy disk drive, zip drive, hard disk drive, CD-ROM drive, CD-RW drive, DVD-ROM drive. Un “drive” es un equipo que puede leer y/o escribir a un medio de almacenamiento. Los medios que se utilizan para almacenar en sus respectivos “drives” son:

a. floppy disk – guarda datos, instrucciones e información usando patrones magnéticos.

b. Zip disk – disco de mayor capacidad que el floppy; puede guardar lo equivalente a 170 floppy disks.

c. Hard disk – consiste de varios platos circulares que almacena en forma electrónica. Por lo general están en el “system unit”, aunque los hay removibles.

d. CD-ROM – disco compacto en el que se guarda datos, instrucciones e información usando luz láser. Solo se usa para leer.

e. CD-RW – disco compacto parecido al CD-ROM, pero que se puede usar para leer de él o escribir a él.

f. DVD-ROM – otro disco compacto; tiene una gran capacidad de almacenaje.

Equipos de Comunicación:

Permiten que los usuarios puedan comunicarse e intercambiar datos, instrucciones e información con otras computadoras. El módem es un equipo de comunicación que permite que las computadoras se comuniquen a través de líneas de teléfono. Existen otros equipos de comunicación que ayudan a que las computadoras puedan conectarse con otras.

¿Qué hace que las computadoras sean tan poderosas?

1. Realizar el ciclo de procesamiento de información con gran rapidez, confiabilidad y precisión.

· Rapidez – Se pueden realizar billones de operaciones en un segundo.

· Confiabilidad – La alta confiabilidad de los componentes de las computadoras les permiten producir resultados consistentes.

· Precisión – Las computadoras pueden procesar grandes cantidades de datos y generar resultados sin errores, siempre que los datos sean entrados correctamente y el programa trabaje en forma apropiada. (GIGO)

2. Almacenaje – Las computadoras pueden guardar grandes cantidades de datos y hacerlos disponibles para procesarlos cuando sea necesario.

3. Comunicación – Las computadoras con capacidad de comunicación pueden compartir datos (Input), instrucciones (Process) e información (Output) con cualquier otra computadora. Cuando dos o más computadoras se conectan entre sí a través de medios y equipos de comunicación, se forma una red (network). Ejemplo: Internet.

Unidades Periféricas

En informática, se denominan periféricos a los aparatos o dispositivos auxiliares e independientes conectados a la unidad central de procesamiento de una computadora.
Se consideran periféricos tanto a las unidades o dispositivos a través de los cuales la computadora se comunica con el mundo exterior, como a los sistemas que almacenan o archivan la información, sirviendo de memoria auxiliar de la memoria principal.
Se entenderá por periférico al conjunto de dispositivos que, sin pertenecer al núcleo fundamental de la computadora, formado por la CPU y la memoria central, permitan realizar operaciones de entrada/salida (E/S) complementarias al proceso de datos que realiza la CPU. Estas tres unidades básicas en un computador, CPU, memoria central y el subsistema de E/S, están comunicadas entre sí por tres buses o canales de comunicación:
• el bus de direcciones, para seleccionar la dirección del dato o del periférico al que se quiere acceder,
• el bus de control, básicamente para seleccionar la operación a realizar sobre el dato (principalmente lectura, escritura o modificación) y
• el bus de datos, por donde circulan los datos.
A pesar de que el término periférico implica a menudo el concepto de “adicional pero no esencial”, muchos de ellos son elementos fundamentales para un sistema informático. El teclado y el monitor, imprescindibles en cualquier computadora personal de hoy en día (no lo fueron en los primeros computadores), son posiblemente los periféricos más comunes, y es posible que mucha gente no los considere como tal debido a que generalmente se toman como parte necesaria de una computadora. El mouse es posiblemente el ejemplo más claro de este aspecto. Hace menos de 20 años no todos las computadora personales incluían este dispositivo. El sistema operativo MS-DOS, el más común en esa época, tenía una interfaz de línea de comandos para la que no era necesaria el empleo de un mouse, todo se hacía mediante comandos de texto. Fue con la popularización de Finder, sistema operativo de la Macintosh de Apple y la posterior aparición de Windows cuando el mouse comenzó a ser un elemento imprescindible en cualquier hogar dotado de una computadora personal. Actualmente existen sistemas operativos con interfaz de texto que pueden prescindir del mouse como, por ejemplo, algunos sistemas básicos de UNIX y Linux.
Tipos de periféricos
Los periféricos pueden clasificarse en 5 categorías principales:
• Periféricos de entrada: captan y envían los datos al dispositivo que los procesará.
• Periféricos de salida: son dispositivos que muestran o proyectan información hacia el exterior del ordenador. La mayoría son para informar, alertar, comunicar, proyectar o dar al usuario cierta información, de la misma forma se encargan de convertir los impulsos eléctricos en información legible para el usuario. Sin embargo, no todos de este tipo de periféricos es información para el usuario.
• Periféricos de entrada/salida (E/S)
• Periféricos de almacenamiento: son los dispositivos que almacenan datos e información por bastante tiempo. La memoria RAM no puede ser considerada un periférico de almacenamiento, ya que su memoria es volátil y temporal.
• Periféricos de comunicación: son los periféricos que se encargan de comunicarse con otras máquinas o computadoras, ya sea para trabajar en conjunto, o para enviar y recibir información.
Periféricos de entrada
Son los que permiten introducir datos externos a la computadora para su posterior tratamiento por parte de la CPU. Estos datos pueden provenir de distintas fuentes, siendo la principal un ser humano. Los periféricos de entrada más habituales son:
• Teclado
• Micrófono
• Escáner
• Mouse
• Lector de código de barras
Periféricos de salida
Son los que reciben información que es procesada por la CPU y la reproducen para que sea perceptible para el usuario. Algunos ejemplos son:
• Monitor
• Impresora
• Altavoces (también llamados parlantes,[1] en América meridional, Costa Rica, El Salvador y Nicaragua)
• Auriculares
• Fax
Periféricos de entrada/salida
Dependiendo de la finalidad del flujo E/S de los datos, los periféricos E/S pueden ser - Periféricos de comunicaciones: Si emplean el tráfico de datos para comunicar el equipo con otros equipos o componentes. - Periféricos de almacenamiento: Si emplean el tráfico para almacenar o mostrar información al sistema o al usuario.
• Pantalla táctil
• Disco Duro ó HD
• Grabadora de CD ó Grabadora de DVD
• Módem
Periféricos de almacenamiento
Interior de un disco duro.
Se encargan de guardar los datos de los que hace uso la CPU para que ésta pueda hacer uso de ellos una vez que han sido eliminados de la memoria principal, ya que ésta se borra cada vez que se apaga la computadora. Pueden ser internos, como un disco duro, o extraíbles, como un CD. Los más comunes son:
• Disco duro
• Disco flexible
• Unidad de CD
• Unidad de DVD
• Unidad de Blu-ray
• Unidad de HD DVD
• Memoria flash
• Cinta magnética
• Tarjeta perforada
• Memoria portátil
• Disquete
Otros dispositivos de almacenamiento:
• Zip (Iomega): Caben 100 Mb y utiliza tecnología magnética.
• EZFlyer (SyQuest): Caben 230 Mb y tiene una velocidad de lectura muy alta
• SuperDisk LS-120: Caben 200 Mb y utilizan tecnología magneto-óptica.
• Magneto-ópticos de 3,5: Caben de 128 Mb a 640 Mb
• Jaz (Iomega): Es como el Zip y caben de 1 GB a 2 GB.
• Cintas Magnéticas: Caben hasta más de 4 GB.
• Pen Drive
Periféricos de comunicación
Su función es permitir o facilitar la interacción entre dos o más computadoras, o entre una computadora y otro periférico externo a la computadora. Entre ellos se encuentran los siguientes:
• Fax-Módem
• Tarjeta de red
• Hub
• Switch
• Router
• Tarjeta inalámbrica
• Tarjeta Bluetooth
• Controlador ambos exista un tercer elemento que actúe como traductor de señales. Este traductor es un circuito electrónico denominado interfaz.

"Tipos de Computadoras"

Tipos de Computadoras

Dentro de la evolución de las computadoras, han surgido diferentes equipos con diferentes tamaños y características según su tipo de labor. Los computadores son utilizados desde las plantas nucleares como controladores de labores de alto riesgo hasta la simple tarea de calentar la comida con el microondas.

a. Supercomputadoras ("paralelas")


Diseñadas para aplicaciones científicas, procesos complejos. Son los sistemas más grandes, rápidos y costosos del mundo de las computadoras.

Una supercomputadora es la computadora más potente disponible en un momento dado. Estas máquinas están construidas para procesar enormes cantidades de información en forma muy rápida. Las supercomputadoras pueden costar desde 10 millones hasta 30 millones de dólares, y consumen energía eléctrica suficiente para alimentar 100 hogares.

Historia de la Supercomputadoras

Las supercomputadoras tal como las hemos descrito haces su aparición a principios de la década de los ochenta. De manos de las norteamericanas Cray e IBM y de las japonesas Fujitsu, Hitachi y NEC, en 1985 ya funcionaban más de 150 unidades de esta clase, cada una de con un valor superior a los 10 millones de dólares. Hoy funcionan alrededor del mundo miles de estos equipos con valores levemente menores a 5 millones de dólares y que pueden superar los 40 millones de dólares según las características (cantidad de procesadores, memoria, equipos de entrada salida, unidades de almacenamiento externo, etc.)

b. Macrocomputadoras “Mainframe”

Son sistemas que ofrecen mayor velocidad en el procesamiento y mayor capacidad de almacenaje que una mini computadora típica.

La computadora de mayor tamaño en uso común es el macrocomputadora. Las Macrocomputadoras (mainframe) están diseñadas para manejar grandes cantidades de entrada, salida y almacenamiento.

c. Minicomputadoras

Al igual que las micros son de propósitos generales, pero mayormente son más poderosas y más costosas que las micros. En tamaño varían de un modelo de escritorio a una unidad del grande de un archivo.

La mejor manera de explicar las capacidades de una Minicomputadora es diciendo que están en alguna parte entre las de una macrocomputadora o mainframe y las de las computadoras personales. Al igual que las Macrocomputadoras, las Minicomputadoras pueden manejar una cantidad mucho mayor de entradas y salidas que una computadora personal. Aunque algunas minis están diseñadas para un solo usuario, muchas pueden manejar docenas o inclusive cientos de terminales.

En 1960 surgió la Minicomputadora, una versión más pequeña de la Macrocomputadora. Al ser orientada a tareas específicas, no necesitaba de todos los periféricos que necesita un MainFrames, y esto ayudó a reducir el precio y costo de mantenimiento. Las Minicomputadora, en tamaño y poder de procesamiento, se encuentran entre los MainFrames y las estaciones de trabajos.

En general, una Minicomputadora, es un sistema multiproceso (varios procesos en paralelo) capaz de soportar de 10 hasta 200 usuarios simultáneamente. Actualmente se usan para almacenar grandes bases de datos, automatización industrial y aplicaciones multiusuario.

d. Estaciones de Trabajo ("Workstation")

Diseñados para apoyar una red de computadoras, permitiendo a los usuarios el compartir archivos, programas de aplicaciones y hardware", como por ejemplo las impresoras.

Entre las Minicomputadoras y las microcomputadoras (en términos de potencia de procesamiento) existe una clase de computadoras conocidas como estaciones de trabajo. Una estación de trabajo se ve como una computadora personal y generalmente es usada por una sola persona, al igual que una computadora. Aunque las estaciones de trabajo son más poderosas que la computadora personal promedio. Las estaciones de trabajo tienen una gran diferencia con sus primas las microcomputadoras en dos áreas principales. Internamente, las estaciones de trabajo están construidas en forma diferente que las microcomputadoras. Están basadas generalmente en otra filosofía de diseño de CPU llamada procesador de cómputo con un conjunto reducido de instrucciones (RISC), que deriva en un procesamiento más rápido de las instrucciones.

e. Microcomputadoras

Son sistemas pequeños de propósitos generales. Pero pueden ejecutar las mismas operaciones y usar las mismas instrucciones de muchos sistemas grandes.

Estas pequeñas computadoras se encuentran comúnmente en oficinas, salones de clase y hogares. Las computadoras personales vienen en todas formas y tamaños. Modelos de escritorio El estilo de computadora personal más común es también el que se introdujo primero: el modelo de escritorio. Computadoras notebook Las computadoras notebook, como su nombre lo indica, se aproximan a la forma de una agenda. Las Laptop son las predecesoras de las computadoras notebook y son ligeramente más grandes que éstas. Asistentes personales digitales Los asistentes personales digitales (PDA) son las computadoras portátiles más pequeñas.

Las PDA también llamadas a veces palmtops, son mucho menos poderosas que los modelos notebook y de escritorio. Se usan generalmente para aplicaciones especiales, como crear pequeñas hojas de cálculo, desplegar números telefónicos y direcciones importantes, o para llevar el registro de fechas y agenda. Muchas pueden conectarse a computadoras más grandes para intercambiar datos.

Tipos de Microcomputadoras:


Hand-held
Palmtop
Notebook
Laptop
Pen computers
PDA ("personal digital assistant")
Desktop
Tower

Tabla Comparativa

Categoría

Tamaño

Velocidad

Número de
usuarios en línea

Rango de Precios

Supercomputadora

Cuarto completo

Miles de MIPS

Miles de usuarios

Varios millones en adelante

Macrocomputadoras

“Mainframe”

Cuarto parcial o completo

Cientos de MIPS

Cientos a Miles de usuarios

$300,000 a varios millones

Minicomputadora

De pequeño a archivo grande

Cientos de MIPS

2 a 4,000 usuarios

$15,000 a varios cientos de miles de $

Estación de Trabajo

De escritorio a archivo pequeño

25 a 200 MIPS

2 a 1,000 usuarios

$5,000 a $150,000

Microcomputadora

De mano a escritorio

1 a 100 MIPS

un usuario

Cientos a Miles de dólares

Lenguaje de programación

Con la aparición de las computadoras desaparecen las secuencias de posiciones de llaves mecánicas que debían desconectarse para obtener una acción determinada, una llave conectada era un 1 y una llave desconectada era un 0. Una sucesión de llaves en cualquiera de sus dos posiciones definía una secuencia de ceros y unos (por ejemplo: 0100011010011101...) que venía a representar una instrucción o un conjunto de instrucciones (programa) para el ordenador (o computador) en el que se estaba trabajando. A esta primera forma de especificar programas para una computadora se la denomina lenguaje máquina o código máquina.
La necesidad de recordar secuencias de programación para las acciones usuales llevó a denominarlas con nombres fáciles de memorizar y asociar: ADD (sumar), SUB (restar), MUL (multiplicar), CALL (ejecutar subrutina), etc. A esta secuencia de posiciones se le denominó "instrucciones", y a este conjunto de instrucciones se le llamó lenguaje ensamblador.
Posteriormente aparecieron diferentes lenguajes de programación, los cuales reciben su denominación porque tienen una estructura sintáctica similar a los lenguajes escritos por los humanos.
Concepto
Un lenguaje de programación es un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Es utilizado para controlar el comportamiento físico y lógico de una máquina.
Aunque muchas veces se usan los términos 'lenguaje de programación' y 'lenguaje informático' como si fuesen sinónimos, no tiene por qué ser así, ya que los lenguajes informáticos engloban a los lenguajes de programación y a otros más, como, por ejemplo, el HTML (lenguaje para el marcado de páginas web que no es propiamente un lenguaje de programación).
Un lenguaje de programación permite a uno o más programadores especificar de manera precisa sobre qué datos debe operar una computadora, cómo estos datos deben ser almacenados o transmitidos y qué acciones debe tomar bajo una variada gama de circunstancias. Todo esto, a través de un lenguaje que intenta estar relativamente próximo al lenguaje humano o natural, tal como sucede con el lenguaje Léxico. Una característica relevante de los lenguajes de programación es precisamente que más de un programador puedan tener un conjunto común de instrucciones que puedan ser comprendidas entre ellos para realizar la construcción del programa de forma colaborativa.
Los procesadores usados en las computadoras son capaces de entender y actuar según lo indican programas escritos en un lenguaje fijo llamado lenguaje de máquina. Todo programa escrito en otro lenguaje puede ser ejecutado de dos maneras:
• Mediante un programa que va adaptando las instrucciones conforme son encontradas. A este proceso se lo llama interpretar y a los programas que lo hacen se los conoce como intérpretes.
• Traduciendo este programa, al programa equivalente escrito en lenguaje de máquina. A ese proceso se lo llama compilar y al programa traductor se le denomina compilador.

Clasificación de los lenguajes de programación
Los lenguajes de programación se pueden clasificar atendiendo a varios criterios:
• Según el nivel de abstracción
• Según el paradigma de programación que poseen cada uno de ellos
Según su nivel de abstracción
Lenguajes de Máquina
Están escritos en lenguajes directamente legibles por la máquina (computadora), ya que sus instrucciones son cadenas binarias (0 y 1). Da la posibilidad de cargar (transferir un programa a la memoria) sin necesidad de traducción posterior lo que supone una velocidad de ejecución superior, solo que con poca fiabilidad y dificultad de verificar y poner a punto los programas.
Lenguajes de bajo nivel
Los lenguajes de bajo nivel son lenguajes de programación que se acercan al funcionamiento de una computadora. El lenguaje de más bajo nivel por excelencia es el código máquina. A éste le sigue el lenguaje ensamblador, ya que al programar en ensamblador se trabajan con los registros de memoria de la computadora de forma directa. Ejemplo en lenguaje ensamblador intel x86:
;Lenguaje ensamblador, sintaxis Intel para procesadores x86
mov eax,1 ;mueve a al registro eax el valor 1
xor ebx, ebx ;pone en 0 el registro ebx
int 80h ;llama a la interrupción 80h (80h = 128 sistema decimal)
Ejecutar ese código en sistemas UNIX o basados en él, equivale a una función exit(0) (terminar el programa retornando el valor 0).
La principal utilización de este tipo de lenguajes es para programar los microprocesadores, utilizando el lenguaje ensamblador correspondiente a dicho procesador.
Lenguajes de medio nivel
Hay lenguajes de programación que son considerados por algunos expertos como lenguajes de medio nivel (como es el caso del lenguaje C) al tener ciertas características que los acercan a los lenguajes de bajo nivel pero teniendo, al mismo tiempo, ciertas cualidades que lo hacen un lenguaje más cercano al humano y, por tanto, de alto nivel. Ejemplo:
/*Lenguaje C*/

/*declaración de las funciones estandars de entrada y salida*/
# include

int main(int argc, char **argv)
{
char *p; /*creamos un puntero a un byte*/
if(argc == 1){
printf("\nIngrese un argumento al programa\n");/*imprimimos el texto*/
return 1;
}
p = 0x30000 /*el puntero apunta a 0x30000 */
*p = argv[1][0] /*el primer caracter del primer argumento lo copiamos a la posición 0x30000 */
return 0;
}
El ejemplo es muy simple y muestra a los punteros de C, éstos no son muy utilizados en lenguajes de alto nivel, pero en C sí.
Lenguajes de alto nivel
Los lenguajes de alto nivel son normalmente fáciles de aprender porque están formados por elementos de lenguajes naturales, como el inglés. En BASIC, uno de los lenguajes de alto nivel más conocidos, los comandos como "IF CONTADOR = 10 THEN STOP" pueden utilizarse para pedir a la computadora que pare si el CONTADOR es igual a 10. Esta forma de trabajar puede dar la sensación de que las computadoras parecen comprender un lenguaje natural; en realidad lo hacen de una forma rígida y sistemática, sin que haya cabida, por ejemplo, para ambigüedades o dobles sentidos. Ejemplo:
{Lenguaje Pascal}
program suma;

var x,s,r:integer; {declaración de las variables}
begin {comienzo del programa principal}
writeln('Ingrese 2 números enteros');{imprime el texto}
readln(x,s); {lee 2 números y los coloca en las variables x y s}
r:= x + s; {suma los 2 números y coloca el resultado en r}
writeln('La suma es ',r); {imrpime el resultado}
readln;
end.{termina el programa principal}
Ese es el lenguaje Pascal, muy utilizado por principiantes al aprender a programar.
Según el paradigma de programación
Un paradigma de programación representa un enfoque particular o filosofía para la construcción del software. No es mejor uno que otro, sino que cada uno tiene ventajas y desventajas. Dependiendo de la situación un paradigma resulta más apropiado que otro.
Atendiendo al paradigma de programación, se pueden clasificar los lenguajes en :
• El paradigma imperativo o por procedimientos es considerado el más común y está representado, por ejemplo, por el C o por BASIC.
• El paradigma funcional está representado por la familia de lenguajes LISP (en particular Scheme), ML o Haskell.
• El paradigma lógico, un ejemplo es PROLOG.
• El paradigma orientado a objetos. Un lenguaje completamente orientado a objetos es Smalltalk.
Nota: La representación orientada a objetos mejora la estructura de los datos y por lo tanto se ha aplicado a diferentes paradigmas como Redes de Petri, Imperativo Secuencial, Lógica de Predicados, Funcional, etc. No obstante, la manipulación no queda fundamentalmente afectada y por lo tanto el paradigma inicial tampoco a pesar de ser re-orientado a objetos.
Si bien puede seleccionarse la forma pura de estos paradigmas a la hora de programar, en la práctica es habitual que se mezclen, dando lugar a la programación multiparadigma.
Actualmente el paradigma de programación más usado debido a múltiples ventajas respecto a sus anteriores, es la programación orientada a objetos.
Lenguajes imperativos
Son los lenguajes que dan instrucciones a la computadora, es decir, órdenes.
Lenguajes Funcionales
Paradigma Funcional: este paradigma concibe a la computación como la evaluación de funciones matemáticas y evita declarar y cambiar datos. En otras palabras, hace hincapié en la aplicación de las funciones y composición entre ellas, más que en los cambios de estados y la ejecución secuencial de comandos (como lo hace el paradigma procedimental). Permite resolver ciertos problemas de forma elegante y los lenguajes puramente funcionales evitan los efectos secundarios comunes en otro tipo de programaciones.
Lenguajes Lógicos
La computación lógica direcciona métodos de procesamiento basados en el razonamiento formal. Los objetos de tales razonamientos son "hechos" o reglas "if then". Para computar lógicamente se utiliza un conjunto de tales estamentos para calcular la verdad o falsedad de ese conjunto de estamentos. Un estamento es un hecho si sus tuplas verifican una serie de operaciones.
Un hecho es una expresión en la que algún objeto o conjunto de objetos satisface una relación específica. Una tupla es una lista inmutable. Una tupla no puede modificarse de ningún modo después de su creación.
Una regla if then es un estamento que informa acerca de conjuntos de tuplas o estamentos relacionados que pueden predecir si otras tuplas satisfacerán otras relaciones.
Un estamento que es probado verdadero como resultado de un proceso se dice que es una inferencia del conjunto original. Se trata por tanto de una descripción de cómo obtener la veracidad de un estamento dado que unas reglas son verdaderas.
La computación lógica está por tanto relacionada con la automatización de algún conjunto de métodos de inferencia.
Lenguajes orientados a objetos
La Programación Orientada a Objetos (POO u OOP según sus siglas en inglés) es un paradigma de programación que usa objetos y sus interacciones para diseñar aplicaciones y programas de computadora. Está basado en varias técnicas, incluyendo herencia, modularidad, polimorfismo y encapsulamiento. Su uso se popularizó a principios de la década de 1990. Actualmente son muchos los lenguajes de programación que soportan la orientación a objetos.
Implementación
La implementación de un lenguaje es la que provee una manera de que se ejecute un programa para una determinada combinación de software y hardware. Existen básicamente dos maneras de implementar un lenguaje: Compilación e interpretación. Compilación es la traducción a un código que pueda utilizar la máquina. Los programas traductores que pueden realizar esta operación se llaman compiladores. Éstos, como los programas ensambladores avanzados, pueden generar muchas líneas de código de máquina por cada proposición del programa fuente.
Se puede también utilizar una alternativa diferente de los compiladores para traducir lenguajes de alto nivel. En vez de traducir el programa fuente y grabar en forma permanente el código objeto que se produce durante la compilación para utilizarlo en una ejecución futura, el programador sólo carga el programa fuente en la computadora junto con los datos que se van a procesar. A continuación, un programa intérprete, almacenado en el sistema operativo del disco, o incluido de manera permanente dentro de la máquina, convierte cada proposición del programa fuente en lenguaje de máquina conforme vaya siendo necesario durante el procesamiento de los datos. El código objeto no se graba para utilizarlo posteriormente.
La siguiente vez que se utilice una instrucción, se la deberá interpretar otra vez y traducir a lenguaje máquina. Por ejemplo, durante el procesamiento repetitivo de los pasos de un ciclo o bucle, cada instrucción del bucle tendrá que volver a ser interpretada en cada ejecución repetida del ciclo, lo cual hace que el programa sea más lento en tiempo de ejecución (porque se va revisando el código en tiempo de ejecución) pero más rápido en tiempo de diseño (porque no se tiene que estar compilando a cada momento el código completo). El intérprete elimina la necesidad de realizar una compilación después de cada modificación del programa cuando se quiere agregar funciones o corregir errores; pero es obvio que un programa objeto compilado con antelación deberá ejecutarse con mucha mayor rapidez que uno que se debe interpretar a cada paso durante una ejecución del código.

Sistema operativo

Un sistema operativo es un software de sistema, es decir, un conjunto de programas de computación destinados a realizar muchas tareas entre las que destaca la administración de los dispositivos periféricos.

Cuando se aplica voltaje al procesador de un dispositivo electrónico, éste ejecuta un reducido código en lenguaje ensamblador localizado en una dirección concreta en la ROM (dirección de reset) y conocido como reset code, que a su vez ejecuta una rutina con la que se inicializa el hardware que acompaña al procesador. También en esta fase suele inicializarse el controlador de las interrupciones. Finalizada esta fase se ejecuta el código de arranque (startup code), también código en lenguaje ensamblador, cuya tarea más importante es ejecutar el programa principal (main()) del software de la aplicación.[1]

Un sistema operativo se puede encontrar en la mayoría de los aparatos electrónicos que utilicen microprocesadores para funcionar, ya que gracias a éstos podemos entender la máquina y que ésta cumpla con sus funciones (teléfonos móviles, reproductores de DVD, autoradios, computadoras, radios, etc).

Funciones básicas

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 más 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.

Interfaces del usuario

Es la parte del sistema operativo que permite comunicarse con él, de tal manera que se puedan cargar programas, acceder archivos y realizar otras tareas. Existen tres tipos básicos de interfaces: las que se basan en comandos, las que utilizan menús y las interfaces gráficas de usuario.

Administración de recursos

Sirven para administrar los recursos de hardware y de redes de un sistema informático, como la CPU, memoria, dispositivos de almacenamiento secundario y periféricos de entrada y de salida.

Administración de archivos

Un sistema de información contiene programas de administración de archivos que controlan la creación, borrado y acceso de archivos de datos y de programas. También implica mantener el registro de la ubicación física de los archivos en los discos magnéticos y en otros dispositivos de almacenamiento secundarios.

Administración de tareas

Los programas de administración de tareas de un sistema operativo administran la realización de las tareas informáticas de los usuarios finales. Los programas controlan qué áreas tienen acceso al CPU y por cuánto tiempo. Las funciones de administración de tareas pueden distribuir una parte específica del tiempo del CPU para una tarea en particular, e interrumpir al CPU en cualquier momento para sustituirla con una tarea de mayor prioridad.

Servicio de soporte

Los servicios de soporte de cada sistema operativo dependerán de la implementación particular de éste con la que estemos trabajando. Entre las más conocidas se pueden destacar las implementaciones de Unix, desarrolladas por diferentes empresas de software, los sistemas operativos de Apple Inc., como Mac OS X para las computadoras de Apple Inc., los sistemas operativos de Microsoft, y las implementaciones de software libre, como GNU/Linux o BSD producidas por empresas, universidades, administraciones públicas, organizaciones sin fines de lucro y/o comunidades de desarrollo.

Estos servicios de soporte suelen consistir en:

  • Actualización de versiones.
  • Mejoras de seguridad.
  • Inclusión de alguna nueva utilidad (un nuevo entorno gráfico, un asistente para administrar alguna determinada función, ...).
  • Controladores para manejar nuevos periféricos (este servicio debe coordinarse a veces con el fabricante del hardware).
  • Corrección de errores de software.
  • Otros.

No todas las utilidades de administración o servicios forman parte del sistema operativo, además de éste, hay otros tipos importantes de software de administración de sistemas, como los sistemas de administración de base de datos o los programas de administración de redes. El soporte de estos productos deberá proporcionarlo el fabricante correspondiente (que no tiene porque ser el mismo que el del sistema operativo).

Perspectiva histórica

Estimación del uso actual de sistemas operativos según una muestra de computadoras con acceso a Internet (Fuente: W3counter).

Los primeros sistemas (1945 - 1950) eran grandes máquinas operadas desde la consola maestra por los programadores. Durante la década siguiente (1950 - 1960) se llevaron a cabo avances en el hardware: lectoras de tarjetas, impresoras, cintas magnéticas, etc. Esto a su vez provocó un avance en el software: compiladores, ensambladores, cargadores, manejadores de dispositivos, etc.

Problemas de explotación y soluciones iniciales

El problema principal de los primeros sistemas era la baja utilización de los mismos, la primera solución fue poner un operador profesional que manejaba el sistema, con lo que se eliminaron las hojas de reserva, se ahorró tiempo y se aumentó la velocidad.

Para ello, los trabajos se agrupaban de forma manual en lotes mediante lo que se conoce como procesamiento por lotes (batch) sin automatizar.

Monitores residentes

Según fue avanzando la complejidad de los programas, fue necesario implementar soluciones que automatizaran la organización de tareas sin necesidad de un operador. Debido a ello se crearon los monitores residentes: programas que residían en memoria y que gestionaban la ejecución de una cola de trabajos.

Un monitor residente estaba compuesto por un cargador, un Intérprete de comandos y un Controlador (drivers) para el manejo de entrada/salida.

Sistemas con almacenamiento temporal de E/S

Se avanza en el hardware, creando el soporte de interrupciones. Luego se lleva a cabo un intento de solución más avanzado: solapar la E/S de un trabajo con sus propios cálculos. Por ello se crea el sistema de buffers con el siguiente funcionamiento:

  • Un programa escribe su salida en un área de memoria (buffer 1).
  • El monitor residente inicia la salida desde el buffer y el programa de aplicación calcula depositando la salida en el buffer 2.
  • La salida desde el buffer 1 termina y el nuevo cálculo también.
  • Se inicia la salida desde el buffer 2 y otro nuevo cálculo dirige su salida al buffer 1.
  • El proceso se puede repetir de nuevo.

Los problemas surgen si hay muchas más operaciones de cálculo que de E/S (limitado por la CPU) o si por el contrario hay muchas más operaciones de E/S que cálculo (limitado por la E/S).

Spoolers

Hace aparición el disco magnético con lo que surgen nuevas soluciones a los problemas de rendimiento. Se eliminan las cintas magnéticas para el volcado previo de los datos de dispositivos lentos y se sustituyen por discos (un disco puede simular varias cintas). Debido al solapamiento del cálculo de un trabajo con la E/S de otro trabajo se crean tablas en el disco para diferentes tareas, lo que se conoce como Spool (Simultaneous Peripherial Operation On-Line).

Sistemas Operativos Multiprogramados

Surge un nuevo avance en el hardware: el hardware con protección de memoria. Lo que ofrece nuevas soluciones a los problemas de rendimiento:

  • Se solapa el cálculo de unos trabajos con la entrada/salida de otros trabajos.
  • Se pueden mantener en memoria varios programas.
  • Se asigna el uso de la CPU a los diferentes programas en memoria.

Debido a los cambios anteriores, se producen cambios en el monitor residente, con lo que éste debe abordar nuevas tareas, naciendo lo que se denomina como Sistemas Operativos multiprogramados, los cuales cumplen con las siguientes funciones:

  • Administrar la memoria.
  • Gestionar el uso de la CPU (planificación).
  • Administrar el uso de los dispositivos de E/S.

Cuando desempeña esas tareas, el monitor residente se transforma en un sistema operativo multiprogramado.

Llamadas al Sistema Operativo

Definición breve: llamadas que ejecutan los programas de aplicación para pedir algún servicio al SO.

Cada SO implementa un conjunto propio de llamadas al sistema. Ese conjunto de llamadas es el interfaz del SO frente a las aplicaciones. Constituyen el lenguaje que deben usar las aplicaciones para comunicarse con el SO. Por ello si cambiamos de SO, y abrimos un programa diseñado para trabajar sobre el anterior, en general el programa no funcionará, a no ser que el nuevo SO tenga la misma interfaz. Para ello:

  • Las llamadas correspondientes deben tener el mismo formato.
  • Cada llamada al nuevo SO tiene que dar los mismos resultados que la correspondiente del anterior.

Modos de ejecución en un CPU

Las aplicaciones no deben poder usar todas las instrucciones de la CPU. No obstante el SO, tiene que poder utilizar todo el juego de instrucciones del CPU. Por ello, una CPU debe tener (al menos) dos modos de operación diferentes:

  • Modo usuario: el CPU podrá ejecutar sólo las instrucciones del juego restringido de las aplicaciones.
  • Modo supervisor: la CPU debe poder ejecutar el juego completo de instrucciones.

Llamadas al Sistema

Una aplicación, normalmente no sabe dónde está situada la rutina de servicio de la llamada. Por lo que si ésta se codifica como una llamada de función, cualquier cambio en el SO haría que hubiera que reconstruir la aplicación.

Pero lo más importante es que una llamada de función no cambia el modo de ejecución de la CPU. Con lo que hay que conseguir llamar a la rutina de servicio, sin tener que conocer su ubicación, y hacer que se fuerce un cambio de modo de operación de la CPU en la llamada (y la recuperación del modo anterior en el retorno).

Esto se hace utilizando instrucciones máquina diseñadas específicamente para este cometido, distintas de las que se usan para las llamadas de función.

Bibliotecas de interfaz de llamadas al sistema

Las llamadas al sistema no siempre tienen una expresión sencilla en los lenguajes de alto nivel, por ello se crean las bibliotecas de interfaz, que son bibliotecas de funciones que pueden usarse para efectuar llamadas al sistema. Las hay para distintos lenguajes de programación.

La aplicación llama a una función de la biblioteca de interfaz (mediante una llamada normal) y esa función es la que realmente hace la llamada al sistema.

Interrupciones y excepciones

El SO ocupa una posición intermedia entre los programas de aplicación y el hardware. No se limita a utilizar el hardware a petición de las aplicaciones ya que hay situaciones en las que es el hardware el que necesita que se ejecute código del SO. En tales situaciones el hardware debe poder llamar al sistema, pudiendo deberse estas llamadas a dos condiciones:

  • Algún dispositivo de E/S necesita atención.
  • Se ha producido una situación de error al intentar ejecutar una instrucción del programa (normalmente de la aplicación).

En ambos casos, la acción realizada no está ordenada por el programa de aplicación, es decir, no figura en el programa.

Según los dos casos anteriores tenemos las interrupciones y la excepciones:

  • Interrupción: señal que envía un dispositivo de E/S a la CPU para indicar que la operación de la que se estaba ocupando, ya ha terminado.
  • Excepción: una situación de error detectada por la CPU mientras ejecutaba una instrucción, que requiere tratamiento por parte del SO.

Tratamiento de las interrupciones

Una interrupción se trata en todo caso, después de terminar la ejecución de la instrucción en curso.

El tratamiento depende de cuál sea el dispositivo de E/S que ha causado la interrupción, ante la cual debe poder identificar el dispositivo que la ha causado.

Importancia de las interrupciones

El mecanismo de tratamiento de las interrupciones permite al SO utilizar la CPU en servicio de una aplicación, mientras otra permanece a la espera de que concluya una operación en un dispositivo de E/S.

El hardware se encarga de avisar al SO cuando el dispositivo de E/S ha terminado y el SO puede intervenir entonces, si es conveniente, para hacer que el programa que estaba esperando por el dispositivo, se continúe ejecutando.

En ciertos intervalos de tiempo puede convenir no aceptar señales de interrupción. Por ello las interrupciones pueden inhibirse por programa (aunque esto no deben poder hacerlo las mismas).

Excepciones

Cuando la CPU intenta ejecutar una instrucción incorrectamente construida, la unidad de control lanza una excepción para permitir al SO ejecutar el tratamiento adecuado. Al contrario que en una interrupción, la instrucción en curso es abortada. Las excepciones al igual que las interrupciones deben estar identificadas.

Clases de excepciones

Las instrucciones de un programa pueden estar mal construidas por diversas razones:

  • El código de operación puede ser incorrecto.
  • Se intenta realizar alguna operación no definida, como dividir por cero.
  • La instrucción puede no estar permitida en el modo de ejecución actual.
  • La dirección de algún operando puede ser incorrecta o se intenta violar alguno de sus permisos de uso.

Importancia de las excepciones

El mecanismo de tratamiento de las excepciones es esencial para impedir, junto a los modos de ejecución de la CPU y los mecanismos de protección de la memoria, que las aplicaciones realicen operaciones que no les están permitidas. En cualquier caso, el tratamiento específico de una excepción lo realiza el SO.

Como en el caso de las interrupciones, el hardware se limita a dejar el control al SO, y éste es el que trata la situación como convenga.

Es bastante frecuente que el tratamiento de una excepción no retorne al programa que se estaba ejecutando cuando se produjo la excepción, sino que el SO aborte la ejecución de ese programa. Este factor depende de la pericia del programador para controlar la excepción adecuadamente.

Componentes de un sistema operativo

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.

La gestión de procesos podría ser similar al trabajo de oficina. Se puede tener una lista de tareas a realizar y a estas fijarles prioridades alta, media, baja por ejemplo. Debemos comenzar haciendo las tareas de prioridad alta primero y cuando se terminen seguir con las de prioridad media y después las de baja. Una vez realizada la tarea se tacha. Esto puede traer un problema que las tareas de baja prioridad pueden que nunca lleguen a ejecutarse. y permanezcan en la lista para siempre. Para solucionar esto, se puede asignar alta prioridad a las tareas más antiguas.

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.

Existen diferentes Sistemas de Archivos, es decir, existen diferentes formas de organizar la información que se almacena en las memorias (normalmente discos) de los ordenadores. Por ejemplo, existen los sistemas de archivos FAT, FAT32, EXT2, NTFS...

Desde el punto de vista del usuario estas diferencias pueden parecer insignificantes a primera vista, sin embargo, existen diferencias muy importantes. Por ejemplo, los sistemas de ficheros FAT32 y NTFS , que se utilizan fundamentalmente en sistemas operativos de Microsoft, tienen una gran diferencia para un usuario que utilice una base de datos con bastante información ya que el tamaño máximo de un fichero con un Sistema de Archivos FAT32 está limitado a 4 gigabytes sin embargo en un sistema NTFS el tamaño es considerablemente mayor.

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.

Sistema de comunicaciones

Para mantener las comunicaciones con otros sistemas es necesario poder controlar el envío y recepción de información a través de las interfaces de red. También hay que crear y mantener puntos de comunicación que sirvan a las aplicaciones para enviar y recibir información, y crear y mantener conexiones virtuales entre aplicaciones que están ejecutándose localmente y otras que lo hacen remotamente.

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.

Gestor de recursos

Como gestor de recursos, el Sistema Operativo administra

  • La CPU (Unidad Central de Proceso, donde está alojado el microprocesador).
  • Los dispositivos de E/S (entrada y salida)
  • La memoria principal (o de acceso directo).
  • Los discos (o memoria secundaria).
  • Los procesos (o programas en ejecución).
  • ...
  • y en general todos los recursos del sistema.

Características

Administración de tareas Monotarea: Solamente puede ejecutar un proceso (aparte de los procesos del propio S.O.) en un momento dado. Una vez que empieza a ejecutar un proceso, continuará haciéndolo hasta su finalización y/o interrupción.

  • Multitarea: Es capaz de ejecutar varios procesos al mismo tiempo. Este tipo de S.O. normalmente asigna los recursos disponibles (CPU, memoria, periféricos) de forma alternada a los procesos que los solicitan, de manera que el usuario percibe que todos funcionan a la vez, de forma concurrente.

Administración de usuarios

  • Monousuario: Si sólo permite ejecutar los programas de un usuario al mismo tiempo.
  • Multiusuario: Si permite que varios usuarios ejecuten simultáneamente sus programas, accediendo a la vez a los recursos de la computadora. Normalmente estos sistemas operativos utilizan métodos de protección de datos, de manera que un programa no pueda usar o cambiar los datos de otro usuario.

Manejo de recursos

  • Centralizado: Si permite utilizar los recursos de una sola computadora.
  • Distribuido: Si permite utilizar los recursos (memoria, CPU, disco, periféricos... ) de más de una computadora al mismo tiempo.