Download Descarga

Document related concepts
Transcript
1.1.
Sistemas Operativos
1.1.1. Definición, características y función de un sistema operativo.
Un sistema operativo es un software de sistema, es decir, un conjunto de programas de
computadora para permitir una administración eficaz de sus recursos. Comienza a trabajar
cuando es cargado en memoria por un programa específico, que se ejecuta al iniciar el equipo,
o al iniciar una máquina virtual, y gestiona el hardware de la máquina desde los niveles más
básicos, brindando una interfaz con el usuario.
Cuando un programa desea acceder a un recurso material, no necesita enviar información
específica a los dispositivos periféricos; simplemente envía la información al sistema operativo,
el cual la transmite a los periféricos correspondientes a través de su driver (controlador). Si no
existe ningún driver, cada programa debe reconocer y tener presente la comunicación con cada
tipo de periférico.
Sistemas Operativos por su Estructura:
Requisitos de usuario: Sistema fácil de usar y de aprender, seguro, rápido y adecuado al uso al
que se le quiere destinar.
Requisitos del software: Donde se engloban aspectos como el mantenimiento, forma de
operación, restricciones de uso, eficiencia, tolerancia frente a los errores y flexibilidad.
Máquina Virtual.
Se trata de un tipo de sistemas operativos que presentan una interface a cada proceso,
mostrando una máquina que parece idéntica a la máquina real subyacente. Estos sistemas
operativos separan dos conceptos que suelen estar unidos en el resto de sistemas: la
multiprogramación y la máquina extendida. El objetivo de los sistemas operativos de máquina
virtual es el de integrar distintos sistemas operativos dando la sensación de ser varias
máquinas diferentes.
El núcleo de estos sistemas operativos se denomina monitor virtual y tiene como misión llevar a
cabo la multiprogramación, presentando a los niveles superiores tantas máquinas virtuales
como se soliciten.
Sistemas Operativos por Servicios:
Esta clasificación es la más comúnmente usada y conocida desde el punto de vista del usuario
final.
Monousuario
Los sistemas operativos monousuarios son aquéllos que soportan a un usuario a la vez, sin
importar el número de procesadores que tenga la computadora o el número de procesos o
tareas que el usuario pueda ejecutar en un mismo instante de tiempo. Las computadoras
personales típicamente se han clasificado en este renglón.
Multiusuario
Los sistemas operativos multiusuario son capaces de dar servicio a más de un usuario a la vez,
ya sea por medio de varias terminales conectadas a la computadora o por medio de sesiones
remotas en una red de comunicaciones. No importa el número de procesadores en la máquina
ni el número de procesos que cada usuario puede ejecutar simultáneamente.
Monotarea
Los sistemas monotarea son aquellos que sólo permiten una tarea a la vez por usuario. Puede
darse el caso de un sistema multiusuario y monotarea, en el cual se admiten varios usuarios al
mismo tiempo pero cada uno de ellos puede estar haciendo solo una tarea a la vez
.
3
Multitarea
Un sistema operativo multitarea es aquél que le permite al usuario estar realizando varias
labores al mismo tiempo. Por ejemplo, puede estar editando el código fuente de un programa
durante su depuración mientras compila otro programa, a la vez que está recibiendo correo
electrónico en un proceso en background. Es común encontrar en ellos interfaces gráficas
orientadas al uso de menús y el ratón, lo cual permite un rápido intercambio entre las tareas
para el usuario, mejorando su productividad.
Uniproceso
Un sistema operativo uniproceso es aquél que es capaz de manejar solamente un procesador
de la computadora, de manera que si la computadora tuviese más de uno le sería inútil. El
ejemplo más típico de este tipo de sistemas es el DOS y MacOS.
Multiproceso
Un sistema operativo multiproceso se refiere al número de procesadores del sistema, que es
más de uno y éste es capaz de usarlos todos para distribuir su carga de trabajo. Generalmente
estos sistemas trabajan de dos formas: simétrica o asimétricamente. Cuando se trabaja de
manera asimétrica, el sistema operativo selecciona a uno de los procesadores el cual jugará el
papel de procesador maestro y servirá como pivote para distribuir la carga a los demás
procesadores, que reciben el nombre de esclavos. Cuando se trabaja de manera simétrica, los
procesos o partes de ellos (threads) son enviados indistintamente a cuales quiera de los
procesadores disponibles, teniendo, teóricamente, una mejor distribución y equilibrio en la
carga de trabajo bajo este esquema.
Se dice que un thread es la parte activa en memoria y corriendo de un proceso, lo cual puede
consistir de un área de memoria, un conjunto de registros con valores específicos, la pila y
otros valores de contexto.
Sistemas Operativos por la Forma de Ofrecer sus Servicios:
Esta clasificación también se refiere a una visión externa, que en este caso se refiere a la del
usuario, el cómo acceda los servicios. Bajo esta clasificación se pueden detectar dos tipos
principales: sistemas operativos de red y sistemas operativos distribuidos.
Sistemas Operativos de Red
Los sistemas operativos de red se definen como aquellos que tiene la capacidad de interactuar
con sistemas operativos en otras computadoras por medio de un medio de transmisión con el
objeto de intercambiar información, transferir archivos, ejecutar comandos remotos y un sin fin
de otras actividades. El punto crucial de estos sistemas es que el usuario debe saber la sintaxis
de un conjunto de comandos o llamadas al sistema para ejecutar estas operaciones, además
de la ubicación de los recursos que desee accesar.
Sistemas Operativos Distribuidos
Los sistemas operativos distribuidos abarcan los servicios de los de red, logrando integrar
recursos (impresoras, unidades de respaldo, memoria, procesos, unidades centrales de
proceso) en una sola máquina virtual que el usuario accesa en forma transparente. Es decir,
ahora el usuario ya no necesita saber la ubicación de los recursos, sino que los conoce por
nombre y simplemente los usa como si todos ellos fuesen locales a su lugar de trabajo habitual.
El sistema operativo cumple varias funciones:
•
Administración del procesador: el sistema operativo administra la distribución del
procesador entre los distintos programas por medio de un algoritmo de programación.
4
•
•
•
•
•
•
El tipo de programador depende completamente del sistema operativo, según el
objetivo deseado.
Gestión de la memoria de acceso aleatorio: el sistema operativo se encarga de
gestionar el espacio de memoria asignado para cada aplicación y para cada usuario, si
resulta pertinente. Cuando la memoria física es insuficiente, el sistema operativo puede
crear una zona de memoria en el disco duro, denominada "memoria virtual". La
memoria virtual permite ejecutar aplicaciones que requieren una memoria superior a la
memoria RAM disponible en el sistema. Sin embargo, esta memoria es mucho más
lenta.
Gestión de entradas/salidas: el sistema operativo permite unificar y controlar el acceso
de los programas a los recursos materiales a través de los drivers (también conocidos
como administradores periféricos o de entrada/salida).
Gestión de ejecución de aplicaciones: el sistema operativo se encarga de que las
aplicaciones se ejecuten sin problemas asignándoles los recursos que éstas necesitan
para funcionar. Esto significa que si una aplicación no responde correctamente puede
"sucumbir".
Administración de autorizaciones: el sistema operativo se encarga de la seguridad en
relación con la ejecución de programas garantizando que los recursos sean utilizados
sólo por programas y usuarios que posean las autorizaciones correspondientes.
Gestión de archivos: el sistema operativo gestiona la lectura y escritura en el sistema
de archivos, y las autorizaciones de acceso a archivos de aplicaciones y usuarios.
Gestión de la información: el sistema operativo proporciona cierta cantidad de
indicadores que pueden utilizarse para diagnosticar el funcionamiento correcto del
equipo.
1.1.2. Análisis Comparativo de Sistemas Operativos
Análisis comparativo de Sistemas Operativos
Sistema
Programación
DOS
Windows3.1
16 bits
16/32 bits
Windows95/98/Me
WindowsNT/2000
WindowsXP
Unix / Linux
MAC/OS X
VMS
32 bits
32 bits
32/64 bits
32/64 bits
32 bits
32 bits
Usuario
único
X
X
Usuario
múltiple
Tarea
única
X
X
X
X
X
X
X
Multitarea
no
preventivo
cooperativo
preventivo
preventivo
preventivo
preventivo
preventivo
Tabla 1. Análisis de Sistemas Operativos
1.2.
Evolución de los lenguajes de programación
1.2.1. Definición, características y funciones de los lenguajes de programación
Los lenguajes de programación son herramientas que nos permiten crear programas y
software.
Una computadora funciona bajo control de un programa el cual debe estar almacenado en la
unidad de memoria; tales como el disco duro.
Los lenguajes de programación de una computadora en particular se conoce como código de
máquinas o lenguaje de máquinas.
Estos lenguajes codificados en una computadora específica no podrán ser ejecutados en otra
computadora
diferente.
Para que estos programas funcionen para diferentes computadoras hay que realizar una
5
versión para cada una de ellas, lo que implica el aumento del costo de desarrollo.
Por otra parte, los lenguajes de programación en código de máquina son verdaderamente
difíciles de entender para una persona, ya que están compuestos de códigos numéricos sin
sentido
nemotécnico.
Los lenguajes de programación facilitan la tarea de programación, ya que disponen de formas
adecuadas que permiten ser leídas y escritas por personas, a su vez resultan independientes
del
modelo
de
computador
a
utilizar.
Los lenguajes de programación representan en forma simbólica y en manera de un texto los
códigos
que
podrán
ser
leídos
por
una
persona.
Los lenguajes de programación son independientes de las computadoras a utilizar.
Existen estrategias que permiten ejecutar en una computadora un programa realizado en un
lenguaje de programación simbólico. Los procesadores del lenguaje son los programas que
permiten el tratamiento de la información en forma de texto, representada en los lenguajes de
programación
simbólicos.
La ventaja del proceso interprete es que no necesita de dos fases para ejecutar el programa,
sin embargo su inconveniente es que la velocidad de ejecución es más lenta ya que debe
analizar e interpretar las instrucciones contenidas en el programa fuente.
Los lenguajes de programación se pueden clasificar atendiendo a varios criterios:
•
•
•
Según el nivel de abstracción
Según la forma de ejecución
Según el paradigma de programación que poseen cada uno de ellos
Nivel de abstracción
Lenguajes Máquina
Están escritos en lenguajes directamente inteligibles por la maquina (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.
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.
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
6
conocidos, los comandos como "IF CONTADOR = 10 THEN STOP" pueden utilizarse para
más
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.
Según la forma de ejecución
Lenguajes compilados
Naturalmente, un programa que se escribe en un lenguaje de alto nivel también tiene que
traducirse 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 requiere una compilación antes de ejecutar las instrucciones de un
problema.
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.
1.3.
Interpretes, Compiladores
1.3.1. Definición de Intérpretes y Compiladores
Hay lenguajes de programación que utilizan compilador.
La ejecución de un programa con compilador requiere de dos etapas:
1) Traducir el programa simbólico a código máquina
2) Ejecución y procesamiento de los datos.
Otros lenguajes de programación utilizan un programa intérprete o traductor, el cual analiza
directamente la descripción simbólica del programa fuente y realiza las instrucciones dadas.
Los compiladores son aquellos cuya función es traducir un programa escrito en un determinado
lenguaje a un idioma que la computadora entienda (lenguaje máquina con código binario).
Al usar un lenguaje compilado (como lo son, por ejemplo, los lenguajes del popular Visual
Studio de Microsoft), el programa desarrollado nunca se podrá ejecutar mientras haya errores,
sino hasta que tras haber compilado el programa, ya no aparecen errores en el código.
El intérprete en los lenguajes de programación simula una máquina virtual, donde el lenguaje
de máquina es similar al lenguaje 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 interprete, 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
7
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 de 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.
Ambiente integral del Lenguaje C:
C es un lenguaje de programación de propósito general que ofrece control de flujo y
estructuras sencillas y un buen conjunto de operadores. No es un lenguaje de muy alto nivel y
más bien un lenguaje pequeño, sencillo y no está especializado en ningún tipo de aplicación.
Este lenguaje ha sido estrechamente ligado al sistema operativo UNIX, puesto que fueron
desarrollados conjuntamente. Sin embargo, este lenguaje no está ligado a ningún sistema
operativo ni a ninguna máquina concreta. Se le suele llamar lenguaje de programación de
sistemas debido a su utilidad para escribir compiladores y sistemas operativos, aunque de
igual forma se puede desarrollar cualquier tipo de aplicación.
8