viernes, 14 de marzo de 2014


           DIFERENTES TIPOS DE SOFTWARE.
Software de Aplicación: aquí se incluyen todos aquellos programas que permiten al usuario realizar una o varias tareas específicas. Aquí se encuentran aquellos programas que los individuos usan de manera cotidiana como: procesadores de texto, hojas de cálculo, editores, telecomunicaciones, software de cálculo numérico y simbólico, videojuegos, entre otros.
Software de Programación: son aquellas herramientas que un programador utiliza para poder desarrollar programas informáticos. Para esto, el programador se vale de distintos lenguajes de programación. Como ejemplo se pueden tomar compiladores, programas de diseño asistido por computador, paquetes integrados, enlazadores, depuradores, intérpretes, entre otros. 

Software de Sistema: es aquel que permite a los usuarios interactuar con el sistema operativo así como también controlarlo. Este sistema está compuesto por una serie de programas que tienen como objetivo administrar los recursos del hardware y, al mismo tiempo, le otorgan al usuario una interfaz. El sistema operativo permite facilitar la utilización del ordenador a sus usuarios ya que es el que le da la posibilidad de asignar y administrar los recursos del sistema, como ejemplo de esta clase de software se puede mencionar a Windows, Linux y Mac OS X, entre otros. Además de los sistemas operativos, dentro del software de sistema se ubican las herramientas de diagnóstico, los servidores, las utilidades, los controladores de dispositivos y las herramientas de corrección y optimización, etcétera.




Introducción de los sistemas operativos.

El Sistema Operativo como Interfaz Usuario/Computadora.

El hardware y el software que se utilizan para proveer de aplicaciones a los usuarios de forma estratificada o jerárquica, generalmente no tiene que ocuparse de la arquitectura del computador. Las aplicaciones pueden construirse con un lenguaje de programación y son desarrolladas por programadores de aplicaciones. Algunos de estos programas se denominan  funciones muy utilizadas que ayudan a la creación de los programas, la gestión de los archivos y el control de los dispositivos. Los programadores hacen uso de estos servicios en el desarrollo de una aplicación, el sistema operativo oculta al programador los detalles del hardware y le proporciona una interfaz cómoda para utilizar el sistema.
Un sistema operativo ofrece servicios en las áreas siguientes:
Creación de programa, Ejecución de programas,  Acceso a los dispositivos de E/S, Acceso controlado a los archivos, Acceso al sistema, Detección y respuesta a errores, Contabilidad.

El sistema operativo como administrador de recursos.

Un computador es un conjunto de recursos para el traslado, almacenamiento y proceso de datos
y para el control de estas funciones. El sistema operativo es el responsable de la gestión de estos
recursos. Se puede afirmar que es el sistema operativo el que controla el traslado, almacenamiento y proceso de los datos. El sistema operativo tiene el control sobre las funciones básicas de la misma. Pero este control se ejerce de una manera curiosa, se piensa en un mecanismo de control como algo externo a lo controlado o al menos, como algo distinto y una parte separada de lo controlado este no es el caso de un sistema operativo.
Existen dos mecanismos de control que son:
El sistema operativo funciona de la misma manera que el software normal de un computador,
es decir, es un programa ejecutado por el procesador. 
El sistema operativo abandona con frecuencia el control y debe depender del procesador
para recuperarlo.
El sistema operativo es más que un programa del computador como otros
programas de computador, da instrucciones al procesador. La diferencia clave está en el
propósito del programa. El sistema operativo dirige al procesador en el empleo de otros recursos
del sistema y en el control del tiempo de ejecucion de otros programas.

Evolución de los sistemas operativos.

Los primeros computadores  de finales de los 40 hasta mediados de los 50, el programador
Interactuaba directamente con el hardware; no habia sistema operativo. La operación con estas
maquinas se efectuaba desde una consola consistente en unos indicadores luminosos, unos
conmutadores, algún tipo de dispositivo de entrada y una impresora.
El programador podía examinar los registros y la memoria principal para determinar
la causa del error.

Estos primeros sistemas presentaban dos problemas que son:
Planificación, Tiempo de preparación.

Las primeras máquinas eran muy caras, era importante maximizar la utilizacion de
las mismas. El tiempo desperdiciado por la planificacion y la preparacion era inaceptable.
Para mejorar el uso, se desarrolló el concepto de sistema operativo por lote el primer
sistema operativo por lotes fue desarrollado a mediados de los 50 por la General Motors para
usar en un IBM 701. A principios de los 60, un conjunto de constructores ya habian desarrollado sistemas operativos por lotes para sus computadores el proceso por lotes es el uso de un elemento de software conocido como monitor.
Se comprobara que el monitor o el sistema de proceso por lotes es simplemente un programa
de computador. Se basa en la capacidad del procesador para traer y ejecutar instrucciones desde
varias zonas de la memoria principal.

Algunas  características del hardware como las siguientes:

Proteccion de memoria: Mientras el programa de usuario este ejecutándose, no debe modificar
la zona de memoria en la que esta  el monitor.

Temporizador: Se utiliza para impedir que un solo trabajo monopolice el sistema el temporizador se lanza al comenzar cada trabajo.

Instrucciones Privilegiadas: Ciertas instrucciones son designadas como privilegiadas y pueden ser ejecutadas solo por el monitor.

Interrupciones: Los primeros modelos de computadores no tenían esta capacidad. Esta característica aporta al sistema operativo más flexibilidad para ceder y retomar el control de los
programas usuarios.

En un sistema operativo por lotes, el tiempo de maquina se reparte entre la ejecucion de
programas de usuario y la ejecucion del monitor.

Sistemas por lotes con multiprogramación.

Un sistema por lotes con multiprogramación tiene que depender de ciertas características del hardware del computador. La característica adicional más notable y útil para la multiprogramación es que el hardware respalde las interrupciones de E/S y el DMA.

Los sistemas operativos con multiprogramación son bastante más sofisticados en comparación
con los sistemas de mono programación o de un solo programa. Para tener varios trabajos listos
para ejecutar, estos deben mantenerse en la memoria principal, lo que requiere cierto tipo de
gestion de memoria. Además, si hay varios trabajos listos para ejecutarse el procesador debe
decidir cual de ellos va a ejecutar  lo que requiere un algoritmo de planificación.


Sistemas de tiempo compartido.

La técnica básica de un sistema de tiempo compartido es tener a varios usuarios utilizando simultáneamente el sistema mediante terminales, mientras que el sistema operativo intercala la ejecucion de cada programa de usuario en rafagas cortas de computo.
La técnica de escribir en el disco solo cuando era necesario minimizaba la actividad con el disco,
ejecutado sobre una 7094, el CTSS daba soporte a un maximo de 32 usuarios.
El tiempo compartido y la multiprogramación plantean una multitud de problemas nuevos
para el sistema operativo.

Logros principales.

Los sistemas operativos estan entre los elementos de software más complejos que se han desarrollado, esto refleja el reto de tratar de conjugar las dificultades y en algunos casos, objetivos
opuestos de comodidad, eficiencia y capacidad de evolución se han obtenido cuatro logros intelectuales significativos en el desarrollo de los sistemas operativos:
 Los procesos,  la gestion de memoria,  la seguridad y la proteccion de la información,  la planificacion y la gestion de recursos,  la estructura del sistema.

Procesos.

El concepto de proceso es fundamental en la estructura de los sistemas operativos. Este termino
fue acuñado por primera vez por los diseñadores de Multics en los años 60. Es un término algo
mas general que el de trabajo.
La operación por lotes con multiprogramación, el tiempo compartido y los sistemas de transacciones en tiempo real.
La  multiprogramación fue diseñada para mantener ocupados a la vez tanto procesador como los dispositivos de E/S, incluyendo los dispositivos de almacenamiento de modo que se alcance la mayor eficiencia posible. La clave de este mecanismo es que como respuesta a las senales que indiquen que ha terminado una transacción de E/S, el procesador cambia entre los diversos programas que residen en la memoria principal.
La herramienta principal disponible para los programadores de sistemas en el desarrollo de los
primeros sistemas interactivos multiusuario y de multiprogramación fue la interrupcion. La
actividad de cualquier trabajo podía suspenderse por el acontecimiento de un suceso
determinado, como la culminación de unas E/S.
El diseño del software del sistema para coordinar estas diversas actividades resulto extraordinariamente dificil.

Había cuatro causas principales de error son:
Sincronización incorrecta: Es frecuente el caso en el que una rutina debe ser suspendida a
la espera de un suceso en cualquier lugar del sistema.
Fallos de exclusión mutua: Es habitual el caso en que más de un usuario o programa intentan
a la vez hacer uso de un recurso compartido.
Funcionamiento no determinista del programa: Los resultados de un programa en particular
deben depender normalmente solo de la entrada del programa y no de las actividades de otros
programas en un sistema compartido. Pero cuando los programas comparten memoria.
Interbloqueos: Es posible que dos o mas programas estén suspendidos a la espera uno del
otro.

Lo que se necesita para enfrentarse a estos problemas es una forma sistemática de supervisar y controlar los distintos programas que pueden estar ejecutándose en el procesador. El concepto de proceso pone las bases.
Está formado por tres componentes que son:
Un programa ejecutable.
Los datos asociados necesarios para el programa (variables, espacio de trabajo, buffers, etc.)
El contexto de ejecución del programa.

Seguridad y protección de la información.

El crecimiento de la utilización de los sistemas de tiempo compartido y más recientemente  las
redes de computadores, ha traído consigo un aumento de las preocupaciones por la proteccion de
la información.
Una publicación de la Oficina Nacional de Estandares 4 identifica algunas de las amenazas a las
que es necesario atender en el campo de la seguridad [BRAN78]:

1. Intentos organizados y deliberados de obtener información económica y mercantil de las
Organizaciones competitivas del sector privado.
2. Intentos organizados y deliberados de obtener información económica de las oficinas del
gobierno.
3. Adquisición inadvertida de información económica o mercantil.
4. Adquisición inadvertida de información sobre las personas.
5. Fraude intencional a través del acceso ilegal a bancos de datos en computadores con énfasis
en orden decreciente de importancia en la adquisición de datos financieros, económicos,
de aplicación de leyes y personales
6. Intromisión del gobierno en los derechos individuales.
7. Atropello de los derechos individuales por la comunidad.

Planificación y gestión de recursos.

Una tarea clave del sistema operativo es administrar los recursos que tiene disponibles (espacio
de memoria, dispositivos, procesadores) y planificar su utilización por parte de los
diferentes procesos en activo. Cualquier política de asignación de recursos y de planificacion
debe tener en cuenta los tres factores que son:

Equidad: Normalmente, sería conveniente que a todos los procesos que compiten por el uso
de un determinado recurso les sea otorgado un acceso al recurso que sea aproximadamente
igualitario y equitativo.

Sensibilidades diferenciales: El sistema operativo debe intentar tomar decisiones de asignación y planificación que satisfagan la totalidad de los requisitos. El sistema operativo debe contemplar estas decisiones dinámicamente.

Eficiencia:  El sistema operativo debe intentar maximizar la productividad minimizar el tiempo de respuesta y en el caso de tiempo compartido alojar a tantos usuarios como sea posible.
La tarea de planificacion y gestion de recursos es básicamente un problema de investigación
operativa, así que se pueden aplicar los resultados matemáticos de esta disciplina. Además, la
medición de la actividad del sistema es importante para poder controlar el rendimiento y poder
hacer ajuste.

Estructura del sistema.

En la medida en que se añaden mas características a los sistemas operativos y en que el hardware
se hace más complejo y versatil, el tamaño y la complejidad de los sistemas operativos. El sistema CTSS puesto en funcionamiento en el MIT en 1963 constaba como máximo  de aproximadamente 32.000 palabras de 36 bits. El OS/360, presentado posteriormente por IBM, tenía más de un millón de instrucciones de máquina. Hacia 1973, el sistema Multics, desarrollado por el MIT y los
Laboratorios Bell, había crecido a mas de 20 millones de instrucciones.

Windows nt.

Es un sistema operativo desarrollado por Microsoft para los primeros computadores personales de IBM y conocido como MS-DOS o PC-DOS. La versión inicial, el DOS 1.0, fue lanzada en Agosto de 1981. Esta constaba de 4000 lineas de código fuente en lenguaje de ensamblador y ejecutaba en 8K de memoria utilizando el microprocesador Intel 8086.
Cuando IBM desarrollo su computador personal basada en disco duro, el PC XT, Microsoft
desarrollo el DOS 2.0, lanzado en 1983. Este tenía soporte para un disco duro y ofrecía
directorios jerárquicos. Hasta ese momento, un disco podía contener solo un directorio
de archivos y dar soporte a un máximo de 64 archivos.

Objetos de Windows NT.
Entre los conceptos clave empleados por NT están los siguientes:

Encapsulamiento: Un objeto consta de uno o más elementos de datos, llamados atributos y
uno o más procedimientos que pueden actuar sobre los datos, llamados servicios. La única
manera de acceder a los datos de un objeto es invocando a uno de los servicios del objeto.

Clases e instancias: Una clase de objeto es una plantilla que enumera los atributos y los
servicios de un objeto y define ciertas características del objeto. El sistema operativo
puede crear instancias específicas de una clase de objeto cada vez que lo necesite.

Sistema Unix, versión v.

La historia de UNIX es una historia muchas veces contada que no se va a repetir aquí con
mucho detalle.  UNIX fue desarrollado inicialmente en los Laboratorios Bell y llego a ser operativo en una PDP-7 en 1970. Algunas personas involucradas de los Laboratorios Bell también habían
Participado en el trabajo sobre tiempo compartido que se llevaba a cabo en el proyecto MAC
del MIT7. Aquel proyecto llevo primero al desarrollo del CTSS y luego al de Multics. Aunque
es habitual decir que UNIX es una versión a pequeña escala de Multics, los desarrolladores
de UNIX dicen estar más influenciados en realidad por CTSS [RITC78b]. Sin embargo,

UNIX incorporo muchas ideas de Multics.