1.1- Definición y Concepto.
Programa informático que se inicia al encender el ordenador
para coordinar su funcionamiento y permitir la comunicación eficaz de la
máquina con el usuario, El programa fundamental de todos los programas es el
sistema operativo (SO), que controla todos
los recursos de la computadora y proporciona los recursos por los cual
pueden escribirse los programas de aplicación.
Concepto: Un Sistema Operativo es un conjunto de programas
que controlan los programas de los usuarios (cargándolos, ejecutándolos, etc.)
y los dispositivos de entrada/salida (repartiéndolos entre varios usuarios), y
que tiene por objeto facilitar el uso de la computadora y conseguir que ésta se
utilice eficientemente.
1.2- Funciones y Características.
La función del sistema operativo es la de presentar al
usuario con el equivalente de una máquina ampliada o máquina virtual que sea
más fácil de programar que el hardware implícito, por ello se presentan algunas
funciones:
1.- Aceptar todos los trabajos y conservarlos hasta su
finalización.
2.- Interpretación de comandos: Interpreta los comandos que
permiten al usuario comunicarse con el ordenador.
3.- Control de recursos: Coordina y manipula el hardware de
la computadora, como la memoria, las impresoras, las unidades de disco, el
teclado o el Mouse.
4.- Manejo de dispositivos de E/S: Organiza los archivos en
diversos dispositivos de almacenamiento, como discos flexibles, discos duros,
discos compactos o cintas magnéticas.
5.- Manejo de errores: Gestiona los errores de hardware y
la pérdida de datos.
6.- Secuencia de tareas: El sistema operativo debe
administrar la manera en que se reparten los procesos. Definir el orden. (Quien
va primero y quien después).
7.- Protección: Evitar que las acciones de un usuario
afecten el trabajo que está realizando otro usuario.
8.- Multiacceso: Un usuario se puede conectar a otra
máquina sin tener que estar cerca de ella.
9.- Contabilidad de recursos: establece el costo que se le
cobra a un usuario por utilizar determinados recursos.
Características:
En general, se puede decir que un Sistema Operativo tiene
las siguientes características:
1. Conveniencia. Un Sistema Operativo hace más conveniente el
uso de una computadora.
2. Eficiencia. Un Sistema Operativo permite que los recursos
de la computadora se usen de la manera más eficiente posible.
3. Habilidad para
evolucionar. Un Sistema Operativo deberá construirse de manera que permita el
desarrollo, prueba o introducción efectiva de nuevas funciones del sistema sin
interferir con el servicio.
4. Encargado de administrar el hardware. El Sistema Operativo
se encarga de manejar de una mejor manera los recursos de la computadora en
cuanto a hardware se refiere, esto es, asignar a cada proceso una parte del
procesador para poder compartir los recursos.
5. Relacionar dispositivos (gestionar a través del kernel). El
Sistema Operativo se debe encargar de comunicar a los dispositivos periféricos,
cuando el usuario así lo requiera.
6. Organizar datos para acceso rápido y seguro.
7. Manejar las comunicaciones en red. El Sistema Operativo
permite al usuario manejar con alta facilidad todo lo referente a la
instalación y uso de las redes de computadoras.
8. Procesamiento por bytes de flujo a través del bus de datos.
1.3- Evolución Histórica.
Los Sistemas Operativos, al igual que el Hardware de los
computadores, han sufrido una serie de cambios revolucionarios llamados
generaciones. En el caso del Hardware, las generaciones han sido marcadas por
grandes avances en los componentes utilizados, pasando de válvulas (primera
generación) a transistores (segunda generación), a circuitos integrados
(tercera generación), a circuitos integrados de gran y muy gran escala (cuarta
generación).
Generación Cero (década
de 1940)
Los primeros sistemas computacionales no poseían sistemas
operativos. Los usuarios tenían completo acceso al lenguaje de la máquina.
Todas las instrucciones eran codificadas a mano.
Primera Generación
(década de 1950)
Los sistemas operativos de los años cincuenta fueron
diseñados para hacer más fluida la transición entre trabajos. Antes de que los
sistemas fueran diseñados, se perdía un tiempo considerable entre la
terminación de un trabajo y el inicio del siguiente. Este fue el comienzo de
los sistemas de procesamiento por lotes, donde los trabajos se reunían por
grupos o lotes. Cuando el trabajo estaba en ejecución, este tenía control total
de la máquina.
Segunda Generación (a
mitad de la década de 1960)
La característica de los sistemas operativos fue el
desarrollo de los sistemas compartidos con multiprogramación, y los principios
del multiprocesamiento. En los sistemas de multiprogramación, varios programas
de usuario se encuentran al mismo tiempo en el almacenamiento principal, y el
procesador se cambia rápidamente de un trabajo a otro. En los sistemas de
multiprocesamiento se utilizan varios procesadores en un solo sistema
computacional, con la finalidad de incrementar el poder de procesamiento de la
máquina. La independencia de dispositivos aparece después.
Tercera Generación
(mitad de década 1960 a mitad década de 1970)
Se inicia en 1964, con la introducción de la familia de
computadores Sistema/360 de IBM. Los computadores de esta generación fueron
diseñados como sistemas para usos generales. Casi siempre eran sistemas
grandes, voluminosos, con el propósito de serlo todo para toda la gente. Eran
sistemas de modos múltiples, algunos de ellos soportaban simultáneamente
procesos por lotes, tiempo compartido, procesamiento de tiempo real y
multiprocesamiento. Eran grandes y costosos, nunca antes se había construido
algo similar, y muchos de los esfuerzos de desarrollo terminaron muy por arriba
del presupuesto y mucho después de lo que el planificador marcaba como fecha de
terminación.
Cuarta Generación
(mitad de década de 1970 en adelante).
Los sistemas de la cuarta generación constituyen el estado
actual de la tecnología. Muchos diseñadores y usuarios se sienten aun
incómodos, después de sus experiencias con los sistemas operativos de la
tercera generación. Con la ampliación
del uso de redes de computadores y del procesamiento en línea los usuarios
obtienen acceso a computadores alejados geográficamente a través de varios
tipos de terminales. Los sistemas de
seguridad se han incrementado mucho ahora que la información pasa a través de
varios tipos vulnerables de líneas de comunicación. La clave de cifrado está
recibiendo mucha atención; han sido necesario codificar los datos personales o
de gran intimidad para que; aun si los datos son expuestos, no sean de utilidad
a nadie más que a los receptores adecuados. El porcentaje de la población que
tiene acceso a un computador en la década de los ochenta es mucho mayor que
nunca y aumenta rápidamente. El concepto de máquinas virtuales es utilizado. El
usuario ya no se encuentra interesado en los detalles físicos de; sistema de
computación que está siendo accedida. En su lugar, el usuario ve un panorama
llamado máquina virtual creada por el sistema operativo. Los sistemas de bases
de datos han adquirido gran importancia. Nuestro mundo es una sociedad
orientada hacia la información, y el trabajo de las bases de datos es hacer que
esta información sea conveniente accesible de una manera controlada para
aquellos que tienen derechos de acceso.
1.4- Clasificación.
Existen diversas clasificaciones de los sistemas
operativos, la más común es por lo servicios que ofrecen al usuario final:
Sistemas operativos
monousuarios.
Los sistemas operativos monousuarios son aquellos 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.
Sistemas operativos
multiusuarios.
Los sistemas operativos multiusuarios 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.
Sistemas operativos
monotareas.
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.
Sistemas operativos
multitareas.
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. 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.
Sistemas operativos
uniproceso.
Un sistema operativo uniproceso es aquél 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.
Sistemas operativos
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 son enviados
indistintamente a cualquiera de los procesadores disponibles, teniendo, teóricamente,
una mejor distribución y equilibrio en la carga de trabajo bajo este esquema.
1.5- Estructura: Niveles o Estratos de diseño.
Se considera la organización interna del sistema operativo
y para ello debemos observar dos tipos de requisitos:
Requisitos del usuario:
- Sistema fácil de
usar y aprender
- Seguro
- Rápido
- Adecuado al uso
al que se quiere destinar
Requisitos de software:
- Mantenimiento
- Forma de
operación
- Restricciones de
uso
- Eficiencia
- Tolerancia
frente a errores
- Flexibilidad
A medida que fueron creciendo las necesidades de los
usuarios y se perfeccionaron los sistemas, se hizo necesaria una mayor
organización del software del sistema operativo, donde una parte del sistema
contenía subpartes y esto organizado en forma de niveles. Es una estructura
jerárquica, con mayor organización del software del sistema operativo. El
sistema operativo se divide en partes o niveles, cada uno perfectamente
definido y con un claro interface (comunicación) con el resto de los elementos.
La 1ª estructura jerárquica o de niveles, la desarrolló
Djikstra, utilizándose para fines didácticos, denominada THE (Technische
Hogeschool, Eindhoven).
A continuación definiremos de manera breve cada uno de
estos niveles que conforman el sistema operativo (nota: en el gráfico la quinta
y última capa de “intérprete de comandos” está representada por un círculo
aparte de los niveles, pero está interrelacionado con los demás).
1. Núcleo (Kernell)
Es la parte primordial del sistema operativo. El núcleo o centro del sistema operativo
administra todo el sistema, sincroniza todos los procesos. A nivel de núcleo solo se trabaja con
procesos.
2. Gestión de entrada/salida
El sistema operativo administra los dispositivos externos a
través de sus controladores.
3. Gestión de memoria
El sistema operativo administra todos los aspectos
relativos a memoria real y memoria virtual.
4. Sistemas de archivos
El sistema operativo se ocupa de administrar los archivos
del usuario a través de una estructura de directorios con algún tipo de
organización.
5. Intérprete de comandos
Es un mecanismo de comunicación entre los usuarios y el sistema. Lee las instrucciones del usuario y hace que
se ejecuten las funciones del sistema solicitadas.
1.6- Núcleo.
El Núcleo (o kernel) es una colección de módulos de
software que se ejecutan en forma privilegiada –lo que significa que tienen
acceso pleno a los recursos del sistema. El núcleo normalmente representa sólo
una pequeña parte de lo que por lo general se piensa que es todo el sistema
operativo, pero es tal vez el código que más se utiliza. Por esta razón, el
núcleo reside por lo regular en la memoria principal, mientras que otras partes
del sistema operativo son cargadas en la memoria principal sólo cuando se
necesitan.
El núcleo de un sistema operativo normalmente el código
necesario para realizar las siguientes funciones:
• Manejo de interrupciones.
• Creación y destrucción de procesos.
• Cambio de estado de los procesos.
• Despacho.
• Suspensión y reanudación de procesos.
• Sincronización de procesos.
• Comunicación entre procesos.
• Manipulación de los bloques de control de procesos.
• Apoyo para las actividades de entrada/salida.
• Apoyo para asignación y liberación de memoria.
• Apoyo para el sistema de archivos.
• Apoyo para el mecanismo de llamada y retorno de un
procedimiento.
• Apoyo para ciertas funciones de contabilidad del sistema.
El Kernel consiste en la parte principal del código del
sistema operativo, el cual se encargan de controlar y administrar los servicios
y peticiones de recursos y de hardware con respecto a uno o varios procesos,
este se divide en 5 capas:
Nivel 1. Procesador.
(Núcleo)
Se encarga de activar los cuantum de tiempo para cada uno
de los procesos, creando interrupciones de hardware cuando no son respetadas.
Se introduce la noción de proceso como un programa en ejecución. Entre los
requisitos fundamentales de un sistema operativo que ofrezca soporte para
múltiples procesos se incluye la capacidad de suspender y reanudar los procesos.
Esto exige salvaguardar los registros del hardware, de modo
que la ejecución pueda cambiar de un proceso a otro. Además, si los procesos
necesitan cooperar, hace falta algún método de sincronización. Una de las
técnicas más simples, pero un concepto importante en el diseño de sistemas
operativos, es el semáforo.
• Objetos→ proceso y semáforo
• Operaciones típicas→ crear, destruir, suspender,
reanudar, señalizar y esperar
Nivel 2.
Entrada/Salida.
Proporciona las facilidades para poder utilizar los dispositivos
de E/S requeridos por procesos.
Tiene que ver con los dispositivos de almacenamiento
secundario. En este nivel se sitúan las funciones de ubicación de las cabezas
de lectura y escritura, y se producen las transferencias reales de bloques.
Este nivel se apoya en el nivel anterior para planificar las operaciones y
notificar al proceso que hizo la solicitud que la operación ha culminado.
Ø Objetos→ bloques de datos
Ø Operaciones típicas→ leer, escribir, asignar y liberar
Nivel 3.
Entrada/Salida.
Proporciona las facilidades para poder utilizar los
dispositivos de E/S requeridos por procesos.
Nivel 4. Sistema de
Archivos.
Proporciona la facilidad para el almacenamiento a largo
plazo y manipulación de archivos con nombre, va asignando espacio y acceso de
datos en memoria. Da soporte al almacenamiento a largo plazo de los archivos
con nombre.
En este nivel, los datos del almacenamiento secundario se
contemplan en términos de entidades abstractas de longitud variable, en
contraste con el enfoque orientado al hardware del nivel de E/S básicas, en
términos de pistas, sectores y bloques de tamaño fijo.
• Objetos→ archivos dispositivos
• Operaciones típicas→ crear, destruir, abrir, cerrar, leer
y escribir.
Nivel 5. Información o
Aplicación o Intérprete de Lenguajes.
Facilita la comunicación con los lenguajes y el sistema
operativo para aceptar las ordenes en cada una de las aplicaciones. Cuando se
solicitan ejecutando un programa el software de este nivel crea el ambiente de
trabajo e invoca a los procesos correspondientes.
Ofrece al usuario una interfaz con el sistema operativo. Se
denomina shell y separa al usuario de los detalles, le presenta el sistema
operativo como un simple conjunto de servicios. El shell acepta las órdenes del
usuario o las sentencias de control de trabajos, las interpreta, crea y
controla los procesos según sea necesario.
El intérprete de comandos representa la interfaz entre el
usuario y el sistema operativo. Algunos sistemas operativos incluyen el
intérprete en el kernel. Otros como el DOS o UNIX, poseen un programa especial
para cumplir esta función que se ejecuta cuando se inicia el sistema.
• Objetos→ datos del entorno.
• Operaciones típicas→ sentencias del lenguaje de órdenes.
