SlideShare una empresa de Scribd logo
1 de 233
Sistemas Operativos
Unidad Temas Subtemas
1 Introducción a los
sistemas operativos.
1.1 Definición y concepto.
1.2Funciones y características.
1.3Evolución histórica.
1.4Clasificación.
1.5Estructura (niveles o estratos de diseño).
1.6Núcleo.
1.6.1 Interrupciones (FLIH).
1.6.2 Despachador(Scheduler).
1.6.3 Primitivas de comunicación(IPC).
2 Administración de
procesos y del
procesador.
2.1 Concepto de proceso.
2.2 Estados y transiciones de los procesos
2.3 Procesos ligeros (Hilos o hebras).
2.4 Concurrencia y secuenciabilidad.
2.4.1 Exclusión mutua de secciones
criticas.
2.4.2 Sincronización de procesos en S.C.
2.4.2.1 Mecanismo de semáforos.
2.4.2.2 Mecanismo de monitores.
2.4.3 Interbloqueo (DeadLock).
2.4.3.1 Prevención.
2.4.3.2 Detección.
2.4.3.3 Recuperación.
2.5 Niveles, objetivos y criterios de
planificación.
2.6 Técnicas de administración del
planificador.
2.6.1 FIFO
2.6.2 SJF
2.6.3 RR
2.6.4 Queves multi-level.
2.6.5 Multi-level feedback queves.
3 Administración de
memoria.
3.1 Política y filosofía.
3.2 Memoria real.
3.2.1 Administración de almacenamiento.
3.2.2 Jerarquía.
3.2.3 Estrategia de administración de
memoria.
3.2.4 Asignación contigua v.s. no
contigua.
3.2.5 Multiprogramación de partición fija,
partición variable, con intercambio
de almacenamiento.
3.3 Organización de memoria virtual.
3.3.1 Evaluación de las organizaciones de
almacenamiento.
3.3.2 Paginación.
3.3.3 Segmentación.
3.3.4 Sistemas de paginación
segmentación.
3.4 Administración de memoria virtual.
3.4.1 Estrategias de administración.
3.4.2 Técnicas de reemplazo de páginas.
3.4.3 Paginación por demanda.
3.4.4 Paginación anticipada.
3.4.5 Liberación de página.
3.4.6 Tamaño de página.
4 Administración de
entrada/salida.
4.1 Dispositivos y manejadores de
dispositivos (device drivers).
4.2 Mecanismos y funciones de los manejadores
de dispositivos (device drivers).
4.3 Estructuras de datos para manejo de
dispositivos.
4.4 Operaciones de Entrada /salida.
5 Sistema de archivos. 5.1 Concepto.
5.2 Noción de archivo real y virtual.
5.3 Componentes de un sistema de archivos.
5.4 Organización lógica y física.
5.5 Mecanismos de acceso a los archivos.
5.6 Manejo de espacio en memoria secundaria.
5.7 Modelo jerárquico.
5.8 Mecanismos de recuperación en caso de
falla.
6 Protección y
seguridad.
6.1 Concepto y objetivos de protección.
6.2 Funciones del sistema de protección.
6.3 Implantación de matrices de acceso.
6.4 Protección basada en el lenguaje.
6.5 Concepto de seguridad.
6.6 Clasificaciones de la seguridad.
6.7 Validación y amenazas al sistema.
6.8 Cifrado.
Unidad 1 Introducción a los sistemas
operativos.
1.7 Definición y concepto.
Un sistema operativo es el programa que oculta la verdad del hardware al programador y presenta una
vista simple y agradable de los archivos nominados que pueden leerse y escribirse. Es sistema operativo
resguarda al programador del hardware del disco y presenta una interfaz simple orientada al archivo,
también disimula mucho del trabajo concerniente a interrupciones, relojes o cronómetros, manejo de
memoria y otras características de bajo nivel.
Desde su creación, las computadoras digitales han utilizado un sistema de codificación de instrucciones
en sistema de numeración binaria, es decir con los 0S. Esto se debe a que los circuitos integrados
funcionan con este principio, es decir, hay corriente o no hay corriente.
En el origen de la historia de las computadoras ( hace unos cuarenta años), los sistemas
operativos no existían y la introducción de un programa para ser ejecutado se convertía en un increíble
esfuerzo que solo podía ser llevado a cabo por muy pocos expertos. Esto hacia que las computadoras
fueran muy complicadas de usar y que se requiriera tener altos conocimientos técnicos para operarlas.
Era tan complejo su manejo, que en algunos casos el resultado llegaba a ser desastroso.
Además, el tiempo requerido para introducir un programa en aquellas grandes máquinas de lento
proceso superaba por mucho el de ejecución y resultaba poco provechosa la utilización de computadoras
para resolución de problemas prácticos.
Se buscaron medios más elaborados para manipular la computadora, pero que a su vez
simplificaran la labor del operador o el usuario. Es entonces cuando surge la idea de crear un medio para
que el usuario pueda operar la computadora con un entorno, lenguaje y operación bien definido para
hacer un verdadero uso y explotación de esta. Surgen los sistemas operativos.
Un sistema operativo es el encargado de brindar al usuario una forma amigable y sencilla de
operar, interpretar, codificar y emitir las ordenes al procesador central para que este realice las tareas
necesarias y especificas para completar una orden.
El sistema operativo, es el instrumento indispensable para hacer de la computadora un objeto útil.
Bajo este nombre se agrupan todos aquellos programas que permiten a los usuarios la utilización de este
enredo de cables y circuitos, que de otra manera serian difíciles de controlar. Un sistema operativo se
define como un conjunto de procedimientos manuales y automáticos, que permiten a un grupo de
usuarios compartir una instalación de computadora eficazmente.
Existen diversas definiciones de lo que es un Sistema Operativo, pero no hay una definición exacta, es
decir una que sea estándar; a continuación se presentan algunas:
1.- Se pueden imaginar un Sistema Operativo como los programas, instalados en el software o firmware,
que hacen utilizable el hardware. El hardware proporciona la "capacidad bruta de cómputo"; los sistemas
operativos ponen dicha capacidad de cómputo al alcance de los usuarios y administran cuidadosamente
el hardware para lograr un buen rendimiento.
2.- Los Sistemas Operativos son ante todo administradores de recursos; el principal recurso que
administran es el hardware del computador ;además de los procesadores, los medios de
almacenamiento, los dispositivos de entrada/salida, los dispositivos de comunicación y los datos.
3.- Un Sistema Operativo es un programa que actúa como intermediario entre el usuario y el hardware del
computador y su propósito es proporcionar el entorno en el cual el usuario pueda ejecutar programas.
Entonces, el objetivo principal de un Sistema Operativo es, lograr que el sistema de computación se use
de manera cómoda, y el objetivo secundario es que el hardware del computador se emplee de manera
eficiente. 4.- Un Sistema Operativo es un conjunto de programas que controla la ejecución de programas
de aplicación y actúa como una interfaz entre el usuario y el hardware de una computadora, esto es, un
Sistema Operativo explota y administra los recursos de hardware de la computadora con el objeto de
proporcionar un conjunto de servicios a los usuarios del sistema.
En resumen, se podría decir que los Sistemas Operativos son un conjunto de programas que crean la
interfaz del hardware con el usuario, y que tiene dos funciones primordiales, que son:
o Gestionar el hardware.- Se refiere al hecho de administrar de una forma más eficiente los
recursos de la máquina.
o Facilitar el trabajo al usuario.-Permite una comunicación con los dispositivos de la
máquina.
El Sistema Operativo se encuentra almacenado en la memoria secundaria. Primero se carga y ejecuta un
pedazo de código que se encuentra en el procesador, el cual carga el BIOS, y este a su vez carga el
Sistema Operativo que carga todos los programas de aplicación y software variado.
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.
 Interpreta los comandos que permiten al usuario comunicarse con el ordenador.
 Coordina y manipula el hardware de la computadora, como la memoria, las impresoras, las
unidades de disco, el teclado o el mouse.
 Organiza los archivos en diversos dispositivos de almacenamiento, como discos flexibles, discos
duros, discos compactos o cintas magnéticas.
 Gestiona los errores de hardware y la pérdida de datos.
 Servir de base para la creación del software logrando que equipos de marcas distintas funcionen
de manera análoga, salvando las diferencias existentes entre ambos.
 Configura el entorno para el uso del software y los periféricos; dependiendo del tipo de máquina
que se emplea, debe establecerse en forma lógica la disposición y características del equipo.
Como por ejemplo, una microcomputadora tiene físicamente dos unidades de disco, puede
simular el uso de otras unidades de disco, que pueden ser virtuales utilizando parte de la
memoria principal para tal fin. En caso de estar conectado a una red, el sistema operativo se
convierte en la plataforma de trabajo de los usuarios y es este quien controla los elementos o
recursos que comparten. De igual forma, provee de protección a la información que almacena.
Funciones de los sistemas operativos.
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 esta 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 de los sistemas operativos.
En general, se puede decir que un Sistema Operativo tiene las siguientes características:
 Conveniencia. Un Sistema Operativo hace más conveniente el uso de una computadora.
 Eficiencia. Un Sistema Operativo permite que los recursos de la computadora se usen de la
manera más eficiente posible.
 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.
 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.
 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.
 Organizar datos para acceso rápido y seguro.
 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.
 Procesamiento por bytes de flujo a través del bus de datos.
 Facilitar las entradas y salidas. Un Sistema Operativo debe hacerle fácil al usuario el acceso y
manejo de los dispositivos de Entrada/Salida de la computadora.
El software de aplicación son programas que se utilizan para diseñar, tal como el procesador de palabras,
lenguajes de programación, hojas de cálculo, etc.
El software de base sirve para interactuar el usuario con la máquina, son un conjunto de programas que
facilitan el ambiente plataforma, y permite el diseño del mismo.
El Software de base está compuesto por :
o Cargadores.
o Compiladores.
o Ensambladores.
o Macros.
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). Cada generación Sucesiva de hardware ha ido
acompañada de reducciones substanciales en los costos, tamaño, emisión de calor y consumo de
energía, y por incrementos notables en velocidad y capacidad.
Generacion Cero (década de 1940)
Los primeros sistemas computacionales no poseían sistemas operativos. Los usuarios tenían completo
acceso al lenguaje de la maquina. Todas las instrucciones eran codificadas a mano.
Primera Generacion (década de 1950)
Los sistemas operativos de los años cincuenta fueron diseñados para hacer mas 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
tenia control total de la maquina. Al terminar cada trabajo, el control era devuelto al sistema operativo, el
cual limpiaba y leía e iniciaba el trabajo siguiente.
Al inicio de los 50's esto había mejorado un poco con la introducción de tarjetas perforadas (las cuales
servían para introducir los programas de lenguajes de máquina), puesto que ya no había necesidad de
utilizar los tableros enchufables.
Además el laboratorio de investigación General Motors implementó el primer sistema operativo para la
IBM 701. Los sistemas de los 50's generalmente ejecutaban una sola tarea, y la transición entre tareas se
suavizaba para lograr la máxima utilización del sistema. Esto se conoce como sistemas de procesamiento
por lotes de un sólo flujo, ya que los programas y los datos eran sometidos en grupos o lotes.
La introducción del transistor a mediados de los 50's cambió la imagen radicalmente.
Se crearon máquinas suficientemente confiables las cuales se instalaban en lugares especialmente
acondicionados, aunque sólo las grandes universidades y las grandes corporaciones o bien las oficinas
del gobierno se podían dar el lujo de tenerlas.
Para poder correr un trabajo (programa), tenían que escribirlo en papel (en Fortran o en lenguaje
ensamblador) y después se perforaría en tarjetas. Enseguida se llevaría la pila de tarjetas al cuarto de
introducción al sistema y la entregaría a uno de los operadores. Cuando la computadora terminara el
trabajo, un operador se dirigiría a la impresora y desprendería la salida y la llevaría al cuarto de salida,
para que la recogiera el programador.
Segunda Generacion (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 maquina.
La independencia de dispositivos aparece después. Un usuario que desea escribir datos en una cinta en
sistemas de la primera generación tenia que hacer referencia especifica a una unidad de cinta particular.
En la segunda generación, el programa del usuario especificaba tan solo que un archivo iba a ser escrito
en una unidad de cinta con cierto numero de pistas y cierta densidad.
Se desarrollo sistemas compartidos, en la que los usuarios podían acoplarse directamente con el
computador a través de terminales. Surgieron sistemas de tiempo real, en que los computadores fueron
utilizados en el control de procesos industriales. Los sistemas de tiempo real se caracterizan por proveer
una respuesta inmediata.
Tercera Generacion (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.
Estos sistemas introdujeron mayor complejidad a los ambientes computacionales; una complejidad a la
cual, en un principio, no estaban acostumbrados los usuarios.
Cuarta Generacion (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 ha 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 esta 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 mas 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 maquinas virtuales es utilizado. El usuario ya no se encuentra interesado en los detalles
físicos de; sistema de computación que esta siendo accedida. En su lugar, el usuario ve un panorama
llamado maquina virtual creado 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.
Historia de los Sistemas Operativos.
Para tratar de comprender los requisitos de un Sistema Operativo y el significado de las principales
características de un Sistema Operativo contemporáneo, es útil considerar como han ido evolucionando
éstos con el tiempo.
Existen diferentes enfoques o versiones de como han ido evolucionando los Sistemas Operativos
La primera de estas versiones podría ser esta:
En los 40's, se introducen los programas bit a bit, por medio de interruptores mecánicos y después se
introdujo el leng. máquina que trabajaba por tarjetas perforadas.
Con las primeras computadoras, desde finales de los años 40 hasta la mitad de los años 50, el
programador interactuaba de manera directa con el hardware de la computadora, no existía realmente un
Sistema Operativo; las primeras computadoras utilizaban bulbos, la entrada de datos y los programas se
realizaban a través del lenguaje máquina (bits) o a través de interruptores.
Durante los años 50's y 60's.- A principio de los 50's, la compañía General's Motors implanto el primer
sistema operativo para su IBM 170. Empiezan a surgir las tarjetas perforadas las cuales permiten que los
usuarios (que en ese tiempo eran programadores, diseñadores, capturistas, etc.), se encarguen de
modificar sus programas. Establecían o apartaban tiempo, metían o introducían sus programas, corregían
y depuraban sus programas en su tiempo. A esto se le llamaba trabajo en serie. Todo esto se traducía en
pérdida de tiempo y tiempos de programas excesivos.
En los años 60's y 70's se genera el circuito integrado, se organizan los trabajos y se generan los
procesos Batch (por lotes), lo cual consiste en determinar los trabajos comunes y realizarlos todos juntos
de una sola vez. En esta época surgen las unidades de cinta y el cargador de programas, el cual se
considera como el primer tipo de Sistema Operativo.
En los 80's, inició el auge de la INTERNET en los Estados Unidos de América. A finales de los años 80's
comienza el gran auge y evolución de los Sistemas Operativos. Se descubre el concepto de
multiprogramación que consiste en tener cargados en memoria a varios trabajos al mismo tiempo, tema
principal de los Sistemas Operativos actuales.
Los 90's y el futuro, entramos a la era de la computación distribuida y del multiprocesamiento a través de
múltiples redes de computadoras, aprovechando el ciclo del procesador.
Se tendrá una configuración dinámica con un reconocimiento inmediato de dispositivos y software que se
añada o elimine de las redes a través de procesos de registro y localizadores.
La conectividad se facilita gracias a estándares y protocolos de sistemas abiertos por organizaciones
como la Org. Intern. de normas, fundación de software abierto, todo estará mas controlado por los
protocolos de comunicación OSI y por la red de servicios digital ISDN.
Se ha desarrollado otra versión, la cual se ha hecho en base a etapas o generaciones:
1a. Etapa (1945-1955) : Bulbos y conexiones.
Después de los infructuosos esfuerzos de Babbage, hubo poco progreso en la construcción de las
computadoras digitales, hasta la Segunda Guerra Mundial. A mitad de la década de los 40's, Howard
Aiken (Harvard), John Von Newman (Instituto de Estudios Avanzados, Princeton), J. Prespe R. Eckert y
Williams Mauchley (Universidad de Pennsylvania), así como Conrad Zuse (Alemania), entre otros
lograron construir máquinas de cálculo mediante bulbos. Estas máquinas eran enormes y llenaban
cuartos completos con decenas de miles de bulbos, pero eran mucho más lentas que la computadora
casera más económica en nuestros días.
Toda la programación se llevaba a cabo en lenguaje de máquina absoluto y con frecuencia se utilizaban
conexiones para controlar las funciones básicas de la máquina. Los lenguajes de programación eran
desconocidos (incluso el lenguaje ensamblador). No se oía de los Sistemas Operativos el modo usual de
operación consistía en que el programador reservaba cierto período en una hoja de reservación pegada a
la pared, iba al cuarto de la máquina, insertaba su conexión a la computadora y pasaba unas horas
esperando que ninguno de los 20,000 o más bulbos se quemara durante la ejecución. La inmensa
mayoría de los problemas eran cálculos numéricos directos, por ejemplo, el cálculo de valores para tablas
de senos y cosenos.
A principio de la década de los 50's la rutina mejoro un poco con la introducción de las tarjetas
perforadas. Fue entonces posible escribir los programas y leerlas en vez de insertar conexiones, por lo
demás el proceso era el mismo.
2a. Etapa. (1955-1965) : Transistores y Sistemas de Procesamiento por lotes.
La introducción del transistor a mediados de los años 50's modificó en forma radical el panorama. Las
computadoras se volvieron confiables de forma que podían fabricarse y venderse a clientes, con la
esperanza de que ellas continuaran funcionando lo suficiente como para realizar un trabajo en forma.
Dado el alto costo del equipo, no debe sorprender el hecho de que las personas buscaron en forma por
demás rápidas vías para reducir el tiempo invertido. La solución que, por lo general se adoptó, fue la del
sistema de procesamiento por lotes.
3ra Etapa (1965-1980 ) : Circuitos integrados y multiprogramación.
La 360 de IBM fue la primera línea principal de computadoras que utilizó los circuitos integrados, lo que
proporcionó una gran ventaja en el precio y desempeño con respecto a las máquinas de la segunda
generación, construidas a partir de transistores individuales. Se trabajo con un sistema operativo enorme
y extraordinariamente complejo. A pesar de su enorme tamaño y sus problemas el sistema operativo de
la línea IBM 360 y los sistemas operativos similares de esta generación producidos por otros fabricantes
de computadoras realmente pudieron satisfacer, en forma razonable a la mayoría de sus clientes.
También popularizaron varias técnicas fundamentales, ausentes de los sistemas operativos de la
segunda generación, de las cuales la más importante era la de multiprogramación.
Otra característica era la capacidad de leer trabajos de las tarjetas al disco, tan pronto como llegara al
cuarto de cómputo. Así, siempre que concluyera un trabajo el sistema operativo podía cargar un nuevo
trabajo del disco en la partición que quedara desocupada y ejecutarlo.
4ta Etapa (1980-Actualidad) : Computadoras personales.
Un interesante desarrollo que comenzó a llevarse a cabo a mediados de la década de los ochenta ha
sido el crecimiento de las redes de computadoras personales, con sistemas operativos de red y sistemas
operativos distribuidos.
En los sistema operativo de red, los usuarios están conscientes de la existencia de varias computadoras
y pueden conectarse con máquinas remotas y copiar archivos de una máquina a otra. Cada máquina
ejecuta su propio sistema operativo local y tiene su propio usuario.
Por el contrario, un sistema operativo distribuido es aquel que aparece ante sus usuarios como un
sistema tradicional de un solo procesador, aun cuando esté compuesto por varios procesadores. En un
sistema distribuido verdadero, los usuarios no deben ser conscientes del lugar donde su programa se
ejecute o de lugar donde se encuentren sus archivos; eso debe ser manejado en forma automática y
eficaz por el sistema operativo.
1.4 Clasificación.
Sistema Operativo Multitareas.
Es el modo de funcionamiento disponible en algunos sistemas operativos, mediante el
cual una computadora procesa varias tareas al mismo tiempo. Existen varios tipos de multitareas.
La conmutación de contextos (context Switching) es un tipo muy simple de multitarea en el que
dos o más aplicaciones se cargan al mismo tiempo, pero en el que solo se esta procesando la
aplicación que se encuentra en primer plano (la que ve el usuario). Para activar otra tarea que se
encuentre en segundo plano, el usuario debe traer al primer plano la ventana o pantalla que
contenga esa aplicación. En la multitarea cooperativa, la que se utiliza en el sistema operativo
Macintosh, las tareas en segundo plano reciben tiempo de procesado durante los tiempos
muertos de la tarea que se encuentra en primer plano (por ejemplo, cuando esta aplicación esta
esperando información del usuario), y siempre que esta aplicación lo permita. En los sistemas
multitarea de tiempo compartido, como OS/2, cada tarea recibe la atención del microprocesador
durante una fracción de segundo. Para mantener el sistema en orden, cada tarea recibe un nivel
de prioridad o se procesa en orden secuencial. Dado que el sentido temporal del usuario es
mucho más lento que la velocidad de procesamiento del ordenador, las operaciones de multitarea
en tiempo compartido parecen ser simultáneas.
Sistema Operativo Monotareas.
Los sistemas operativos monotareas son más primitivos y es todo lo contrario al visto
anteriormente, es decir, solo pueden manejar un proceso en cada momento o que solo puede
ejecutar las tareas de una en una. Por ejemplo cuando la computadora esta imprimiendo un
documento, no puede iniciar otro proceso ni responder a nuevas instrucciones hasta que se
termine la impresión.
Sistema Operativo Monousuario.
Los sistemas monousuarios son aquellos que nada más puede atender a un solo usuario,
gracias a las limitaciones creadas por el hardware, los programas o el tipo de aplicación que se
este ejecutando.
Estos tipos de sistemas son muy simples, porque todos los dispositivos de entrada, salida
y control dependen de la tarea que se esta utilizando, esto quiere decir, que las instrucciones
que se dan, son procesadas de inmediato; ya que existe un solo usuario. Y están orientados
principalmente por los microcomputadores.
Sistema Operativo Multiusuario.
Es todo lo contrario a monousuario; y en esta categoría se encuentran todos los sistemas
que cumplen simultáneamente las necesidades de dos o más usuarios, que comparten mismos
recursos. Este tipo de sistemas se emplean especialmente en redes.
En otras palabras consiste en el fraccionamiento del tiempo (timesharing).
Secuencia por Lotes.
La secuencia por lotes o procesamiento por lotes en microcomputadoras, es la ejecución
de una lista de comandos del sistema operativo uno tras otro sin intervención del usuario. En los
ordenadores más grandes el proceso de recogida de programas y de conjuntos de datos de los
usuarios, la ejecución de uno o unos pocos cada vez y la entrega de los recursos a los usuarios.
Procesamiento por lotes también puede referirse al proceso de almacenar transacciones durante
un cierto lapso antes de su envío a un archivo maestro, por lo general una operación separada
que se efectúa durante la noche.
Los sistemas operativos por lotes (batch), en los que los programas eran tratados por
grupos (lote) en ves de individualmente. La función de estos sistemas operativos consistía en
cargar en memoria un programa de la cinta y ejecutarlo. Al final este, se realizaba el salto a una
dirección de memoria desde donde reasumía el control del sistema operativo que cargaba el
siguiente programa y lo ejecutaba. De esta manera el tiempo entre un trabajo y el otro disminuía
considerablemente.
Tiempo Real.
Un sistema operativo en tiempo real procesa las instrucciones recibidas al instante, y una
vez que han sido procesadas muestra el resultado. Este tipo tiene relación con los sistemas
operativos monousuarios, ya que existe un solo operador y no necesita compartir el procesador
entre varias solicitudes.
Su característica principal es dar respuestas rápidas; por ejemplo en un caso de peligro
se necesitarían respuestas inmediatas para evitar una catástrofe.
Tiempo Compartido.
El tiempo compartido en ordenadores o computadoras consiste en el uso de un sistema
por más de una persona al mismo tiempo. El tiempo compartido ejecuta programas separados de
forma concurrente, intercambiando porciones de tiempo asignadas a cada programa (usuario). En
este aspecto, es similar a la capacidad de multitareas que es común en la mayoría de los
microordenadores o las microcomputadoras. Sin embargo el tiempo compartido se asocia
generalmente con el acceso de varios usuarios a computadoras más grandes y a organizaciones
de servicios, mientras que la multitarea relacionada con las microcomputadoras implica la
realización de múltiples tareas por un solo usuario.
CLASIFICACIÓN DE LOS SISTEMAS OPERATIVOS
Los sistemas operativos se clasifican en:
 Sistemas operativos por lotes.
 Sistemas operativos multiprogramación o de multitarea.
 Sistemas operativos multiusuario.
 Sistemas operativos de tiempo compartido.
 Sistemas operativos de tiempo real.
 Sistemas operativos distribuidos.
 Sistemas operativos de red.
 Sistemas operativos paralelos.
Sistemas operativos por lotes.
Los sistemas operativos por lotes requieren que la información esté reunida en bloque o "lote" (el
programa, los datos, y las instrucciones). Los trabajos son procesados en el orden de admisión,
según el modelo de "primero en llegar primero en ser atendido". En estos sistemas la memoria se
divide en dos zonas. Una de ellas es ocupada por el sistema operativo, y la otra se usa para cargar
programas transitorios para su ejecución. Cuando termina la ejecución de un programa se carga
un nuevo programa en la misma zona de memoria.
Algunos ejemplos de Sistemas Operativos por lotes exitosos son el SCOPE,
del DC6600, el cual está orientado a procesamiento científico pesado, y el
EXEC II para el UNIVAC 1107, orientado a procesamiento académico.
Algunas otras características con que cuentan los Sistemas Operativos por
lotes son:
 Requiere que el programa, datos y órdenes al sistema sean
remitidos todos juntos en forma de lote.
 Permiten poca o ninguna interacción usuario/programa en
ejecución.
 Mayor potencial de utilización de recursos que procesamiento
serial simple en sistemas multiusuarios.
 No conveniente para desarrollo de programas por bajo tiempo de
retorno y depuración fuera de línea.
 Conveniente para programas de largos tiempos de ejecución (Ej.,
análisis estadísticos, nóminas de personal, etc.).
 Se encuentra en muchos computadores personales combinados
con procesamiento serial.
 Planificación del procesador sencilla, típicamente procesados en
orden de llegada.
 Planificación de memoria sencilla, generalmente se divide en
dos: parte residente del S.O. y programas transitorios.
 No requieren gestión crítica de dispositivos en el tiempo.
 Suelen proporcionar gestión sencilla de manejo de archivos: se
requiere poca protección y ningún control de concurrencia para el
acceso.
Figura. Trabajos más comunes que realiza el Sistema Operativo por lotes.
Sistemas operativos multiprogramación o de multitareas.
Los sistemas de multiprogramación son capaces de soportar dos o más procesos concurrentes
múltiples, permiten que residan al mismo tiempo en la memoria primaria las instrucciones y los
datos procedentes de dos o más procesos. Estos sistemas implican la operación de multiproceso,
para el manejo de la información. Se caracterizan principalmente por un gran número de
programas activos simultáneamente que compiten por los recursos del sistema, como el
procesador, la memoria, y los "dispositivos de E/S". Estos sistemas monitorean el estado de todos
los programas activos y recursos del sistema.
Sistemas Operativos como UNIX, Windows 95, Windows 98, Windows NT,
MAC-OS, OS/2, soportan la multitarea.
Las características de un Sistema Operativo de multiprogramación o
multitarea son las siguientes:
 Mejora productividad del sistema y utilización de recursos.
 Multiplexa recursos entre varios programas.
 Generalmente soportan múltiples usuarios (multiusuarios).
 Proporcionan facilidades para mantener el entorno de usuarios
individuales.
 Requieren validación de usuario para seguridad y protección.
 Proporcionan contabilidad del uso de los recursos por parte de los
usuarios.
 Multitarea sin soporte multiusuario se encuentra en algunos
computadores personales o en sistemas de tiempo real.
 Sistemas multiprocesadores son sistemas multitareas por
definición ya que soportan la ejecución simultánea de múltiples
tareas sobre diferentes procesadores.
 En general, los sistemas de multiprogramación se caracterizan
por tener múltiples programas activos compitiendo por los
recursos del sistema: procesador, memoria, dispositivos
periféricos.
Sistemas operativos multiusuario.
Los sistemas operativos multiusuario permiten acceder simultáneamente a un sistema de
computadoras a través de dos o más terminales. Este tipo de sistema operativo es fundamental en
el manejo de redes de computadoras actualmente.
Sistemas operativos de tiempo compartido
Los sistemas operativos de tiempo compartido tratan de proporcionar un reparto equitativo de los
recursos comunes para dar la impresión a los usuarios de que poseen una computadora
independiente. En estos sistemas el administrador de memoria proporciona aislamiento y
protección de los programas, ya que generalmente no tienen necesidad de comunicarse entre
ellos. El control de E/S se encarga de proporcionar o retirar la asignación a los dispositivos de
forma que se preserve la integridad del sistema y se proporcione servicio a todos los usuarios. El
administrador de archivos proporciona protección y control en el acceso de la información, dada
la posibilidad de concurrencia y conflictos al tratar de acceder a los archivos.
Ejemplos de Sistemas Operativos de tiempo compartido son Multics, OS/360
y DEC-10.
Características de los Sistemas Operativos de tiempo compartido:
 Populares representantes de sistemas multiprogramados
multiusuario, Ej.: sistemas de diseño asistido por computador,
procesamiento de texto, etc.
 Dan la ilusión de que cada usuario tiene una máquina para sí.
 Mayoría utilizan algoritmo de reparto circular.
 Programas se ejecutan con prioridad rotatoria que se incrementa
con la espera y disminuye después de concedido el servicio.
 Evitan monopolización del sistema asignando tiempos de
procesador (time slot).
 Gestión de memoria proporciona protección a programas
residentes.
 Gestión de archivo debe proporcionar protección y control de
acceso debido a que pueden existir múltiples usuarios accesando
a un mismo archivo.
Sistemas operativos de tiempo real
Los Sistemas Operativos de tiempo real son aquellos en los cuales no tiene
importancia el usuario, sino los procesos. Por lo general, están subutilizados
sus recursos con la finalidad de prestar atención a los procesos en el
momento que lo requieran. Se utilizan en entornos donde son procesados un
gran número de sucesos o eventos.
Muchos Sistemas Operativos de tiempo real son construidos para
aplicaciones muy específicas como control de tráfico aéreo, bolsas de
valores, control de refinerías, control de laminadores. También en el ramo
automovilístico y de la electrónica de consumo, las aplicaciones de tiempo
real están creciendo muy rápidamente. Otros campos de aplicación de los
Sistemas Operativos de tiempo real son los siguientes:
 Control de trenes.
 Telecomunicaciones.
 Sistemas de fabricación integrada.
 Producción y distribución de energía eléctrica.
 Control de edificios.
 Sistemas multimedia.
Algunos ejemplos de Sistemas Operativos de tiempo real son: VxWorks,
Solaris, Lyns OS y Spectra. Los Sistemas Operativos de tiempo real, cuentan
con las siguientes características:
 Se dan en entornos en donde deben ser aceptados y procesados
gran cantidad de sucesos, la mayoría externos al sistema
computacional, en breve tiempo o dentro de ciertos plazos.
 Se utilizan en control industrial, conmutación telefónica, control
de vuelo, simulaciones en tiempo real., aplicaciones militares,
etc.
 Objetivo es proporcionar rápidos tiempos de respuesta.
 Procesa ráfagas de miles de interrupciones por segundo sin
perder un solo suceso.
 Proceso se activa tras ocurrencia de suceso, mediante
interrupción.
 Proceso de mayor prioridad expropia recursos.
 Por tanto generalmente se utiliza planificación expropiativa
basada en prioridades.
 Gestión de memoria menos exigente que tiempo compartido,
usualmente procesos son residentes permanentes en memoria.
 Población de procesos estática en gran medida.
 Poco movimiento de programas entre almacenamiento
secundario y memoria.
 Gestión de archivos se orienta más a velocidad de acceso que a
utilización eficiente del recurso.
Sistemas Operativos distribuidos.
Permiten distribuir trabajos, tareas o procesos, entre un conjunto de
procesadores. Puede ser que este conjunto de procesadores esté en un
equipo o en diferentes, en este caso es transparente para el usuario. Existen
dos esquemas básicos de éstos. Un sistema fuertemente acoplado es a es
aquel que comparte la memoria y un reloj global, cuyos tiempos de acceso
son similares para todos los procesadores. En un sistema débilmente
acoplado los procesadores no comparten ni memoria ni reloj, ya que cada
uno cuenta con su memoria local.
Los sistemas distribuidos deben de ser muy confiables, ya que si un
componente del sistema se compone otro componente debe de ser capaz de
reemplazarlo.
Entre los diferentes Sistemas Operativos distribuidos que existen tenemos
los siguientes: Sprite, Solaris-MC, Mach, Chorus, Spring, Amoeba, Taos, etc.
Características de los Sistemas Operativos distribuidos:
 Colección de sistemas autónomos capaces de comunicación y
cooperación mediante interconexiones hardware y software.
 Gobierna operación de un S.C. y proporciona abstracción de
máquina virtual a los usuarios.
 Objetivo clave es la transparencia.
 Generalmente proporcionan medios para la compartición global
de recursos.
 Servicios añadidos: denominación global, sistemas de archivos
distribuidos, facilidades para distribución de cálculos (a través de
comunicación de procesos internodos, llamadas a procedimientos
remotos, etc.).
Sistemas Operativos de red.
Son aquellos sistemas que mantienen a dos o más computadoras unidas a
través de algún medio de comunicación (físico o no), con el objetivo
primordial de poder compartir los diferentes recursos y la información del
sistema.
El primer Sistema Operativo de red estaba enfocado a equipos con un
procesador Motorola 68000, pasando posteriormente a procesadores Intel
como Novell Netware.
Los Sistemas Operativos de red más ampliamente usados son: Novell
Netware, Personal Netware, LAN Manager, Windows NT Server, UNIX,
LANtastic.
Figura. Se muestra un Sistema Operativo en red.
Sistemas Operativos paralelos.
En estos tipos de Sistemas Operativos se pretende que cuando existan dos o
más procesos que compitan por algún recurso se puedan realizar o ejecutar
al mismo tiempo.
En UNIX existe también la posibilidad de ejecutar programas sin tener que
atenderlos en forma interactiva, simulando paralelismo (es decir, atender de
manera concurrente varios procesos de un mismo usuario). Así, en lugar de
esperar a que el proceso termine de ejecutarse (como lo haría
normalmente), regresa a atender al usuario inmediatamente después de
haber creado el proceso.
Ejemplos de estos tipos de Sistemas Operativos están: Alpha, PVM, la serie
AIX, que es utilizado en los sistemas RS/6000 de IBM.
Con el paso del tiempo, los Sistemas Operativos fueron clasificándose de diferentes maneras,
dependiendo del uso o de la aplicación que se les daba. A continuación se mostrarán diversos tipos de
Sistemas Operativos que existen en la actualidad, con algunas de sus características:
Sistemas Operativos por lotes.
Los Sistemas Operativos por lotes, procesan una gran cantidad de trabajos con poca o ninguna
interacción entre los usuarios y los programas en ejecución. Se reúnen todos los trabajos comunes para
realizarlos al mismo tiempo, evitando la espera de dos o más trabajos como sucede en el procesamiento
en serie. Estos sistemas son de los más tradicionales y antiguos, y fueron introducidos alrededor de 1956
para aumentar la capacidad de procesamiento de los programas.
Cuando estos sistemas son bien planeados, pueden tener un tiempo de ejecución muy alto, porque el
procesador es mejor utilizado y los Sistemas Operativos pueden ser simples, debido a la secuenciabilidad
de la ejecución de los trabajos.
Algunos ejemplos de Sistemas Operativos por lotes exitosos son el SCOPE, del DC6600, el cual está
orientado a procesamiento científico pesado, y el EXEC II para el UNIVAC 1107, orientado a
procesamiento académico.
Algunas otras características con que cuentan los Sistemas Operativos por lotes son:
 Requiere que el programa, datos y órdenes al sistema sean remitidos todos juntos en forma de
lote.
 Permiten poca o ninguna interacción usuario/programa en ejecución.
 Mayor potencial de utilización de recursos que procesamiento serial simple en sistemas
multiusuarios.
 No conveniente para desarrollo de programas por bajo tiempo de retorno y depuración fuera de
línea.
 Conveniente para programas de largos tiempos de ejecución (ej, análisis estadísticos, nóminas
de personal, etc.)
 Se encuentra en muchos computadores personales combinados con procesamiento serial.
 Planificación del procesador sencilla, típicamente procesados en orden de llegada.
 Planificación de memoria sencilla, generalmente se divide en dos: parte residente del S.O. y
programas transitorios.
 No requieren gestión crítica de dispositivos en el tiempo.
 Suelen proporcionar gestión sencilla de manejo de archivos: se requiere poca protección y ningún
control de concurrencia para el acceso.
Figura. Trabajos más comunes que realiza el Sistema Operativo por lotes.
Sistemas Operativos de tiempo real.
Los Sistemas Operativos de tiempo real son aquelos en los cuales no tiene importancia el usuario, sino
los procesos. Por lo general, están subutilizados sus recursos con la finalidad de prestar atención a los
procesos en el momento que lo requieran. se utilizan en entornos donde son procesados un gran número
de sucesos o eventos.
Muchos Sistemas Operativos de tiempo real son construidos para aplicaciones muy específicas como
control de tráfico aéreo, bolsas de valores, control de refinerías, control de laminadores. También en el
ramo automovilístico y de la electrónica de consumo, las aplicaciones de tiempo real están creciendo muy
rápidamente. Otros campos de aplicación de los Sistemas Operativos de tiempo real son los siguientes:
 Control de trenes.
 Telecomunicaciones.
 Sistemas de fabricación integrada.
 Producción y distribución de energía eléctrica.
 Control de edificios.
 Sistemas multimedia.
Algunos ejemplos de Sistemas Operativos de tiempo real son: VxWorks, Solaris, Lyns OS y Spectra. Los
Sistemas Operativos de tiempo real, cuentan con las siguientes características:
 Se dan en entornos en donde deben ser aceptados y procesados gran cantidad de sucesos, la
mayoría externos al sisterma computacional, en breve tiempo o dentro de ciertos plazos.
 Se utlizan en control industrial, conmutación telefónica, control de vuelo, simulaciones en tiempo
real., aplicaciones militares, etc.
 Objetivo es proporcionar rápidos tiempos de respuesta.
 Procesa ráfagas de miles de interrupciones por segundo sin perder un solo suceso.
 Proceso se activa tras ocurrencia de suceso, mediante interrupción.
 Proceso de mayor prioridad expropia recursos.
 Por tanto generalmente se utliza planificación expropiativa basada en prioridades.
 Gestión de memoria menos exigente que tiempo compartido, usualmente procesos son
residentes permanentes en memoria.
 Población de procesos estática en gran medida.
 Poco movimiento de programas entre almacenamiento secundario y memoria.
 Gestión de archivos se orienta más a velocidad de acceso que a utlización eficiente del recurso.
Sistemas Operativos de multiprogramación (o Sistemas Operativos de multitarea).
Se distinguen por sus habilidades para poder soportar la ejecución de dos o más trabajos activos (que se
están ejecutado) al mismo tiempo. Esto trae como resultado que la Unidad Central de Procesamiento
(UCP) siempre tenga alguna tarea que ejecutar, aprovechando al máximo su utilización.
Su objetivo es tener a varias tareas en la memoria principal, de manera que cada uno está usando el
procesador, o un procesador distinto, es decir, involucra máquinas con más de una UCP.
Sistemas Operativos como UNIX, Windows 95, Windows 98, Windows NT, MAC-OS, OS/2, soportan la
multitarea.
Las características de un Sistema Operativo de multiprogramación o multitarea son las siguientes:
 Mejora productividad del sistema y utilización de recursos.
 Multiplexa recursos entre varios programas.
 Generalmente soportan múltiples usuarios (multiusuarios).
 Proporcionan facilidades para mantener el entorno de usuarios inndividuales.
 Requieren validación de usuario para seguridad y protección.
 Proporcionan contabilidad del uso de los recursos por parte de los usuarios.
 Multitarea sin soprte multiusuario se encuentra en algunos computadores personales o en
sistemas de tiempo real.
 Sistemas multiprocesadores son sistemas multitareas por definición ya que soportan la
ejecución simultánea de múltiples tareas sobre diferentes procesadores.
 En general, los sistemas de multiprogramación se caracterizan por tener múltiples programas
activos compitiendo por los recursos del sistema: procesador, memoria, dispositivos periféricos.
Sistemas Operativos de tiempo compartido.
Permiten la simulación de que el sistema y sus recursos son todos para cada usuarios. El usuario hace
una petición a la computadora, esta la procesa tan pronto como le es posible, y la respuesta aparecerá en
la terminal del usuario.
Los principales recursos del sistema, el procesador, la memoria, dispositivos de E/S, son continuamente
utilizados entre los diversos usuarios, dando a cada usuario la ilusión de que tiene el sistema dedicado
para sí mismo. Esto trae como consecuencia una gran carga de trabajo al Sistema Operativo,
principalmente en la administración de memoria principal y secundaria.
Ejemplos de Sistemas Operativos de tiempo compartido son Multics, OS/360 y DEC-10.
Características de los Sistemas Operativos de tiempo compartido:
 Populares representantes de sistemas multiprogramados multiusuario, ej: sistemas de diseño
asistido por computador, procesamiento de texto, etc.
 Dan la ilusión de que cada usuario tiene una máquina para sí.
 Mayoría utilizan algoritmo de reparto circular.
 Programas se ejcutan con prioridad rotatoria que se incrementa con la espera y disminuye
después de concedido el servicio.
 Evitan monopolización del sistema asignando tiempos de procesador (time slot).
 Gestión de memoria proporciona protección a programas residentes.
 Gestión de archivo debe proporcionar protección y control de acceso debido a que pueden
existir múltiples usuarios accesando un mismo archivos.
Sistemas Operativos distribuidos.
Permiten distribuir trabajos, tareas o procesos, entre un conjunto de procesadores. Puede ser que este
conjunto de procesadores esté en un equipo o en diferentes, en este caso es trasparente para el usuario.
Existen dos esquemas básicos de éstos. Un sistema fuertemente acoplado es a es aquel que comparte la
memoria y un reloj global, cuyos tiempos de acceso son similares para todos los procesadores. En un
sistema débilmente acoplado los procesadores no comparten ni memoria ni reloj, ya que cada uno cuenta
con su memoria local.
Los sistemas distribuidos deben de ser muy confiables, ya que si un componente del sistema se compone
otro componente debe de ser capaz de reemplazarlo.
Entre los diferentes Sistemas Operativos distribuidos que existen tenemos los siguientes: Sprite, Solaris-
MC, Mach, Chorus, Spring, Amoeba, Taos, etc.
Caracteristicas de los Sistemas Operativos distribuidos:
 Colección de sistemas autónomos capaces de comunicación y cooperación mediante
interconexiones hardware y software .
 Gobierna operación de un S.C. y proporciona abstracción de máquina virtual a los usuarios.
 Objetivo clave es la transparencia.
 Generalmente proporcionan medios para la compartición global de recursos.
 Servicios añadidos: denominación global, sistemas de archivos distribuidos, facilidades para
distribución de cálculos (a través de comunicación de procesos internodos, llamadas a
procedimientos remotos, etc.).
Sistemas Operativos de red.
Son aquellos sistemas que mantienen a dos o más computadoras unidas através de algún medio de
comunicación (fisico o no), con el objetivo primordial de poder compartir los diferentes recursos y la
información del sistema.
El primer Sistema Operativo de red estaba enfocado a equipos con un procesador Motorola 68000,
pasando posteriormente a procesadores Intel como Novell Netware.
Los Sistemas Operativos de red mas ampliamente usados son: Novell Netware, Personal Netware, LAN
Manager, Windows NT Server, UNIX, LANtastic.
Sistemas Operativos paralelos.
En estos tipos de Sistemas Operativos se pretende que cuando existan dos o más procesos que
compitan por algún recurso se puedan realizar o ejecutar al mismo tiempo.
En UNIX existe también la posibilidad de ejecutar programas sin tener que atenderlos en forma
interactiva, sinulando paralelismo (es decir, atender de manera concurrente varios procesos de un mismo
usuario). Así, en lugar de esperar a que el proceso termine de ejecutarse (como lo haría normalmente),
regresa a atender al usuario inmediatamente después de haber creado el proceso.
Ejemplos de estos tipos de Sistemas Operativos están: Alpha, PVM, la serie AIX, que es utilizado en los
sistemas RS/6000 de IBM.
1.5 Estructura (niveles o estratos de diseño).
Internamente los sistemas operativos estructuralmente de se clasifican según como se hayan organizado
intérnamente en su diseño, por esto la clasificación más común de los S.O. son:
 Sistemas monolíticos:
En estos sistemas operativos se escriben como un conjunto de procedimientos, cada uno de los cuales
puede llamar a cualquiera de los otros siempre que lo necesite. Cuando se emplea esta técnica, cada
procedimiento del sistema tiene una interfaz bien definida en términos de parámetros y resultados, y cada
una tiene la libertad de llamar a cualquiera otra, si la última ofrece algún cálculo útil que la primera
necesite.
Para construir el programa objeto real del sistema operativo cuando se usa este método, se compilan
todos los procedimientos individuales a archivos que contienen los procedimientos y después se
combinan todos en un solo archivo objeto con el enlazador.
En términos de ocultamiento de información, esencialmente no existe ninguno; todo procedimiento es
visible para todos (al contrario de una estructura que contiene módulos o paquetes, en los cuales mucha
información es local a un módulo y sólo pueden llamar puntos de registro designados oficialmente del
exterior del módulo)
Esta organización sugiere una estructura básica del sistema operativo:
1.- Un programa central que invoque el procedimiento de servicio solicitado (Shell o Kernel)
2.- Un conjunto de procedimientos de servicios que realice las llamadas al sistema.
3.- Un conjunto de procedimientos de uso general que ayude a los procedimientos de servicio
 Sistemas en estratos:
Estos sistemas operativos se organizan como una jerarquía de estratos, cada uno construido arriba del
que está debajo de él. El primer sistema construido en esta forma fuel el sistema THE que se fabricó en
Technische Hogeschool Eindhoven de Holanda por E. W Dijkstra (1968) y sus alumnos. El sistema THE
era un sistema de lote para una computadora alemana, la Electrológica X8, que tenía 32K de palabras de
27 bits ( los bits eran costosos en aquellos días)
El sistema tenía 6 estratos, estos se muestran en la siguiente tabla:
5 Operador de THE
4 Programas del usuario
3 Administración de Entrada/Salida
2 Comunicación entre el operador y el proceso
1 Administración de la memoria y el tambor magnético
0 Distribución del procesador y multiprogramación
- El estrato 0 trabajaba con la distribución del procesador, cambiando entre procesos cuando ocurrían
interrupciones o los relojes expiraban. Sobre el estrato 0, el sistema constaba de procesos secuenciales,
cada uno de los cuales podía programarse sin tener que preocuparse por el hecho de que múltiples
procesos estuvieran corriendo en un solo procesador. En otras palabras, el estarto 0 ofrecía la
multiprogramación básica de la CPU.
El estrato 1 realizaba el manejo de memoria. Este distribuía espacio para procesos contenidos en la
memoria central y en un tambor de 512K palabras que se usaba para contener partes de procesos
(páginas) para las cuales no había espacio en la memoria central. Sobre el estrato 1, los procesos no
tenía que preocuparse de si estaban en la memoria o en el tambor; el software del estrato 1 se hacía
cargo de asegurar que las páginas se trajeran a la memoria siempre que se necesitaran.
El estrato 2 manejaba la comunicación entre cada proceso y la consola de operador.
El estrato 3 se hacía cargo de manejar los dispositivos de E/S y de separar la información en flujo que
entraba y salí de ellos. Sobre el estrato 3 cada proceso podía trabajar con dispositivos de E/S abstractos
con propiedades agradables, en vez de dispositivos reales con muchas peculiaridades
El estrato 4 era donde se encontraban los programas de los usuarios. No tenían que preocuparse por el
manejo de los procesos, memoria, consola o E/S. El proceso operador del sistema se localizaba en el
estrato 5.
En esta unidad examinaremos cuatro estructuras distintas que ya han sido probadas, con el fin de tener
una idea más extensa de cómo esta estructurado el sistema operativo. Veremos brevemente algunas
estructuras de diseños de sistemas operativos.
Estructura modular.
También llamados sistemas monolíticos. Este tipo de organización es con mucho la mas común; bien
podría recibir el subtitulo de "el gran embrollo". La estructura consiste en que no existe estructura alguna.
El sistema operativo se escribe como una colección de procedimientos, cada uno de los cuales puede
llamar a los demás cada vez que así lo requiera. Cuando se usa esta técnica, cada procedimiento del
sistema tiene una interfaz bien definida en términos de parámetros y resultados y cada uno de ellos es
libre de llamar a cualquier otro, si este ultimo proporciona cierto cálculo útil para el primero. Sin embargo
incluso en este tipo de sistemas es posible tener al menos algo de estructura. Los servicios (llamadas al
sistema) que proporciona el sistema operativo se solicitan colocando los parámetros en lugares bien
definidos, como en los registros o en la pila, para después ejecutar una instrucción especial de trampa de
nombre "llamada al núcleo" o "llamada al supervisor".
Esta instrucción cambia la máquina del modo usuario al modo núcleo y transfiere el control al sistema
operativo, lo que se muestra en el evento (1) de la figura 1. El sistema operativo examina entonces los
parámetros de la llamada, para determinar cual de ellas se desea realizar, como se muestra en el evento
(2) de la figura 1. A continuación, el sistema operativo analiza una tabla que contiene en la entrada k un
apuntador al procedimiento que realiza la k-esima llamada al sistema. Esta operación que se muestra en
(3) de la figura 1, identifica el procedimiento de servicio, al cual se llama. Por ultimo, la llamada al sistema
termina y el control regresa al programa del usuario.
Figura 1. La forma en que debe hacerse una llamada al sistema: (1) el programa del usuario es atraído
hacia el núcleo. (2) el sistema operativo determina el número del servicio solicitado. (3) el sistema
operativo localiza y llama al procedimiento correspondiente al servicio. (4) el control regresa al programa
del usuario.
Esta organización sugiere una organización básica del sistema operativo:
1.- un programa principal que llama al procedimiento del servicio solicitado.
2.- un conjunto de procedimientos de servicio que llevan a cabo las llamadas al sistema.
3.- un conjunto de procedimientos utilitarios que ayudan al procedimiento de servicio.
En este modelo, para cada llamada al sistema existe un procedimiento de servicio que se encarga de él.
Los procedimientos utilitarios hacen cosas necesarias para varios procedimientos de servicio, por ejemplo
buscar los datos de los programas del usuario.
Estructura por microkernel.
Las funciones centrales de un SO son controladas por el núcleo (kernel) mientras que la interfaz del
usuario es controlada por el entorno (shell). Por ejemplo, la parte más importante del DOS es un
programa con el nombre "COMMAND.COM" Este programa tiene dos partes. El kernel, que se mantiene
en memoria en todo momento, contiene el código máquina de bajo nivel para manejar la administración
de hardware para otros programas que necesitan estos servicios, y para la segunda parte del
COMMAND.COM el shell, el cual es el interprete de comandos
Las funciones de bajo nivel del SO y las funciones de interpretación de comandos están separadas, de tal
forma que puedes mantener el kernel DOS corriendo, pero utilizar una interfaz de usuario diferente. Esto
es exactamente lo que sucede cuando cargas Microsoft Windows, el cual toma el lugar del shell,
reemplazando la interfaz de línea de comandos con una interfaz gráfica del usuario. Existen muchos
"shells" diferentes en el mercado, ejemplo: NDOS (Norton DOS), XTG, PCTOOLS, o inclusive el mismo
SO MS-DOS a partir de la versión 5.0 incluyó un Shell llamado DOS SHELL.
Estructura por anillos concéntricos (capas).
El sistema por "capas" consiste en organizar el sistema operativo como una jerarquía de capas, cada una
construida sobre la inmediata inferior. El primer sistema construido de esta manera fue el sistema THE
(Technische Hogeschool Eindhoven), desarrollado en Holanda por E. W. Dijkstra (1968) y sus
estudiantes.
El sistema tenia 6 capas, como se muestra en la figura 3. La capa 0 trabaja con la asignación del
procesador y alterna entre los procesos cuando ocurren las interrupciones o expiran los cronómetros.
Sobre la capa 0, el sistema consta de procesos secuénciales, cada uno de los cuales se podría
programar sin importar que varios procesos estuvieran ejecutándose en el mismo procesador, la capa 0
proporcionaba la multiprogramación básica de la CPU.
La capa 1 realizaba la administración de la memoria. Asignaba el espacio de memoria principal para los
procesos y un recipiente de palabras de 512K se utilizaba para almacenar partes de los procesos
(páginas) para las que no existía lugar en la memoria principal. Por encima de la capa 1, los procesos no
debían preocuparse si estaban en la memoria o en el recipiente; el software de la capa 1 se encargaba
de garantizar que las páginas llegaran a la memoria cuando fueran necesarias.
La capa 2 se encargaba de la comunicación entre cada proceso y la consola del operador. Por encima de
esta capa, cada proceso tiene su propia consola de operador.
La capa 3 controla los dispositivos de E/S y guarda en almacenes (buffers) los flujos de información entre
ellos. Por encima de la capa 3, cada proceso puede trabajar con dispositivos exactos de E/S con
propiedades adecuadas, en vez de dispositivos reales con muchas peculiaridades. La capa 4 es donde
estaban los programas del usuario, estos no tenían que preocuparse por el proceso, memoria, consola o
control de E/S. el proceso operador del sistema se localizaba en la capa 5
Una generalización mas avanzada del concepto de capas se presento en el sistema MULTICS. En lugar
de capas, MULTICS estaba organizado como una serie de anillos concéntricos, siendo los anillos
interiores los privilegiados. Cuando un procedimiento de un anillo exterior deseaba llamar a un
procedimiento de un anillo interior, debió hacer el equivalente a una llamada al sistema
Mientras que el esquema de capas de THE era en realidad un apoyo al diseño, debido a que todas las
partes del sistema estaban ligadas entre si en un solo programa objeto, en MULTICS, el mecanismo de
anillos estaba mas presente durante el tiempo de ejecución y era reforzado por el hardware. La ventaja
del mecanismo de anillos es su facilidad de extensión para estructurar subsistemas del usuario.
5 El operador
4 Programas del usuario
3 Control de entrada/salida
2 Comunicación operador-proceso
1 Administración de la memoria y del disco
0 Asignación del procesador y multiprogramación
Figura 3. Estructura del sistema operativo THE.
Estructura cliente – servidor
Una tendencia de los sistemas operativos modernos es la de explotar la idea de mover el código a capas
superiores y eliminar la mayor parte posible del sistema operativo para mantener un núcleo mínimo. El
punto de vista usual es el de implantar la mayoría de las funciones del sistema operativo en los procesos
del usuario. Para solicitar un servicio, como la lectura de un bloque de cierto archivo, un proceso del
usuario (denominado proceso cliente) envía la solicitud a un proceso servidor, que realiza entonces el
trabajo y regresa la respuesta. En este modelo, que se muestra en la figura 4, lo único que hace el núcleo
es controlar la comunicación entre los clientes y los servidores. Al separar el sistema operativo en partes,
cada una de ellas controla una faceta del sistema, como el servicio a archivos, servicios a procesos,
servicio a terminales o servicio a la memoria, cada parte es pequeña y controlable. Además como todos
los servidores se ejecutan como procesos en modo usuario y no en modo núcleo, no tienen acceso
directo al hardware. En consecuencia si hay un error en el servidor de archivos, éste puede fallar, pero
esto no afectará en general a toda la máquina.
Otra de las ventajas del modelo cliente-servidor es su capacidad de adaptación para su uso en los
sistemas distribuidos
Si un cliente se comunica con un servidor mediante mensajes, el cliente no necesita saber si el mensaje
se maneja en forma local, en su máquina, o si se envía por medio de una red a un servidor en una
máquina remota. En lo que respecta al cliente, lo mismo ocurre en ambos casos: se envió una solicitud y
se recibió una respuesta.
Sistemas Operativos por su Estructura (Visión Interna).
Según, se deben observar dos tipos de requisitos cuando se construye un sistema operativo, los cuales
son:
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.
A continuación se describen las distintas estructuras que presentan los actuales sistemas operativos para
satisfacer las necesidades que de ellos se quieren obtener.
Estructura Monolítica.
Es la estructura de los primeros sistemas operativos constituidos fundamentalmente por un solo
programa compuesto de un conjunto de rutinas entrelazadas de tal forma que cada una puede llamar a
cualquier otra. Las características fundamentales de este tipo de estructura son:
 Construcción del programa final a base de módulos compilados separadamente que se unen a
través del ligador.
 Buena definición de parámetros de enlace entre las distintas rutinas existentes, que puede
provocar mucho acoplamiento.
 Carecen de protecciones y privilegios al entrar a rutinas que manejan diferentes aspectos de los
recursos de la computadora, como memoria, disco, etc.
Generalmente están hechos a medida, por lo que son eficientes y rápidos en su ejecución y gestión, pero
por lo mismo carecen de flexibilidad para soportar diferentes ambientes de trabajo o tipos de
aplicaciones.
Estructura Jerárquica.
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.
Se dividió el sistema operativo en pequeñas partes, de tal forma que cada una de ellas estuviera
perfectamente definida y con un claro interface con el resto de elementos.
Se constituyó una estructura jerárquica o de niveles en los sistemas operativos, el primero de los cuales
fue denominado THE (Technische Hogeschool, Eindhoven), de Dijkstra, que se utilizó con fines
didácticos. Se puede pensar también en estos sistemas como si fueran `multicapa'. Multics y Unix caen
en esa categoría.
En la estructura anterior se basan prácticamente la mayoría de los sistemas operativos actuales. Otra
forma de ver este tipo de sistema es la denominada de anillos concéntricos o "rings".
En el sistema de anillos, cada uno tiene una apertura, conocida como puerta o trampa (trap), por donde
pueden entrar las llamadas de las capas inferiores. De esta forma, las zonas más internas del sistema
operativo o núcleo del sistema estarán más protegidas de accesos indeseados desde las capas más
externas. Las capas más internas serán, por tanto, más privilegiadas que las externas.
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.
Estas máquinas virtuales no son máquinas extendidas, sino una réplica de la máquina real, de manera
que en cada una de ellas se pueda ejecutar un sistema operativo diferente, que será el que ofrezca la
máquina extendida al usuario
Cliente-Servidor(Microkernel).
El tipo más reciente de sistemas operativos es el denominado Cliente-servidor, que puede ser ejecutado
en la mayoría de las computadoras, ya sean grandes o pequeñas.
Este sistema sirve para toda clase de aplicaciones por tanto, es de propósito general y cumple con las
mismas actividades que los sistemas operativos convencionales.
El núcleo tiene como misión establecer la comunicación entre los clientes y los servidores. Los procesos
pueden ser tanto servidores como clientes. Por ejemplo, un programa de aplicación normal es un cliente
que llama al servidor correspondiente para acceder a un archivo o realizar una operación de
entrada/salida sobre un dispositivo concreto. A su vez, un proceso cliente puede actuar como servidor
para otro." [Alcal92]. Este paradigma ofrece gran flexibilidad en cuanto a los servicios posibles en el
sistema final, ya que el núcleo provee solamente funciones muy básicas de memoria, entrada/salida,
archivos y procesos, dejando a los servidores proveer la mayoría que el usuario final o programador
puede usar. Estos servidores deben tener mecanismos de seguridad y protección que, a su vez, serán
filtrados por el núcleo que controla el hardware. Actualmente se está trabajando en una versión de UNIX
que contempla en su diseño este paradigma.
1.6 Núcleo.
El Núcleo del Sistema Operativo.
Todas las operaciones en las que participan procesos son controladas por la parte del sistema operativo
denominada núcleo (nucleus, core o kernel, en inglés). 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.
Los núcleos se diseñan para realizar "el mínimo" posible de procesamiento en cada interrupción y dejar
que el resto lo realice el proceso apropiado del sistema, que puede operar mientras el núcleo se habilita
para atender otras interrupciones.
El núcleo de un sistema operativo normalmente contiene 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.
Núcleo o Kernel y niveles de un Sistema Operativo.
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. Gestión de Memoria: que proporciona las facilidades de bajo nivel para la gestión de memoria
secundaria necesaria para la ejecución de procesos.
Nivel 2. Procesador: Se encarga de activar los cuantums de tiempo para cada uno de los procesos,
creando interrupciones de hardware cuando no son respetadas.
Nivel 3. Entrada/Salida: Proporciona las facilidades para poder utilizar los dispositivos de E/S requeridos
por procesos.
Nivel 4. Información o Aplicación o Interprete 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.
Nivel 5. Control 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.
El núcleo y los procesos.
El núcleo (Kernel) de un sistema operativo es un conjunto de rutinas cuya misión es la de gestionar el
procesador, la memoria, la entrada/salida y el resto de procesos disponibles en la instalación. Toda esta
gestión la realiza para atender al
funcionamiento y peticiones de los trabajos que se ejecutan en el sistema.
Los procesos relacionados con la entidad básica de los sistemas operativos actuales: Los procesos.
El esquema general del mismo es el siguiente:
Definición y concepto de proceso.
El Bloque de Control de Proceso (PCB) como imagen donde el sistema operativo ve el estado del
proceso.
Estados por los que pasa un proceso a lo largo de su existencia en la computadora.
Operaciones que se pueden realizar sobre un proceso.
Clasificación de los procesos según su forma de ejecución, de carga, etc.
1.6.1 Interrupciones (FLIH).
 El GESTOR DE INTERRUPCIONES DE PRIMER NIVEL: FLIH
(First Level Interruption Handler): `Algo' que gestione las interrupciones
 EL CONTROLADOR DE INTERRUPCIONES DE PRIMER NIVEL: EL FLIH
En principio, una señal es una indicación por la que se altera la secuencia de ejecución. Hay varios tipos de interrupción, que se
clasifican en función de su origen:
! EXTERNAS: Se producen fuera del procesador
! INTERNAS: Se producen dentro del procesador
Si precisamos más:
Las interrupciones EXTERNAS, las denominamos:
INTERRUPCIONES
Las interrupciones INTERNAS, pueden ser:
 EXTRACÓDIGOS: Operaciones que manipulan elementos internos del
procesador
 TRAPS o EXCEPCIONES
La misión del FLIH, está en el núcleo, para dar una respuesta a cualquier tipo de señal que se produce en el sistema.
Al producirse una señal, la atrapa el Hardware de interrupciones, que como mínimo, salva el contenido del PC en el PCB del proceso.
Además, puede que también salve el resto del entorno volátil (también en el PCB). También direcciona al FLIH, es decir, pone en el
PC la dirección del FLIH.
Por lo tanto, podemos decir, que el FLIH es un elemento software, es un proceso.
Ya hemos dicho que el FLIH es Software, pues se trata de un sencillo programa definido sobre un área de memoria dedicada a él,
un área de memoria específica; es decir, el FLIH siempre está en la misma parte de la memoria.
El FLIH hace dos cosas:
1º) Determina el origen de la interrupción
(Averigua qué interrupción se ha producido)
2º) Direcciona la rutina que trata esa interrupción
Si el FLIH es un programa, necesita parte del entorno volátil: PC, ACC, ... Por ello, debe salvarse el entorno volátil del proceso
interrumpido. El entorno volátil del proceso interrumpido, se puede salvar en dos momentos:
 Puede salvarlo el Hardware de interrupciones
 Si no lo salva el Hardware de interrupciones, será lo primero que haga el FLIH, antes incluso de determinar el origen de la
interrupción
NOTA:
Hay sistemas que definen unos registros máquina para uso exclusivo por parte del Sistema Operativo, para evitar tener que estar
salvando y restaurando el contenido del entorno volátil.
Formas de determinar el origen de una interrupción:
MEDIANTE SOFTWARE:
Mediante una cadena de saltos o IFs (o con una CASE)
El FLIH, tiene un único punto de entrada:
Ventaja: ! Es muy sencillo
Desventaja: ! Rendimiento muy pobre (Cuantas más interrupciones, peor
rendimiento)
Posible solución:
 Poner al principio de la cadena de saltos las comprobaciones de las
interrupciones más frecuentes.
MEDIANTE HARDWARE:
Mediante el uso de un comparador simultáneo, incluido en el Hardware de interrupciones.
El origen de la interrupción, no lo va a detectar el FLIH, lo va a detectar el Hardware de interrupciones.
El FLIH, tiene N puntos de entrada, siendo N el número de interrupciones que reconoce el sistema.
Ventaja: ! Es casi simultáneo, mucho más rápido que la secuencia de IFs
Desventaja: ! Coste Elevado: Un comparador para muchas interrupciones es
muy caro
COMBINANDO SOFTWARE Y HARDWARE:
El comparador distingue los TIPOS de interrupción.
Las interrupciones se agrupan por tipos.
EL Hardware de interrupciones:
1º) Salva el contenido del entorno volátil
2º) Mediante un comparador simultáneo, determina el tipo al que pertenece la
interrupción producida
3º) Se direcciona al FLIH, donde una pequeña cadena de saltos determina la
interrupción en concreto que se ha producido
Si N es el número de tipos de interrupciones, el FLIH tiene N puntos de entrada.
Cuando el FLIH está atendiendo una interrupción, pueden producirse otras.
¿Qué hacemos con esas otras interrupciones que se producen?
 Inhibir (ignorar) el resto de interrupciones mientras se atiende una. Pero esto no puede hacerse siempre
 Las interrupciones más prioritarias deben tratarse nada más producirse
Posible solución:
 Definir niveles de prioridad entre las interrupciones, de forma que si
se está atendiendo una interrupción, quedarán pendientes (o
inhibidas) las de menor o igual prioridad.
Problema:
 Si se produce una interrupción más prioritaria que la que se está atendiendo, debe dejarse de atender la que se estaba
atendiendo para atender la más prioritaria. Por lo tanto, debe guardarse el entorno volátil de la interrupción que estaba
atendiendo. La interrupción que pasa a ser atendida, también puede tener que dejarse, al llegar otra de mayor prioridad
... Por tanto, es necesario un lugar a para almacenar entornos volátiles, es decir, un PCB, por cada prioridad de
interrupción - 1.
Inicio del servicio de una interrupción:
Las interrupciones no pueden estar inhibidas mucho tiempo, es decir, el tiempo de tratamiento del FLIH debe ser corto.
Problema:
 Hay interrupciones cuyo tratamiento lleva mucho tiempo. En ese caso, el FLIH, sólo inicia su tratamiento, y luego, lama a
otra rutina ajena o externa a él, que realiza el resto del tratamiento.
Una interrupción puede implicar cambio(s) de estado en algún(os) proceso(s).
TIPOS DE INTERRUPCIONES:
 Interrupciones que provocan cambios de estado del proceso en ejecución
 Algunos extracódigos: Peticiones de E/S
 Señales de error para suspensión
 Interrupciones de reloj: Interrupciones por expiración del temporizador
 Interrupciones que provocan cambios de estado en procesos que no están en ejecución
 Interrupciones de E/S
http://html.rincondelvago.com/sistemas-operativos_29.html
1.6.2 Despachador(Scheduler).
Schedulling.-
Colas de Schedulling: Los procesos que están en estado de espera se quedan en una lista llamada lista o
cola de ready. Los procesos que hacen uso de E/S se guardan en una cola de E/S. Hay una cola de E/S
por cada dispositivo.
Schedullers: Componente del sistema operativo responsable de decidir quien hara uso de la CPU.
Algoritmos de Schedulling.-
FCFS (First Come First Served)
Cuando un proceso llega a la cola de ready su PCB es agregado al final de la lista. El uso de la CPU es
otorgado al primero de la lista y una vez que un proceso comienza a ejecutar no deja de hacerlo hasta
que se termina. El tiempo medio de espera para este algoritmo suele ser bastante alto.
SJF (Shortest Job First)
Una vez que un proceso ejecuta no deja de hacerlo hasta que voluntariamente cambia de estado (no hay
interrupción por tiempo). Asocia a cada proceso el tiempo de CPU que habrá de usar en su próxima
vuelta y va a decidir por el más pequeño. Si hubiera mas de uno utiliza FCFS para desempatar. El mayor
problema de este algoritmo radica en el cálculo de tiempo de uso de CPU. Este se puede aproximar a:
Tn+1= .tn+(1- )Tn
0< <1 Tiempo calculado en la vuelta n
Próximo uso de CPU Tiempo usado en la vuelta n
El problema de este algoritmo es que el tiempo de espera para los procesos largos puede ser demasiado
largo. Constantemente se están entregando los procesos mas cortos y el más grande nunca será
ejecutado.
El FJS se puede subdividir en 2 tipos de algoritmos: PREEMPTIVO o NO PREEMPTIVO
Preemptivo significa que si mientras un proceso se esta ejecutando, entra a la cola de ready un proceso
mas corto, el proceso en la cola de ready se apropia de la CPU y comienza su ejecución.
Priority Schedulling
Asocia a cada proceso una prioridad. Luego selecciona el proceso con mas prioridad para desempatar.
En caso de que hubieran dos o mas procesos con la misma prioridad, se usa FCFS para desempatar.
Hay dos tipo de prioridad en los procesos: la prioridad externa definidas a través del sistema operativo y
la prioridad interna definida por el tiempo de uso de la CPU, el control de E/S, etc. Este algoritmo también
se puede ejecutar de dos maneras: preemptivo y no preemptivo. El algoritmo soluciona el problema del
looping pero el problema es que los procesos con prioridad muy baja tienen chance de no ejecutarse
nunca. Para solucionar este problema de espera infinita el envejecimiento de un proceso eleva su
prioridad.
Round Robin
Este es un algoritmo basado en FCFS. Trata la cola de ready como una lista circular. Introduce el
concepto de "Quantum" o "Time slice" : mayor tiempo de cpu que podrá hacer uso un proceso en cada
vuelta. Si el valor del Quantum fuese muy grande, el algoritmo funcionara como un FCFS. Si el Quantum
fuera muy chico se produce un overhead por context switch (significa que el Quantum se setea en un
tiempo menor al que demora el context switch). Este algoritmo es fuertemente dependiente del Quantum
o Time Slice. El Quantum debe ser mayor que el 80% de los tiempos de CPU que hagan uso los
procesos, pero no el proceso entero sino por cada burst.
MQS (Multilevel Queue Schedulling)
Este algoritmo parte la cola de ready en un numero de colas n. Luego existe un criterio para clasificar en
que cola será colocado un proceso cuando que queda en estado de ready. Cada cola puede manejar su
propio algoritmo de schedulling
MFQS (Multilevel Feed Back Queue Schedulling)
Define los siguientes parámetros:
 Numero de colas
 Algoritmo de schedulling usado en cada cola
 Método para decidir a que cola entrara un proceso cuando entre a estado de ready
 Método para decidir cuando un proceso será enviado a una cola de menor prioridad.
Múltiple CPU
Para que mas de una CPU no tomen el mismo proceso de la cola de ready se utilizan mecanismos de
sincronización. Otro mecanismo seria partir la cola en n colas (n CPUs), pero si se hiciera esto podría
llegar a suceder que los procesos de una CPU fueran todos cortos y los de otra fueran largos por lo cual
habría una CPU que quedaría libre y otra ejecutando. Otra forma sería que una CPU decidiera cual CPU
va a ejecutar cual proceso. Esto puede llevar a que la CPU que esta seleccionando quede un poco mas
cargada porque en algún momento estará ejecutando el algoritmo de selección y un proceso asignado a
ella.
1.6.3 Primitivas de comunicación(IPC).
Hay varias primitivas de comunicación entre procesos (IPC abreviadamente). La mayoría de ellas
requieren algún tipo de modificación a los programas para poder usarlas, pero hay una que es
fácilmente accesible desde la línea de comandos usando la metáfora de ficheros estándar en
UNIX y que no requiere modificación alguna a los programas. Se trata de las tuberías. Siguiendo
la metáfora, UNIX nos permite manejar tuberías como si fueran ficheros normales.
http://www.es.embnet.org/Doc/ECJ/ECJ-1998-02/dbpipes.es.html
Primitivas de comunicación
Algunos kernel tienen operaciones específicas ajustadas a la invocación remota. Amoeba, por
ejemplo, tiene DoOperation/GetRequest--SendReply.
Es más eficiente que el simple Send-Receive (y más fiable y legible).
Amoeba y otros sistemas tienen también comunicación con grupos o radiado (parcial)
(broadcast).
Es importante para tolerancia de fallos, mejora de rendimiento y reconfigurabilidad.
Diversas variantes: como mensajes, como múltiples RPCs, con un sólo valor devuelto, con varios
valores devueltos (todos juntos o pidiendo uno a uno), etc.
En la práctica, mecanismos de comunicación de alto nivel tales como RPC/RMI, radiado y
notificación de sucesos (parecido a los manejadores de interrupciones), se implementan en
middleware y no en el kernel.
Normalmente, sobre un nivel TCP/IP, por razones de transportabilidad, (aunque resulta ``caro").
La IPC ofrece un mecanismo que permite a los procesos cumunicarse y sincronizar sus acciones. La mejor forma de proveer la
comunicación entre procesos es mediante un sistema de mensajes.
La función de un sistema de mensaje es permitir a los procesos comunicarse entre sí sin tener que recurrir a variables compartidas.
Un recurso IPC ofrece por los menos 2 operaciones:
enviar (mensaje) (send) y recibir (mesanje) (receive).
Sea P y Q dos procesos que requieren comunicarse deberán enviarse mensajes; para ello debe existir un enlace de comunicación
entre ellos. Este enlace puede implementarse de diversas maneras.
Los métodos para implementar lógicamente un enlace y las operaciones de enviar / recibir son:
 Comunicación directa o indirecta
 Uso de buffer automático o explícito
 Envío por copia o envío por referencia
 Mensajes de tamaño fijo o variables
Comunicación directa:
Aquí cada proceso que desee comunicarse debe nombrar explícitamente el destinatario o el remitente de la comunicación. Este
esquema se define las primitivas de la sig. manera:
Enviar(P,mensaje): Enviar un mensaje al proceso P.
Recibir(Q. Mensaje): Recibir un mensaje del proceso Q.
Con las siguientes propiedades:
 Se establece automáticamente el enlace entre cada par de procesos. Lo procesos sólo necesitan conocer la identidad de
otro para la comunicación.
 Solo hay un enlace entre cada par de procesos.
 El enlace puede ser unidireccional o bidireccional.
Este esquema exhibe un simetría de direccionamiento; es decir, los procesos tanto emisor como receptor necesitan nombrar al otro
para comunicarse.
Otra variante de este esquema es utilizar asimetría de direccionamiento, con la sig. primitivas:
Enviar(P,mensaje): enviar un mensaje al proceso P.
Recibir(Id,mensaje) : recibir un mensaje de cualquier proceso con el que hubo comunicación.
Aquí sólo el emisor nombra al destinatario; el destinatario no ésta obligado a nombrar al emisor.
Comunicación indirecta:
Aquí los mensajes se envían a, y se reciben de, buzones (también llamados PUERTOS). Un buzón puede considerarse en lo
abstracto como un objeto en el que los procesos pueden colocar mensajes y del cual se pueden sacar mensajes. Cada buzón tiene
una identificación única. Aquí dos proceso se pueden comunicarse sólo si comparten un buzón. Las primitivas se definen como:
Enviar (A,mensaje): enviar un mensaje al buzón A.
Recibir (A,mensaje): recibir un mensaje del buzón A.
Un enlace de comunicación tiene las sig. propiedades:
 Se establece un enlace entre un par de procesos sólo si tienen un buzón compartido.
 Un enlace puede estar asociado a más de dos procesos.
 Entre cada par de procesos en comunicación puede haber varios enlaces distintos, cada uno de los cuales corresponderá a
un buzón.
 Los enlaces pueden ser unidireccionales o bidereccionales.
Hay varias formas de designar el dueño de y los usuarios de un buzón dado. Una posibilidad es permitir que un proceso declare
variables de tipo buzón. El proceso que declara un buzón es el dueño de ese buzón. Cualquier otro proceso que conozca el nombre
de dicho buzón podrá usarlo.
Por otro lado, un buzón propiedad del S.O tiene existencia propia; es independiente y no está unido a ningún proceso específico. El
S.O establece un mecanismo que permite a un proceso:
 Crear un buzón nuevo
 Enviar y recibir mensajes a través del buzón
 Destruir un buzón.
http://html.rincondelvago.com/sistemas-operativos_26.html
Comunicación entre procesos (IPC)
Los procesos en UNIX no comparten memoria, ni siquiera los padres con sus hijos. Por tanto, hay
que establecer algún mecanismo en caso de que se quiera comunicar información entre procesos
concurrentes. El sistema operativo UNIX define tres clases de herramientas de comunicación
entre procesos (IPC): los semáforos, la memoria compartida y los mensajes.
El tipo de llamadas al sistema para estos IPCs es análogo al de los semáforos: existen sendas
funciones shmget y msgget para crear o enlazarse a un segmento de memoria compartida o a
una cola de mensajes, respectivamente. Para alterar propiedades de estos IPCs, incluyendo su
borrado, están las funciones shmctl y msgctl.
Para enviar o recibir mensajes, se utilizan las funciones msgsnd y msgrcv.
En este apartado se describirán brevemente algunas llamadas al sistema disponibles para el uso
de las IPCs dentro de la programación en C.
Semáforos
¿Qué es un semáforo para el UNIX? Formalmente es muy similar a la definición clásica de
Dijkstra, en el sentido de que es una variable entera con operaciones atómicas de inicialización,
incremento y decremento con bloqueo.
El UNIX define tres operaciones fundamentales sobre semáforos:
* semget Crea o toma el control de un semáforo
* semctl Operaciones de lectura y escritura del estado del semáforo. Destrucción del semáforo
* semop Operaciones de incremento o decremento con bloqueo
Como el lenguaje C no tiene un tipo "semáforo" predefinido, si queremos usar semáforos
tenemos que crearlos mediante una llamada al sistema (semget). Esta llamada permite crear un
conjunto de semáforos, en lugar de uno solo. Las operaciones se realizan atómicamente sobre
todo el conjunto; esto evita interbloqueos y oscuras programaciones en muchos casos, pero para
esta práctica es más bien un engorro.
Al crear un semáforo se nos devuelve un número identificador, que va a funcionar casi igual que
los identificadores de fichero de las llamadas open, creat, etc. La función semget nos permite
además "abrir" un semáforo que ya esté creado. Así, por ejemplo, si un proceso crea un semáforo,
otros procesos pueden sincronizarse con aquél (con ciertas restricciones) disponiendo del
semáforo con semget.
Para darle un valor inicial a un semáforo, se utiliza la función semctl.
El UNIX no ofrece las funciones clásicas P y V o equivalentes, sino que dispone de una función
general llamada semop que permite realizar una gama de operaciones que incluyen las P y V.
semctl también se emplea para destruir un semáforo.
Llamadas al sistema para semáforos
Esta es una descripción resumida de las tres llamadas al sistema para operar con semáforos
(semget, semctl y semop). Para una información más completa y fidedigna, diríjanse al manual
de llamadas al sistema (sección 2).
Para el correcto uso de todas estas funciones, han de incluir el fichero cabecera <sys/sem.h>
Las tres funciones devuelven -1 si algo ha ido mal y en tal caso la variable errno informa del
tipo de error.
Apertura o creación de un semáforo
Sintaxis:
int semget ( key_t key, int nsems, int semflg );
semget devuelve el identificador del semáforo correspondiente a la clave key. Puede ser un
semáforo ya existente, o bien semget crea uno nuevo si se da alguno de estos casos:
a) key vale IPC_PRIVATE. Este valor especial obliga a semget a crear un nuevo y único
identificador, nunca devuelto por ulteriores llamadas a semget hasta que sea liberado con
semctl.
b) key no está asociada a ningún semáforo existente, y se cumple que (semflg & IPC_CREAT) es
cierto.
A un semáforo puede accederse siempre que se tengan los permisos adecuados.
Si se crea un nuevo semáforo, el parámetro nsems indica cuántos semáforos contiene el conjunto
creado; los 9 bits inferiores de semflg contienen los permisos estilo UNIX de acceso al semáforo
(usuario, grupo, otros).
semflg es una máscara que puede contener IPC_CREAT, que ya hemos visto, o IPC_EXCL, que
hace crear el semáforo, pero fracasando si ya existía.
Ejemplo:
int semid = semget ( IPC_PRIVATE, 1, IPC_CREAT | 0744 );
Operaciones de control sobre semáforos
Sintaxis:
int semctl ( int semid, int semnum, int cmd... );
Esta es una función compleja (y de interfaz poco elegante) para realizar ciertas operaciones con
semáforos. semid es un identificador de semáforo (devuelto previamente por semget) y
semnum, el semáforo del conjunto sobre el que quieren trabajar. cmd es la operación aplicada; a
continuación puede aparecer un parámetro opcional según la operación definida por cmd.
Las operaciones que les interesan a ustedes son
GETVAL semctl retorna el valor actual del semáforo
SETVAL se modifica el valor del semáforo (un cuarto parámetro entero da el nuevo valor)
IPC_RMID destruye el semáforo
Ejemplos:
valor = semctl (semid,semnum,GETVAL);
semctl (semid,semnum,SETVAL,nuevo_valor);
Operaciones sobre semáforos
Sintaxis:
int semop ( int semid, struct sembuf* sops, unsigned nsops );
Esta función realiza atómicamente un conjunto de operaciones sobre semáforos, pudiendo
bloquear al proceso llamador. semid es el identificador del semáforo y sops es un apuntador a un
vector de operaciones. nsops indica el número de operaciones solicitadas.
La estructura sembuf tiene estos campos:
struct sembuf {
unsigned short sem_num; // número del semáforo dentro del
conjunto
short sem_op; // clase de operación
// según sea >0, <0 o ==0
short sem_flg; // modificadores de operación
};
Cada elemento de sops es una operación sobre algún semáforo del conjunto de semid. El
algoritmo simplificado de la operación realizada es éste (semval es el valor entero contenido en el
semáforo donde se aplica la operación).
si semop<0
si semval >= |semop|
semval -= |semop|
si semval < |semop|
si (semflag & IPC_NOWAIT)!=0
la función semop() retorna
si no
bloquearse hasta que semval >= |semop|
semval -= |semop|
si semop>0
semval += semop
si semop==0
si semval = 0
SKIP
si semval != 0
si (semflag & IPC_NOWAIT)!=0
la función semop() retorna
si no
bloquearse hasta que semval == 0
Resumiendo un poco, si el campo semop de una operación es positivo, se incrementa el valor del
semáforo. Asimismo, si semop es negativo, se decrementa el valor del semáforo si el resultado no
es negativo. En caso contrario el proceso espera a que se dé esa circunstancia. Es decir,
semop==1 produce una operación V y semop==-1, una operación P.
Ejemplos de uso
Para ilustrar de forma concreta el empleo de semáforos bajo UNIX, les mostramos unos ejemplos
de subrutinas en C que les pueden servir como modelos para elaborar sus rutinas de
sincronización en las prácticas de la asignatura.
En concreto, son unas funciones que implementan las operaciones P y V de un semáforo clásico
(inicialización, incremento y decremento con posible bloqueo del proceso llamador). Así
definidas, o con pocas modificaciones, les pueden servir como la interfaz para uso de semáforos
en sus aplicaciones.
#include <sys/types.h> /* para key_t */
/* Crea un semáforo con un valor inicial, dada una clave */
/* Devuelve el identificador (válido o no) del semáforo */
int crea_sem ( key_t clave, int valor_inicial );
/* Operaciones P y V sobre un semáforo */
void sem_P ( int semid );
void sem_V ( int semid );
/***********************************/
/******** IMPLEMENTACIÓN *******/
/***********************************/
#include <sys/ipc.h>
#include <sys/sem.h>
#define PERMISOS 0644
/* crea_sem: abre o crea un semáforo */
int crea_sem ( key_t clave, int valor_inicial )
{
int semid = semget( /* Abre o crea un semáforo... */
clave, /* con una cierta clave */
1, /* con un solo elemento
*/
IPC_CREAT|PERMISOS /* lo crea (IPC_CREAT) con
unos PERMISOS */
);
if ( semid==-1 ) return -1;
/* Da el valor inicial al semáforo */
semctl ( semid, 0, SETVAL, valor_inicial );
return semid;
}
/* abre_sem: Abrir un semáforo que otro proceso ya creó */
int abre_sem (key_t clave)
{
return semget(clave,1,0);
}
/* Operaciones P y V */
void sem_P ( int semid ) /* Operación P */
{
struct sembuf op_P [] =
{
0, -1, 0 /* Decrementa semval o bloquea si cero */
};
semop ( semid, op_P, 1 );
}
void sem_V ( int semid ) /* Operación V */
{
struct sembuf op_V [] =
{
0, 1, 0 /* Incrementa en 1 el semáforo */
};
semop ( semid, op_V, 1 );
}
http://labsopa.dis.ulpgc.es/prog_c/IPC.HTM
Unidad 2 Administración de procesos y del
procesador.
Ver archivo: Unidad2.pdf
2.7 Concepto de proceso.
Un proceso es un programa en ejecución. Un proceso simple tiene un hilo de ejecución, por el momento
dejemos esta última definición como un concepto, luego se verá en más detalle el concepto de hilo. Una
vez definido que es un proceso nos podríamos preguntar cuál es la diferencia entre un programa y un
proceso, y básicamente la diferencia es que un proceso es una actividad de cierto tipo que contiene un
programa, entradas salidas y estados.
Los procesos pueden ser cooperantes o independientes, en el primer caso se entiende que los procesos
interactúan entre sí y pertenecen a una misma aplicación. En el caso de procesos independientes en
general se debe a que no interactúan y un proceso no requiere información de otros o bien porque son
procesos que pertenecen a distintos usuarios.
• Proceso - un programa en ejecución; la ejecucución del proceso debe progresar de manera
secuencial.
• Un proceso incluye:
– program counter
– stack
– data section
Estados de los procesos
• Nuevo: El proceso es creado.
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc
Sistemas operativos isc

Más contenido relacionado

La actualidad más candente

Introducción a las Redes Convergentes
Introducción a las Redes ConvergentesIntroducción a las Redes Convergentes
Introducción a las Redes ConvergentesOpenCourseWare México
 
Arquitectura de cliente-servidor de tres capas
Arquitectura de cliente-servidor de tres capasArquitectura de cliente-servidor de tres capas
Arquitectura de cliente-servidor de tres capasanibalsmit
 
Programacion estructurada
Programacion estructuradaProgramacion estructurada
Programacion estructuradakcarbache
 
Estructura de un compilador 2
Estructura de un compilador 2Estructura de un compilador 2
Estructura de un compilador 2perlallamas
 
maquinas de turing
maquinas de turingmaquinas de turing
maquinas de turingAnel Sosa
 
Cuadro comparativo de softwares de de metodos numericos
Cuadro comparativo de softwares de de metodos numericosCuadro comparativo de softwares de de metodos numericos
Cuadro comparativo de softwares de de metodos numericosJuanCarlos210997
 
Fundamentos de Programación
Fundamentos de ProgramaciónFundamentos de Programación
Fundamentos de ProgramaciónKudos S.A.S
 
Ejercicio práctico aplicaciones móviles
Ejercicio práctico aplicaciones móvilesEjercicio práctico aplicaciones móviles
Ejercicio práctico aplicaciones móvilesEnrique Vargas
 
Cuadro comparativo de herramientas de programacion eclipse, java
Cuadro comparativo de herramientas de programacion eclipse, javaCuadro comparativo de herramientas de programacion eclipse, java
Cuadro comparativo de herramientas de programacion eclipse, javaCCCRiis
 
Resumen de los orígenes y evolución de las redes
Resumen de los orígenes y evolución de las redesResumen de los orígenes y evolución de las redes
Resumen de los orígenes y evolución de las redesMalena García Cadena
 
Fundamentos de Telecomunicaciones Unidad 5 Dispositivos de Comunicación
Fundamentos de TelecomunicacionesUnidad 5 Dispositivos de ComunicaciónFundamentos de TelecomunicacionesUnidad 5 Dispositivos de Comunicación
Fundamentos de Telecomunicaciones Unidad 5 Dispositivos de ComunicaciónJosé Antonio Sandoval Acosta
 
Lenguajes autómatas.
Lenguajes autómatas.Lenguajes autómatas.
Lenguajes autómatas.LuiS YmAY
 
Modelo de desarrollo concurrente
Modelo de desarrollo concurrenteModelo de desarrollo concurrente
Modelo de desarrollo concurrentesamuel ospino
 
Arboles de derivacion
Arboles de derivacionArboles de derivacion
Arboles de derivacionLuis Couoh
 
automatas finitos
 automatas finitos automatas finitos
automatas finitosAnel Sosa
 
Glosario de terminos informaticos de redes de computadoras
Glosario de terminos informaticos de redes de computadorasGlosario de terminos informaticos de redes de computadoras
Glosario de terminos informaticos de redes de computadorasrodrickalban
 
Redes Presentacion
Redes PresentacionRedes Presentacion
Redes PresentacionCarlos Rup
 

La actualidad más candente (20)

Tutorial de JFLAP
Tutorial de JFLAPTutorial de JFLAP
Tutorial de JFLAP
 
Introducción a las Redes Convergentes
Introducción a las Redes ConvergentesIntroducción a las Redes Convergentes
Introducción a las Redes Convergentes
 
Arquitectura de cliente-servidor de tres capas
Arquitectura de cliente-servidor de tres capasArquitectura de cliente-servidor de tres capas
Arquitectura de cliente-servidor de tres capas
 
Programacion estructurada
Programacion estructuradaProgramacion estructurada
Programacion estructurada
 
Estructura de un compilador 2
Estructura de un compilador 2Estructura de un compilador 2
Estructura de un compilador 2
 
maquinas de turing
maquinas de turingmaquinas de turing
maquinas de turing
 
Cuadro comparativo de softwares de de metodos numericos
Cuadro comparativo de softwares de de metodos numericosCuadro comparativo de softwares de de metodos numericos
Cuadro comparativo de softwares de de metodos numericos
 
Yacc
YaccYacc
Yacc
 
Fundamentos de Programación
Fundamentos de ProgramaciónFundamentos de Programación
Fundamentos de Programación
 
Ejercicio práctico aplicaciones móviles
Ejercicio práctico aplicaciones móvilesEjercicio práctico aplicaciones móviles
Ejercicio práctico aplicaciones móviles
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Cuadro comparativo de herramientas de programacion eclipse, java
Cuadro comparativo de herramientas de programacion eclipse, javaCuadro comparativo de herramientas de programacion eclipse, java
Cuadro comparativo de herramientas de programacion eclipse, java
 
Resumen de los orígenes y evolución de las redes
Resumen de los orígenes y evolución de las redesResumen de los orígenes y evolución de las redes
Resumen de los orígenes y evolución de las redes
 
Fundamentos de Telecomunicaciones Unidad 5 Dispositivos de Comunicación
Fundamentos de TelecomunicacionesUnidad 5 Dispositivos de ComunicaciónFundamentos de TelecomunicacionesUnidad 5 Dispositivos de Comunicación
Fundamentos de Telecomunicaciones Unidad 5 Dispositivos de Comunicación
 
Lenguajes autómatas.
Lenguajes autómatas.Lenguajes autómatas.
Lenguajes autómatas.
 
Modelo de desarrollo concurrente
Modelo de desarrollo concurrenteModelo de desarrollo concurrente
Modelo de desarrollo concurrente
 
Arboles de derivacion
Arboles de derivacionArboles de derivacion
Arboles de derivacion
 
automatas finitos
 automatas finitos automatas finitos
automatas finitos
 
Glosario de terminos informaticos de redes de computadoras
Glosario de terminos informaticos de redes de computadorasGlosario de terminos informaticos de redes de computadoras
Glosario de terminos informaticos de redes de computadoras
 
Redes Presentacion
Redes PresentacionRedes Presentacion
Redes Presentacion
 

Destacado

Dispositvos de entrada y salida
Dispositvos de entrada y salidaDispositvos de entrada y salida
Dispositvos de entrada y salidaitzayana bacilio
 
Generalidades de sistemas operativos
Generalidades de sistemas operativosGeneralidades de sistemas operativos
Generalidades de sistemas operativosyacante
 
Sistema Operativo Solaris
Sistema Operativo SolarisSistema Operativo Solaris
Sistema Operativo SolarisMONSE100
 
Osciloscopio para-electromecanicos
Osciloscopio para-electromecanicosOsciloscopio para-electromecanicos
Osciloscopio para-electromecanicosjoaquinin1
 
Electricidad del automovil
Electricidad del automovilElectricidad del automovil
Electricidad del automovilricrodriguez
 
Refrigeracion automotriz
Refrigeracion automotrizRefrigeracion automotriz
Refrigeracion automotrizSENA
 
Electricidad Y Electrónica
Electricidad Y ElectrónicaElectricidad Y Electrónica
Electricidad Y Electrónicatrashrudeboy
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativospatopatefu
 
Cuestionario De Hardware Y Software
Cuestionario De Hardware Y SoftwareCuestionario De Hardware Y Software
Cuestionario De Hardware Y SoftwareFernando Salamero
 
Proyecto De Grado
Proyecto De GradoProyecto De Grado
Proyecto De Gradoguestfd2ed5
 
2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShareSlideShare
 
What to Upload to SlideShare
What to Upload to SlideShareWhat to Upload to SlideShare
What to Upload to SlideShareSlideShare
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShareSlideShare
 

Destacado (20)

Dispositvos de entrada y salida
Dispositvos de entrada y salidaDispositvos de entrada y salida
Dispositvos de entrada y salida
 
Hilos en solaris.
Hilos en solaris.Hilos en solaris.
Hilos en solaris.
 
So
SoSo
So
 
Sistema Operativo Solaris
Sistema Operativo SolarisSistema Operativo Solaris
Sistema Operativo Solaris
 
Generalidades de sistemas operativos
Generalidades de sistemas operativosGeneralidades de sistemas operativos
Generalidades de sistemas operativos
 
Sistema Operativo Solaris
Sistema Operativo SolarisSistema Operativo Solaris
Sistema Operativo Solaris
 
Osciloscopio para-electromecanicos
Osciloscopio para-electromecanicosOsciloscopio para-electromecanicos
Osciloscopio para-electromecanicos
 
Solaris
SolarisSolaris
Solaris
 
Direccion electrica
Direccion electricaDireccion electrica
Direccion electrica
 
Electricidad del automovil
Electricidad del automovilElectricidad del automovil
Electricidad del automovil
 
Refrigeracion automotriz
Refrigeracion automotrizRefrigeracion automotriz
Refrigeracion automotriz
 
Electricidad Y Electrónica
Electricidad Y ElectrónicaElectricidad Y Electrónica
Electricidad Y Electrónica
 
Normas y estandares
Normas y estandaresNormas y estandares
Normas y estandares
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Cuestionario De Hardware Y Software
Cuestionario De Hardware Y SoftwareCuestionario De Hardware Y Software
Cuestionario De Hardware Y Software
 
Practica1
Practica1Practica1
Practica1
 
Proyecto De Grado
Proyecto De GradoProyecto De Grado
Proyecto De Grado
 
2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare
 
What to Upload to SlideShare
What to Upload to SlideShareWhat to Upload to SlideShare
What to Upload to SlideShare
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShare
 

Similar a Sistemas operativos isc

Sistemas operativos 1 pdf
Sistemas operativos 1 pdfSistemas operativos 1 pdf
Sistemas operativos 1 pdffernyMultimedia
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas OperativosJunior
 
Sistemaoperativo 101120071653-phpapp02
Sistemaoperativo 101120071653-phpapp02Sistemaoperativo 101120071653-phpapp02
Sistemaoperativo 101120071653-phpapp02txetxu12
 
Trabajo de sistema operativo px el juevez[1]
Trabajo de sistema operativo px el juevez[1]Trabajo de sistema operativo px el juevez[1]
Trabajo de sistema operativo px el juevez[1]kaory22
 
Organizacion de los sistemas operativos
Organizacion de los sistemas operativosOrganizacion de los sistemas operativos
Organizacion de los sistemas operativosJoseGCordero
 
Introduccion a los sistemas operativos
Introduccion a los sistemas operativosIntroduccion a los sistemas operativos
Introduccion a los sistemas operativosFriky Equis De
 
Presentacion final..... sistemas operativos.
Presentacion final..... sistemas operativos.Presentacion final..... sistemas operativos.
Presentacion final..... sistemas operativos.anaid0203
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas OperativosNoeljg69
 
Trabajo so
Trabajo soTrabajo so
Trabajo soNoeljg69
 

Similar a Sistemas operativos isc (20)

Faseindividulal 1
Faseindividulal 1Faseindividulal 1
Faseindividulal 1
 
Sistemas operativos 1 pdf
Sistemas operativos 1 pdfSistemas operativos 1 pdf
Sistemas operativos 1 pdf
 
Taller Informatica
Taller InformaticaTaller Informatica
Taller Informatica
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas Operativos
 
Unidadd 1 s.o
Unidadd 1 s.oUnidadd 1 s.o
Unidadd 1 s.o
 
Tics software
Tics software Tics software
Tics software
 
Presentación1
Presentación1Presentación1
Presentación1
 
Sistemaoperativo 101120071653-phpapp02
Sistemaoperativo 101120071653-phpapp02Sistemaoperativo 101120071653-phpapp02
Sistemaoperativo 101120071653-phpapp02
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Los sistemas operativos
Los sistemas operativosLos sistemas operativos
Los sistemas operativos
 
Trabajo de sistema operativo px el juevez[1]
Trabajo de sistema operativo px el juevez[1]Trabajo de sistema operativo px el juevez[1]
Trabajo de sistema operativo px el juevez[1]
 
que es un sistema operativo
 que es un sistema operativo que es un sistema operativo
que es un sistema operativo
 
Sistema operativo
Sistema operativoSistema operativo
Sistema operativo
 
Sistemas operativos resumen
Sistemas operativos resumenSistemas operativos resumen
Sistemas operativos resumen
 
Organizacion de los sistemas operativos
Organizacion de los sistemas operativosOrganizacion de los sistemas operativos
Organizacion de los sistemas operativos
 
Introduccion a los sistemas operativos
Introduccion a los sistemas operativosIntroduccion a los sistemas operativos
Introduccion a los sistemas operativos
 
Presentacion final..... sistemas operativos.
Presentacion final..... sistemas operativos.Presentacion final..... sistemas operativos.
Presentacion final..... sistemas operativos.
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas Operativos
 
Trabajo so
Trabajo soTrabajo so
Trabajo so
 

Sistemas operativos isc

  • 1. Sistemas Operativos Unidad Temas Subtemas 1 Introducción a los sistemas operativos. 1.1 Definición y concepto. 1.2Funciones y características. 1.3Evolución histórica. 1.4Clasificación. 1.5Estructura (niveles o estratos de diseño). 1.6Núcleo. 1.6.1 Interrupciones (FLIH). 1.6.2 Despachador(Scheduler). 1.6.3 Primitivas de comunicación(IPC). 2 Administración de procesos y del procesador. 2.1 Concepto de proceso. 2.2 Estados y transiciones de los procesos 2.3 Procesos ligeros (Hilos o hebras). 2.4 Concurrencia y secuenciabilidad. 2.4.1 Exclusión mutua de secciones criticas. 2.4.2 Sincronización de procesos en S.C. 2.4.2.1 Mecanismo de semáforos. 2.4.2.2 Mecanismo de monitores. 2.4.3 Interbloqueo (DeadLock). 2.4.3.1 Prevención. 2.4.3.2 Detección. 2.4.3.3 Recuperación. 2.5 Niveles, objetivos y criterios de planificación. 2.6 Técnicas de administración del planificador. 2.6.1 FIFO 2.6.2 SJF 2.6.3 RR 2.6.4 Queves multi-level. 2.6.5 Multi-level feedback queves. 3 Administración de memoria. 3.1 Política y filosofía. 3.2 Memoria real. 3.2.1 Administración de almacenamiento. 3.2.2 Jerarquía. 3.2.3 Estrategia de administración de memoria. 3.2.4 Asignación contigua v.s. no contigua. 3.2.5 Multiprogramación de partición fija, partición variable, con intercambio
  • 2. de almacenamiento. 3.3 Organización de memoria virtual. 3.3.1 Evaluación de las organizaciones de almacenamiento. 3.3.2 Paginación. 3.3.3 Segmentación. 3.3.4 Sistemas de paginación segmentación. 3.4 Administración de memoria virtual. 3.4.1 Estrategias de administración. 3.4.2 Técnicas de reemplazo de páginas. 3.4.3 Paginación por demanda. 3.4.4 Paginación anticipada. 3.4.5 Liberación de página. 3.4.6 Tamaño de página. 4 Administración de entrada/salida. 4.1 Dispositivos y manejadores de dispositivos (device drivers). 4.2 Mecanismos y funciones de los manejadores de dispositivos (device drivers). 4.3 Estructuras de datos para manejo de dispositivos. 4.4 Operaciones de Entrada /salida. 5 Sistema de archivos. 5.1 Concepto. 5.2 Noción de archivo real y virtual. 5.3 Componentes de un sistema de archivos. 5.4 Organización lógica y física. 5.5 Mecanismos de acceso a los archivos. 5.6 Manejo de espacio en memoria secundaria. 5.7 Modelo jerárquico. 5.8 Mecanismos de recuperación en caso de falla. 6 Protección y seguridad. 6.1 Concepto y objetivos de protección. 6.2 Funciones del sistema de protección. 6.3 Implantación de matrices de acceso. 6.4 Protección basada en el lenguaje. 6.5 Concepto de seguridad. 6.6 Clasificaciones de la seguridad. 6.7 Validación y amenazas al sistema. 6.8 Cifrado.
  • 3. Unidad 1 Introducción a los sistemas operativos. 1.7 Definición y concepto. Un sistema operativo es el programa que oculta la verdad del hardware al programador y presenta una vista simple y agradable de los archivos nominados que pueden leerse y escribirse. Es sistema operativo resguarda al programador del hardware del disco y presenta una interfaz simple orientada al archivo, también disimula mucho del trabajo concerniente a interrupciones, relojes o cronómetros, manejo de memoria y otras características de bajo nivel. Desde su creación, las computadoras digitales han utilizado un sistema de codificación de instrucciones en sistema de numeración binaria, es decir con los 0S. Esto se debe a que los circuitos integrados funcionan con este principio, es decir, hay corriente o no hay corriente. En el origen de la historia de las computadoras ( hace unos cuarenta años), los sistemas operativos no existían y la introducción de un programa para ser ejecutado se convertía en un increíble esfuerzo que solo podía ser llevado a cabo por muy pocos expertos. Esto hacia que las computadoras fueran muy complicadas de usar y que se requiriera tener altos conocimientos técnicos para operarlas. Era tan complejo su manejo, que en algunos casos el resultado llegaba a ser desastroso. Además, el tiempo requerido para introducir un programa en aquellas grandes máquinas de lento proceso superaba por mucho el de ejecución y resultaba poco provechosa la utilización de computadoras para resolución de problemas prácticos. Se buscaron medios más elaborados para manipular la computadora, pero que a su vez simplificaran la labor del operador o el usuario. Es entonces cuando surge la idea de crear un medio para que el usuario pueda operar la computadora con un entorno, lenguaje y operación bien definido para hacer un verdadero uso y explotación de esta. Surgen los sistemas operativos. Un sistema operativo es el encargado de brindar al usuario una forma amigable y sencilla de operar, interpretar, codificar y emitir las ordenes al procesador central para que este realice las tareas necesarias y especificas para completar una orden. El sistema operativo, es el instrumento indispensable para hacer de la computadora un objeto útil. Bajo este nombre se agrupan todos aquellos programas que permiten a los usuarios la utilización de este enredo de cables y circuitos, que de otra manera serian difíciles de controlar. Un sistema operativo se define como un conjunto de procedimientos manuales y automáticos, que permiten a un grupo de usuarios compartir una instalación de computadora eficazmente. Existen diversas definiciones de lo que es un Sistema Operativo, pero no hay una definición exacta, es decir una que sea estándar; a continuación se presentan algunas: 1.- Se pueden imaginar un Sistema Operativo como los programas, instalados en el software o firmware, que hacen utilizable el hardware. El hardware proporciona la "capacidad bruta de cómputo"; los sistemas operativos ponen dicha capacidad de cómputo al alcance de los usuarios y administran cuidadosamente el hardware para lograr un buen rendimiento.
  • 4. 2.- Los Sistemas Operativos son ante todo administradores de recursos; el principal recurso que administran es el hardware del computador ;además de los procesadores, los medios de almacenamiento, los dispositivos de entrada/salida, los dispositivos de comunicación y los datos. 3.- Un Sistema Operativo es un programa que actúa como intermediario entre el usuario y el hardware del computador y su propósito es proporcionar el entorno en el cual el usuario pueda ejecutar programas. Entonces, el objetivo principal de un Sistema Operativo es, lograr que el sistema de computación se use de manera cómoda, y el objetivo secundario es que el hardware del computador se emplee de manera eficiente. 4.- Un Sistema Operativo es un conjunto de programas que controla la ejecución de programas de aplicación y actúa como una interfaz entre el usuario y el hardware de una computadora, esto es, un Sistema Operativo explota y administra los recursos de hardware de la computadora con el objeto de proporcionar un conjunto de servicios a los usuarios del sistema. En resumen, se podría decir que los Sistemas Operativos son un conjunto de programas que crean la interfaz del hardware con el usuario, y que tiene dos funciones primordiales, que son: o Gestionar el hardware.- Se refiere al hecho de administrar de una forma más eficiente los recursos de la máquina. o Facilitar el trabajo al usuario.-Permite una comunicación con los dispositivos de la máquina. El Sistema Operativo se encuentra almacenado en la memoria secundaria. Primero se carga y ejecuta un pedazo de código que se encuentra en el procesador, el cual carga el BIOS, y este a su vez carga el Sistema Operativo que carga todos los programas de aplicación y software variado. 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.  Interpreta los comandos que permiten al usuario comunicarse con el ordenador.  Coordina y manipula el hardware de la computadora, como la memoria, las impresoras, las unidades de disco, el teclado o el mouse.  Organiza los archivos en diversos dispositivos de almacenamiento, como discos flexibles, discos duros, discos compactos o cintas magnéticas.  Gestiona los errores de hardware y la pérdida de datos.  Servir de base para la creación del software logrando que equipos de marcas distintas funcionen de manera análoga, salvando las diferencias existentes entre ambos.  Configura el entorno para el uso del software y los periféricos; dependiendo del tipo de máquina que se emplea, debe establecerse en forma lógica la disposición y características del equipo. Como por ejemplo, una microcomputadora tiene físicamente dos unidades de disco, puede simular el uso de otras unidades de disco, que pueden ser virtuales utilizando parte de la memoria principal para tal fin. En caso de estar conectado a una red, el sistema operativo se convierte en la plataforma de trabajo de los usuarios y es este quien controla los elementos o recursos que comparten. De igual forma, provee de protección a la información que almacena. Funciones de los sistemas operativos. 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
  • 5. 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 esta 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 de los sistemas operativos. En general, se puede decir que un Sistema Operativo tiene las siguientes características:  Conveniencia. Un Sistema Operativo hace más conveniente el uso de una computadora.  Eficiencia. Un Sistema Operativo permite que los recursos de la computadora se usen de la manera más eficiente posible.  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.  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.  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.  Organizar datos para acceso rápido y seguro.  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.  Procesamiento por bytes de flujo a través del bus de datos.  Facilitar las entradas y salidas. Un Sistema Operativo debe hacerle fácil al usuario el acceso y manejo de los dispositivos de Entrada/Salida de la computadora. El software de aplicación son programas que se utilizan para diseñar, tal como el procesador de palabras, lenguajes de programación, hojas de cálculo, etc. El software de base sirve para interactuar el usuario con la máquina, son un conjunto de programas que facilitan el ambiente plataforma, y permite el diseño del mismo. El Software de base está compuesto por : o Cargadores. o Compiladores. o Ensambladores. o Macros. 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). Cada generación Sucesiva de hardware ha ido
  • 6. acompañada de reducciones substanciales en los costos, tamaño, emisión de calor y consumo de energía, y por incrementos notables en velocidad y capacidad. Generacion Cero (década de 1940) Los primeros sistemas computacionales no poseían sistemas operativos. Los usuarios tenían completo acceso al lenguaje de la maquina. Todas las instrucciones eran codificadas a mano. Primera Generacion (década de 1950) Los sistemas operativos de los años cincuenta fueron diseñados para hacer mas 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 tenia control total de la maquina. Al terminar cada trabajo, el control era devuelto al sistema operativo, el cual limpiaba y leía e iniciaba el trabajo siguiente. Al inicio de los 50's esto había mejorado un poco con la introducción de tarjetas perforadas (las cuales servían para introducir los programas de lenguajes de máquina), puesto que ya no había necesidad de utilizar los tableros enchufables. Además el laboratorio de investigación General Motors implementó el primer sistema operativo para la IBM 701. Los sistemas de los 50's generalmente ejecutaban una sola tarea, y la transición entre tareas se suavizaba para lograr la máxima utilización del sistema. Esto se conoce como sistemas de procesamiento por lotes de un sólo flujo, ya que los programas y los datos eran sometidos en grupos o lotes. La introducción del transistor a mediados de los 50's cambió la imagen radicalmente. Se crearon máquinas suficientemente confiables las cuales se instalaban en lugares especialmente acondicionados, aunque sólo las grandes universidades y las grandes corporaciones o bien las oficinas del gobierno se podían dar el lujo de tenerlas. Para poder correr un trabajo (programa), tenían que escribirlo en papel (en Fortran o en lenguaje ensamblador) y después se perforaría en tarjetas. Enseguida se llevaría la pila de tarjetas al cuarto de introducción al sistema y la entregaría a uno de los operadores. Cuando la computadora terminara el trabajo, un operador se dirigiría a la impresora y desprendería la salida y la llevaría al cuarto de salida, para que la recogiera el programador. Segunda Generacion (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 maquina. La independencia de dispositivos aparece después. Un usuario que desea escribir datos en una cinta en sistemas de la primera generación tenia que hacer referencia especifica a una unidad de cinta particular. En la segunda generación, el programa del usuario especificaba tan solo que un archivo iba a ser escrito en una unidad de cinta con cierto numero de pistas y cierta densidad.
  • 7. Se desarrollo sistemas compartidos, en la que los usuarios podían acoplarse directamente con el computador a través de terminales. Surgieron sistemas de tiempo real, en que los computadores fueron utilizados en el control de procesos industriales. Los sistemas de tiempo real se caracterizan por proveer una respuesta inmediata. Tercera Generacion (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. Estos sistemas introdujeron mayor complejidad a los ambientes computacionales; una complejidad a la cual, en un principio, no estaban acostumbrados los usuarios. Cuarta Generacion (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 ha 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 esta 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 mas 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 maquinas virtuales es utilizado. El usuario ya no se encuentra interesado en los detalles físicos de; sistema de computación que esta siendo accedida. En su lugar, el usuario ve un panorama llamado maquina virtual creado 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. Historia de los Sistemas Operativos. Para tratar de comprender los requisitos de un Sistema Operativo y el significado de las principales características de un Sistema Operativo contemporáneo, es útil considerar como han ido evolucionando éstos con el tiempo. Existen diferentes enfoques o versiones de como han ido evolucionando los Sistemas Operativos La primera de estas versiones podría ser esta:
  • 8. En los 40's, se introducen los programas bit a bit, por medio de interruptores mecánicos y después se introdujo el leng. máquina que trabajaba por tarjetas perforadas. Con las primeras computadoras, desde finales de los años 40 hasta la mitad de los años 50, el programador interactuaba de manera directa con el hardware de la computadora, no existía realmente un Sistema Operativo; las primeras computadoras utilizaban bulbos, la entrada de datos y los programas se realizaban a través del lenguaje máquina (bits) o a través de interruptores. Durante los años 50's y 60's.- A principio de los 50's, la compañía General's Motors implanto el primer sistema operativo para su IBM 170. Empiezan a surgir las tarjetas perforadas las cuales permiten que los usuarios (que en ese tiempo eran programadores, diseñadores, capturistas, etc.), se encarguen de modificar sus programas. Establecían o apartaban tiempo, metían o introducían sus programas, corregían y depuraban sus programas en su tiempo. A esto se le llamaba trabajo en serie. Todo esto se traducía en pérdida de tiempo y tiempos de programas excesivos. En los años 60's y 70's se genera el circuito integrado, se organizan los trabajos y se generan los procesos Batch (por lotes), lo cual consiste en determinar los trabajos comunes y realizarlos todos juntos de una sola vez. En esta época surgen las unidades de cinta y el cargador de programas, el cual se considera como el primer tipo de Sistema Operativo. En los 80's, inició el auge de la INTERNET en los Estados Unidos de América. A finales de los años 80's comienza el gran auge y evolución de los Sistemas Operativos. Se descubre el concepto de multiprogramación que consiste en tener cargados en memoria a varios trabajos al mismo tiempo, tema principal de los Sistemas Operativos actuales. Los 90's y el futuro, entramos a la era de la computación distribuida y del multiprocesamiento a través de múltiples redes de computadoras, aprovechando el ciclo del procesador. Se tendrá una configuración dinámica con un reconocimiento inmediato de dispositivos y software que se añada o elimine de las redes a través de procesos de registro y localizadores. La conectividad se facilita gracias a estándares y protocolos de sistemas abiertos por organizaciones como la Org. Intern. de normas, fundación de software abierto, todo estará mas controlado por los protocolos de comunicación OSI y por la red de servicios digital ISDN. Se ha desarrollado otra versión, la cual se ha hecho en base a etapas o generaciones: 1a. Etapa (1945-1955) : Bulbos y conexiones. Después de los infructuosos esfuerzos de Babbage, hubo poco progreso en la construcción de las computadoras digitales, hasta la Segunda Guerra Mundial. A mitad de la década de los 40's, Howard Aiken (Harvard), John Von Newman (Instituto de Estudios Avanzados, Princeton), J. Prespe R. Eckert y Williams Mauchley (Universidad de Pennsylvania), así como Conrad Zuse (Alemania), entre otros lograron construir máquinas de cálculo mediante bulbos. Estas máquinas eran enormes y llenaban cuartos completos con decenas de miles de bulbos, pero eran mucho más lentas que la computadora casera más económica en nuestros días. Toda la programación se llevaba a cabo en lenguaje de máquina absoluto y con frecuencia se utilizaban conexiones para controlar las funciones básicas de la máquina. Los lenguajes de programación eran desconocidos (incluso el lenguaje ensamblador). No se oía de los Sistemas Operativos el modo usual de operación consistía en que el programador reservaba cierto período en una hoja de reservación pegada a la pared, iba al cuarto de la máquina, insertaba su conexión a la computadora y pasaba unas horas esperando que ninguno de los 20,000 o más bulbos se quemara durante la ejecución. La inmensa
  • 9. mayoría de los problemas eran cálculos numéricos directos, por ejemplo, el cálculo de valores para tablas de senos y cosenos. A principio de la década de los 50's la rutina mejoro un poco con la introducción de las tarjetas perforadas. Fue entonces posible escribir los programas y leerlas en vez de insertar conexiones, por lo demás el proceso era el mismo. 2a. Etapa. (1955-1965) : Transistores y Sistemas de Procesamiento por lotes. La introducción del transistor a mediados de los años 50's modificó en forma radical el panorama. Las computadoras se volvieron confiables de forma que podían fabricarse y venderse a clientes, con la esperanza de que ellas continuaran funcionando lo suficiente como para realizar un trabajo en forma. Dado el alto costo del equipo, no debe sorprender el hecho de que las personas buscaron en forma por demás rápidas vías para reducir el tiempo invertido. La solución que, por lo general se adoptó, fue la del sistema de procesamiento por lotes. 3ra Etapa (1965-1980 ) : Circuitos integrados y multiprogramación. La 360 de IBM fue la primera línea principal de computadoras que utilizó los circuitos integrados, lo que proporcionó una gran ventaja en el precio y desempeño con respecto a las máquinas de la segunda generación, construidas a partir de transistores individuales. Se trabajo con un sistema operativo enorme y extraordinariamente complejo. A pesar de su enorme tamaño y sus problemas el sistema operativo de la línea IBM 360 y los sistemas operativos similares de esta generación producidos por otros fabricantes de computadoras realmente pudieron satisfacer, en forma razonable a la mayoría de sus clientes. También popularizaron varias técnicas fundamentales, ausentes de los sistemas operativos de la segunda generación, de las cuales la más importante era la de multiprogramación. Otra característica era la capacidad de leer trabajos de las tarjetas al disco, tan pronto como llegara al cuarto de cómputo. Así, siempre que concluyera un trabajo el sistema operativo podía cargar un nuevo trabajo del disco en la partición que quedara desocupada y ejecutarlo. 4ta Etapa (1980-Actualidad) : Computadoras personales. Un interesante desarrollo que comenzó a llevarse a cabo a mediados de la década de los ochenta ha sido el crecimiento de las redes de computadoras personales, con sistemas operativos de red y sistemas operativos distribuidos. En los sistema operativo de red, los usuarios están conscientes de la existencia de varias computadoras y pueden conectarse con máquinas remotas y copiar archivos de una máquina a otra. Cada máquina ejecuta su propio sistema operativo local y tiene su propio usuario. Por el contrario, un sistema operativo distribuido es aquel que aparece ante sus usuarios como un sistema tradicional de un solo procesador, aun cuando esté compuesto por varios procesadores. En un sistema distribuido verdadero, los usuarios no deben ser conscientes del lugar donde su programa se ejecute o de lugar donde se encuentren sus archivos; eso debe ser manejado en forma automática y eficaz por el sistema operativo. 1.4 Clasificación. Sistema Operativo Multitareas.
  • 10. Es el modo de funcionamiento disponible en algunos sistemas operativos, mediante el cual una computadora procesa varias tareas al mismo tiempo. Existen varios tipos de multitareas. La conmutación de contextos (context Switching) es un tipo muy simple de multitarea en el que dos o más aplicaciones se cargan al mismo tiempo, pero en el que solo se esta procesando la aplicación que se encuentra en primer plano (la que ve el usuario). Para activar otra tarea que se encuentre en segundo plano, el usuario debe traer al primer plano la ventana o pantalla que contenga esa aplicación. En la multitarea cooperativa, la que se utiliza en el sistema operativo Macintosh, las tareas en segundo plano reciben tiempo de procesado durante los tiempos muertos de la tarea que se encuentra en primer plano (por ejemplo, cuando esta aplicación esta esperando información del usuario), y siempre que esta aplicación lo permita. En los sistemas multitarea de tiempo compartido, como OS/2, cada tarea recibe la atención del microprocesador durante una fracción de segundo. Para mantener el sistema en orden, cada tarea recibe un nivel de prioridad o se procesa en orden secuencial. Dado que el sentido temporal del usuario es mucho más lento que la velocidad de procesamiento del ordenador, las operaciones de multitarea en tiempo compartido parecen ser simultáneas. Sistema Operativo Monotareas. Los sistemas operativos monotareas son más primitivos y es todo lo contrario al visto anteriormente, es decir, solo pueden manejar un proceso en cada momento o que solo puede ejecutar las tareas de una en una. Por ejemplo cuando la computadora esta imprimiendo un documento, no puede iniciar otro proceso ni responder a nuevas instrucciones hasta que se termine la impresión. Sistema Operativo Monousuario. Los sistemas monousuarios son aquellos que nada más puede atender a un solo usuario, gracias a las limitaciones creadas por el hardware, los programas o el tipo de aplicación que se este ejecutando. Estos tipos de sistemas son muy simples, porque todos los dispositivos de entrada, salida y control dependen de la tarea que se esta utilizando, esto quiere decir, que las instrucciones que se dan, son procesadas de inmediato; ya que existe un solo usuario. Y están orientados principalmente por los microcomputadores. Sistema Operativo Multiusuario. Es todo lo contrario a monousuario; y en esta categoría se encuentran todos los sistemas que cumplen simultáneamente las necesidades de dos o más usuarios, que comparten mismos recursos. Este tipo de sistemas se emplean especialmente en redes. En otras palabras consiste en el fraccionamiento del tiempo (timesharing). Secuencia por Lotes. La secuencia por lotes o procesamiento por lotes en microcomputadoras, es la ejecución de una lista de comandos del sistema operativo uno tras otro sin intervención del usuario. En los ordenadores más grandes el proceso de recogida de programas y de conjuntos de datos de los usuarios, la ejecución de uno o unos pocos cada vez y la entrega de los recursos a los usuarios. Procesamiento por lotes también puede referirse al proceso de almacenar transacciones durante un cierto lapso antes de su envío a un archivo maestro, por lo general una operación separada que se efectúa durante la noche.
  • 11. Los sistemas operativos por lotes (batch), en los que los programas eran tratados por grupos (lote) en ves de individualmente. La función de estos sistemas operativos consistía en cargar en memoria un programa de la cinta y ejecutarlo. Al final este, se realizaba el salto a una dirección de memoria desde donde reasumía el control del sistema operativo que cargaba el siguiente programa y lo ejecutaba. De esta manera el tiempo entre un trabajo y el otro disminuía considerablemente. Tiempo Real. Un sistema operativo en tiempo real procesa las instrucciones recibidas al instante, y una vez que han sido procesadas muestra el resultado. Este tipo tiene relación con los sistemas operativos monousuarios, ya que existe un solo operador y no necesita compartir el procesador entre varias solicitudes. Su característica principal es dar respuestas rápidas; por ejemplo en un caso de peligro se necesitarían respuestas inmediatas para evitar una catástrofe. Tiempo Compartido. El tiempo compartido en ordenadores o computadoras consiste en el uso de un sistema por más de una persona al mismo tiempo. El tiempo compartido ejecuta programas separados de forma concurrente, intercambiando porciones de tiempo asignadas a cada programa (usuario). En este aspecto, es similar a la capacidad de multitareas que es común en la mayoría de los microordenadores o las microcomputadoras. Sin embargo el tiempo compartido se asocia generalmente con el acceso de varios usuarios a computadoras más grandes y a organizaciones de servicios, mientras que la multitarea relacionada con las microcomputadoras implica la realización de múltiples tareas por un solo usuario. CLASIFICACIÓN DE LOS SISTEMAS OPERATIVOS Los sistemas operativos se clasifican en:  Sistemas operativos por lotes.  Sistemas operativos multiprogramación o de multitarea.  Sistemas operativos multiusuario.  Sistemas operativos de tiempo compartido.  Sistemas operativos de tiempo real.  Sistemas operativos distribuidos.  Sistemas operativos de red.  Sistemas operativos paralelos. Sistemas operativos por lotes. Los sistemas operativos por lotes requieren que la información esté reunida en bloque o "lote" (el programa, los datos, y las instrucciones). Los trabajos son procesados en el orden de admisión, según el modelo de "primero en llegar primero en ser atendido". En estos sistemas la memoria se divide en dos zonas. Una de ellas es ocupada por el sistema operativo, y la otra se usa para cargar programas transitorios para su ejecución. Cuando termina la ejecución de un programa se carga un nuevo programa en la misma zona de memoria.
  • 12. Algunos ejemplos de Sistemas Operativos por lotes exitosos son el SCOPE, del DC6600, el cual está orientado a procesamiento científico pesado, y el EXEC II para el UNIVAC 1107, orientado a procesamiento académico. Algunas otras características con que cuentan los Sistemas Operativos por lotes son:  Requiere que el programa, datos y órdenes al sistema sean remitidos todos juntos en forma de lote.  Permiten poca o ninguna interacción usuario/programa en ejecución.  Mayor potencial de utilización de recursos que procesamiento serial simple en sistemas multiusuarios.  No conveniente para desarrollo de programas por bajo tiempo de retorno y depuración fuera de línea.  Conveniente para programas de largos tiempos de ejecución (Ej., análisis estadísticos, nóminas de personal, etc.).  Se encuentra en muchos computadores personales combinados con procesamiento serial.  Planificación del procesador sencilla, típicamente procesados en orden de llegada.  Planificación de memoria sencilla, generalmente se divide en dos: parte residente del S.O. y programas transitorios.  No requieren gestión crítica de dispositivos en el tiempo.  Suelen proporcionar gestión sencilla de manejo de archivos: se requiere poca protección y ningún control de concurrencia para el acceso. Figura. Trabajos más comunes que realiza el Sistema Operativo por lotes. Sistemas operativos multiprogramación o de multitareas. Los sistemas de multiprogramación son capaces de soportar dos o más procesos concurrentes múltiples, permiten que residan al mismo tiempo en la memoria primaria las instrucciones y los datos procedentes de dos o más procesos. Estos sistemas implican la operación de multiproceso, para el manejo de la información. Se caracterizan principalmente por un gran número de
  • 13. programas activos simultáneamente que compiten por los recursos del sistema, como el procesador, la memoria, y los "dispositivos de E/S". Estos sistemas monitorean el estado de todos los programas activos y recursos del sistema. Sistemas Operativos como UNIX, Windows 95, Windows 98, Windows NT, MAC-OS, OS/2, soportan la multitarea. Las características de un Sistema Operativo de multiprogramación o multitarea son las siguientes:  Mejora productividad del sistema y utilización de recursos.  Multiplexa recursos entre varios programas.  Generalmente soportan múltiples usuarios (multiusuarios).  Proporcionan facilidades para mantener el entorno de usuarios individuales.  Requieren validación de usuario para seguridad y protección.  Proporcionan contabilidad del uso de los recursos por parte de los usuarios.  Multitarea sin soporte multiusuario se encuentra en algunos computadores personales o en sistemas de tiempo real.  Sistemas multiprocesadores son sistemas multitareas por definición ya que soportan la ejecución simultánea de múltiples tareas sobre diferentes procesadores.  En general, los sistemas de multiprogramación se caracterizan por tener múltiples programas activos compitiendo por los recursos del sistema: procesador, memoria, dispositivos periféricos.
  • 14. Sistemas operativos multiusuario. Los sistemas operativos multiusuario permiten acceder simultáneamente a un sistema de computadoras a través de dos o más terminales. Este tipo de sistema operativo es fundamental en el manejo de redes de computadoras actualmente. Sistemas operativos de tiempo compartido Los sistemas operativos de tiempo compartido tratan de proporcionar un reparto equitativo de los recursos comunes para dar la impresión a los usuarios de que poseen una computadora independiente. En estos sistemas el administrador de memoria proporciona aislamiento y protección de los programas, ya que generalmente no tienen necesidad de comunicarse entre ellos. El control de E/S se encarga de proporcionar o retirar la asignación a los dispositivos de forma que se preserve la integridad del sistema y se proporcione servicio a todos los usuarios. El administrador de archivos proporciona protección y control en el acceso de la información, dada la posibilidad de concurrencia y conflictos al tratar de acceder a los archivos. Ejemplos de Sistemas Operativos de tiempo compartido son Multics, OS/360 y DEC-10. Características de los Sistemas Operativos de tiempo compartido:  Populares representantes de sistemas multiprogramados multiusuario, Ej.: sistemas de diseño asistido por computador, procesamiento de texto, etc.  Dan la ilusión de que cada usuario tiene una máquina para sí.  Mayoría utilizan algoritmo de reparto circular.  Programas se ejecutan con prioridad rotatoria que se incrementa con la espera y disminuye después de concedido el servicio.  Evitan monopolización del sistema asignando tiempos de procesador (time slot).  Gestión de memoria proporciona protección a programas residentes.  Gestión de archivo debe proporcionar protección y control de acceso debido a que pueden existir múltiples usuarios accesando a un mismo archivo.
  • 15. Sistemas operativos de tiempo real Los Sistemas Operativos de tiempo real son aquellos en los cuales no tiene importancia el usuario, sino los procesos. Por lo general, están subutilizados sus recursos con la finalidad de prestar atención a los procesos en el momento que lo requieran. Se utilizan en entornos donde son procesados un gran número de sucesos o eventos. Muchos Sistemas Operativos de tiempo real son construidos para aplicaciones muy específicas como control de tráfico aéreo, bolsas de valores, control de refinerías, control de laminadores. También en el ramo automovilístico y de la electrónica de consumo, las aplicaciones de tiempo real están creciendo muy rápidamente. Otros campos de aplicación de los Sistemas Operativos de tiempo real son los siguientes:  Control de trenes.  Telecomunicaciones.  Sistemas de fabricación integrada.  Producción y distribución de energía eléctrica.  Control de edificios.  Sistemas multimedia. Algunos ejemplos de Sistemas Operativos de tiempo real son: VxWorks, Solaris, Lyns OS y Spectra. Los Sistemas Operativos de tiempo real, cuentan con las siguientes características:
  • 16.  Se dan en entornos en donde deben ser aceptados y procesados gran cantidad de sucesos, la mayoría externos al sistema computacional, en breve tiempo o dentro de ciertos plazos.  Se utilizan en control industrial, conmutación telefónica, control de vuelo, simulaciones en tiempo real., aplicaciones militares, etc.  Objetivo es proporcionar rápidos tiempos de respuesta.  Procesa ráfagas de miles de interrupciones por segundo sin perder un solo suceso.  Proceso se activa tras ocurrencia de suceso, mediante interrupción.  Proceso de mayor prioridad expropia recursos.  Por tanto generalmente se utiliza planificación expropiativa basada en prioridades.  Gestión de memoria menos exigente que tiempo compartido, usualmente procesos son residentes permanentes en memoria.  Población de procesos estática en gran medida.  Poco movimiento de programas entre almacenamiento secundario y memoria.  Gestión de archivos se orienta más a velocidad de acceso que a utilización eficiente del recurso. Sistemas Operativos distribuidos.
  • 17. Permiten distribuir trabajos, tareas o procesos, entre un conjunto de procesadores. Puede ser que este conjunto de procesadores esté en un equipo o en diferentes, en este caso es transparente para el usuario. Existen dos esquemas básicos de éstos. Un sistema fuertemente acoplado es a es aquel que comparte la memoria y un reloj global, cuyos tiempos de acceso son similares para todos los procesadores. En un sistema débilmente acoplado los procesadores no comparten ni memoria ni reloj, ya que cada uno cuenta con su memoria local. Los sistemas distribuidos deben de ser muy confiables, ya que si un componente del sistema se compone otro componente debe de ser capaz de reemplazarlo. Entre los diferentes Sistemas Operativos distribuidos que existen tenemos los siguientes: Sprite, Solaris-MC, Mach, Chorus, Spring, Amoeba, Taos, etc. Características de los Sistemas Operativos distribuidos:  Colección de sistemas autónomos capaces de comunicación y cooperación mediante interconexiones hardware y software.  Gobierna operación de un S.C. y proporciona abstracción de máquina virtual a los usuarios.  Objetivo clave es la transparencia.  Generalmente proporcionan medios para la compartición global de recursos.  Servicios añadidos: denominación global, sistemas de archivos distribuidos, facilidades para distribución de cálculos (a través de comunicación de procesos internodos, llamadas a procedimientos remotos, etc.).
  • 18. Sistemas Operativos de red. Son aquellos sistemas que mantienen a dos o más computadoras unidas a través de algún medio de comunicación (físico o no), con el objetivo primordial de poder compartir los diferentes recursos y la información del sistema. El primer Sistema Operativo de red estaba enfocado a equipos con un procesador Motorola 68000, pasando posteriormente a procesadores Intel como Novell Netware. Los Sistemas Operativos de red más ampliamente usados son: Novell Netware, Personal Netware, LAN Manager, Windows NT Server, UNIX, LANtastic.
  • 19. Figura. Se muestra un Sistema Operativo en red. Sistemas Operativos paralelos. En estos tipos de Sistemas Operativos se pretende que cuando existan dos o más procesos que compitan por algún recurso se puedan realizar o ejecutar al mismo tiempo. En UNIX existe también la posibilidad de ejecutar programas sin tener que atenderlos en forma interactiva, simulando paralelismo (es decir, atender de manera concurrente varios procesos de un mismo usuario). Así, en lugar de esperar a que el proceso termine de ejecutarse (como lo haría normalmente), regresa a atender al usuario inmediatamente después de haber creado el proceso. Ejemplos de estos tipos de Sistemas Operativos están: Alpha, PVM, la serie AIX, que es utilizado en los sistemas RS/6000 de IBM. Con el paso del tiempo, los Sistemas Operativos fueron clasificándose de diferentes maneras, dependiendo del uso o de la aplicación que se les daba. A continuación se mostrarán diversos tipos de Sistemas Operativos que existen en la actualidad, con algunas de sus características: Sistemas Operativos por lotes. Los Sistemas Operativos por lotes, procesan una gran cantidad de trabajos con poca o ninguna interacción entre los usuarios y los programas en ejecución. Se reúnen todos los trabajos comunes para realizarlos al mismo tiempo, evitando la espera de dos o más trabajos como sucede en el procesamiento
  • 20. en serie. Estos sistemas son de los más tradicionales y antiguos, y fueron introducidos alrededor de 1956 para aumentar la capacidad de procesamiento de los programas. Cuando estos sistemas son bien planeados, pueden tener un tiempo de ejecución muy alto, porque el procesador es mejor utilizado y los Sistemas Operativos pueden ser simples, debido a la secuenciabilidad de la ejecución de los trabajos. Algunos ejemplos de Sistemas Operativos por lotes exitosos son el SCOPE, del DC6600, el cual está orientado a procesamiento científico pesado, y el EXEC II para el UNIVAC 1107, orientado a procesamiento académico. Algunas otras características con que cuentan los Sistemas Operativos por lotes son:  Requiere que el programa, datos y órdenes al sistema sean remitidos todos juntos en forma de lote.  Permiten poca o ninguna interacción usuario/programa en ejecución.  Mayor potencial de utilización de recursos que procesamiento serial simple en sistemas multiusuarios.  No conveniente para desarrollo de programas por bajo tiempo de retorno y depuración fuera de línea.  Conveniente para programas de largos tiempos de ejecución (ej, análisis estadísticos, nóminas de personal, etc.)  Se encuentra en muchos computadores personales combinados con procesamiento serial.  Planificación del procesador sencilla, típicamente procesados en orden de llegada.  Planificación de memoria sencilla, generalmente se divide en dos: parte residente del S.O. y programas transitorios.  No requieren gestión crítica de dispositivos en el tiempo.  Suelen proporcionar gestión sencilla de manejo de archivos: se requiere poca protección y ningún control de concurrencia para el acceso. Figura. Trabajos más comunes que realiza el Sistema Operativo por lotes. Sistemas Operativos de tiempo real. Los Sistemas Operativos de tiempo real son aquelos en los cuales no tiene importancia el usuario, sino los procesos. Por lo general, están subutilizados sus recursos con la finalidad de prestar atención a los procesos en el momento que lo requieran. se utilizan en entornos donde son procesados un gran número de sucesos o eventos. Muchos Sistemas Operativos de tiempo real son construidos para aplicaciones muy específicas como control de tráfico aéreo, bolsas de valores, control de refinerías, control de laminadores. También en el ramo automovilístico y de la electrónica de consumo, las aplicaciones de tiempo real están creciendo muy rápidamente. Otros campos de aplicación de los Sistemas Operativos de tiempo real son los siguientes:  Control de trenes.  Telecomunicaciones.  Sistemas de fabricación integrada.  Producción y distribución de energía eléctrica.  Control de edificios.  Sistemas multimedia. Algunos ejemplos de Sistemas Operativos de tiempo real son: VxWorks, Solaris, Lyns OS y Spectra. Los Sistemas Operativos de tiempo real, cuentan con las siguientes características:
  • 21.  Se dan en entornos en donde deben ser aceptados y procesados gran cantidad de sucesos, la mayoría externos al sisterma computacional, en breve tiempo o dentro de ciertos plazos.  Se utlizan en control industrial, conmutación telefónica, control de vuelo, simulaciones en tiempo real., aplicaciones militares, etc.  Objetivo es proporcionar rápidos tiempos de respuesta.  Procesa ráfagas de miles de interrupciones por segundo sin perder un solo suceso.  Proceso se activa tras ocurrencia de suceso, mediante interrupción.  Proceso de mayor prioridad expropia recursos.  Por tanto generalmente se utliza planificación expropiativa basada en prioridades.  Gestión de memoria menos exigente que tiempo compartido, usualmente procesos son residentes permanentes en memoria.  Población de procesos estática en gran medida.  Poco movimiento de programas entre almacenamiento secundario y memoria.  Gestión de archivos se orienta más a velocidad de acceso que a utlización eficiente del recurso. Sistemas Operativos de multiprogramación (o Sistemas Operativos de multitarea). Se distinguen por sus habilidades para poder soportar la ejecución de dos o más trabajos activos (que se están ejecutado) al mismo tiempo. Esto trae como resultado que la Unidad Central de Procesamiento (UCP) siempre tenga alguna tarea que ejecutar, aprovechando al máximo su utilización. Su objetivo es tener a varias tareas en la memoria principal, de manera que cada uno está usando el procesador, o un procesador distinto, es decir, involucra máquinas con más de una UCP. Sistemas Operativos como UNIX, Windows 95, Windows 98, Windows NT, MAC-OS, OS/2, soportan la multitarea. Las características de un Sistema Operativo de multiprogramación o multitarea son las siguientes:  Mejora productividad del sistema y utilización de recursos.  Multiplexa recursos entre varios programas.  Generalmente soportan múltiples usuarios (multiusuarios).  Proporcionan facilidades para mantener el entorno de usuarios inndividuales.  Requieren validación de usuario para seguridad y protección.  Proporcionan contabilidad del uso de los recursos por parte de los usuarios.  Multitarea sin soprte multiusuario se encuentra en algunos computadores personales o en sistemas de tiempo real.  Sistemas multiprocesadores son sistemas multitareas por definición ya que soportan la ejecución simultánea de múltiples tareas sobre diferentes procesadores.  En general, los sistemas de multiprogramación se caracterizan por tener múltiples programas activos compitiendo por los recursos del sistema: procesador, memoria, dispositivos periféricos. Sistemas Operativos de tiempo compartido. Permiten la simulación de que el sistema y sus recursos son todos para cada usuarios. El usuario hace una petición a la computadora, esta la procesa tan pronto como le es posible, y la respuesta aparecerá en la terminal del usuario. Los principales recursos del sistema, el procesador, la memoria, dispositivos de E/S, son continuamente utilizados entre los diversos usuarios, dando a cada usuario la ilusión de que tiene el sistema dedicado para sí mismo. Esto trae como consecuencia una gran carga de trabajo al Sistema Operativo, principalmente en la administración de memoria principal y secundaria.
  • 22. Ejemplos de Sistemas Operativos de tiempo compartido son Multics, OS/360 y DEC-10. Características de los Sistemas Operativos de tiempo compartido:  Populares representantes de sistemas multiprogramados multiusuario, ej: sistemas de diseño asistido por computador, procesamiento de texto, etc.  Dan la ilusión de que cada usuario tiene una máquina para sí.  Mayoría utilizan algoritmo de reparto circular.  Programas se ejcutan con prioridad rotatoria que se incrementa con la espera y disminuye después de concedido el servicio.  Evitan monopolización del sistema asignando tiempos de procesador (time slot).  Gestión de memoria proporciona protección a programas residentes.  Gestión de archivo debe proporcionar protección y control de acceso debido a que pueden existir múltiples usuarios accesando un mismo archivos. Sistemas Operativos distribuidos. Permiten distribuir trabajos, tareas o procesos, entre un conjunto de procesadores. Puede ser que este conjunto de procesadores esté en un equipo o en diferentes, en este caso es trasparente para el usuario. Existen dos esquemas básicos de éstos. Un sistema fuertemente acoplado es a es aquel que comparte la memoria y un reloj global, cuyos tiempos de acceso son similares para todos los procesadores. En un sistema débilmente acoplado los procesadores no comparten ni memoria ni reloj, ya que cada uno cuenta con su memoria local. Los sistemas distribuidos deben de ser muy confiables, ya que si un componente del sistema se compone otro componente debe de ser capaz de reemplazarlo. Entre los diferentes Sistemas Operativos distribuidos que existen tenemos los siguientes: Sprite, Solaris- MC, Mach, Chorus, Spring, Amoeba, Taos, etc. Caracteristicas de los Sistemas Operativos distribuidos:  Colección de sistemas autónomos capaces de comunicación y cooperación mediante interconexiones hardware y software .  Gobierna operación de un S.C. y proporciona abstracción de máquina virtual a los usuarios.  Objetivo clave es la transparencia.  Generalmente proporcionan medios para la compartición global de recursos.  Servicios añadidos: denominación global, sistemas de archivos distribuidos, facilidades para distribución de cálculos (a través de comunicación de procesos internodos, llamadas a procedimientos remotos, etc.). Sistemas Operativos de red. Son aquellos sistemas que mantienen a dos o más computadoras unidas através de algún medio de comunicación (fisico o no), con el objetivo primordial de poder compartir los diferentes recursos y la información del sistema. El primer Sistema Operativo de red estaba enfocado a equipos con un procesador Motorola 68000, pasando posteriormente a procesadores Intel como Novell Netware. Los Sistemas Operativos de red mas ampliamente usados son: Novell Netware, Personal Netware, LAN Manager, Windows NT Server, UNIX, LANtastic.
  • 23. Sistemas Operativos paralelos. En estos tipos de Sistemas Operativos se pretende que cuando existan dos o más procesos que compitan por algún recurso se puedan realizar o ejecutar al mismo tiempo. En UNIX existe también la posibilidad de ejecutar programas sin tener que atenderlos en forma interactiva, sinulando paralelismo (es decir, atender de manera concurrente varios procesos de un mismo usuario). Así, en lugar de esperar a que el proceso termine de ejecutarse (como lo haría normalmente), regresa a atender al usuario inmediatamente después de haber creado el proceso. Ejemplos de estos tipos de Sistemas Operativos están: Alpha, PVM, la serie AIX, que es utilizado en los sistemas RS/6000 de IBM. 1.5 Estructura (niveles o estratos de diseño). Internamente los sistemas operativos estructuralmente de se clasifican según como se hayan organizado intérnamente en su diseño, por esto la clasificación más común de los S.O. son:  Sistemas monolíticos: En estos sistemas operativos se escriben como un conjunto de procedimientos, cada uno de los cuales puede llamar a cualquiera de los otros siempre que lo necesite. Cuando se emplea esta técnica, cada procedimiento del sistema tiene una interfaz bien definida en términos de parámetros y resultados, y cada una tiene la libertad de llamar a cualquiera otra, si la última ofrece algún cálculo útil que la primera necesite. Para construir el programa objeto real del sistema operativo cuando se usa este método, se compilan todos los procedimientos individuales a archivos que contienen los procedimientos y después se combinan todos en un solo archivo objeto con el enlazador. En términos de ocultamiento de información, esencialmente no existe ninguno; todo procedimiento es visible para todos (al contrario de una estructura que contiene módulos o paquetes, en los cuales mucha información es local a un módulo y sólo pueden llamar puntos de registro designados oficialmente del exterior del módulo) Esta organización sugiere una estructura básica del sistema operativo: 1.- Un programa central que invoque el procedimiento de servicio solicitado (Shell o Kernel) 2.- Un conjunto de procedimientos de servicios que realice las llamadas al sistema. 3.- Un conjunto de procedimientos de uso general que ayude a los procedimientos de servicio  Sistemas en estratos: Estos sistemas operativos se organizan como una jerarquía de estratos, cada uno construido arriba del que está debajo de él. El primer sistema construido en esta forma fuel el sistema THE que se fabricó en Technische Hogeschool Eindhoven de Holanda por E. W Dijkstra (1968) y sus alumnos. El sistema THE era un sistema de lote para una computadora alemana, la Electrológica X8, que tenía 32K de palabras de 27 bits ( los bits eran costosos en aquellos días)
  • 24. El sistema tenía 6 estratos, estos se muestran en la siguiente tabla: 5 Operador de THE 4 Programas del usuario 3 Administración de Entrada/Salida 2 Comunicación entre el operador y el proceso 1 Administración de la memoria y el tambor magnético 0 Distribución del procesador y multiprogramación - El estrato 0 trabajaba con la distribución del procesador, cambiando entre procesos cuando ocurrían interrupciones o los relojes expiraban. Sobre el estrato 0, el sistema constaba de procesos secuenciales, cada uno de los cuales podía programarse sin tener que preocuparse por el hecho de que múltiples procesos estuvieran corriendo en un solo procesador. En otras palabras, el estarto 0 ofrecía la multiprogramación básica de la CPU. El estrato 1 realizaba el manejo de memoria. Este distribuía espacio para procesos contenidos en la memoria central y en un tambor de 512K palabras que se usaba para contener partes de procesos (páginas) para las cuales no había espacio en la memoria central. Sobre el estrato 1, los procesos no tenía que preocuparse de si estaban en la memoria o en el tambor; el software del estrato 1 se hacía cargo de asegurar que las páginas se trajeran a la memoria siempre que se necesitaran. El estrato 2 manejaba la comunicación entre cada proceso y la consola de operador. El estrato 3 se hacía cargo de manejar los dispositivos de E/S y de separar la información en flujo que entraba y salí de ellos. Sobre el estrato 3 cada proceso podía trabajar con dispositivos de E/S abstractos con propiedades agradables, en vez de dispositivos reales con muchas peculiaridades El estrato 4 era donde se encontraban los programas de los usuarios. No tenían que preocuparse por el manejo de los procesos, memoria, consola o E/S. El proceso operador del sistema se localizaba en el estrato 5. En esta unidad examinaremos cuatro estructuras distintas que ya han sido probadas, con el fin de tener una idea más extensa de cómo esta estructurado el sistema operativo. Veremos brevemente algunas estructuras de diseños de sistemas operativos. Estructura modular. También llamados sistemas monolíticos. Este tipo de organización es con mucho la mas común; bien podría recibir el subtitulo de "el gran embrollo". La estructura consiste en que no existe estructura alguna. El sistema operativo se escribe como una colección de procedimientos, cada uno de los cuales puede llamar a los demás cada vez que así lo requiera. Cuando se usa esta técnica, cada procedimiento del sistema tiene una interfaz bien definida en términos de parámetros y resultados y cada uno de ellos es libre de llamar a cualquier otro, si este ultimo proporciona cierto cálculo útil para el primero. Sin embargo incluso en este tipo de sistemas es posible tener al menos algo de estructura. Los servicios (llamadas al sistema) que proporciona el sistema operativo se solicitan colocando los parámetros en lugares bien definidos, como en los registros o en la pila, para después ejecutar una instrucción especial de trampa de nombre "llamada al núcleo" o "llamada al supervisor". Esta instrucción cambia la máquina del modo usuario al modo núcleo y transfiere el control al sistema operativo, lo que se muestra en el evento (1) de la figura 1. El sistema operativo examina entonces los parámetros de la llamada, para determinar cual de ellas se desea realizar, como se muestra en el evento
  • 25. (2) de la figura 1. A continuación, el sistema operativo analiza una tabla que contiene en la entrada k un apuntador al procedimiento que realiza la k-esima llamada al sistema. Esta operación que se muestra en (3) de la figura 1, identifica el procedimiento de servicio, al cual se llama. Por ultimo, la llamada al sistema termina y el control regresa al programa del usuario. Figura 1. La forma en que debe hacerse una llamada al sistema: (1) el programa del usuario es atraído hacia el núcleo. (2) el sistema operativo determina el número del servicio solicitado. (3) el sistema operativo localiza y llama al procedimiento correspondiente al servicio. (4) el control regresa al programa del usuario. Esta organización sugiere una organización básica del sistema operativo: 1.- un programa principal que llama al procedimiento del servicio solicitado. 2.- un conjunto de procedimientos de servicio que llevan a cabo las llamadas al sistema. 3.- un conjunto de procedimientos utilitarios que ayudan al procedimiento de servicio. En este modelo, para cada llamada al sistema existe un procedimiento de servicio que se encarga de él. Los procedimientos utilitarios hacen cosas necesarias para varios procedimientos de servicio, por ejemplo buscar los datos de los programas del usuario. Estructura por microkernel. Las funciones centrales de un SO son controladas por el núcleo (kernel) mientras que la interfaz del usuario es controlada por el entorno (shell). Por ejemplo, la parte más importante del DOS es un programa con el nombre "COMMAND.COM" Este programa tiene dos partes. El kernel, que se mantiene en memoria en todo momento, contiene el código máquina de bajo nivel para manejar la administración de hardware para otros programas que necesitan estos servicios, y para la segunda parte del COMMAND.COM el shell, el cual es el interprete de comandos Las funciones de bajo nivel del SO y las funciones de interpretación de comandos están separadas, de tal forma que puedes mantener el kernel DOS corriendo, pero utilizar una interfaz de usuario diferente. Esto es exactamente lo que sucede cuando cargas Microsoft Windows, el cual toma el lugar del shell, reemplazando la interfaz de línea de comandos con una interfaz gráfica del usuario. Existen muchos "shells" diferentes en el mercado, ejemplo: NDOS (Norton DOS), XTG, PCTOOLS, o inclusive el mismo SO MS-DOS a partir de la versión 5.0 incluyó un Shell llamado DOS SHELL.
  • 26. Estructura por anillos concéntricos (capas). El sistema por "capas" consiste en organizar el sistema operativo como una jerarquía de capas, cada una construida sobre la inmediata inferior. El primer sistema construido de esta manera fue el sistema THE (Technische Hogeschool Eindhoven), desarrollado en Holanda por E. W. Dijkstra (1968) y sus estudiantes. El sistema tenia 6 capas, como se muestra en la figura 3. La capa 0 trabaja con la asignación del procesador y alterna entre los procesos cuando ocurren las interrupciones o expiran los cronómetros. Sobre la capa 0, el sistema consta de procesos secuénciales, cada uno de los cuales se podría programar sin importar que varios procesos estuvieran ejecutándose en el mismo procesador, la capa 0 proporcionaba la multiprogramación básica de la CPU. La capa 1 realizaba la administración de la memoria. Asignaba el espacio de memoria principal para los procesos y un recipiente de palabras de 512K se utilizaba para almacenar partes de los procesos (páginas) para las que no existía lugar en la memoria principal. Por encima de la capa 1, los procesos no debían preocuparse si estaban en la memoria o en el recipiente; el software de la capa 1 se encargaba de garantizar que las páginas llegaran a la memoria cuando fueran necesarias. La capa 2 se encargaba de la comunicación entre cada proceso y la consola del operador. Por encima de esta capa, cada proceso tiene su propia consola de operador. La capa 3 controla los dispositivos de E/S y guarda en almacenes (buffers) los flujos de información entre ellos. Por encima de la capa 3, cada proceso puede trabajar con dispositivos exactos de E/S con propiedades adecuadas, en vez de dispositivos reales con muchas peculiaridades. La capa 4 es donde estaban los programas del usuario, estos no tenían que preocuparse por el proceso, memoria, consola o control de E/S. el proceso operador del sistema se localizaba en la capa 5 Una generalización mas avanzada del concepto de capas se presento en el sistema MULTICS. En lugar de capas, MULTICS estaba organizado como una serie de anillos concéntricos, siendo los anillos interiores los privilegiados. Cuando un procedimiento de un anillo exterior deseaba llamar a un procedimiento de un anillo interior, debió hacer el equivalente a una llamada al sistema Mientras que el esquema de capas de THE era en realidad un apoyo al diseño, debido a que todas las partes del sistema estaban ligadas entre si en un solo programa objeto, en MULTICS, el mecanismo de anillos estaba mas presente durante el tiempo de ejecución y era reforzado por el hardware. La ventaja del mecanismo de anillos es su facilidad de extensión para estructurar subsistemas del usuario. 5 El operador 4 Programas del usuario 3 Control de entrada/salida
  • 27. 2 Comunicación operador-proceso 1 Administración de la memoria y del disco 0 Asignación del procesador y multiprogramación Figura 3. Estructura del sistema operativo THE. Estructura cliente – servidor Una tendencia de los sistemas operativos modernos es la de explotar la idea de mover el código a capas superiores y eliminar la mayor parte posible del sistema operativo para mantener un núcleo mínimo. El punto de vista usual es el de implantar la mayoría de las funciones del sistema operativo en los procesos del usuario. Para solicitar un servicio, como la lectura de un bloque de cierto archivo, un proceso del usuario (denominado proceso cliente) envía la solicitud a un proceso servidor, que realiza entonces el trabajo y regresa la respuesta. En este modelo, que se muestra en la figura 4, lo único que hace el núcleo es controlar la comunicación entre los clientes y los servidores. Al separar el sistema operativo en partes, cada una de ellas controla una faceta del sistema, como el servicio a archivos, servicios a procesos, servicio a terminales o servicio a la memoria, cada parte es pequeña y controlable. Además como todos los servidores se ejecutan como procesos en modo usuario y no en modo núcleo, no tienen acceso directo al hardware. En consecuencia si hay un error en el servidor de archivos, éste puede fallar, pero esto no afectará en general a toda la máquina. Otra de las ventajas del modelo cliente-servidor es su capacidad de adaptación para su uso en los sistemas distribuidos Si un cliente se comunica con un servidor mediante mensajes, el cliente no necesita saber si el mensaje se maneja en forma local, en su máquina, o si se envía por medio de una red a un servidor en una máquina remota. En lo que respecta al cliente, lo mismo ocurre en ambos casos: se envió una solicitud y se recibió una respuesta. Sistemas Operativos por su Estructura (Visión Interna). Según, se deben observar dos tipos de requisitos cuando se construye un sistema operativo, los cuales son: 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. A continuación se describen las distintas estructuras que presentan los actuales sistemas operativos para satisfacer las necesidades que de ellos se quieren obtener. Estructura Monolítica. Es la estructura de los primeros sistemas operativos constituidos fundamentalmente por un solo programa compuesto de un conjunto de rutinas entrelazadas de tal forma que cada una puede llamar a cualquier otra. Las características fundamentales de este tipo de estructura son:  Construcción del programa final a base de módulos compilados separadamente que se unen a través del ligador.  Buena definición de parámetros de enlace entre las distintas rutinas existentes, que puede provocar mucho acoplamiento.
  • 28.  Carecen de protecciones y privilegios al entrar a rutinas que manejan diferentes aspectos de los recursos de la computadora, como memoria, disco, etc. Generalmente están hechos a medida, por lo que son eficientes y rápidos en su ejecución y gestión, pero por lo mismo carecen de flexibilidad para soportar diferentes ambientes de trabajo o tipos de aplicaciones. Estructura Jerárquica. 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. Se dividió el sistema operativo en pequeñas partes, de tal forma que cada una de ellas estuviera perfectamente definida y con un claro interface con el resto de elementos. Se constituyó una estructura jerárquica o de niveles en los sistemas operativos, el primero de los cuales fue denominado THE (Technische Hogeschool, Eindhoven), de Dijkstra, que se utilizó con fines didácticos. Se puede pensar también en estos sistemas como si fueran `multicapa'. Multics y Unix caen en esa categoría. En la estructura anterior se basan prácticamente la mayoría de los sistemas operativos actuales. Otra forma de ver este tipo de sistema es la denominada de anillos concéntricos o "rings".
  • 29. En el sistema de anillos, cada uno tiene una apertura, conocida como puerta o trampa (trap), por donde pueden entrar las llamadas de las capas inferiores. De esta forma, las zonas más internas del sistema operativo o núcleo del sistema estarán más protegidas de accesos indeseados desde las capas más externas. Las capas más internas serán, por tanto, más privilegiadas que las externas. 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. Estas máquinas virtuales no son máquinas extendidas, sino una réplica de la máquina real, de manera que en cada una de ellas se pueda ejecutar un sistema operativo diferente, que será el que ofrezca la máquina extendida al usuario
  • 30. Cliente-Servidor(Microkernel). El tipo más reciente de sistemas operativos es el denominado Cliente-servidor, que puede ser ejecutado en la mayoría de las computadoras, ya sean grandes o pequeñas. Este sistema sirve para toda clase de aplicaciones por tanto, es de propósito general y cumple con las mismas actividades que los sistemas operativos convencionales. El núcleo tiene como misión establecer la comunicación entre los clientes y los servidores. Los procesos pueden ser tanto servidores como clientes. Por ejemplo, un programa de aplicación normal es un cliente que llama al servidor correspondiente para acceder a un archivo o realizar una operación de entrada/salida sobre un dispositivo concreto. A su vez, un proceso cliente puede actuar como servidor para otro." [Alcal92]. Este paradigma ofrece gran flexibilidad en cuanto a los servicios posibles en el sistema final, ya que el núcleo provee solamente funciones muy básicas de memoria, entrada/salida, archivos y procesos, dejando a los servidores proveer la mayoría que el usuario final o programador puede usar. Estos servidores deben tener mecanismos de seguridad y protección que, a su vez, serán filtrados por el núcleo que controla el hardware. Actualmente se está trabajando en una versión de UNIX que contempla en su diseño este paradigma. 1.6 Núcleo. El Núcleo del Sistema Operativo. Todas las operaciones en las que participan procesos son controladas por la parte del sistema operativo denominada núcleo (nucleus, core o kernel, en inglés). 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. Los núcleos se diseñan para realizar "el mínimo" posible de procesamiento en cada interrupción y dejar que el resto lo realice el proceso apropiado del sistema, que puede operar mientras el núcleo se habilita para atender otras interrupciones. El núcleo de un sistema operativo normalmente contiene 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. Núcleo o Kernel y niveles de un Sistema Operativo. 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. Gestión de Memoria: que proporciona las facilidades de bajo nivel para la gestión de memoria secundaria necesaria para la ejecución de procesos. Nivel 2. Procesador: Se encarga de activar los cuantums de tiempo para cada uno de los procesos, creando interrupciones de hardware cuando no son respetadas. Nivel 3. Entrada/Salida: Proporciona las facilidades para poder utilizar los dispositivos de E/S requeridos por procesos. Nivel 4. Información o Aplicación o Interprete 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
  • 31. ejecutando un programa el software de este nivel crea el ambiente de trabajo e invoca a los procesos correspondientes. Nivel 5. Control 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. El núcleo y los procesos. El núcleo (Kernel) de un sistema operativo es un conjunto de rutinas cuya misión es la de gestionar el procesador, la memoria, la entrada/salida y el resto de procesos disponibles en la instalación. Toda esta gestión la realiza para atender al funcionamiento y peticiones de los trabajos que se ejecutan en el sistema. Los procesos relacionados con la entidad básica de los sistemas operativos actuales: Los procesos. El esquema general del mismo es el siguiente: Definición y concepto de proceso. El Bloque de Control de Proceso (PCB) como imagen donde el sistema operativo ve el estado del proceso. Estados por los que pasa un proceso a lo largo de su existencia en la computadora. Operaciones que se pueden realizar sobre un proceso. Clasificación de los procesos según su forma de ejecución, de carga, etc. 1.6.1 Interrupciones (FLIH).  El GESTOR DE INTERRUPCIONES DE PRIMER NIVEL: FLIH (First Level Interruption Handler): `Algo' que gestione las interrupciones  EL CONTROLADOR DE INTERRUPCIONES DE PRIMER NIVEL: EL FLIH En principio, una señal es una indicación por la que se altera la secuencia de ejecución. Hay varios tipos de interrupción, que se clasifican en función de su origen: ! EXTERNAS: Se producen fuera del procesador ! INTERNAS: Se producen dentro del procesador Si precisamos más: Las interrupciones EXTERNAS, las denominamos: INTERRUPCIONES Las interrupciones INTERNAS, pueden ser:  EXTRACÓDIGOS: Operaciones que manipulan elementos internos del procesador  TRAPS o EXCEPCIONES La misión del FLIH, está en el núcleo, para dar una respuesta a cualquier tipo de señal que se produce en el sistema.
  • 32. Al producirse una señal, la atrapa el Hardware de interrupciones, que como mínimo, salva el contenido del PC en el PCB del proceso. Además, puede que también salve el resto del entorno volátil (también en el PCB). También direcciona al FLIH, es decir, pone en el PC la dirección del FLIH. Por lo tanto, podemos decir, que el FLIH es un elemento software, es un proceso. Ya hemos dicho que el FLIH es Software, pues se trata de un sencillo programa definido sobre un área de memoria dedicada a él, un área de memoria específica; es decir, el FLIH siempre está en la misma parte de la memoria. El FLIH hace dos cosas: 1º) Determina el origen de la interrupción (Averigua qué interrupción se ha producido) 2º) Direcciona la rutina que trata esa interrupción Si el FLIH es un programa, necesita parte del entorno volátil: PC, ACC, ... Por ello, debe salvarse el entorno volátil del proceso interrumpido. El entorno volátil del proceso interrumpido, se puede salvar en dos momentos:  Puede salvarlo el Hardware de interrupciones  Si no lo salva el Hardware de interrupciones, será lo primero que haga el FLIH, antes incluso de determinar el origen de la interrupción NOTA: Hay sistemas que definen unos registros máquina para uso exclusivo por parte del Sistema Operativo, para evitar tener que estar salvando y restaurando el contenido del entorno volátil. Formas de determinar el origen de una interrupción: MEDIANTE SOFTWARE: Mediante una cadena de saltos o IFs (o con una CASE) El FLIH, tiene un único punto de entrada: Ventaja: ! Es muy sencillo Desventaja: ! Rendimiento muy pobre (Cuantas más interrupciones, peor rendimiento) Posible solución:  Poner al principio de la cadena de saltos las comprobaciones de las interrupciones más frecuentes. MEDIANTE HARDWARE: Mediante el uso de un comparador simultáneo, incluido en el Hardware de interrupciones. El origen de la interrupción, no lo va a detectar el FLIH, lo va a detectar el Hardware de interrupciones.
  • 33. El FLIH, tiene N puntos de entrada, siendo N el número de interrupciones que reconoce el sistema. Ventaja: ! Es casi simultáneo, mucho más rápido que la secuencia de IFs Desventaja: ! Coste Elevado: Un comparador para muchas interrupciones es muy caro COMBINANDO SOFTWARE Y HARDWARE: El comparador distingue los TIPOS de interrupción. Las interrupciones se agrupan por tipos. EL Hardware de interrupciones: 1º) Salva el contenido del entorno volátil 2º) Mediante un comparador simultáneo, determina el tipo al que pertenece la interrupción producida 3º) Se direcciona al FLIH, donde una pequeña cadena de saltos determina la interrupción en concreto que se ha producido Si N es el número de tipos de interrupciones, el FLIH tiene N puntos de entrada. Cuando el FLIH está atendiendo una interrupción, pueden producirse otras. ¿Qué hacemos con esas otras interrupciones que se producen?  Inhibir (ignorar) el resto de interrupciones mientras se atiende una. Pero esto no puede hacerse siempre  Las interrupciones más prioritarias deben tratarse nada más producirse Posible solución:  Definir niveles de prioridad entre las interrupciones, de forma que si se está atendiendo una interrupción, quedarán pendientes (o inhibidas) las de menor o igual prioridad. Problema:  Si se produce una interrupción más prioritaria que la que se está atendiendo, debe dejarse de atender la que se estaba atendiendo para atender la más prioritaria. Por lo tanto, debe guardarse el entorno volátil de la interrupción que estaba atendiendo. La interrupción que pasa a ser atendida, también puede tener que dejarse, al llegar otra de mayor prioridad ... Por tanto, es necesario un lugar a para almacenar entornos volátiles, es decir, un PCB, por cada prioridad de interrupción - 1. Inicio del servicio de una interrupción: Las interrupciones no pueden estar inhibidas mucho tiempo, es decir, el tiempo de tratamiento del FLIH debe ser corto.
  • 34. Problema:  Hay interrupciones cuyo tratamiento lleva mucho tiempo. En ese caso, el FLIH, sólo inicia su tratamiento, y luego, lama a otra rutina ajena o externa a él, que realiza el resto del tratamiento. Una interrupción puede implicar cambio(s) de estado en algún(os) proceso(s). TIPOS DE INTERRUPCIONES:  Interrupciones que provocan cambios de estado del proceso en ejecución  Algunos extracódigos: Peticiones de E/S  Señales de error para suspensión  Interrupciones de reloj: Interrupciones por expiración del temporizador  Interrupciones que provocan cambios de estado en procesos que no están en ejecución  Interrupciones de E/S http://html.rincondelvago.com/sistemas-operativos_29.html 1.6.2 Despachador(Scheduler). Schedulling.- Colas de Schedulling: Los procesos que están en estado de espera se quedan en una lista llamada lista o cola de ready. Los procesos que hacen uso de E/S se guardan en una cola de E/S. Hay una cola de E/S por cada dispositivo. Schedullers: Componente del sistema operativo responsable de decidir quien hara uso de la CPU. Algoritmos de Schedulling.- FCFS (First Come First Served) Cuando un proceso llega a la cola de ready su PCB es agregado al final de la lista. El uso de la CPU es otorgado al primero de la lista y una vez que un proceso comienza a ejecutar no deja de hacerlo hasta que se termina. El tiempo medio de espera para este algoritmo suele ser bastante alto. SJF (Shortest Job First) Una vez que un proceso ejecuta no deja de hacerlo hasta que voluntariamente cambia de estado (no hay interrupción por tiempo). Asocia a cada proceso el tiempo de CPU que habrá de usar en su próxima vuelta y va a decidir por el más pequeño. Si hubiera mas de uno utiliza FCFS para desempatar. El mayor problema de este algoritmo radica en el cálculo de tiempo de uso de CPU. Este se puede aproximar a: Tn+1= .tn+(1- )Tn 0< <1 Tiempo calculado en la vuelta n
  • 35. Próximo uso de CPU Tiempo usado en la vuelta n El problema de este algoritmo es que el tiempo de espera para los procesos largos puede ser demasiado largo. Constantemente se están entregando los procesos mas cortos y el más grande nunca será ejecutado. El FJS se puede subdividir en 2 tipos de algoritmos: PREEMPTIVO o NO PREEMPTIVO Preemptivo significa que si mientras un proceso se esta ejecutando, entra a la cola de ready un proceso mas corto, el proceso en la cola de ready se apropia de la CPU y comienza su ejecución. Priority Schedulling Asocia a cada proceso una prioridad. Luego selecciona el proceso con mas prioridad para desempatar. En caso de que hubieran dos o mas procesos con la misma prioridad, se usa FCFS para desempatar. Hay dos tipo de prioridad en los procesos: la prioridad externa definidas a través del sistema operativo y la prioridad interna definida por el tiempo de uso de la CPU, el control de E/S, etc. Este algoritmo también se puede ejecutar de dos maneras: preemptivo y no preemptivo. El algoritmo soluciona el problema del looping pero el problema es que los procesos con prioridad muy baja tienen chance de no ejecutarse nunca. Para solucionar este problema de espera infinita el envejecimiento de un proceso eleva su prioridad. Round Robin Este es un algoritmo basado en FCFS. Trata la cola de ready como una lista circular. Introduce el concepto de "Quantum" o "Time slice" : mayor tiempo de cpu que podrá hacer uso un proceso en cada vuelta. Si el valor del Quantum fuese muy grande, el algoritmo funcionara como un FCFS. Si el Quantum fuera muy chico se produce un overhead por context switch (significa que el Quantum se setea en un tiempo menor al que demora el context switch). Este algoritmo es fuertemente dependiente del Quantum o Time Slice. El Quantum debe ser mayor que el 80% de los tiempos de CPU que hagan uso los procesos, pero no el proceso entero sino por cada burst. MQS (Multilevel Queue Schedulling) Este algoritmo parte la cola de ready en un numero de colas n. Luego existe un criterio para clasificar en que cola será colocado un proceso cuando que queda en estado de ready. Cada cola puede manejar su propio algoritmo de schedulling MFQS (Multilevel Feed Back Queue Schedulling) Define los siguientes parámetros:  Numero de colas  Algoritmo de schedulling usado en cada cola  Método para decidir a que cola entrara un proceso cuando entre a estado de ready  Método para decidir cuando un proceso será enviado a una cola de menor prioridad. Múltiple CPU Para que mas de una CPU no tomen el mismo proceso de la cola de ready se utilizan mecanismos de sincronización. Otro mecanismo seria partir la cola en n colas (n CPUs), pero si se hiciera esto podría llegar a suceder que los procesos de una CPU fueran todos cortos y los de otra fueran largos por lo cual habría una CPU que quedaría libre y otra ejecutando. Otra forma sería que una CPU decidiera cual CPU va a ejecutar cual proceso. Esto puede llevar a que la CPU que esta seleccionando quede un poco mas
  • 36. cargada porque en algún momento estará ejecutando el algoritmo de selección y un proceso asignado a ella. 1.6.3 Primitivas de comunicación(IPC). Hay varias primitivas de comunicación entre procesos (IPC abreviadamente). La mayoría de ellas requieren algún tipo de modificación a los programas para poder usarlas, pero hay una que es fácilmente accesible desde la línea de comandos usando la metáfora de ficheros estándar en UNIX y que no requiere modificación alguna a los programas. Se trata de las tuberías. Siguiendo la metáfora, UNIX nos permite manejar tuberías como si fueran ficheros normales. http://www.es.embnet.org/Doc/ECJ/ECJ-1998-02/dbpipes.es.html Primitivas de comunicación Algunos kernel tienen operaciones específicas ajustadas a la invocación remota. Amoeba, por ejemplo, tiene DoOperation/GetRequest--SendReply. Es más eficiente que el simple Send-Receive (y más fiable y legible). Amoeba y otros sistemas tienen también comunicación con grupos o radiado (parcial) (broadcast). Es importante para tolerancia de fallos, mejora de rendimiento y reconfigurabilidad. Diversas variantes: como mensajes, como múltiples RPCs, con un sólo valor devuelto, con varios valores devueltos (todos juntos o pidiendo uno a uno), etc. En la práctica, mecanismos de comunicación de alto nivel tales como RPC/RMI, radiado y notificación de sucesos (parecido a los manejadores de interrupciones), se implementan en middleware y no en el kernel. Normalmente, sobre un nivel TCP/IP, por razones de transportabilidad, (aunque resulta ``caro"). La IPC ofrece un mecanismo que permite a los procesos cumunicarse y sincronizar sus acciones. La mejor forma de proveer la comunicación entre procesos es mediante un sistema de mensajes. La función de un sistema de mensaje es permitir a los procesos comunicarse entre sí sin tener que recurrir a variables compartidas. Un recurso IPC ofrece por los menos 2 operaciones: enviar (mensaje) (send) y recibir (mesanje) (receive). Sea P y Q dos procesos que requieren comunicarse deberán enviarse mensajes; para ello debe existir un enlace de comunicación entre ellos. Este enlace puede implementarse de diversas maneras.
  • 37. Los métodos para implementar lógicamente un enlace y las operaciones de enviar / recibir son:  Comunicación directa o indirecta  Uso de buffer automático o explícito  Envío por copia o envío por referencia  Mensajes de tamaño fijo o variables Comunicación directa: Aquí cada proceso que desee comunicarse debe nombrar explícitamente el destinatario o el remitente de la comunicación. Este esquema se define las primitivas de la sig. manera: Enviar(P,mensaje): Enviar un mensaje al proceso P. Recibir(Q. Mensaje): Recibir un mensaje del proceso Q. Con las siguientes propiedades:  Se establece automáticamente el enlace entre cada par de procesos. Lo procesos sólo necesitan conocer la identidad de otro para la comunicación.  Solo hay un enlace entre cada par de procesos.  El enlace puede ser unidireccional o bidireccional. Este esquema exhibe un simetría de direccionamiento; es decir, los procesos tanto emisor como receptor necesitan nombrar al otro para comunicarse. Otra variante de este esquema es utilizar asimetría de direccionamiento, con la sig. primitivas: Enviar(P,mensaje): enviar un mensaje al proceso P. Recibir(Id,mensaje) : recibir un mensaje de cualquier proceso con el que hubo comunicación. Aquí sólo el emisor nombra al destinatario; el destinatario no ésta obligado a nombrar al emisor. Comunicación indirecta: Aquí los mensajes se envían a, y se reciben de, buzones (también llamados PUERTOS). Un buzón puede considerarse en lo abstracto como un objeto en el que los procesos pueden colocar mensajes y del cual se pueden sacar mensajes. Cada buzón tiene una identificación única. Aquí dos proceso se pueden comunicarse sólo si comparten un buzón. Las primitivas se definen como: Enviar (A,mensaje): enviar un mensaje al buzón A. Recibir (A,mensaje): recibir un mensaje del buzón A. Un enlace de comunicación tiene las sig. propiedades:  Se establece un enlace entre un par de procesos sólo si tienen un buzón compartido.  Un enlace puede estar asociado a más de dos procesos.
  • 38.  Entre cada par de procesos en comunicación puede haber varios enlaces distintos, cada uno de los cuales corresponderá a un buzón.  Los enlaces pueden ser unidireccionales o bidereccionales. Hay varias formas de designar el dueño de y los usuarios de un buzón dado. Una posibilidad es permitir que un proceso declare variables de tipo buzón. El proceso que declara un buzón es el dueño de ese buzón. Cualquier otro proceso que conozca el nombre de dicho buzón podrá usarlo. Por otro lado, un buzón propiedad del S.O tiene existencia propia; es independiente y no está unido a ningún proceso específico. El S.O establece un mecanismo que permite a un proceso:  Crear un buzón nuevo  Enviar y recibir mensajes a través del buzón  Destruir un buzón. http://html.rincondelvago.com/sistemas-operativos_26.html Comunicación entre procesos (IPC) Los procesos en UNIX no comparten memoria, ni siquiera los padres con sus hijos. Por tanto, hay que establecer algún mecanismo en caso de que se quiera comunicar información entre procesos concurrentes. El sistema operativo UNIX define tres clases de herramientas de comunicación entre procesos (IPC): los semáforos, la memoria compartida y los mensajes. El tipo de llamadas al sistema para estos IPCs es análogo al de los semáforos: existen sendas funciones shmget y msgget para crear o enlazarse a un segmento de memoria compartida o a una cola de mensajes, respectivamente. Para alterar propiedades de estos IPCs, incluyendo su borrado, están las funciones shmctl y msgctl. Para enviar o recibir mensajes, se utilizan las funciones msgsnd y msgrcv. En este apartado se describirán brevemente algunas llamadas al sistema disponibles para el uso de las IPCs dentro de la programación en C. Semáforos ¿Qué es un semáforo para el UNIX? Formalmente es muy similar a la definición clásica de Dijkstra, en el sentido de que es una variable entera con operaciones atómicas de inicialización, incremento y decremento con bloqueo. El UNIX define tres operaciones fundamentales sobre semáforos: * semget Crea o toma el control de un semáforo
  • 39. * semctl Operaciones de lectura y escritura del estado del semáforo. Destrucción del semáforo * semop Operaciones de incremento o decremento con bloqueo Como el lenguaje C no tiene un tipo "semáforo" predefinido, si queremos usar semáforos tenemos que crearlos mediante una llamada al sistema (semget). Esta llamada permite crear un conjunto de semáforos, en lugar de uno solo. Las operaciones se realizan atómicamente sobre todo el conjunto; esto evita interbloqueos y oscuras programaciones en muchos casos, pero para esta práctica es más bien un engorro. Al crear un semáforo se nos devuelve un número identificador, que va a funcionar casi igual que los identificadores de fichero de las llamadas open, creat, etc. La función semget nos permite además "abrir" un semáforo que ya esté creado. Así, por ejemplo, si un proceso crea un semáforo, otros procesos pueden sincronizarse con aquél (con ciertas restricciones) disponiendo del semáforo con semget. Para darle un valor inicial a un semáforo, se utiliza la función semctl. El UNIX no ofrece las funciones clásicas P y V o equivalentes, sino que dispone de una función general llamada semop que permite realizar una gama de operaciones que incluyen las P y V. semctl también se emplea para destruir un semáforo. Llamadas al sistema para semáforos Esta es una descripción resumida de las tres llamadas al sistema para operar con semáforos (semget, semctl y semop). Para una información más completa y fidedigna, diríjanse al manual de llamadas al sistema (sección 2). Para el correcto uso de todas estas funciones, han de incluir el fichero cabecera <sys/sem.h> Las tres funciones devuelven -1 si algo ha ido mal y en tal caso la variable errno informa del tipo de error. Apertura o creación de un semáforo Sintaxis: int semget ( key_t key, int nsems, int semflg ); semget devuelve el identificador del semáforo correspondiente a la clave key. Puede ser un semáforo ya existente, o bien semget crea uno nuevo si se da alguno de estos casos:
  • 40. a) key vale IPC_PRIVATE. Este valor especial obliga a semget a crear un nuevo y único identificador, nunca devuelto por ulteriores llamadas a semget hasta que sea liberado con semctl. b) key no está asociada a ningún semáforo existente, y se cumple que (semflg & IPC_CREAT) es cierto. A un semáforo puede accederse siempre que se tengan los permisos adecuados. Si se crea un nuevo semáforo, el parámetro nsems indica cuántos semáforos contiene el conjunto creado; los 9 bits inferiores de semflg contienen los permisos estilo UNIX de acceso al semáforo (usuario, grupo, otros). semflg es una máscara que puede contener IPC_CREAT, que ya hemos visto, o IPC_EXCL, que hace crear el semáforo, pero fracasando si ya existía. Ejemplo: int semid = semget ( IPC_PRIVATE, 1, IPC_CREAT | 0744 ); Operaciones de control sobre semáforos Sintaxis: int semctl ( int semid, int semnum, int cmd... ); Esta es una función compleja (y de interfaz poco elegante) para realizar ciertas operaciones con semáforos. semid es un identificador de semáforo (devuelto previamente por semget) y semnum, el semáforo del conjunto sobre el que quieren trabajar. cmd es la operación aplicada; a continuación puede aparecer un parámetro opcional según la operación definida por cmd. Las operaciones que les interesan a ustedes son GETVAL semctl retorna el valor actual del semáforo SETVAL se modifica el valor del semáforo (un cuarto parámetro entero da el nuevo valor) IPC_RMID destruye el semáforo Ejemplos: valor = semctl (semid,semnum,GETVAL); semctl (semid,semnum,SETVAL,nuevo_valor); Operaciones sobre semáforos
  • 41. Sintaxis: int semop ( int semid, struct sembuf* sops, unsigned nsops ); Esta función realiza atómicamente un conjunto de operaciones sobre semáforos, pudiendo bloquear al proceso llamador. semid es el identificador del semáforo y sops es un apuntador a un vector de operaciones. nsops indica el número de operaciones solicitadas. La estructura sembuf tiene estos campos: struct sembuf { unsigned short sem_num; // número del semáforo dentro del conjunto short sem_op; // clase de operación // según sea >0, <0 o ==0 short sem_flg; // modificadores de operación }; Cada elemento de sops es una operación sobre algún semáforo del conjunto de semid. El algoritmo simplificado de la operación realizada es éste (semval es el valor entero contenido en el semáforo donde se aplica la operación). si semop<0 si semval >= |semop| semval -= |semop| si semval < |semop| si (semflag & IPC_NOWAIT)!=0 la función semop() retorna si no bloquearse hasta que semval >= |semop| semval -= |semop| si semop>0 semval += semop si semop==0 si semval = 0 SKIP si semval != 0 si (semflag & IPC_NOWAIT)!=0 la función semop() retorna si no bloquearse hasta que semval == 0 Resumiendo un poco, si el campo semop de una operación es positivo, se incrementa el valor del semáforo. Asimismo, si semop es negativo, se decrementa el valor del semáforo si el resultado no es negativo. En caso contrario el proceso espera a que se dé esa circunstancia. Es decir, semop==1 produce una operación V y semop==-1, una operación P. Ejemplos de uso
  • 42. Para ilustrar de forma concreta el empleo de semáforos bajo UNIX, les mostramos unos ejemplos de subrutinas en C que les pueden servir como modelos para elaborar sus rutinas de sincronización en las prácticas de la asignatura. En concreto, son unas funciones que implementan las operaciones P y V de un semáforo clásico (inicialización, incremento y decremento con posible bloqueo del proceso llamador). Así definidas, o con pocas modificaciones, les pueden servir como la interfaz para uso de semáforos en sus aplicaciones. #include <sys/types.h> /* para key_t */ /* Crea un semáforo con un valor inicial, dada una clave */ /* Devuelve el identificador (válido o no) del semáforo */ int crea_sem ( key_t clave, int valor_inicial ); /* Operaciones P y V sobre un semáforo */ void sem_P ( int semid ); void sem_V ( int semid ); /***********************************/ /******** IMPLEMENTACIÓN *******/ /***********************************/ #include <sys/ipc.h> #include <sys/sem.h> #define PERMISOS 0644 /* crea_sem: abre o crea un semáforo */ int crea_sem ( key_t clave, int valor_inicial ) { int semid = semget( /* Abre o crea un semáforo... */ clave, /* con una cierta clave */ 1, /* con un solo elemento */ IPC_CREAT|PERMISOS /* lo crea (IPC_CREAT) con unos PERMISOS */ ); if ( semid==-1 ) return -1; /* Da el valor inicial al semáforo */ semctl ( semid, 0, SETVAL, valor_inicial ); return semid; } /* abre_sem: Abrir un semáforo que otro proceso ya creó */ int abre_sem (key_t clave) { return semget(clave,1,0); }
  • 43. /* Operaciones P y V */ void sem_P ( int semid ) /* Operación P */ { struct sembuf op_P [] = { 0, -1, 0 /* Decrementa semval o bloquea si cero */ }; semop ( semid, op_P, 1 ); } void sem_V ( int semid ) /* Operación V */ { struct sembuf op_V [] = { 0, 1, 0 /* Incrementa en 1 el semáforo */ }; semop ( semid, op_V, 1 ); } http://labsopa.dis.ulpgc.es/prog_c/IPC.HTM Unidad 2 Administración de procesos y del procesador. Ver archivo: Unidad2.pdf 2.7 Concepto de proceso. Un proceso es un programa en ejecución. Un proceso simple tiene un hilo de ejecución, por el momento dejemos esta última definición como un concepto, luego se verá en más detalle el concepto de hilo. Una vez definido que es un proceso nos podríamos preguntar cuál es la diferencia entre un programa y un proceso, y básicamente la diferencia es que un proceso es una actividad de cierto tipo que contiene un programa, entradas salidas y estados. Los procesos pueden ser cooperantes o independientes, en el primer caso se entiende que los procesos interactúan entre sí y pertenecen a una misma aplicación. En el caso de procesos independientes en general se debe a que no interactúan y un proceso no requiere información de otros o bien porque son procesos que pertenecen a distintos usuarios. • Proceso - un programa en ejecución; la ejecucución del proceso debe progresar de manera secuencial. • Un proceso incluye: – program counter – stack – data section Estados de los procesos • Nuevo: El proceso es creado.