Download TEMA 2

Document related concepts
no text concepts found
Transcript
CAPÍTULO 5
Software de computadoras.
OBJETIVOS.
Los objetivos de este capítulo son varios: mostrar el concepto de software, señalar la
diferencia entre los distintos tipos de software y cuáles son sus funciones, mostrar el concepto
y funciones de un sistema operativo, también se estudian los lenguajes de programación, y los
fundamentos del proceso de traducción.
1.- INTRODUCCIÓN.
Se ha visto en capítulos anteriores el hardware o parte física. En este capítulo vamos a
abordar el estudio del software. A medida que la informática a evolucionado, se ha valorado
más y más la importancia del software, hasta el punto en que, hoy en día, el software es
considerado como la clave del éxito o fracaso de los sistemas basados en computadoras, tanto
si se utiliza la computadora para manejar un negocio, controlar la fabricación de un producto o
capacitar un sistema. En cualquier caso, el software es el factor que marca la diferencia., lo
que distingue a una compañía de su competidora es la suficiencia y oportunidad de la
información dada por el software.
Ya se ha comentado en los objetivos que el software es una parte principal de los sistemas
informáticos. Se intentaba resaltar entonces la importancia que tiene el software, hasta el
punto en que todo análisis de sistemas el software es la parte principal, pasando el hardware a
ser un mero instrumento para que el software pueda ejecutar sus funciones. Esta es la mejor
perspectiva para acercarse al mundo de la informática como usuario.
2.- DEFINICIÓN Y TIPOS DE SOFTWARE.
Software o soporte lógico de una computadora es el conjunto de programas asociados a
dicha computadora. Dentro de estos programas se incluyen los suministrados por el
constructor, los adquiridos en empresas especializadas en venta de programas, y los
redactados por los propios usuarios de la computadora.
Software o soporte lógico o logical es la parte de la Informática que estudia todo lo
relativo a la programación de las computadoras, tanto desde el punto de vista de los
programas como de los datos.
Los programas o componentes que forman el software de una computadora se pueden
agrupar en tres apartados:
a) Software de control o sistema de explotación.
Es el conjunto de programas que controla el funcionamiento de los programas que se
ejecutan y administra los recursos hardware, facilitando el uso de la computadora de la forma
más eficiente posible. Dentro de este apartado se incluye el sistema operativo.
b) Software de tratamiento.
Contiene los programas con los que los usuarios utilizan los recursos (hardware, sistema
operativo, traductores, etc.), para resolver sus problemas o realizar sus aplicaciones. Estas
aplicaciones pueden ser: cálculos científicos, aplicaciones de gestión administrativa,
almacenamiento y recuperación de la información, etc. (Sección 1.3).
El software de tratamiento incluye a su vez dos tipos: software de programación o de
servicio y software de aplicación.
Capítulo 5:
Software de computadoras.
Página 2.
El software de programación o de servicio contiene programas o utilidades que facilitan
la construcción de las aplicaciones de los usuarios, sea cual sea la naturaleza de éstas. Incluye
herramientas tales como intérpretes, compiladores, editores de textos, módulos de gestión de
archivos y cargadores/montadores.
El software de aplicación incluye programas relacionados con aplicaciones específicas,
como pueden ser: procesadores de textos, bibliotecas de programas para problemas
estadísticos (por ejemplo, BMDP o SPSS) o de cálculo numérico (por ejemplo, IMSL o
MATH-PACK), sistemas de administración de archivos, sistemas de administración de bases
de datos, etc. También aquí se incluyen los propios programas realizados por los usuarios.
Entre los programas de aplicación es común incluir, entre otros, los que se describen a
continuación:
Procesador de textos. Permite componer textos (informes, periódicos, monografías, libros
y documentos en general) con una gran calidad de presentación (similar a los escritos hechos a
imprenta). También es usual que los procesadores de texto contengan diccionarios para poder
consultar la grafía o sinónimos de palabras.
Hoja electrónica u hoja de cálculo. Es una aplicación que permite definir una retícula con
filas y columnas. Cada intersección de fila y columna representa un campo (numérico o no)
que se denomina celda. Con el lenguaje de utilización de la hoja electrónica puede hacerse
que una celda sea función de otra u otras. Una vez definida una hoja electrónica e introducidos
datos en la misma, puede salvarse en disco para usarla posteriormente (leerla, modificarla,
listarla, etc.).
Sistema de administración de archivos y de bases de datos. Permite definir, generar,
actualizar y consultar información contenida en archivos o bases de datos (Capítulo 6).
Agenda electrónica. Posibilita que los usuarios de la computadora introduzcan en ella y
consulten información acerca de sus ocupaciones o compromisos (entrevistas, horas de
reuniones,…), todo ello dentro de una estructura o tabla días/horas.
Correo electrónico. Tiene por objeto transmitir información (mensajes cortos) entre los
distintos usuarios de una computadora o red de computadoras, garantizando que el control de
los contenidos de los mensajes recaiga sobre la persona receptora.
Gráficos y dibujos. En este apartado se incluyen paquetes de rutinas gráficas (por ejemplo,
GKS), programas de dibujo, programas de diseño con ayuda de computadora (CAD) y
paquetes o programas de representación de datos (gráficas comerciales o científicas).
Comunicaciones. Esta aplicación suele incluir protocolos de comunicaciones así como
programas emuladores de terminales, y permite a la computadora conectarse en una red como
terminal de otra, transferir archivos, etc.
Existe una gran cantidad de paquetes comerciales para las aplicaciones citadas. Estos
paquetes han adquirido una gran relevancia (por su amplia difusión) y, aunque el ámbito de
uso de las mismas supera con creces el campo de la gestión administrativa, al conjunto de
dichas aplicaciones cuando está integrado suele denominarse oficina electrónica o paquete
integrado de ofimática.
La denominación paquete o software integrado hace referencia a lo siguiente:

Las distintas aplicaciones o utilidades se diseñan con un objetivo y filosofía de utilización
común. Existe una cooperación entre los distintos módulos para conseguir un fin
compartido.

Los archivos creados por cualquiera de las aplicaciones pueden ser utilizados por las
demás. Es decir, existe una compatibilidad de información de una aplicación a otra.
Capítulo 5:
Software de computadoras.
Página 3.
Dentro de una aplicación se puede llamar a otra, de forma que unas aplicaciones pueden
auxiliar a otras.
Así, por ejemplo, un software integrado de oficina electrónica permite operaciones tales
como:
1. Utilizar el procesador de texto para componer un mensaje para el correo
electrónico o para editar un campo de una hoja electrónica.
2. Combinar un texto generado con el procesador de textos con un archivo creado
por el sistema de gestión de archivos para generar directamente cartas
personalizadas.

c) Software de diagnóstico y mantenimiento.
Está formado por programas a utilizar por las personas responsables del mantenimiento y
puesta al día del hardware y del software de la computadora. Con estos programas se pretende,
por ejemplo, localizar automáticamente las averías de un determinando dispositivo o circuito,
o las causas de un mal funcionamiento de algún módulo del sistema operativo.
En este tercer grupo de programas del software de una computadora también incluimos los
de generación y mantenimiento del sistema operativo.
2.1.- Características del software.
¿Que diferencia el software de otras cosas que el hombre puede construir? .Veamos, para
ello, algunas de sus características, [PRE 93].
El software no se fabrica, se desarrolla. A diferencia de otros productos, el software
no se fabrica en el sentido clásico. Los costes del software son mayoritariamente costes de
ingeniería, en lugar de costes de producción, donde residen básicamente los costes de, por
ejemplo, productos industriales, incluido el hardware.

Figura 1.- Tasa ideal de fallos del software.

El software no se estropea. Un problema concreto, con un enunciado concreto, se
resuelve hoy y mañana con el mismo algoritmo, es decir, con la misma secuencia de pasos. Si
el programa está bien confeccionado, y soluciona el problema adecuadamente, no existe la
posibilidad de que el programa se estropee y deje de proporcionar los resultado deseados. La
tasa de fallos ideal del software se muestra en la Figura 1, inicialmente es alta ya medida que
se depura el programa se estabiliza a valores casi nulos.
Sin embargo, aunque el software no se estropea, si que sufre un deterioro. Veamos el
porqué. Cuando se confecciona un programa que soluciona un problema se plantea en unos
términos concretos. Sin embargo, con el paso del tiempo, al detectar fallos se procede a su
corrección, lo que puede provocar nuevos fallos. Además, puede ocurrir que las condiciones
iniciales cambien, y se desee modificar el funcionamiento del software. Esto también puede
introducir nuevos fallos en el software, de forma que la tasa de fallos ideal reflejada en la
Figura 1 se convierte en la curva de la Figura 2, donde puede observarse que la tasa de fallo
aumenta con el tiempo, es decir, el software se deteriora.
Capítulo 5:
Software de computadoras.
Página 4.
El software se construye a medida, en lugar de ensamblar componentes.
Generalmente, salvo raras excepciones, los diseños industriales se realizan de forma modular ,
es decir, se diseñan módulos que posteriormente se ensamblan para componer otros
productos. En el caso del software la regla es la excepción industrial, lo que comporta una
baja modularidad y poca productividad a la hora de realizar nuevos proyectos, puesto que de
cada vez se parte de cero.

Figura 2.- Tasa real de fallos del software.
Aunque las tecnologías orientadas a objetos se han convertido en la década de los noventa
en uno de los motores clave de la industria del software. El desarrollo de programas
orientados a objetos es un enfoque diferente del mundo informático. Implica la creación de
modelos del mundo real y la construcción de programas informáticos basados en esos
modelos.
3.- LENGUAJES DE PROGRAMACION.
Un lenguaje de programación es un conjunto de símbolos y de reglas para combinarlos, que
se usan para expresar algoritmos. Los lenguajes de programación, al igual que los lenguajes
que usamos para comunicamos, poseen un léxico (vocabulario o conjunto de símbolos
permitidos), una sintaxis, que indica cómo realizar construcciones del lenguaje y una
semántica, que determina el significado de cada construcción correcta.
Los lenguajes de programación, o lenguajes de alto nivel, están específicamente diseñados
para programar computadoras. Sus características fundamentales son:



Son independientes de la arquitectura física de la computadora. Por tanto, no obligan al
programador a conocer los detalles de la computadora que usa, y permiten usar los mismos
programas en diferentes computadoras, con distinto lenguaje máquina (portabilidad). Hay
normalizaciones de lenguajes realizadas por organismos de estandarización
(principalmente ANSI e ISO), las cuales tratan de garantizar la portabilidad de los
programas.
Normalmente, una sentencia en un lenguaje de alto nivel da lugar; al ser traducida a
varias instrucciones en lenguaje máquina.
Utilizan notaciones cercanas a las habituales en el ámbito en que se usan. Con estos
lenguajes las operaciones se expresan con sentencias o frases muy parecidas al lenguaje
matemático o al lenguaje natural. Por los motivos antes aducidos, en los lenguajes de
programación se utilizan por lo general palabras o términos en inglés.
Como consecuencia de este alejamiento de la máquina y acercamiento a las personas, los
programas escritos en lenguajes de programación no pueden ser directamente interpretados
por la computadora, siendo necesario realizar previamente su traducción a lenguaje máquina.
Hay dos tipos de traductores de lenguajes de programación, que vamos a considerar en las
siguientes secciones: los compiladores y los intérpretes.
Capítulo 5:
Software de computadoras.
Página 5.
4.- TIPOS DE LENGUAJES DE PROGRAMACIÓN.
Los lenguajes de programación se pueden clasificar atendiendo a varios criterios. Un
criterio simple es el nivel. El nivel hace referencia a lo próxima que la forma de expresar las
sentencias esté al hombre (al lenguaje natural), o a la máquina (al lenguaje de ceros y unos de
los circuitos electrónicos). Si el lenguaje es parecido al lenguaje máquina, el lenguaje se
denomina de bajo nivel. Si el lenguaje se aproxima al lenguaje natural, el lenguaje se
denomina de alto nivel. Considerando el nivel, y ordenados de mayor a menor nivel, los
lenguajes de programación se pueden clasificar en:
Lenguajes declarativos. En los lenguajes declarativos o de órdenes, los programas
están formados por sentencias que ordenan “qué es lo que se quiere hacer”, no teniendo el
programador que indicar a la computadora el proceso detallado, algoritmo, de “cómo hacerlo”.
Aquí se incluyen ciertos lenguajes especializados, para propósitos muy específicos, tales como
recuperación de la información en bases de datos (NATURAL, SQL o IMS), etc.

Lenguajes de alto nivel. Son los más usados en la programación y poseen una
gramática rica, parecida a la del hombre, que facilita la expresión de los algoritmos. Están
orientados más a las personas que a las máquinas. Atendiendo al estilo de programación, se
pueden clasificar en dos grandes grupos:

a) Lenguajes basados en la asignación de valores (Lenguajes imperativos o
procedurales). Se fundamentan en el uso de variables para almacenar valores, y en la
realización de operaciones con los datos almacenados. La mayoría de los lenguajes son
de este tipo: FORTRAN, BASIC, COBOL, Pascal, Modula, ADA, C, etc.
b) Lenguajes basados en la definición de funciones o relaciones. No usan
instrucciones de asignación (sus variables no almacenan valores). Los programas están
formados por una serie de definiciones de funciones (lenguajes funcionales, como
LISP) o de predicados (lenguajes de programación lógica, como PROLOG).
Lenguajes ensambladores. Son lenguajes con una gramática pobre, orientada a la
máquina más que al hombre. Cada procesador tiene su propio lenguaje ensamblador.

Lenguajes máquinas. Son los lenguajes que entienden las unidades de control de las
computadoras, cada tipo procesador tiene su propio lenguaje máquina.

Desde el punto de vista del campo de aplicación, [Tucker 1987] hace la siguiente
distribución de los once principales lenguajes de programación de la actualidad:
Aplicaciones científicas. Predominan en ellas el tratamiento de (o cálculos con) números y
matrices. Los algoritmos son de tipo matemático (cálculo numérico, estadística, etc.).
Lenguajes adecuados para este tipo de problemas son el FORTRAN, APL y Pascal.
Aplicaciones en procesamiento de datos. Aquí predominan problemas de creación,
mantenimiento, consulta y listado de datos, organizados en registros, archivos y bases de
datos. Se incluyen en este apartado aplicaciones de gestión empresarial tales como programas
de nómina, contabilidad, facturación, inventario, control de producción y control de ventas.
Lenguajes aptos para este tipo de problemas son el COBOL y PL/I.
Aplicaciones de tratamiento de textos. Principalmente relacionados con la manipulación
de textos en lenguaje natural. Lenguajes adecuados para ello son el SNOBOL y el C.
Aplicaciones en inteligencia artificial, o realización de programas que emulan el
comportamiento inteligente: algoritmos de juegos (ajedrez, etc.), programas para comprender
el lenguaje natural, visión artificial, robótica y sistemas expertos (diagnóstico médico, etc. ).
Los lenguajes que se suelen utilizar en estos casos son el LISP y PROLOG.
Capítulo 5:
Software de computadoras.
Página 6.
Aplicaciones de programación de sistemas, o programación de módulos de sistemas
operativos, compiladores, ensambladores, intérpretes y, en general, aquellos de interfaz entre
el hardware y los usuarios. Tradicionalmente se utilizaban para estos cometidos lenguajes
ensambladores, pero en la actualidad se están mostrando muy adecuados tos lenguajes Ada, C,
y Modula-2.
5.-
TRADUCTORES: COMPILADORES E INTERPRETES.
Para facilitar el uso de las computadoras se han desarrollado lenguajes de programación
que permiten utilizar una simbología y una terminología próximas a las utilizadas
tradicionalmente en la descripción de problemas. Como la computadora puede interpretar y
ejecutar únicamente código máquina, existen programas traductores, que traducen programas
escritos en lenguajes de programación a lenguaje máquina.
Un traductor es un programa que recibe como entrada un texto en un lenguaje de
programación concreto y produce, como salida, un texto en lenguaje máquina equivalente. El
programa inicial se denomina programa fuente y el programa obtenido, programa objeto.
En la Figura 3 se representa un programa para obtener el valor medio de una serie de datos,
redactado en Pascal. Este programa fuente lo utiliza el traductor como conjunto de datos que
debe procesar, ya partir de él genera como resultado el programa objeto.
Figura 3.- Traducción de un programa escrito de un lenguaje fuente a un lenguaje objeto.
La traducción por un compilador, compilación, consta de dos etapas fundamentales, que a
veces no están claramente diferenciadas a lo largo del proceso: la etapa de análisis del
programa fuente y la etapa de síntesis del programa objeto (Figura 4). Cada una de estas
etapas conlleva la realización de varias fases.
El análisis del texto fuente implica la
realización de un análisis del léxico, de la
sintaxis y de la semántica. La síntesis del
programa objeto conduce a la generación de
código y su optimización.
La compilación es un proceso complejo y
que consume a veces un tiempo muy superior
a la propia ejecución del programa. En
cualquiera de las fases de análisis, el
compilador puede dar mensajes sobre los
errores que detecta en el programa fuente,
cancelando en ocasiones la compilación, para
que el usuario realice las correcciones
oportunas en el archivo fuente.
Figura 4.- Fases en la traducción de un programa
fuente a un programa objeto, por un compilador.
Capítulo 5:
Software de computadoras.
Página 7.
5.1.- Compiladores e interpretes.
Un compilador traduce un programa fuente, escrito en un lenguaje de alto nivel, a un
programa objeto, escrito en lenguaje ensamblador o máquina. El programa fuente suele estar
contenido en un archivo, y el programa objeto puede almacenarse como archivo en memoria
masiva para ser procesado posteriormente, sin necesidad de volver a realizar la traducción.
Una vez traducido el programa, su ejecución es independiente del compilador, así, por
ejemplo, cualquier interacción con el usuario solamente estará controlada por el sistema
operativo (Figura 5).
Figura 5.- Al compilar un texto fuente se crea un programa, cuya
ejecución es independientemente del compilador.
Un intérprete hace que un programa fuente escrito en un lenguaje vaya, sentencia a
sentencia, traduciéndose y ejecutándose directamente por la computadora. El intérprete capta
una sentencia fuente, la analiza e interpreta dando lugar a su ejecución inmediata, no
creándose, por tanto, un archivo o programa objeto (como hace el compilador) a almacenar en
memoria masiva para posteriores ejecuciones, Por tanto, la ejecución del programa está
supervisada por el intérprete (Figura 6).
Figura 6.- Esquema de la ejecución de un programa con un interprete.
En la práctica el usuario crea un archivo con el programa fuente. Esto suele realizarse con
un editor específico del propio intérprete del lenguaje. Según se van almacenando las
instrucciones simbólicas, se analizan y se producen los mensajes de error correspondientes;
así, el usuario puede proceder inmediatamente a su corrección. Una vez creado el archivo
fuente el usuario puede dar la orden de ejecución y el intérprete lo ejecuta línea a línea.
Siempre el análisis antecede inmediatamente a la ejecución.
Cada vez que utilicemos un programa tenemos que volver a analizarlo, ya que en la
traducción no se genera un archivo objeto que poder guardar en memoria masiva (y utilizarlo
en cada ejecución). Con un compilador, aunque la traducción sea más lenta, ésta sólo debe
realizarse una vez (ya depurado el programa) y cuando deseamos ejecutar un programa,
ejecutamos el archivo objeto, que se tradujo previamente.
Los intérpretes, a pesar de los inconvenientes anteriores, son preferibles a los compiladores
cuando el número de veces que se va a ejecutar el programa es muy bajo y no hay problemas
de velocidad; además, con ellos puede ser más fácil desarrollar programas.
Esto es así porque, normalmente, la ejecución de un programa bajo un intérprete puede
interrumpirse en cualquier momento para conocer los valores de las distintas variables y la
instrucción fuente que acaba de ejecutarse. cuando esto se hace, se tiene una gran ayuda para
la localización de errores en el programa. Con un programa compilador esto no se puede
realizar, salvo que el programa se ejecute bajo el control de un programa especial de ayuda
denominado depurador (“debugger”). Además, con un intérprete, cuando se localiza un error
Capítulo 5:
Software de computadoras.
Página 8.
sólo debe modificarse este error y volver a ejecutar a partir de la instrucción en cuestión. En
cambio, con un compilador, si se localiza un error durante la ejecución, el programador debe
corregir las instrucciones erróneas sobre el archivo fuente (no sobre el objeto), y volver a
compilarlo en su totalidad.
Obviamente, los intérpretes resultan más pedagógicos para aprender a programar, ya que el
alumno puede detectar y corregir más fácilmente sus errores.
Existen en la actualidad traductores (por ejemplo, Turbo Pascal) que en cierta medida
disponen de la ventajas tanto de los intérpretes, como de los compiladores. Estos traductores
se denominan compiladores interactivos o increméntales. Un compilador interactivo es un
sistema que permite la edición, compilación, ejecución y depuración de programas escritos en
un determinado lenguaje de alto nivel. Pueden presentar esencialmente las siguientes ventajas:

Es muy cómoda la creación y depuración del programa, puesto que la iteración edicióncompilación-ejecución no implica ejecutar distintos programas desde el sistema operativo.

Permite que el compilador, durante la edición, realice parte de las comprobaciones, y en
algunos casos la traducción a código intermedio, lo que permite detectar con antelación la
mayor parte de los tipos de error.

Al realizar una modificación puede no ser necesario volver a traducir todo el programa, si
no sólo la parte implicada en el cambio (por eso el nombre de “increméntales”).
Existen lenguajes cuyos traductores se idearon como intérpretes (BASIC, APL, LISP, y
PROLOG), y otros como compiladores (FORTRAN, COBOL, ALGOL, SNOBOL, PL/I, C,
MODULA, y ADA). No obstante, para un lenguaje dado, pueden existir tanto compiladores
como intérpretes (BASIC, FORTRAN, LISP, y SNOBOL).
6.- DEFINICION DE SISTEMA OPERATIVO.
Un sistema operativo es un programa (o conjunto de programas) de control que tiene por
objeto facilitar el uso de la computadora y conseguir que ésta se utilice eficientemente.
Básicamente, un sistema operativo cumple dos funciones:
Administrar recursos.- Es un programa de control, ya que se encarga de gestionar y
asignar los recursos hardware a los usuarios. Controla los programas de los usuarios y los
dispositivos de E/S. Pensemos en una computadora que es utilizada desde diversos terminales
por varios usuarios. Los recursos hardware son: la CPU, la memoria principal, discos y otros
periféricos. Obviamente, si varios usuarios están utilizando la misma computadora, debe
haber algo o alguien que asigne los recursos y evite los conflictos que puedan surgir cuando
dos programas requieran los mismos elementos (por ejemplo una unidad de cinta, o la
impresora). Esta es una de las funciones del sistema operativo.

El sistema operativo también hace que la
computadora se utilice eficientemente. Por
ejemplo, en los sistemas de multitarea, que se
verán más adelante, el sistema operativo hace
que, cuando un programa esté dedicado a una
operación de entrada o salida, la CPU pase a
atender a otro programa. El sistema operativo
hace que ello ocurra así. Con este ejemplo se
pone de manifiesto cómo un sistema operativo
de multitarea aumenta la eficiencia o
rendimiento de la computadora.
Figura 7.- Estructura se un sistema operativo.
Capítulo 5:
Software de computadoras.
Página 9.
Proporciona al usuario una máquina virtual.- El sistema operativo facilita la
utilización de la computadora, encargándose de ocultar al usuario la realidad del hardware
(facilitar al usuario una máquina virtual) y presentarle un mundo más amable, en el que se
encuentre más cómodo.

Veamos un ejemplo de cómo lo hace. Cada dispositivo de E/S, para ser utilizado, requiere
varias instrucciones máquina que establezcan un “diálogo” entre la computadora central y el
periférico, enviando o captando, respectivamente, el dato de salida o entrada. Estas
instrucciones dependen mucho de las características concretas del periférico. Por otra parte,
para un dispositivo dado, estas instrucciones u operaciones son comunes para todos los
programas que los usen, según su naturaleza (científica, de gestión o técnica). El sistema
operativo, con objeto de facilitar el trabajo de los programadores, contiene módulos de gestión
de entradas/salidas que evitan a los usuarios tener que incluir esas instrucciones cada vez que
hacen operaciones de E/S. Se puede decir que esos programas del sistema operativo hacen
“transparente” al usuario las características hardware concretas de los dispositivos.
6.1.- Conceptos básicos de sistemas operativos.
Respecto al modo de funcionamiento de los sistemas operativos, podemos analizar los
siguientes términos:
Tiempo compartido. Este término hace referencia a la posibilidad que puede ofrecer un
sistema operativo de atender a varios usuarios a la vez, de forma que cada uno de ellos tenga
la impresión de que es el único usuario. Esta posibilidad se basa en la gran velocidad a la que
operan los componentes del hardware de las computadoras, cuya escala de tiempo es mucho
más pequeña que la nuestra. Así, el sistema operativo reparte el tiempo de uso de la máquina
entre los distintos usuarios de forma que a cada uno se le atiende un periodo de tiempo.

Tiempo real. Este término hace referencia un tipo de procesamiento en que los
requisitos de tiempo son muy estrictos, es decir, el sistema debe atender a las diversas
peticiones que le llegan en un periodo de tiempo predeterminado. Como ya hemos indicado
anteriormente, este tipo de requerimientos se dan en determinado sistemas, como pueden ser
centrales nucleares o sistemas de navegación.

Multitarea. Este término hace referencia a la posibilidad de que una misma
computadora atienda varias tareas de forma simultánea, bien mediante la intercalación de
instrucciones, bien mediante la utilización de varios procesadores.

En segundo lugar, y relativos a la estructura de un sistema operativo podemos estudiar los
siguientes términos:

Kernel o núcleo. Parte más interna del sistema operativo encargado de la interacción
directa con el hardware y de proporcionar los servicios básicos de administración de recursos.
Driver. Parte del sistema operativo que se encarga de interactuar directamente con el
hardware de los distintos periféricos, tales como impresora, discos, etc.

Interprete de comandos. Parte del sistema operativo que se encara de la interacción
con el usuario, interpretando y ejecutando sus órdenes. Envía a los otros componentes del
sistema los mensajes correspondientes para que se lleven a cabo las instrucciones del usuario.

Capítulo 5:
Software de computadoras.
Página 10.
7.- EVOLUCIÓN DE LOS SISTEMAS OPERATIVOS.
Cuando aparecieron los primeros ordenadores, hacía 1943, la programación de estos era
hecha íntegramente en código máquina, lo cual resultaba una tarea extremadamente pesada:
cada vez que se escribía un nuevo programa, además de escribir el algoritmo adecuado era
preciso añadir todo el código necesario para que el ordenador pudiese leer datos desde una
cinta perforada, imprimir en un teletipo, etc. Dado que, en general, todas estas rutinas eran
exactamente iguales para todos los programas que se hacían, pronto los programadores de
aquellas máquinas aprendieron a organizarlas en bibliotecas de rutinas. Cada vez que había
que escribir un nuevo programa, sólo tenían que ir a su libreta y copiar las rutinas de E/S que
necesitaban, lo cual les simplificaba un poco el trabajo. Otro sistema era el que la propia
empresa que fabricaba el ordenador incluyese un paquete de fichas perforadas con dichas
rutinas, de modo que el programador sólo tenía que coger las que le interesasen y añadirlas
estratégicamente en su paquete.
El siguiente paso fue generalizar este conjunto de rutinas. La idea era incluir juntas todas
las rutinas necesarias para acceder al hardware, y hacerlas accesibles a cualquier programador
en forma de llamadas a subrutina. De este modo, cada vez que se hacía un programa no era
preciso incluir en él todas esas rutinas, había nacido el sistema operativo.
Los primeros sistemas operativos (si es que podían recibir ese nombre) no eran más que un
conjunto de subrutinas que ayudaban al programador, ofreciéndole servicios básicos como
lectura de caracteres desde un teletipo, escritura en tambor, disco, etc.
Sin embargo, pronto se vio la necesidad de un nuevo enfoque. Los ordenadores eran caros,
y su mantenimiento también, por lo que sólo algunas grandes empresas y universidades
podían disponer de ellos. Para amortizarlos, se alquilaba tiempo de proceso, de modo que se
podía ir allí con un programa, ejecutarlo, y pagar por el tiempo que le llevase hacerlo a la
computadora.
El primer problema que había era que se tardaba mucho en cargar cada programa. Cuando
la computadora terminaba de ejecutar uno, el operador tenía que insertar el siguiente, lo cual
era una tarea bastante pesada y larga. Durante el tiempo que se hacía esto, el ordenador estaba
totalmente inactivo, se estaba desperdiciando tiempo. Fue entonces cuando surgieron los
sistemas de proceso por lotes (batch), hacía 1963.
En los sistemas de proceso por lotes, los programas se almacenan en una cinta, todos
seguidos. Cada vez que la computadora terminaba de ejecutar un programa, leía el siguiente
de dicha cinta. Si llegaba alguien con un programa, éste se añadía a continuación del último
que hubiese, mientras la computadora ejecutaba el que ya tenía en memoria. El coste de
mantenimiento del nuevo sistema era ligeramente superior, pues había que añadir al sistema el
lector de cintas en donde se escribían los programas; pero al poder ejecutar muchos más
programas en el mismo tiempo (no se perdía parte de este en cargar los programas), el precio
de alquiler bajó drásticamente, permitiendo que más gente tuviese acceso a las computadoras.
Es en los sistemas de proceso por lotes donde empieza a aparecer realmente lo que hoy
conocemos como sistema operativo: un programa principal que es el que va cargando los
distintos programas desde la cinta, les cede el control de la CPU pero ofreciéndoles una serie
de servicios de E/S, y cuando terminan, recupera el control del ordenador.
Pronto los programadores se dieron cuenta de que había aún más tiempos muertos de los
que parecía: si una computadora tenía que leer algo de una cinta o tarjeta con datos, al ser el
sistema era mecánico tardaba mucho tiempo en encontrarlo (mucho tiempo en relación a la
computadora). También, se empezaban a utilizar terminales para dar entrada de datos en
tiempo real la computadora, y el tiempo que ésta esperaba a que el usuario pulsase cada tecla
también era grande. Entonces se empezó a pensar en los sistemas operativos multitarea.
Capítulo 5:
Software de computadoras.
Página 11.
La idea consistía en tener varios programas simultáneamente en memoria, si bien, como el
ordenador es único, sólo uno estaría activo en cada momento. Cuando dicho programa hace
una operación de E/S en la que se pierde tiempo de CPU (como leer una tarjeta, por ejemplo),
mientras la mecánica realiza la operación de búsqueda y lectura, la computadora conmuta al
siguiente programa que tiene en memoria, el cual continuará ejecutándose hasta que haga una
operación de E/S. Cuando se llega al último, se vuelve a empezar, y para ese momento, la
operación de E/S pedida por el primer programa ya estará lista, con lo que podrá seguir su
ejecución. De esta forma, hemos aprovechado un tiempo que antes perdíamos.
Finalmente, llegamos a los sistemas distribuidos. Generalmente, lo que tenemos es una red
de ordenadores (por ejemplo, en una universidad es normal tener una gran cantidad de PC's)
conectados entre sí. Si nos fijamos, normalmente sólo unos cuantos están en uso en cada
momento, y el resto simplemente se dedican, por ejemplo, a ejecutar un bonito salvapantallas.
En otras palabras, estamos desperdiciando una vez más tiempo de proceso. Para solucionarlo,
se han ideado los sistemas operativos distribuidos. Estos sistemas operativos son el
siguiente paso en la evolución de los sistemas operativos multitarea.
Los sistemas operativos distribuidos son mucho más complejos, ya que permiten que un
usuario ejecute, de forma transparente, uno o varios programas en varios procesadores
trabajando simultáneamente y, posiblemente, con datos distribuidos en diferentes servidores
de archivos, lo cual requiere que el sistema operativo disponga de sofisticados algoritmos de
planificación que paralelicen adecuadamente el trabajo a realizar.
8.- VIRUS INFORMÁTICOS.
Definiciones de virus hay tantas como preguntas sin respuesta exacta. Veamos, pues, si
cabe la posibilidad de concretar algunos requisitos que cumplen estos agentes víricos:

Son programas de computadora.

Su principal cualidad es la de poder autorreplicarse.

Intentan ocultar su presencia hasta el momento de la explosión.

Producen efectos dañinos en el “huésped”.
Si exceptuamos el primer punto, los restantes podrían aplicarse también a los virus
biológicos. El parecido entre biología y tecnología puede llegar a ser en ocasiones ciertamente
abrumador. Como el cuerpo humano, el computadora puede ser atacado por agentes
infecciosos capaces de alterar su correcto funcionamiento o incluso provocar daños
irreparables en ciertas ocasiones. Por ello comúnmente se usan términos biológicos para
referirse a virus informáticos. Esto es debido a que pienso que , realmente, los virus
informáticos son auténticas imitaciones de sus hermanos biológicos.
Un virus es un agente peligroso que hay que manejar con sumo cuidado. La “contención”
es la primera regla de oro. Desarrollemos un poco los puntos expuestos antes:
Un virus informático es un programa de computadora, tal y como podría ser un procesador
de textos, una hoja de cálculo o un juego. Obviamente ahí termina todo su parecido con estos
típicos programas que casi todo el mundo tiene instalados en sus computadoras. Un virus
informático ocupa una cantidad mínima de espacio en disco ( el tamaño es vital para poder
pasar desapercibido ), se ejecuta sin conocimiento del usuario y se dedica a autorreplicarse, es
decir, hace copias de sí mismo e infecta archivos, tablas de partición o sectores de arranque de
los discos duros y disquetes para poder expandirse lo más rápidamente posible. Ya se ha dicho
antes que los virus informáticos guardan cierto parecido con los biológicos y es que mientras
los segundos infectan células para poder replicarse los primeros usan archivos para la misma
función. En ciertos aspectos es una especie de “burla tecnológica” hacia la Naturaleza.
Mientras el virus se replica intenta pasar lo más desapercibido que puede, intenta evitar que el
“huésped” se dé cuenta de su presencia hasta que llega el momento de la “explosión”. Es el
Capítulo 5:
Software de computadoras.
Página 12.
momento culminante que marca el final de la infección y cuando llega suele venir
acompañado del formateo del disco duro, borrado de archivos o mensajes de protesta. No
obstante el daño se ha estado ejerciendo durante todo el proceso de infección, ya que el virus
ha estado ocupando memoria en el computadora, ha ralentizado los procesos y ha
“engordado” los archivos que ha infectado.
8.1.- ¿ Por que se hace un virus ?
La gran mayoría de los creadores de virus lo ven como un hobby, aunque también otros
usan los virus como un medio de propaganda o difusión de sus quejas o ideas radicales, como
por ejemplo el virus Telefónica, que emitía un mensaje de protesta contra las tarifas de esta
compañía a la vez que reclamaba un mejor servicio, o el famosísimo Silvia que sacaba por
pantalla la dirección de una chica que al parecer no tuvo una buena relación con el
programador del virus.
En otras ocasiones es el orgullo, o la competitividad entre los programadores de virus lo
que les lleva a desarrollar virus cada vez más destructivos y difíciles de controlar. Pero que
afortunadamente se están desarrollando mejores antivirus.
8.2.- Tipos de virus.
Cuando hicieron su aparición, una primera clasificación útil de los virus era según su
emplazamiento:







de boot y partición, infecta boot y partición de discos duros y disquetes.
de archivo, infectan archivos ejecutables y, la nueva generación, también infecta archivos
de datos.
companion, infectan archivos .EXE creando un .COM del mismo nombre.
multipartitos, infectan tanto archivos, como sectores boot, partición, dispositivos
drivers,...
En la actualidad, esta diferenciación ya no es significativa, y podemos distinguir entre:
Virus de macro. Los primeros virus capaces de extenderse a gran velocidad, ya que
infectan las plantillas de los archivos de datos y éstos se intercambian mucho más a
menudo que los ejecutables.
Virus en Internet. La difusión de Internet propicia entornos de trabajo abiertos para las
empresas haciendo sus datos más vulnerables a las amenazas de virus. Éstos pueden llegar
a través de archivos adjuntos o bien bajando archivos infectados de páginas Web (entre
ellos, OCX).
Virus en mensajes de correo. Se difunden también a gran velocidad al transmitir por
correo electrónico archivos infectados.
Un concepto debe quedar claro, todos esos rumores de que hay correos que con sólo
abrirlos nos pueden destruir toda la información de nuestro disco duro, todo eso es
mentira, porque precisamente el correo electrónico no se ejecuta por si mismo. Sí es
posible que recibamos un programa infectado con un virus pero sólo pasará a tener
efecto cuando se ejecute desde el shell del DOS o pinchándole al icono en el Windows,
etc., pero habremos de ejecutarlo ya desde nuestro ordenador.
Capítulo 5:
Software de computadoras.
Página 13.
8.3.- ¿Cómo protegerse de los virus informáticos?
Copias de seguridad. Realice copias de seguridad frecuentes. recuerde, el software se
puede comprar de nuevo, su información sólo usted puede protegerla, y su pérdida le
ocasionará graves daños.
Programa Antivirus. Mantenga su antivirus actualizado con toda la frecuencia que le sea
posible. Un antivirus sin actualizar no sirve como defensa ante los virus de nueva generación.
Virus a través de correo electrónico. Un mensaje de correo puede incorporar un virus en
una macro. Al abrir un mensaje que incluya macros, asegúrese de que las ha desactivado antes
de continuar. Tenga configurados sus programas para que le avisen antes de abrir un archivo
que contenga macros. Por ejemplo, Excel y Word tienen un revisor interno que chequea la
existencia de macros.
Un mensaje de correo puede incorporar un virus en un script de Visual Basic y en HTML.
Es muy parecido a las macros. Hay que desactivar la opción de ejecutar los scripts en el
navegador o en el procesador de textos.
Si recibe algún mensaje de alguien a quien no conoce y ese mensaje contiene un archivo
adjunto, no abra ese archivo hasta que esté seguro de que no contiene ningún virus.
8.4.- ¿Qué hacer ante una infección de virus informáticos?








Si a pesar de todo, sufre una infección de virus, siga las siguientes recomendaciones:
Lo primero de todo, evitar el pánico.
Informar a los responsables de seguridad informática.
Si se trata de una red, comprobar en primer lugar el servidor y después las estaciones de
trabajo.
Aislar el PC y evitar el intercambio de disquetes y CD's con otros PC's.
No enviar mensajes ni archivos a través de la red o de Internet.
Comprobar que existen copias de seguridad actualizadas y, si no es así, hacerlas
inmediatamente, aunque el PC ya esté infectado.
Comprobar que está instalada (o instalar) la versión más actualizada que exista del
software antivirus adecuado.
Y, lo más importante, en caso de duda, solicitar el asesoramiento de alguien que sepa.