1. ESCUELA DE AGRICULTURA
NORORIENTAL EANOR E INTECTOR.
MATERIA: INFORMATICA.
PRACTICA: 4
FECHA: 13/03/2015.
NOMBRE: GALDÁMEZ MEJÍA KEVIN EDUARDO
CATEDRATICO: DUBLEY OMAR SANDOVAL
SECCIÓN: B
AÑO: 2015
DIA: VIERNES
2. INTRODUCCIÓN
El software libre es el software que no esconde su código, lo deja libre, permite su libre
distribución. Esto permite que en los paises no tan desarrollados, no se tenga que reinventar
la rueda, ya que para crear software se ocupan algoritmos básicos, que pertenecen a toda la
humanidad, por lo cual no deben ser patentados.
La generalización de la Informática en las actividades genéricas y corrientes del ser
humano nos ha traído consigo una serie de limitaciones impuestas por los esquemas
tradicionales de actuación que han planteado (y aún actualmente plantean) grandes
problemas.
Por ejemplo, el esquema tradicional de patentes y otras restricciones se adecúan muy poco
a cosas tan mentales o etéreas como el soporte lógico informático (también llamado
software).
3. software
Se conoce como software1 al equipamiento lógico o soporte lógico de un sistema
informático, que comprende el conjunto de los componentes lógicos necesarios que hacen
posible la realización de tareas específicas, en contraposición a los componentes físicos que
son llamados hardware.
Los componentes lógicos incluyen, entre muchos otros, las aplicaciones informáticas; tales
como el procesador de texto, que permite al usuario realizar todas las tareas concernientes a
la edición de textos; el llamado software de sistema, tal como el sistema operativo, que
básicamente permite al resto de los programas funcionar adecuadamente, facilitando
también la interacción entre los componentes físicos y el resto de las aplicaciones, y
proporcionando una interfaz con el usuario.
El anglicismo "software" es el más ampliamente difundido al referirse a este concepto,
especialmente en la jerga técnica; en tanto que el término sinónimo «logicial», derivado del
término francés logiciel, es utilizado mayormente en países y zonas de influencia francesa.
Su abreviatura es Sw.
Definición de software[editar]
Existen varias definiciones similares aceptadas para software, pero probablemente la más
formal sea la siguiente:
Es el conjunto de los programas de cómputo, procedimientos, reglas, documentación y datos
asociados, que forman parte de las operaciones de un sistema de computación.
Extraído del estándar 729 del IEEE5
Considerando esta definición, el concepto de software va más allá de los programas de
computación en sus distintos estados: código fuente, binario o ejecutable; también su
documentación, los datos a procesar e incluso la información de usuario forman parte del
software: es decir, abarca todo lo intangible, todo lo «no físico» relacionado.
4. El término «software» fue usado por primera vez en este sentido por John W. Tukey en
1957. En la ingeniería de software y las ciencias de la computación, el software es toda la
información procesada por los sistemas informáticos: programas y datos.
El concepto de leer diferentes secuencias de instrucciones (programa) desde la memoria de
un dispositivo para controlar los cálculos fue introducido por Charles Babbage como parte
de su máquina diferencial. La teoría que forma la base de la mayor parte del software
moderno fue propuesta por Alan Turing en su ensayo de 1936, «Los números
computables», con una aplicación al problema de decisión.
§Clasificación del software[editar]
Si bien esta distinción es, en cierto modo, arbitraria, y a veces confusa, a los fines prácticos
se puede clasificar al software en tres grandes tipos:
Software de sistema: Su objetivo es desvincular adecuadamente al usuario y al
programador de los detalles del sistema informático en particular que se use,
aislándolo especialmente del procesamiento referido a las características internas
de: memoria, discos, puertos y dispositivos de comunicaciones, impresoras,
pantallas, teclados, etc. El software de sistema le procura al usuario y programador
adecuadas interfaces de alto nivel, controladores, herramientas y utilidades de apoyo
que permiten el mantenimiento del sistema global. Incluye entre otros:
o Sistemas operativos
o Controladores de dispositivos
o Herramientas de diagnóstico
o Herramientas de Corrección y Optimización
o Servidores
o Utilidades
Software de programación: Es el conjunto de herramientas que permiten al
programador desarrollar programas informáticos, usando diferentes alternativas y
lenguajes de programación, de una manera práctica. Incluyen básicamente:
o Editores de texto
o Compiladores
o Intérpretes
o Enlazadores
o Depuradores
o Entornos de Desarrollo Integrados (IDE): Agrupan las anteriores
herramientas, usualmente en un entorno visual, de forma tal que el
programador no necesite introducir múltiples comandos para compilar,
interpretar, depurar, etc. Habitualmente cuentan con una avanzada interfaz
gráfica de usuario (GUI).
Software de aplicación: Es aquel que permite a los usuarios llevar a cabo una o
varias tareas específicas, en cualquier campo de actividad susceptible de ser
automatizado o asistido, con especial énfasis en los negocios. Incluye entre muchos
otros:
o Aplicaciones para Control de sistemas y automatización industrial
5. o Aplicaciones ofimáticas
o Software educativo
o Software empresarial
o Bases de datos
o Telecomunicaciones (por ejemplo Internet y toda su estructura lógica)
o Videojuegos
o Software médico
o Software de cálculo numérico y simbólico.
o Software de diseño asistido (CAD)
o Software de control numérico (CAM)
§Proceso de creación del software[editar]
Artículo principal: Proceso para el desarrollo de software
Se define como proceso al conjunto ordenado de pasos a seguir para llegar a la solución de
un problema u obtención de un producto, en este caso particular, para lograr un producto
software que resuelva un problema específico.
El proceso de creación de software puede llegar a ser muy complejo, dependiendo de su
porte, características y criticidad del mismo. Por ejemplo la creación de un sistema
operativo es una tarea que requiere proyecto, gestión, numerosos recursos y todo un equipo
disciplinado de trabajo. En el otro extremo, si se trata de un sencillo programa (por
ejemplo, la resolución de una ecuación de segundo orden), éste puede ser realizado por un
solo programador (incluso aficionado) fácilmente. Es así que normalmente se dividen en
tres categorías según su tamaño (líneas de código) o costo: de «pequeño», «mediano» y
«gran porte». Existen varias metodologías para estimarlo, una de las más populares es el
sistema COCOMO que provee métodos y un software (programa) que calcula y provee una
aproximación de todos los costos de producción en un «proyecto software» (relación
horas/hombre, costo monetario, cantidad de líneas fuente de acuerdo a lenguaje usado,
etc.).
Considerando los de gran porte, es necesario realizar complejas tareas, tanto técnicas como
de gerencia, una fuerte gestión y análisis diversos (entre otras cosas), la complejidad de ello
ha llevado a que desarrolle una ingeniería específica para tratar su estudio y realización: es
conocida como Ingeniería de Software.
En tanto que en los de mediano porte, pequeños equipos de trabajo (incluso un avezado
analista-programador solitario) pueden realizar la tarea. Aunque, siempre en casos de
mediano y gran porte (y a veces también en algunos de pequeño porte, según su
complejidad), se deben seguir ciertas etapas que son necesarias para la construcción del
software. Tales etapas, si bien deben existir, son flexibles en su forma de aplicación, de
acuerdo a la metodología o proceso de desarrollo escogido y utilizado por el equipo de
desarrollo o por el analista-programador solitario (si fuere el caso).
6. Los «procesos de desarrollo de software» poseen reglas preestablecidas, y deben ser
aplicados en la creación del software de mediano y gran porte, ya que en caso contrario lo
más seguro es que el proyecto no logre concluir o termine sin cumplir los objetivos
previstos, y con variedad de fallos inaceptables (fracasan, en pocas palabras). Entre tales
«procesos» los hay ágiles o livianos (ejemplo XP), pesados y lentos (ejemplo RUP), y
variantes intermedias. Normalmente se aplican de acuerdo al tipo y porte del software a
desarrollar, a criterio del líder (si lo hay) del equipo de desarrollo. Algunos de esos
procesos son Programación Extrema (en inglés eXtreme Programming o XP), Proceso
Unificado de Rational (en inglés Rational Unified Process o RUP), Feature Driven
Development (FDD), etc.
Cualquiera sea el «proceso» utilizado y aplicado al desarrollo del software (RUP, FDD, XP,
etc), y casi independientemente de él, siempre se debe aplicar un «modelo de ciclo de
vida».6
Se estima que, del total de proyectos software grandes emprendidos, un 28% fracasan, un
46% caen en severas modificaciones que lo retrasan y un 26% son totalmente exitosos. 7
Cuando un proyecto fracasa, rara vez es debido a fallas técnicas, la principal causa de fallos
y fracasos es la falta de aplicación de una buena metodología o proceso de desarrollo. Entre
otras, una fuerte tendencia, desde hace pocas décadas, es mejorar las metodologías o
procesos de desarrollo, o crear nuevas y concientizar a los profesionales de la informática a
su utilización adecuada. Normalmente los especialistas en el estudio y desarrollo de estas
áreas (metodologías) y afines (tales como modelos y hasta la gestión misma de los
proyectos) son los ingenieros en software, es su orientación. Los especialistas en cualquier
otra área de desarrollo informático (analista, programador, Lic. en informática, ingeniero en
informática, ingeniero de sistemas, etc.) normalmente aplican sus conocimientos
especializados pero utilizando modelos, paradigmas y procesos ya elaborados.
Es común para el desarrollo de software de mediano porte que los equipos humanos
involucrados apliquen «metodologías propias», normalmente un híbrido de los procesos
anteriores y a veces con criterios propios.
El proceso de desarrollo puede involucrar numerosas y variadas tareas,6 desde lo
administrativo, pasando por lo técnico y hasta la gestión y el gerenciamiento. Pero, casi
rigurosamente, siempre se cumplen ciertas etapas mínimas; las que se pueden resumir
como sigue:
Captura, elicitación8 , especificación y análisis de requisitos (ERS)
Diseño
Codificación
Pruebas (unitarias y de integración)
Instalación y paso a producción
Mantenimiento
En las anteriores etapas pueden variar ligeramente sus nombres, o ser más globales, o
contrariamente, ser más refinadas; por ejemplo indicar como una única fase (a los fines
7. documentales e interpretativos) de «análisis y diseño»; o indicar como «implementación»
lo que está dicho como «codificación»; pero en rigor, todas existen e incluyen,
básicamente, las mismas tareas específicas.
En el apartado 4 del presente artículo se brindan mayores detalles de cada una de las etapas
indicadas.
Instalación y paso a producción[editar]
La instalación del software es el proceso por el cual los programas desarrollados son
transferidos apropiadamente al computador destino, inicializados, y, eventualmente,
configurados; todo ello con el propósito de ser ya utilizados por el usuario final. Constituye
la etapa final en el desarrollo propiamente dicho del software. Luego de ésta el producto
entrará en la fase de funcionamiento y producción, para el que fuera diseñado.
La instalación, dependiendo del sistema desarrollado, puede consistir en una simple copia
al disco rígido destino (casos raros actualmente); o bien, más comúnmente, con una de
complejidad intermedia en la que los distintos archivos componentes del software
(ejecutables, bibliotecas, datos propios, etc.) son descomprimidos y copiados a lugares
específicos preestablecidos del disco; incluso se crean vínculos con otros productos,
además del propio sistema operativo. Este último caso, comúnmente es un proceso bastante
automático que es creado y guiado con heramientas software específicas (empaquetado y
distribución, instaladores).
En productos de mayor complejidad, la segunda alternativa es la utilizada, pero es realizada
o guiada por especialistas; puede incluso requerirse la instalación en varios y distintos
computadores (instalación distribuida).
También, en software de mediana y alta complejidad normalmente es requerido un proceso
de configuración y chequeo, por el cual se asignan adecuados parámetros de
funcionamiento y se testea la operatividad funcional del producto.
En productos de venta masiva las instalaciones completas, si son relativamente simples,
suelen ser realizadas por los propios usuarios finales (tales como sistemas operativos,
paquetes de oficina, utilitarios, etc.) con herramientas propias de instalación guiada; incluso
la configuración suele ser automática. En productos de diseño específico o «a medida» la
instalación queda restringida, normalmente, a personas especialistas involucradas en el
desarrollo del software en cuestión.
Una vez realizada exitosamente la instalación del software, el mismo pasa a la fase de
producción (operatividad), durante la cual cumple las funciones para las que fue
desarrollado, es decir, es finalmente utilizado por el (o los) usuario final, produciendo los
resultados esperados.
8. §Mantenimiento[editar]
El mantenimiento de software es el proceso de control, mejora y optimización del software
ya desarrollado e instalado, que también incluye depuración de errores y defectos que
puedan haberse filtrado de la fase de pruebas de control y beta test. Esta fase es la última
(antes de iterar, según el modelo empleado) que se aplica al ciclo de vida del desarrollo de
software. La fase de mantenimiento es la que viene después de que el software está
operativo y en producción.
De un buen diseño y documentación del desarrollo dependerá cómo será la fase de
mantenimiento, tanto en costo temporal como monetario. Modificaciones realizadas a un
software que fue elaborado con una documentación indebida o pobre y mal diseño puede
llegar a ser tanto o más costosa que desarrollar el software desde el inicio. Por ello, es de
fundamental importancia respetar debidamente todas las tareas de las fases del desarrollo y
mantener adecuada y completa la documentación.
El período de la fase de mantenimiento es normalmente el mayor en todo el ciclo de vida.7
Esta fase involucra también actualizaciones y evoluciones del software; no necesariamente
implica que el sistema tuvo errores. Uno o más cambios en el software, por ejemplo de
adaptación o evolutivos, puede llevar incluso a rever y adaptar desde parte de las primeras
fases del desarrollo inicial, alterando todas las demás; dependiendo de cuán profundos sean
los cambios. El modelo cascada común es particularmente costoso en mantenimiento, ya
que su rigidez implica que cualquier cambio provoca regreso a fase inicial y fuertes
alteraciones en las demás fases del ciclo de vida.
Durante el período de mantenimiento, es común que surjan nuevas revisiones y versiones
del producto; que lo liberan más depurado, con mayor y mejor funcionalidad, mejor
rendimiento, etc. Varias son las facetas que pueden ser alteradas para provocar cambios
deseables, evolutivos, adaptaciones o ampliaciones y mejoras.
Básicamente se tienen los siguientes tipos de cambios:
Perfectivos:Aquellosque llevanaunamejorade la calidadinternadel software en
cualquieraspecto:Reestructuracióndel código,definiciónmásclaradel sistemaysu
documentación;optimizacióndel rendimientoyeficiencia.
Evolutivos:Agregados,modificaciones,inclusoeliminaciones,necesariasenel software
para cubrir su expansiónocambio,segúnlasnecesidadesdel usuario.
Adaptivos:Modificacionesque afectanalosentornosenlosque el sistemaopera,tales
como: Cambiosde configuracióndel hardware (poractualizaciónomejorade
componenteselectrónicos),cambiosenel software de base,engestoresde base de datos,
encomunicaciones,etc.
Correctivos:Alteracionesnecesariasparacorregirerroresde cualquiertipoenel producto
software desarrollado.
9. Sistema Operativo
Un sistema operativo (SO o, frecuentemente, OS —del inglés Operating System—) es un
programa o conjunto de programas de un sistema informático que gestiona los recursos de
hardware y provee servicios a los programas de aplicación, ejecutándose en modo
privilegiado respecto de los restantes (aunque puede que parte del mismo se ejecute en
espacio de usuario).2
Nótese que es un error común muy extendido denominar al conjunto completo de
herramientas sistema operativo,3 es decir, la inclusión en el mismo término de programas
como el explorador de ficheros, el navegador web y todo tipo de herramientas que permiten
la interacción con el sistema operativo. Otro ejemplo para comprender esta diferencia se
encuentra en la plataforma Amiga, donde el entorno gráfico de usuario se distribuía por
separado, de modo que, también podía reemplazarse por otro, como era el caso de directory
Opus o incluso manejarlo arrancando con una línea de comandos y el sistema gráfico. De
este modo, comenzaba a funcionar con el propio sistema operativo que llevaba incluido en
una ROM, por lo que era cuestión del usuario decidir si necesitaba un entorno gráfico para
manejar el sistema operativo o simplemente otra aplicación. Uno de los más prominentes
ejemplos de esta diferencia, es el núcleo Linux, usado en las llamadas distribuciones Linux,
ya que al estar también basadas en Unix, proporcionan un sistema de funcionamiento
similar. Este error de precisión, se debe a la modernización de la informática llevada a cabo
a finales de los 80, cuando la filosofía de estructura básica de funcionamiento de los
grandes computadores4 se rediseñó a fin de llevarla a los hogares y facilitar su uso,
cambiando el concepto de computador multiusuario, (muchos usuarios al mismo tiempo)
por un sistema monousuario (únicamente un usuario al mismo tiempo) más sencillo de
gestionar.5 (Véase AmigaOS, beOS o Mac OS como los pioneros6 de dicha modernización,
cuando los Amiga fueron bautizados con el sobrenombre de Video Toasters7 por su
capacidad para la Edición de vídeo en entorno multitarea round robin, con gestión de miles
de colores e interfaces intuitivos para diseño en 3D.
En ciertos textos, el sistema operativo es llamado indistintamente como núcleo o kernel,
pero debe tenerse en cuenta que esta identidad entre kernel y sistema operativo es solo
cierta si el núcleo es monolítico, un diseño común entre los primeros sistemas. En caso
contrario, es incorrecto referirse al sistema operativo como núcleo.
Uno de los propósitos del sistema operativo que gestiona el núcleo intermediario consiste
en gestionar los recursos de localización y protección de acceso del hardware, hecho que
alivia a los programadores de aplicaciones de tener que tratar con estos detalles. La mayoría
de aparatos electrónicos que utilizan microprocesadores para funcionar, llevan incorporado
un sistema operativo (teléfonos móviles, reproductores de DVD, computadoras, radios,
enrutadores, etc.). En cuyo caso, son manejados mediante una interfaz gráfica de usuario,
un gestor de ventanas o un entorno de escritorio, si es un celular, mediante una consola o
control remoto si es un DVD y, mediante una línea de comandos o navegador web si es un
enrutador.
10. Perspectiva histórica[editar]
Los primeros sistemas (1945-1955) eran grandes máquinas operadas desde la consola
maestra por los programadores. Durante la década siguiente (1955-1965) 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.
A finales de los años 1980, una computadora Commodore Amiga equipada con una
aceleradora Video Toaster era capaz de producir efectos comparados a sistemas dedicados
que costaban el triple. Un Video Toaster junto a Lightwave ayudó a producir muchos
programas de televisión y películas, entre las que se incluyen Babylon 5, SeaQuest DSV y
Terminator 2.8
§Problemas de explotación y soluciones iniciales[editar]
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 lo manejase, 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[editar]
Fichasenlenguaje de procesamientoporlotes,conprogramaydatos,para ejecuciónsecuencial.
11. 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[editar]
Los avances en el hardware crearon el soporte de interrupciones y posteriormente se llevó a
cabo un intento de solución más avanzado: solapar la E/S de un trabajo con sus propios
cálculos, por lo que se creó el sistema de búfers con el siguiente funcionamiento:
Un programa escribe susalidaenun áreade memoria(búfer1).
El monitorresidenteinicialasalidadesde el bufferyel programade aplicacióncalcula
depositandolasalidaenel buffer2.
La salidadesde el buffer1terminayel nuevocálculotambién.
Se inicialasalidadesde el buffer2y otro nuevocálculodirige susalidaal buffer1.
El procesose puede repetirde 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[editar]
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[editar]
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 solapael cálculode unostrabajoscon la entrada/salidade otrostrabajos.
Se puedenmantenerenmemoriavariosprogramas.
Se asignael uso de la CPU a los diferentesprogramasenmemoria.
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:
12. Administrarlamemoria.
Gestionarel usode la CPU (planificación).
Administrarel usode losdispositivosde E/S.
Cuando desempeña esas tareas, el monitor residente se transforma en un sistema operativo
multiprogramado.
§Llamadas al sistema operativo[editar]
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 la 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 llamadascorrespondientesdebentenerel mismoformato.
Cada llamadaal nuevoSOtiene que darlos mismosresultadosque lacorrespondientedel
anterior.
§Modos de ejecución en un CPU[editar]
Las aplicaciones no deben poder usar todas las instrucciones de la CPU. No obstante el
Sistema Operativo, tiene que poder utilizar todo el conjunto de instrucciones del CPU. Por
ello, una CPU debe tener (al menos) dos modos de operación diferentes:
Modo usuario:el CPU podráejecutarsólolasinstruccionesdel juegorestringidode las
aplicaciones.
Modo supervisor:laCPUdebe poderejecutarel juegocompletode instrucciones.
§Llamadas al sistema[editar]
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 S.O.
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.
13. §Bibliotecas de interfaz de llamadas al sistema[editar]
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.
Programación
Perspectiva histórica[editar]
Los primeros sistemas (1945-1955) eran grandes máquinas operadas desde la consola
maestra por los programadores. Durante la década siguiente (1955-1965) 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.
A finales de los años 1980, una computadora Commodore Amiga equipada con una
aceleradora Video Toaster era capaz de producir efectos comparados a sistemas dedicados
que costaban el triple. Un Video Toaster junto a Lightwave ayudó a producir muchos
programas de televisión y películas, entre las que se incluyen Babylon 5, SeaQuest DSV y
Terminator 2.8
§Problemas de explotación y soluciones iniciales[editar]
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 lo manejase, 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[editar]
14. Fichasenlenguaje de procesamientoporlotes,conprogramaydatos,para ejecuciónsecuencial.
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[editar]
Los avances en el hardware crearon el soporte de interrupciones y posteriormente se llevó a
cabo un intento de solución más avanzado: solapar la E/S de un trabajo con sus propios
cálculos, por lo que se creó el sistema de búfers con el siguiente funcionamiento:
Un programa escribe susalidaenun áreade memoria(búfer1).
El monitorresidenteinicialasalidadesde el bufferyel programade aplicacióncalcula
depositandolasalidaenel buffer2.
La salidadesde el buffer1terminayel nuevocálculotambién.
Se inicialasalidadesde el buffer2y otro nuevocálculodirige susalidaal buffer1.
El procesose puede repetirde 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[editar]
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[editar]
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 solapael cálculode unostrabajoscon la entrada/salidade otrostrabajos.
Se puedenmantenerenmemoriavarios programas.
Se asignael uso de la CPU a los diferentesprogramasenmemoria.
15. 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:
Administrarlamemoria.
Gestionarel usode la CPU (planificación).
Administrarel usode losdispositivosde E/S.
Cuando desempeña esas tareas, el monitor residente se transforma en un sistema operativo
multiprogramado.
§Llamadas al sistema operativo[editar]
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 la 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 llamadascorrespondientesdebentenerel mismoformato.
Cada llamadaal nuevoSOtiene que darlos mismosresultadosque lacorrespondientedel
anterior.
§Modos de ejecución en un CPU[editar]
Las aplicaciones no deben poder usar todas las instrucciones de la CPU. No obstante el
Sistema Operativo, tiene que poder utilizar todo el conjunto de instrucciones del CPU. Por
ello, una CPU debe tener (al menos) dos modos de operación diferentes:
Modo usuario:el CPU podráejecutarsólolasinstruccionesdel juegorestringidode las
aplicaciones.
Modo supervisor:laCPUdebe poderejecutarel juegocompletode instrucciones.
§Llamadas al sistema[editar]
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 S.O.
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).
16. 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[editar]
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.
17. CONCLUSIÓN
De acuerdo al trabajo de investigación, podemosconcluir que el
software es importante para el manejo y control de un ordenador,ya
que a su vez tiene una estrecha relación con el Hardware, pues sin
ellas no existiría el sistemaoperativo. Otros de los aspectos más
importantes que se dieron a conocer,es que un software esta
clasificado en dos partes muy primordiales,que es de acuerdo a su
uso y en el tipo de licencia, las cuales ya se explicaron en el proceso
de este tema. Aunque existen otros tipos de clasificaciones,pero todos
llegan a la misma solución.Cada usuario tiene la libertad de elegir que
tipo de software utilizar de acuerdo a su función y aplicación en la
situación que las necesite.