Sei sulla pagina 1di 69

NOTAS

Ingeniera
SCC-0431 en Sistemas
Antologa de la Materia de Computacio
nales
Sistemas Operativos

Compilacin Hecha por:


MTIJHR

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 0


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
OBJETIVO GENERAL DEL CURSO

El estudiante conocer, diferenciar y


aplicar las tcnicas de manejo de
recursos para el diseo, organizacin,
utilizacin y optimizacin de
los sistemas operativos.

APORTACION DE LA ASIGNATURA AL
PERFIL DEL EGRESADO

Conoce, diferencia y aplica las tcnicas de manejo de recursos para el diseo, organizacin, utilizacin
y optimizacin de los sistemas operativos

TEMARIO
ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 1
Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
1.1 Definicin y concepto.
1.2 Funciones y caractersticas. 4.1 Dispositivos y manejadores de dispositivos
sistemas operativos.

1.3 Evolucin histrica. (device drivers).

Administracin de
Introduccin a los

entrada/salida
1.4 Clasificacin. 4.2 Mecanismos y funciones de los
1.5 Estructura (niveles o estratos de diseo). manejadores de dispositivos (device drivers).
1

4
1.6 Ncleo. 4.3 Estructuras de datos para manejo de
1.6.1 Interrupciones (FLIH). dispositivos.
1.6.2 Despachador(Scheduler). 4.4 Operaciones de Entrada /salida.
1.6.3 Primitivas de comunicacin(IPC).

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 Exclusin mutua de secciones crticas.
2.4.2 Sincronizacin de procesos en S.C.
2.4.2.1 Mecanismo de semforos. 5.1 Concepto.
Administracin de procesos

2.4.2.2 Mecanismo de monitores. 5.2 Nocin de archivo real y virtual.

Sistema de archivos.
2.4.3 Interbloqueo (DeadLock). 5.3 Componentes de un sistema de archivos.
y del procesador.

2.4.3.1 Prevencin. 5.4 Organizacin lgica y fsica.


2.4.3.2 Deteccin. 5.5 Mecanismos de acceso a los archivos.
2

5
2.4.3.3 Recuperacin. 5.6 Manejo de espacio en memoria secundaria.
2.5 Niveles, objetivos y criterios de 5.7 Modelo jerrquico.
planificacin. 5.8 Mecanismos de recuperacin en caso de
2.6 Tcnicas de administracin del falla.
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.1 Poltica y filosofa.


3.2 Memoria real.
3.2.1 Administracin de almacenamiento.
3.2.2 Jerarqua.
3.2.3 Estrategia de administracin de
memoria.
3.2.4 Asignacin contigua v.s. no contigua.
3.2.5 Multiprogramacin de particin fija,
Administracin de memoria.

particin variable, con intercambio de


Proteccin y seguridad.

almacenamiento. 6.1 Concepto y objetivos de proteccin.


3.3 Organizacin de memoria virtual. 6.2 Funciones del sistema de proteccin.
3.3.1 Evaluacin de las organizaciones de 6.3 Implantacin de matrices de acceso.
almacenamiento. 6.4 Proteccin basada en el lenguaje.
3

3.3.2 Paginacin. 6.5 Concepto de seguridad.


3.3.3 Segmentacin. 6.6 Clasificaciones de la seguridad.
3.3.4 Sistemas de paginacin 6.7 Validacin y amenazas al sistema.
segmentacin. 6.8 Cifrado.
3.4 Administracin de memoria virtual.
3.4.1 Estrategias de administracin.
3.4.2 Tcnicas de reemplazo de pginas.
3.4.3 Paginacin por demanda.
3.4.4 Paginacin anticipada.
3.4.5 Liberacin de pgina.
3.4.6 Tamao de pgina.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 2


Compilado por MTIJHR FUENTE:JADS/PLGCV
FUENTES DE INFORMACIN
1. Silberschatz, Abraham Galvin, Peter. Sistemas Operativos. Pearson.
NOTAS
2. Stalling, William. Sistemas Operativos. Prentice-Hall.
3. Tanenbaum, Andrew. Sistemas Operativos, Diseo e Implementacin. Pretince Hall.
4. Carretero Prez, Jess. Sistemas Operativos una visin aplicada. Mc. Graw-Hill.
5. Harvey M. Deitel. Introduccin a los sistemas Operativo. Addison-Wesley Iberoamericana.
6. Ida M. Flynn, Ann Mciver Mchoes. Sistemas Operativos. International Thomson Editores.
7. A. M. Lister. Fundamentals of Operating Systems. McMillan Computer Science Series.
8. Donovan. Programacin de Sistemas. Mc. Graw-Hill.
9. Malcolm G. Lane & James D. Mooney. A practical aproach to operating systems. Addison Wesley
Iberoamericana.
10. Robins & Robins. Unix programacin prctica. Ed. PHH.
11. Ullman. System Programming. Adison-Wesley.
12. Comer Douglas & V. Fossum Timothy. Operating System Design Vol I. The Xinu Aproach.
Prentice-Hall.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 3


Compilado por MTIJHR FUENTE:JADS/PLGCV
Unidad UNO: NOTAS
Introduccin a los Sistemas Operativos.

Objetivo Educacional:
El estudiante conocer la historia,
funciones, caractersticas, clasificacin
y estructura de un sistema operativo.

Un sistema operativo acta como un intermediario entre el usuario de una computadora y el hardware de la misma. El propsito de un
sistema operativo es proporcionar un entorno en el que el usuario pueda ejecutar programas de una manera prctica y eficiente.

Un sistema operativo es software que gestiona el hardware de la computadora. El hardware debe proporcionar los mecanismos
apropiados para asegurar el correcto funcionamiento del sistema informtico e impedir que los programas de usuario interfieran con el
apropiado funcionamiento del sistema.

Dado que un sistema operativo es un software grande y complejo, debe crearse pieza por pieza. Cada una de estas piezas debe ser
una parte perfectamente perfilada del sistema, estando sus entradas, salidas y funciones cuidadosamente definidas.

1.1 Definicin y Concepto

Un sistema informtico puede dividirse a grandes rasgos en cuatro componentes: el hardware, el sistema operativo, los programas
de aplicacin y los usuarios

DIFINICION 1: Un SO es un programa que tiene encomendadas una serie de funciones diferentes y cuyo objetivo es simplificar el
manejo y la utilizacin de la computadora, hacindolo seguro y eficiente.

Definicin 2: Un SO es un programa que administra el hardware de una computadora. Tambin proporciona las bases para los
programas de aplicacin y acta como un intermediario entre el usuario y el hardware de la computadora

Definicin 3: Es un programa que controla la ejecucin de los programas de aplicacin y que acta como interfaz entre el usuario de
un computador y el hardware de la misma.

Definicin 4: Un sistema operativo es un conjunto de programas destinados a permitir la comunicacin del usuario con un
computador y gestionar sus recursos de una forma eficaz. Comienza a trabajar cuando se enciende el computador, y gestiona el hardware de l a
mquina desde los niveles ms bsicos.

Definicin 5: El sistema operativo es el ncleo que hace funcionar a una computadora, funciona como un intermediario entre las
peticiones de los usuarios y los programas, administra y opera el hardware de la computadora, lee y escribe informacin hacia y desde las
unidades de disco.

Cmo podemos definir qu es un sistema operativo? En general, no disponemos de ninguna definicin de sistema operativo que sea
completamente adecuada. Los sistemas operativos existen porque ofrecen una forma razonable de resolver el problema de crear u n sistema
informtico utilizable. El objetivo fundamental de las computadoras es ejecutar programas de usuario y resolver los problemas del mismo
fcilmente. Con este objetivo se construye el hardware de la computadora. Debido a que el hardware por s solo no es fcil de utilizar, se
desarrollaron programas de aplicacin. Estos programas requieren ciertas operaciones comunes, tales como las que controlan los dispositivos
de E/S. Las operaciones habituales de control y asignacin de recursos se incorporan en una misma pieza del software: el sistema oper ativo.
ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 4
Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
Adems, no hay ninguna definicin universalmente aceptada sobre qu forma parte de un sistema operativo. Desde un punto de vista
simple, incluye todo lo que un distribuidor suministra cuando se pide "el sistema operativo". Sin embargo, las caracterstica s incluidas varan
enormemente de un sistema a otro.

Existen 2 tipos de sistemas operativos:

A) SISTEMA BASADO EN CARACTERES: Son aquellos que reciben comandos desde el prompt de la computadora A: \ C:\ y responden
a ella ejecutando una tarea especfica.

B) SISTEMA DE INTERFAZ GRAFICO: Son aquellos que utilizan el mouse como dispositivo de sealizacin que permite seleccionar
pequeos smbolos o dibujos que representan alguna tarea a realizar.

1.2 Funciones y caractersticas

Las funciones clsicas, del sistema operativo se pueden agrupar en las tres categoras siguientes:

I) Gestin de os recursos de la computadora.


II) Ejecucin de servicios para lo: programas.
III) Ejecucin de los mandatos: de los usuarios.

I) El sistema operativo como gestor de recursos.

En una computadora actual suelen coexistir varios programas, del mismo o de varios usuarios, ejecutndose simultneamente. Estos
programas compiten por los recursos de la computadora, siendo el sistema operativo el encargado de arbitrar su asignacin y u so.

a) Asignacin de recursos. El sistema operativo se encarga de asignar los recursos a los programas en ejecucin. Para ello, ha de
mantener unas estructuras que le permitan saber qu recursos estn libres y cules estn asignados a cada programa.

Los recursos manejados por el sistema operativo son fsicos y lgicos. Entre los fsicos se encuentra el procesador, la memoria principal
y los perifricos. Entre los lgicos se pueden citar los archivos y los puertos de comunicacin.

b) Proteccin: El sistema operativo ha de garantizar la proteccin entre los usuarios del sistema. Ha de asegurar la confidencialidad de
la informacin y que unos trabajos no interfieran con otros. Para conseguir este objetivo ha de impedir que unos programas pu edan acceder a
los recursos asignados a otros programas.

c) Contabilidad: La contabilidad permite medir la cantidad de recursos que, a lo largo de su ejecucin, utiliza cada programa. De esta
forma se puede conocer la carga de utilizacin que tiene cada recurso y se puede imputar a cada usuario los recursos que ha utilizado.

II) El sistema operativo como mquina extendida

El sistema operativo ofrece a los programas un conjunto de servicios, o llamadas al sistema, que pueden solicitar cuando lo n ecesiten,
proporcionando a los programas una visin de mquina extendida.

Los servicios se pueden agrupar en las cuatro clases siguientes:

1. Ejecucin de programas: El sistema operativo incluye servicios para lanzar la ejecucin de un programa, as como para pararla o
abortarla. Tambin existen servicios para conocer y modificar las condiciones de ejecucin de los programas, para comunicar y sincronizar un os
programas con otros. La ejecucin de programas da lugar al concepto de proceso. Un proceso se puede definir como un programa en
ejecucin.

2. rdenes de E/S: Los servicios de E/S ofrecen una gran comodidad y proteccin al proveer a los programas de operaciones de
lectura, escritura y modificacin del estado de los perifricos. En efecto, la programacin de las operaciones de E/S es muy compleja y depende
del hardware especfico de cada perifrico. Los servicios del sistema operativo ofrecen un alto nivel de abstraccin de forma que el programador
de aplicacin no tenga que preocuparse de esos detalles.

3. Operaciones sobre archivos: Los archivos ofrecen un nivel de abstraccin mayor que el de las rdenes de E/S, permitiendo
operaciones tales como creacin, borrado, renombrado, apertura, escritura y lectura de archivos.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 5


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
4. Deteccin y tratamiento de errores: Entre las condiciones de error que pueden aparecer se encuentran: errores en las operaciones
de E/S, errores de paridad en los accesos a memoria o en los buses y errores de ejecucin en los programas, como desbordamien tos,
violaciones de memoria, cdigos de instruccin prohibidos, etc.

III) El sistema operativo como interfaz de usuario

El mdulo del sistema operativo que permite que los usuarios dialoguen de forma interactiva con el sistema es el intrprete d e
mandatos o shell.

El shell se comporta como un bucle infinito que est repitiendo constantemente la siguiente secuencia:

Espera una orden del usuario.


Analiza la orden.
Concluida la orden vuelve a la espera.

El sistema operativo est formado conceptualmente por tres capas principales. La capa ms cercana al hardware se denomina ncleo
(kernel) y es la que gestiona los recursos hardware del sistema y la que suministra la funcionalidad bsica del sistema opera tivo. Esta capa ha de
ejecutar en nivel ncleo, mientras que las otras pueden ejecutar en niveles menos permisivos.

La capa de servicios o llamadas al sistema ofrece a los programas unos servicios en forma de una interfaz de programacin o A PI
(application programming interface). Desde el punto de vista de los programas, esta capa extiende la funcionalidad de la co mputadora, por lo
que se suele decir que el sistema operativo ofrece una mquina virtual extendida a los programas. De esta forma se facilita la elaboracin de
stos, puesto que se apoyan en las funciones que le suministra el sistema operativo.

La capa de intrprete de mandatos o shell suministra una interfaz a travs de la cual el usuario puede dialogar de forma interactiva con
la computadora. El shell recibe los mandatos u rdenes del usuario, algunos autores consideran que no forma parte del sistema operativo.

API
USUARIOS

PROGRAMAS DE USUARIO SHELL

SERVICIOS

NCLEO Sistema
Operativo
HARDWARE

Niveles del sistema operativo

Caractersticas de los Sistemas Operativos.

En general, se puede decir que un Sistema Operativo tiene las siguientes caractersticas:

Conveniencia. Un Sistema Operativo hace ms conveniente el uso de una computadora.


Eficiencia. Un Sistema Operativo permite que los recursos de la computadora se usen de la manera ms eficiente posible.

Habilidad para evolucionar. Un Sistema Operativo deber construirse de manera que permita el desarrollo, prueba o introduccin
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 lo s
recursos.

Relacionar dispositivos (gestionar a travs del kernel). El Sistema Operativo se debe encargar de comunicar a los dispositivos
perifricos, cuando el usuario as lo requiera.
Organizar datos para acceso rpido y seguro.

Manejar las comunicaciones en red. El Sistema Operativo permite al usuario manejar con alta facilidad todo lo referente a la instalacin
y uso de las redes de computadoras.
Procesamiento por bytes de flujo a travs del bus de datos.
ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 6
Compilado por MTIJHR FUENTE:JADS/PLGCV

Entrada/Salida de la computadora.
NOTAS
Facilitar las entradas y salidas. Un Sistema Operativo debe hacerle fcil al usuario el acceso y manejo de los dispositivos d e

Tcnicas de recuperacin de errores.

Evita que otros usuarios interfieran. El Sistema Operativo evita que los usuarios se bloqueen entre ellos, informndoles si esa aplicacin
est siendo ocupada por otro usuario.

Generacin de estadsticas.

Permite que se puedan compartir el hardware y los datos entre los usuarios.

1.3 Evolucin histrica

Los Sistemas Operativos, al igual que el Hardware de los computadores, han sufrido una serie de cambios revolucionarios llama dos
generaciones. En el caso del Hardware, las generaciones han sido marcadas por grandes avances en los componentes utilizados, pasando de
vlvulas (primera generacin) a transistores (segunda generacin), a circuitos integrados (tercera generacin), a circuitos integrados de gran y
muy gran escala (cuarta generacin). Cada generacin Sucesiva de hardware ha ido acompaada de reducciones substanciales en l os costos,
tamao, emisin de calor y consumo de energa, y por incrementos notables en velocidad y capacidad.

Generacin Cero (dcada de 1940)


Los primeros sistemas computacionales no posean sistemas operativos. Los usuarios tenan completo acceso al lenguaje de la
mquina. Todas las instrucciones eran codificadas a mano.

Primera Generacin (dcada de 1950)


Los sistemas operativos de los aos cincuenta fueron diseados para hacer ms fluida la transicin entre trabajos. Antes de q ue los
sistemas fueran diseados, se perda un tiempo considerable entre la terminacin de un trabajo y el inicio del siguiente. E ste fue el comienzo de
los sistemas de procesamiento por lotes, donde los trabajos se reunan por grupos o lotes. Cuando el trabajo estaba en ejecuc in, este tena
control total de la mquina. Al terminar cada trabajo, el control era devuelto al sistema operativo, el cual limpiaba y lea e iniciaba el trabajo
siguiente.

Al inicio de los 50's esto haba mejorado un poco con la introduccin de tarjetas perforadas (las cuales servan para introdu cir los
programas de lenguajes de mquina), puesto que ya no haba necesidad de utilizar los tableros enchufables.

Adems el laboratorio de investigacin General Motors implement el primer sistema operativo para la IBM 701. Los sistemas de los
50's generalmente ejecutaban una sola tarea, y la transicin entre tareas se suavizaba para lograr la mxima utilizacin del sistema. Esto se
conoce como sistemas de procesamiento por lotes de un slo flujo, ya que los programas y los datos eran sometidos en grupos o lotes.

La introduccin del transistor a mediados de los 50's cambi la imagen radicalmente.

Se crearon mquinas suficientemente confiables las cuales se instalaban en lugares especialmente acondicionados, aunque slo las
grandes universidades y las grandes corporaciones o bien las oficinas del gobierno se podan dar el lujo de tenerlas.

Para poder correr un trabajo (programa), tenan que escribirlo en papel (en Fortran o en lenguaje ensamblador) y despus se p erforara
en tarjetas. Enseguida se llevara la pila de tarjetas al cuarto de introduccin al sistema y la entregara a uno de los operadores. Cuando la
computadora terminara el trabajo, un operador se dirigira a la impresora y desprendera la salida y la llevara al cuarto de salida, para que la
recogiera el programador.

Segunda Generacin (a mitad de la dcada de 1960)


La caracterstica de los sistemas operativos fue el desarrollo de los sistemas compartidos con multiprogramacin, y los princ ipios del
multiprocesamiento. En los sistemas de multiprogramacin, varios programas de usuario se encuentran al mismo tiempo en el almacenamiento
principal, y el procesador se cambia rpidamente 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 mquina.

La independencia de dispositivos aparece despus. Un usuario que desea escribir datos en una cinta en sistemas de la primera
generacin tena que hacer referencia especfica a una unidad de cinta particular. En la segunda generacin, el programa del usuario
especificaba tan solo que un archivo iba a ser escrito en una unidad de cinta con cierto nmero de pistas y cierta densidad.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 7


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
Se desarroll sistemas compartidos, en la que los usuarios podan acoplarse directamente con el computador a travs de terminales.
Surgieron sistemas de tiempo real, en que los computadores fueron utilizados en el control de procesos industriales. Los sist emas de tiempo
real se caracterizan por proveer una respuesta inmediata.

Tercera Generacin (mitad de dcada 1960 a mitad dcada de 1970)


Se inicia en 1964, con la introduccin de la familia de computadores Sistema/360 de IBM. Los computadores de esta generacin
fueron diseados como sistemas para usos generales. Casi siempre eran sistemas grandes, voluminoso s, con el propsito de serlo todo para
toda la gente. Eran sistemas de modos mltiples, algunos de ellos soportaban simultneamente procesos por lotes, tiempo compa rtido,
procesamiento de tiempo real y multiprocesamiento. Eran grandes y costosos, nunca antes se haba construido algo similar, y muchos de los
esfuerzos de desarrollo terminaron muy por arriba del presupuesto y mucho despus de lo que el planificador marcaba como fech a de
terminacin.

Estos sistemas introdujeron mayor complejidad a los ambientes computacionales; una complejidad a la cual, en un principio, no
estaban acostumbrados los usuarios.

Cuarta Generacin (mitad de dcada de 1970 en adelante)


Los sistemas de la cuarta generacin constituyen el estado actual de la tecnologa. Muchos diseadores y usuarios se sienten aun
incmodos, despus de sus experiencias con los sistemas operativos de la tercera generacin.

Con la ampliacin del uso de redes de computadores y del procesamiento en lnea los usuarios obtienen acceso a computadores
alejados geogrficamente a travs de varios tipos de terminales.

Los sistemas de seguridad se han incrementado mucho ahora que la informacin pasa a travs de varios tipos vulnerables de ln eas de
comunicacin. La clave de cifrado est recibiendo mucha atencin; han sido necesarios codificar los datos personales o de gran intimidad para
que; aun si los datos son expuestos, no sean de utilidad a nadie ms que a los receptores adecuados.

El porcentaje de la poblacin que tiene acceso a un computador en la dcada de los ochenta es mucho mayor que nunca y aumenta
rpidamente.

El concepto de mquinas virtuales es utilizado. El usuario ya no se encuentra interesado en los detalles fsicos de; sistema de
computacin que est siendo accedida. En su lugar, el usuario ve un panorama llamado mquina virtual creado por el sistema op erativo.

Los sistemas de bases de datos han adquirido gran importancia. Nuestro mundo es una sociedad orientada hacia la informacin, y el
trabajo de las bases de datos es hacer que esta informacin sea conveniente accesible de una manera controlada para aquellos que tienen
derechos de acceso.

1.4 Clasificacin

Con el paso del tiempo, los Sistemas Operativos fueron clasificndose de diferentes maneras, dependiendo del uso o de la aplicacin
que se les daba. A continuacin se mostrarn diversos tipos de Sistemas Operativos que existen en la actualidad, con algunas de sus
caractersticas:

Sistemas Operativos por lotes.

Los Sistemas Operativos por lotes, procesan una gran cantidad de trabajos con poca o ninguna interaccin entre los usuarios y los
programas en ejecucin. Se renen todos los trabajos comunes para realizarlos al mismo tiempo, evitando la espera de dos o ms trabajos
como sucede en el procesamiento en serie. Estos sistemas son de los ms tradicionales y antiguos, y fueron introducidos alred edor de 1956
para aumentar la capacidad de procesamiento de los programas.

Cuando estos sistemas son bien planeados, pueden tener un tiempo de ejecucin muy alto, porque el procesador es mejor utiliza do y
los Sistemas Operativos pueden ser simples, debido a la secuenciabilidad de la ejecucin de los trabajos.

Algunos ejemplos de Sistemas Operativos por lotes exitosos son el SCOPE, del DC6600, el cual est orientado a procesamiento
cientfico pesado, y el EXEC II para el UNIVAC 1107, orientado a procesamiento acadmico.

Algunas otras caractersticas 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 interaccin usuario/programa en ejecucin.
Mayor potencial de utilizacin de recursos que procesamiento serial simple en sistemas multiusuarios.
No conveniente para desarrollo de programas por bajo tiempo de retorno y depuracin fuera de lnea.
Conveniente para programas de largos tiempos de ejecucin (ej, anlisis estadsticos, nminas de personal, etc.).
Se encuentra en muchos computadores personales combinados con procesamiento serial.
Planificacin del procesador sencilla, tpicamente procesados en orden de llegada.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 8


Compilado por MTIJHR FUENTE:JADS/PLGCV



No requieren gestin crtica de dispositivos en el tiempo. NOTAS
Planificacin de memoria sencilla, generalmente se divide en dos: parte residente del S.O. y programas transitorios.

Suelen proporcionar gestin sencilla de manejo de archivos: se requiere poca proteccin y ningn control de concurrencia para el
acceso.

Figura. Trabajos ms comunes que realiza el Sistema Operativo por lotes.

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,
estn subutilizados sus recursos con la finalidad de prestar atencin a los procesos en el momento que lo requieran. se utili zan en entornos
donde son procesados un gran nmero de sucesos o eventos.

Muchos Sistemas Operativos de tiempo real son construidos para aplicaciones muy especficas como control de trfico areo, bolsas
de valores, control de refineras, control de laminadores. Tambin en el ramo automovilstico y de la electrnica de consumo, las aplicaciones de
tiempo real estn creciendo muy rpidamente. Otros campos de aplicacin de los Sistemas Operativos de tiempo real son los siguientes:

Control de trenes.

Telecomunicaciones.

Sistemas de fabricacin integrada.

Produccin y distribucin de energa elctrica.

Control de edificios.

Sistemas multimedia.

Algunos ejemplos de Sistemas Operativos de tiempo real son: VxWorks, Solaris, Lyns OS y Spectra. Los Sistemas Operativos de t iempo
real, cuentan con las siguientes caractersticas:

Se dan en entornos en donde deben ser aceptados y procesados gran cantidad de sucesos, la mayora externos al sistema
computacional, en breve tiempo o dentro de ciertos plazos.
Se utilizan en control industrial, conmutacin telefnica, control de vuelo, simulaciones en tiempo real., aplicaciones militares, etc.
Objetivo es proporcionar rpidos tiempos de respuesta.
Procesa rfagas de miles de interrupciones por segundo sin perder un solo suceso.
Proceso se activa tras ocurrencia de suceso, mediante interrupcin.
Proceso de mayor prioridad expropia recursos.
Por tanto generalmente se utiliza planificacin expropiativa basada en prioridades.
Gestin de memoria menos exigente que tiempo compartido, usualmente procesos son residentes permanentes en memoria.
Poblacin de procesos esttica en gran medida.
Poco movimiento de programas entre almacenamiento secundario y memoria.
Gestin de archivos se orienta ms a velocidad de acceso que a utilizacin eficiente del recurso.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 9


Compilado por MTIJHR FUENTE:JADS/PLGCV
Sistemas Operativos de multiprogramacin (o Sistemas Operativos de multitarea).
NOTAS
Se distinguen por sus habilidades para poder soportar la ejecucin de dos o ms trabajos activos (que se estn ejecutado) al mismo
tiempo. Esto trae como resultado que la Unidad Central de Procesamiento (UCP) siempre tenga alguna tarea que ejecutar, aprovechando al
mximo su utilizacin.

Su objetivo es tener a varias tareas en la memoria principal, de manera que cada uno est usando el procesador, o un procesad or
distinto, es decir, involucra mquinas con ms de una UCP.

Sistemas Operativos como UNIX, Windows 95, Windows 98, Windows NT, MAC-OS, OS/2, soportan la multitarea.

Las caractersticas de un Sistema Operativo de multiprogramacin o multitarea son las siguientes:

Mejora productividad del sistema y utilizacin de recursos.


Multiplexar recursos entre varios programas.
Generalmente soportan mltiples usuarios (multiusuarios).
Proporcionan facilidades para mantener el entorno de usuarios individuales.
Requieren validacin de usuario para seguridad y proteccin.
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 definicin ya que soportan la ejecucin simultnea de mltiples tareas sobre
diferentes procesadores.
En general, los sistemas de multiprogramacin se caracterizan por tener mltiples programas activos compitiendo por los recursos del
sistema: procesador, memoria, dispositivos perifricos.

Sistemas Operativos de tiempo compartido.

Permiten la simulacin de que el sistema y sus recursos son todos para cada usuario. El usuario hace una peticin a la comput adora,
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 ilusin de que tiene el sistema dedicado para s mismo. Esto trae como consecuencia una gran carga de
trabajo al Sistema Operativo, principalmente en la administracin de memoria principal y secundaria.

Ejemplos de Sistemas Operativos de tiempo compartido son Multics, OS/360 y DEC-10.

Caractersticas de los Sistemas Operativos de tiempo compartido:

Populares representantes de sistemas multiprogramados multiusuario, ej.: sistemas de diseo asistido por computador, procesam iento
de texto, etc.
Dan la ilusin de que cada usuario tiene una mquina para s.
Mayora utilizan algoritmo de reparto circular.
Programas se ejecutan con prioridad rotatoria que se incrementa con la espera y disminuye despus de concedido el servicio.
Evitan monopolizacin del sistema asignando tiempos de procesador (time slot).
Gestin de memoria proporciona proteccin a programas residentes.
Gestin de archivo debe proporcionar proteccin y control de acceso debido a que pueden existir mltiples usuarios accediendo un
mismo archivo.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 10


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS

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 bsicos 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 dbilmente 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.

Caractersticas de los Sistemas Operativos distribuidos:

Coleccin de sistemas autnomos capaces de comunicacin y cooperacin mediante interconexiones hardware y software .

Gobierna operacin de un S.C. y proporciona abstraccin de mquina virtual a los usuarios.

Objetivo clave es la transparencia.

Generalmente proporcionan medios para la comparticin global de recursos.

Servicios aadidos: denominacin global, sistemas de archivos distribuidos, facilidades para distribucin de clculos (a travs de
comunicacin de procesos internodos, llamadas a procedimientos remotos, etc.).

Actividad
CUATRO.

Sistemas Operativos de red.

Son aquellos sistemas que mantienen a dos o ms computadoras unidas a travs de algn medio de comunicacin (fsico o no), con el
objetivo primordial de poder compartir los diferentes recursos y la informacin del sistema.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 11


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
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.

Figura. Se muestra un Sistema Operativo en red.

Sistemas Operativos paralelos.

En estos tipos de Sistemas Operativos se pretende que cuando existan dos o ms procesos que compitan por algn recurso se
puedan realizar o ejecutar al mismo tiempo.

En UNIX existe tambin 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 hara normalmente), regresa a atender al usuario inmediatamente despus de haber creado el proceso.

Ejemplos de estos tipos de Sistemas Operativos estn: Alpha, PVM, la serie AIX, que es utilizado en los sistemas RS/6000 de IBM

1.5 Estructura (niveles o estratos de diseo)

Internamente los sistemas operativos estructuralmente se clasifican segn como se hayan organizado
internamente en su diseo, por esto la clasificacin ms comn de los S.O. Son:

Sistemas operativos monolticos.

Un sistema operativo de este tipo no tiene una estructura clara y bien definida. Todos sus componentes se
encuentran integrados en un nico programa (el sistema operativo) que ejecuta en un nico espacio de direcciones. En
este tipo de sistemas todas las funciones que ofrece el sistema operativo se ejecutan en modo ncleo.

Estos sistemas operativos han surgido, normalmente, de sistemas operativos sencillos y pequeos a los que se les
ha ido aadiendo un nmero mayor de funcionalidades. Esto les ha hecho evolucionar y crecer hasta convertirlos en
programas grandes y complejos formados por muchas funciones situadas todas ellas en un mismo nivel. Ejemplos claros
de este tipo de sistemas son MS-DOS y UNIX. Ambos comenzaron siendo pequeos sistemas operativos, que fueron
hacindose cada vez ms grandes debido a la gran popularidad que adquirieron.

El problema que plantea este tipo de sistemas radica en lo complicado que es modificar el sistema operativo para
aadir nuevas funcionalidades y servicios. En efecto, aadir una nueva caracterstica al sistema operativo implica la
modificacin de un gran programa, compuesto por miles de lneas de cdigo fuente y funciones, cada una de las cuales
puede invocar a otras cuando as lo requieran. Adems en este tipo de sistemas no se sigue el principio de ocultacin de la
informacin. Para solucionar este problema es necesario dotar de cierta estructura al sistema operativo.
ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 12
Compilado por MTIJHR FUENTE:JADS/PLGCV
Sistemas operativos estructurados. NOTAS
Cuando se quiere dotar de estructura a un sistema operativo, normalmente se recurre a dos tipos de soluciones:
sistemas por capas y sistemas cliente servidor.

a) Sistemas por capas.

En un sistema por capas, el sistema operativo se organiza como una jerarqua de capas, donde cada capa ofrece
una interfaz clara y bien definida a la capa superior y solamente utiliza los servicios que le ofrece la capa inferior.

La principal ventaja que ofrece este tipo de estructuras es la modularidad y la ocultacin de la informacin. Una
capa no necesita conocer cmo se ha implementado la capa sobre la que se construye, nicamente necesita conocer la
interfaz que ofrece. Esto facilita enormemente la depuracin y verificacin del sistema, puesto que las capas se pueden ir
construyendo y depurando por separado.

Este enfoque lo utiliz por primera vez el sistema operativo THE, un sistema operativo sencillo que estaba formado
por seis capas, como se muestra en la siguiente figura:

Capa 5: programas de usuario


Capa 4: Gestin de la E/S

Capa 3: Controlador de la consola

Capa 2: Gestin de la memoria

Capa 1: Planificacin de la CPU y multiprogramacin

Capa 0: Hardware
Estructura por capas del sistema operativo THE.

Otro ejemplo de sistema operativo diseado por capas es el OS/2, descendiente de MS-DOS.

b) Modelo Cliente Servidor

En este tipo de modelo, el enfoque consiste en implementar la mayor parte de los servicios y funciones del
sistema operativo en procesos de usuario, dejando slo una pequea parte del sistema operativo ejecutando en modo
ncleo. A esta parte se le denomina microncleo y a los procesos que ejecutan el resto de funciones se les denomina
servidores. La siguiente figura representa la estructura de un sistema operativo cliente servidor:

Procesos Cliente Procesos Servidores


Programa Program Servidor Servidor Servidor Servidor de Servidor Servidor
de a de de de archivos y de de
usuario de procesos memoria E/S directorios seguridad comunicaci
usuario n Modo Usuario

API API

Microncleo Modo Ncleo

Hardware

Como puede apreciarse en la figura anterior, el sistema operativo est formado por diversas partes, cada una de
las cuales puede desarrollarse por separado.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 13


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
No hay una definicin clara de las funciones que debe llevar a cabo un microncleo. La mayora incluyen la
gestin de interrupciones, gestin bsica de procesos y de memoria y servicios bsicos de comunicacin entre procesos.
Para solicitar un servicio en este tipo de sistemas, como por ejemplo crear un proceso, el proceso de usuario (proceso
denominado cliente) solicita el servicio al servidor del sistema operativo correspondiente, en este caso al servidor de
procesos. A su vez, el proceso servidor puede requerir los servicios de otros servidores, como es el caso del servidor de
memoria. En este caso el servidor de procesos se convierte en cliente del servidor de memoria.

La ventaja de este modelo es la gran flexibilidad que presenta. Cada proceso servidor slo se ocupa de una
funcionalidad concreta, lo que hace que cada parte pueda ser pequea y manejable. Esto a su vez facilita el desarrollo y
depuracin de cada uno de los procesos servidores.
En cuanto a las desventajas, citar que estos sistemas presentan una mayor sobrecarga en el tratamiento de los servicios
que los sistemas monolticos. Esto se debe a que los distintos componentes de un sistema operativo de este tipo ejecutan
en espacios de direcciones distintos, lo que hace que su activacin requiera ms tiempo.

1.6 Ncleo

El Ncleo (o kernel) es una coleccin de mdulos de software que se ejecutan en forma privilegiada lo que
significa que tienen acceso pleno a los recursos del sistema. El ncleo normalmente representa slo una pequea parte de
lo que por lo general se piensa que es todo el sistema operativo, pero es tal vez el cdigo que ms se utiliza. Por esta
razn, el ncleo reside por lo regular en la memoria principal, mientras que otras partes del sistema operativo son
cargadas en la memoria principal slo cuando se necesitan.

Los ncleos se disean para realizar el mnimo posible de procesamiento en cada interrupcin y dejar que el
resto lo realice el proceso apropiado del sistema, que puede operar mientras el ncleo se habilita para atender otras
interrupciones.

El ncleo de un sistema operativo normalmente contiene el cdigo necesario para realizar las siguientes funciones:

Manejo de interrupciones.
Creacin y destruccin de procesos.
Cambio de estado de los procesos.
Despacho.
Suspensin y reanudacin de procesos.
Sincronizacin de procesos.
Comunicacin entre procesos.
Manipulacin de los bloques de control de procesos.
Apoyo para las actividades de entrada/salida.
Apoyo para asignacin y liberacin de memoria.
Apoyo para el sistema de archivos.
Apoyo para el mecanismo de llamada y retorno de un procedimiento.
Apoyo para ciertas funciones de contabilidad del sistema.

El Kernel consiste en la parte principal del cdigo del sistema operativo, el cual se encargan de controlar y
administrar los servicios y peticiones de recursos y de hardware con respecto a uno o varios procesos, este se divide en 5
capas:

Nivel 1. Procesador. (Ncleo)

Se encarga de activar los cuantum de tiempo para cada uno de los procesos, creando interrupciones de hardware
cuando no son respetadas.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 14


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
Se introduce la nocin de proceso como un programa en ejecucin. Entre los requisitos fundamentales de un
sistema operativo que ofrezca soporte para mltiples procesos se incluye la capacidad de suspender y reanudar los
procesos. Esto exige salvaguardar los registros del hardware, de modo que la ejecucin pueda cambiar de un proceso a
otro. Adems, si los procesos necesitan cooperar, hace falta algn mtodo de sincronizacin.

Nivel 2. Entrada/Salida.

Proporciona las facilidades para poder utilizar los dispositivos de E/S requeridos por procesos.
Tiene que ver con los dispositivos de almacenamiento secundario. En este nivel se sitan las funciones de ubicacin de las
cabezas de lectura y escritura, y se producen las transferencias reales de bloques. Este nivel se apoya en el nivel anterior
para planificar las operaciones y notificar al proceso que hizo la solicitud que la operacin ha culminado.

Nivel 3. Gestin de Memoria.

Proporciona las facilidades de bajo nivel para la gestin de memoria secundaria necesaria para la ejecucin de
procesos.
Crea un espacio de direcciones lgicas para los procesos. Este nivel organiza el espacio de direcciones virtuales en bloques
que se pueden mover entre la memoria principal y la memoria secundaria. Son tres los esquemas de uso ms habitual: los
que utilizan pginas de longitud fija, los que usan segmentos de longitud variable y los que utilizan los dos.

Nivel 4. Sistema de Archivos.

Proporciona la facilidad para el almacenamiento a largo plazo y manipulacin de archivos con nombre, va
asignando espacio y acceso de datos en memoria. Da soporte al almacenamiento a largo plazo de los archivos con
nombre.
En este nivel, los datos del almacenamiento secundario se contemplan en trminos de entidades abstractas de longitud
variable, en contraste con el enfoque orientado al hardware del nivel de E/S bsicas, en trminos de pistas, sectores y
bloques de tamao fijo.

Nivel 5. Informacin o Aplicacin o Intrprete de Lenguajes.

Facilita la comunicacin con los lenguajes y el sistema operativo para aceptar las ordenes en cada una de las
aplicaciones. Cuando se solicitan ejecutando un programa el software de este nivel crea el ambiente de trabajo e invoca a
los procesos correspondientes.

Ofrece al usuario una interfaz con el sistema operativo. Se denomina shell y separa al usuario de los detalles, le
presenta el sistema operativo como un simple conjunto de servicios. El shell acepta las rdenes del usuario o las
sentencias de control de trabajos, las interpreta, crea y controla los procesos segn sea necesario.

El intrprete de comandos representa la interfaz entre el usuario y el sistema operativo. Algunos sistemas
operativos incluyen el intrprete en el kernel. Otros como el DOS o UNIX, poseen un programa especial para cumplir esta
funcin que se ejecuta cuando se inicia el sistema.

1.6.1 Interrupciones

La interrupcin es el mecanismo mediante el cual otros mdulos pueden interrumpir una secuencia normal de
procesamiento.

Programa: por ejemplo divisin por cero.


Temporizador: cuando se cumple un tiempo especfico.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 15


Compilado por MTIJHR FUENTE:JADS/PLGCV
E/S: cuando hay algo que comunicar
Hardware: cuando ocurre una falla. NOTAS
La gestin de interrupciones la realiza el manipulador (controlador) de interrupciones (FLIH, First Level Interrupt
Handler).

El manipulador de interrupciones es la parte del sistema operativo responsable de proporcionar la respuesta


adecuada a las seales procedentes tanto del exterior como del interior del sistema (interrupciones externas e internas).

1.6.2 Despachador

Se encarga de asignar los procesadores a los diferentes procesos, por lo tanto debe actuar cuando se debe
comprobar si es necesario cambiar el proceso que est activo.

Esto involucra:

Cambio de contexto.
Cambio a modo usuario.
Salto a la direccin de memoria que corresponda al programa de usuario para continuar su ejecucin.
Criterios de Despachador.
Utilizacin de CPU: mantener la CPU ocupada la mayor cantidad del tiempo posible.
Productividad (Throughput): # de procesos por unidad de tiempo.
Tiempo de servicio (Turnaround time): tiempo necesario para la ejecucin de un proceso particular.
Tiempo de espera (Waiting time): tiempo total que el proceso se encuentra en la fila ready.
Tiempo de respuesta (Response time): tiempo que transcurre desde el requerimiento hasta que se produce la
primera respuesta (en ambientes de tiempo compartido).
Criterios de Optimizacin.
Mxima utilizacin de CPU.
Mxima productividad.
Mnimo tiempo de servicio.
Mnimo tiempo de espera.
Mnimo tiempo de respuesta.

1.6.3 Primitivas de comunicacin (IPC)

Es una funcin bsica de los Sistemas operativos.

Los procesos pueden comunicarse entre s a travs de compartir espacios de memoria, ya sean variables
compartidas o buffers, o a travs de las herramientas provistas por las rutinas de IPC.

La IPC provee un mecanismo que permite a los procesos comunicarse y sincronizarse entre s. Normalmente a
travs de un sistema de bajo nivel de paso de mensajes que ofrece la red subyacente.

La comunicacin se establece siguiendo una serie de reglas (protocolos de comunicacin). Los protocolos
desarrollados para internet son los mayormente usados: protocolo de internet (capa de red), protocolo de control de
transmisin (capa de transporte) y protocolo de transferencia de archivos, protocolo de transferencia de hipertexto (capa
de aplicacin).

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 16


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS

Tarea 1:
Investigar y definir el concepto de sistema operativo
Investigar y definir sus funciones y caractersticas.

Tarea 2:
Investigaciones acerca de los aspectos histricos del desarrollo de los sistemas operativos.

Tarea 3:
Resea histrica de la evolucin de los sistemas operativos con el propsito de explicarse la complejidad actual de los mismos . (Lnea del
tiempo)

ACTIVIDAD UNO:
Analizar, en equipo, las estructura de diferentes sistemas operativos y su clasificacin. Elaborar conclusiones por equipo y presentarlas al grupo.

ACTIVIDAD DOS:
Identificar las capas conceptuales y en el laboratorio el cdigo fuente que las conforma.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 17


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS

Unidad DOS: Administracin de


procesos y procesador
Objetivo educacional:
Comprender el concepto de proceso,
procesos ligeros, concurrencia y
algunos algoritmos de planificacin.
.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 18


Compilado por MTIJHR FUENTE:JADS/PLGCV
Los primeros Sistemas de computacin solo permitan la ejecucin de un programa a la vez.
NOTAS
Este programa asuma el control total del sistema, y tena acceso a todos sus recursos. Los sistemas de
computacin actuales permite cargan mltiples programas en la memoria y ejecutarlos de forma
concurrente. Esta evolucin requiri un control ms firme y mayor compartimentalizacin de los
distintos programas. Estas necesidades dieron pie al concepto de proceso, que es un programa en
ejecucin. Un proceso es la unidad de trabajo en un sistema de tiempo compartido moderno.

2.1 Concepto de proceso.

Un proceso, es un programa en ejecucin. La ejecucin de un proceso debe proceder de manera


secuencial. Es decir, en cualquier instante, cuando ms una instruccin se estar ejecutando a nombre del
proceso.

Un proceso es ms que el cdigo del programa (tambin conocido como seccin de texto); tambin
incluye la actividad actual, representada por el valor del contador de programa y el contenido de los registros
del procesador. Generalmente, un proceso incluye la pila (stack) del proceso, que contiene datos temporales
(como los parmetros de subrutinas, direcciones de retorno y variables temporales), y una seccin de datos que
contiene variables globales.

Un programa por s solo no es un proceso; un programa es una entidad pasiva, como el contenido de
un archivo guardado en disco, mientras que un proceso es una entidad activa, con el contador de programa
especificando la siguiente instruccin que se ejecutar, y un conjunto de recursos asociados.

Aunque podra haber dos procesos asociados al mismo programa, de todas maneras se consideran
como dos secuencias de ejecucin distintas, p.e., varios usuarios podran estar ejecutando copias del programa
de correo, i un mismo usuario podra invocar muchas copias del programa editor. Cada una de estas es un
proceso aparte y, aunque las secciones de texto sean equivalentes, las secciones de datos variarn. Tambin es
comn tener un proceso que engendre mas proceso durante su ejecucin.

2.2 Estados y transiciones de los procesos

A medida que un proceso se eecuta, cambia el estado. El estado de un proceso est definnido en parte
por la actividad actual de ese proceso. Cada proceso puede estar en uno de los siguientes estados.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 19


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS

Nuevo(New): El proceso se est creando


En ejecucin (Running): se estn ejecutando instrucciones.
En espera (waiting): el proceso est esperando que ocurran algn suceso (como la terminacin de una
operacin de E/S o la recepcin de una seal)
Listo(ready): El proceso est esperando que se le asigne a un procesador.
Terminado(Terminated): El proceso termino su ejecucin

Estos nombres son arbitrarios, y varan de un sistema operativo a otro; sin embargo, los estados que
representan se encuentran en todos los sistemas. Ciertos SO hacen distinciones todava ms sutiles entre
estados de los procesos. Es importante tener presente que slo un proceso puede estar ejecutndose en
cualquier procesador en un instante dado, pero muchos procesos pueden estar listos y esperando.

OTRO AUTOR:

FORMACIN DE UN PROCESO

La formacin de un proceso consiste en completar todas las informaciones que lo constituyen, como se
muestra en la Figura siguiente:

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 20


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
De forma ms especfica, las operaciones que debe hacer el sistema operativo son las siguientes:

Asignar un espacio de memoria para albergar la imagen de memoria. En general, este espacio ser virtual y
estar compuesto por varios segmentos.
Seleccionar un BCP libre de la tabla de procesos.
Rellenar el BCP con la informacin de identificacin del proceso, con la descripcin de la memoria asignada,
con los valores iniciales de los registros indicados en el archivo objeto, etc.
Cargar en el segmento de texto el cdigo ms las rutinas de sistema y en el segmento de datos los datos
iniciales contenidos en el archivo objeto.
Crear en el segmento de pila la pila inicial del proceso. La pila incluye inicialmente el entorno del proceso y
los parmetros que se pasan en la invocacin del programa correspondiente.

Una vez completada toda la informacin del proceso, se puede marcar como listo para ejecutar, dc
forma que el planificador, cuando lo considere oportuno, lo seleccione para su ejecucin.

ESTADOS DEL PROCESO

Como se puede observar en la siguiente, no todos los procesos activos de un sistema multitarea estn
en la misma situacin. Se diferencian, por tanto, tres estados bsicos en los que puede estar un proceso,
estados que detallamos seguidamente:

Ejecucin. En este estado est el proceso que est siendo ejecutado por el procesador, es decir, que est en
fase de procesamiento. En esta fase el estado del proceso reside en los registros del procesador.

Bloqueado. Un proceso bloqueado est esperando a que ocurra un evento y no puede seguir ejecutando
hasta que suceda el evento. Una situacin tpica de proceso bloqueado se produce cuando el proceso solicita
una operacin de E/S.

Hasta que no termina esta operacin, el proceso queda bloqueado. En esta fase, el estado del proceso reside
en el BCP (bloque de control del Proceso, Contiene la informacin bsica del proceso).

Listo. Un proceso est listo para ejecutar cuando puede entrar en fase de procesamiento. Dado que puede
haber varios procesos en este estado, una de las tareas del sistema operativo ser seleccionar aquel que debe
pasar a ejecucin. El mdulo del sistema operativo que toma esta decisin se denomina planificador.
En esta fase, el estado del proceso reside en el BCP.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 21


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
La Figura anterior, presenta estos tres estados, indicando algunas de las posibles transiciones entre
ellos. Puede observarse que slo hay un proceso en estado de ejecucin, puesto que el procesador solamente
ejecuta un programa en cada instante. Del estado de ejecucin se pasa al estado de bloqueado al solicitar, por
ejemplo, una operacin de E/S. Tambin se puede pasar del estado de ejecucin al de listo cuando el sistema
operativo decide que ese proceso lleva mucho tiempo en ejecucin. Del estado de bloqueado se pasa al estado
de listo cuando se produce el evento por el que estaba esperando el proceso (p. ej.: cuando se completa la
operacin de E/S solicitada). Todas las transiciones anteriores estn gobernadas por el sistema operativo, lo
que implica la ejecucin del mismo en dichas transiciones.

Estados suspendidos

Adems de los tres estados bsicos de ejecucin, listo y bloqueado, los procesos pueden estar en los
estados de espera y de suspendido. El diagrama de estados completo de un proceso se representa en la Figura
siguiente.

Los procesos entran en el sistema porque lo solicita un proceso de usuario o porque est prevista su
ejecucin hatch. Es frecuente tener una lista de procesos batch en espera para ser ejecutados cuando se pueda.
El sistema operativo ha de ir analizando dicha lista para lanzar la ejecucin de los procesos a medida que
disponga de los recursos necesarios.

Los procesos salen del sistema cuando mueren, es decir, al ejecutar el servicio correspondiente o al
producir algn error irrecuperable.

Diagrama completo con los estados de un proceso.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 22


Compilado por MTIJHR FUENTE:JADS/PLGCV
ACTIVIDAD
NOTAS
1. Que es un proceso y cul es la informacin que contiene.
2. Un programa es o no es un proceso?. 4 Ejemplo de procesos que hayas detectado al usar tu PC
3. Explicar el primer diagrama, ejemplificando un proceso que hayas realizado en la PC
4. Explicar mediante el diagrama cmo se forma un proceso.
5. Explicar el tercero diagrama
6. Cul es la diferencia en los estados de un proceso mostrados en el primer diagrama y el ultimo.

2.3 Procesos ligeros (Hilos o hebras).

En sistemas operativos, un hilo de ejecucin, hebra o subproceso es la unidad de procesamiento ms


pequea que puede ser planificada por un sistema operativo.

Un hilo es bsicamente una tarea que puede ser ejecutada en paralelo con otra tarea.

Los hilos de ejecucin que comparten los mismos recursos, sumados a estos recursos, son en conjunto
conocidos como un proceso. El hecho de que los hilos de ejecucin de un mismo proceso compartan los
recursos hace que cualquiera de estos hilos pueda modificar stos. Cuando un hilo modifica un dato en la
memoria, los otros hilos acceden a ese dato modificado inmediatamente.

Lo que es propio de cada hilo es el contador de programa, la pila de ejecucin y el estado de la CPU
(incluyendo el valor de los registros).

El proceso sigue en ejecucin mientras al menos uno de sus hilos de ejecucin siga activo. Cuando el
proceso finaliza, todos sus hilos de ejecucin tambin han terminado. Asimismo en el momento en el que
todos los hilos de ejecucin finalizan, el proceso no existe ms y todos sus recursos son liberados.

Los hilos permiten dividir un programa en dos o ms tareas que corren simultneamente, por medio de
la multiprogramacin. En realidad, este mtodo permite incrementar el rendimiento de un procesador de
manera considerable. En todos los sistemas de hoy en da los hilos son utilizados para simplificar la estructura
de un programa que lleva a cabo diferentes funciones.

Todos los hilos de un proceso comparten los recursos del proceso. Residen en el mismo espacio de
direcciones y tienen acceso a los mismos datos. Cada hilo tiene su propio estado, su propio contador, su propia
pila y su propia copia de los registros de la CPU. Los valores comunes se guardan en el bloque de control de
proceso (PCB), y los valores propios en el bloque de control de hilo (TCB).

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 23


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
Muchos lenguajes de programacin (como Java), y otros entornos de desarrollo soportan los llamados
hilos o hebras (en ingls, threads).

Un ejemplo de la utilizacin de hilos es tener un hilo atento a la interfaz grfica (iconos, botones,
ventanas), mientras otro hilo hace una larga operacin internamente. De esta manera el programa responde
ms gilmente a la interaccin con el usuario.

Diferencias entre hilos y procesos

Los hilos se distinguen de los tradicionales procesos en que los procesos son generalmente
independientes, llevan bastante informacin de estados, e interactan slo a travs de mecanismos de
comunicacin dados por el sistema. Por otra parte, muchos hilos generalmente comparten otros recursos
directamente. En sistemas operativos que proveen facilidades para los hilos, es ms rpido cambiar de un hilo a
otro dentro del mismo proceso, que cambiar de un proceso a otro. Este fenmeno se debe a que los hilos
comparten datos y espacios de direcciones, mientras que los procesos al ser independientes no lo hacen. Al
cambiar de un proceso a otro el sistema operativo (mediante el dispatcher) genera lo que se conoce como
overhead, que es tiempo desperdiciado por el procesador para realizar un cambio de modo (mode switch), en
este caso pasar del estado de Running al estado de Waiting o Bloqueado y colocar el nuevo proceso en
Running. En los hilos como pertenecen a un mismo proceso al realizar un cambio de hilo ste overhead es casi
despreciable.

Sistemas operativos como Windows NT, OS/2 y Linux (2.5 o superiores) han dicho tener hilos 'baratos', y
procesos 'costosos' mientras que en otros sistemas no hay una gran diferencia.

Ventajas de los hilos contra procesos

Si bien los hilos son generados a partir de la creacin de un proceso, podemos decir que un proceso es
un hilo de ejecucin, conocido como Monohilo. Pero las ventajas de los hilos se dan cuando hablamos de
Multihilos, que es cuando un proceso tiene mltiples hilos de ejecucin los cuales realizan actividades distintas,
que pueden o no ser cooperativas entre s. Los beneficios de los hilos se derivan de las implicaciones de
rendimiento.

1. Se tarda mucho menos tiempo en crear un hilo nuevo en un proceso existente que en crear un
proceso. Algunas investigaciones llevan al resultado que esto es as en un factor de 10.
2. Se tarda mucho menos en terminar un hilo que un proceso, ya que cuando se elimina un
proceso se debe eliminar el BCP del mismo, mientras que un hilo se elimina su contexto y pila.
3. Se tarda mucho menos tiempo en cambiar entre dos hilos de un mismo proceso
4. Los hilos aumentan la eficiencia de la comunicacin entre programas en ejecucin. En la mayora
de los sistemas en la comunicacin entre procesos debe intervenir el ncleo para ofrecer
proteccin de los recursos y realizar la comunicacin misma. En cambio, entre hilos pueden
comunicarse entre s sin la invocacin al ncleo.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 24


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
Por lo tanto, si hay una aplicacin que debe implementarse como un conjunto de unidades de ejecucin
relacionadas, es ms eficiente hacerlo con una coleccin de hilos que con una coleccin de procesos
separados.

Estados de un hilo

Los principales estados de los hilos son: Ejecucin, Listo y Bloqueado. No tiene sentido asociar
estados de suspensin de hilos ya que es un concepto de proceso. En todo caso, si un proceso est expulsado
de la memoria principal (ram), todos sus hilos debern estarlo ya que todos comparten el espacio de
direcciones del proceso.

Cambio de estados

Creacin: Cuando se crea un proceso se crea un hilo para ese proceso. Luego, este hilo puede
crear otros hilos dentro del mismo proceso. El hilo tendr su propio contexto y su propio
espacio de pila, y pasara a la cola de listos.
Bloqueo: Cuando un hilo necesita esperar por un suceso, se bloquea (salvando sus registros).
Ahora el procesador podr pasar a ejecutar otro hilo que est en la cola de Listos mientras el
anterior permanece bloqueado.
Desbloqueo: Cuando el suceso por el que el hilo se bloque se produce, el mismo pasa a la cola
de Listos.
Terminacin: Cuando un hilo finaliza se liberan tanto su contexto como sus pilas.

Trabajo interactivo y en segundo plano

Por ejemplo, en un programa de hoja de clculo un hilo puede estar visualizando los mens y leer la entrada
del usuario mientras que otro hilo ejecuta las rdenes y actualiza la hoja de clculo. Esta medida suele
aumentar la velocidad que se percibe en la aplicacin, permitiendo que el programa pida la orden siguiente
antes de terminar la anterior.

Hilos a nivel de usuario (ULT)

En una aplicacin ULT pura, todo el trabajo de gestin de hilos lo realiza la aplicacin y el ncleo o
kernel no es consciente de la existencia de hilos. Es posible programar una aplicacin como multihilo mediante
una biblioteca de hilos. La misma contiene el cdigo para crear y destruir hilos, intercambiar mensajes y datos
entre hilos, para planificar la ejecucin de hilos y para salvar y restaurar el contexto de los hilos. Todas las
operaciones descritas se llevan a cabo en el espacio de usuario de un mismo proceso. El kernel continua
planificando el proceso como una unidad y asignndole un nico estado (Listo, bloqueado, etc.).

Hilos a nivel de ncleo (KLT)

En una aplicacin KLT pura, todo el trabajo de gestin de hilos lo realiza el kernel. En el rea de la
aplicacin no hay cdigo de gestin de hilos, nicamente un API (interfaz de programas de aplicacin) para la

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 25


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
gestin de hilos en el ncleo. Windows 2000, Linux y OS/2 utilizan este mtodo. Linux utiliza un mtodo muy
particular en el que no hace diferencia entre procesos e hilos. Para Linux, si varios procesos creados con la
llamada al sistema "clone" comparten el mismo espacio de direcciones virtuales, el sistema operativo los trata
como hilos, y lgicamente son manejados por el kernel.

ACTIVIDAD

1. Qu es un hilo?.
2. Para qu sirve un hilo?
3. Diferencia entre hilo y proceso
4. Estados y cambio de estado de un hilo
5. Un ejemplo

2.4 Concurrencia y secuenciabilidad.

La concurrencia comprende un gran nmero de cuestiones de diseo, incluyendo la comunicacin entre


procesos, comparacin y competencia por los recursos, sincronizacin de la ejecucin de varios procesos y
asignacin del tiempo de procesador a los procesos y es fundamental para que existan diseos como
Multiprogramacin, Multiproceso y Proceso distribuido. Los procesos son concurrentes si existen
simultneamente. Cuando dos o ms procesos llegan al mismo tiempo a ejecutarse, se dice que se ha
presentado una concurrencia de procesos. Es importante mencionar que para que dos o ms procesos sean
concurrentes, es necesario que tengan alguna relacin entre ellos La concurrencia puede presentarse en tres
contextos diferentes:

Varias aplicaciones: La multiprogramacin se cre para permitir que el tiempo de procesador de la


mquina fuese compartido dinmicamente entre varios trabajos o aplicaciones activas.

Aplicaciones estructuradas: Como ampliacin de los principios del diseo modular y la programacin
estructurada, algunas aplicaciones pueden implementarse eficazmente como un conjunto de procesos
concurrentes.

Estructura del sistema operativo: Las mismas ventajas de estructuracin son aplicables a los
programadores de sistemas y se ha comprobado que algunos sistemas operativos estn implementados como
un conjunto de procesos. Existen tres modelos de computadora en los que se pueden ejecutar procesos
concurrentes:

Multiprogramacin con un nico procesador. El sistema operativo se encarga de ir repartiendo el


tiempo del procesador entre los distintos procesos, intercalando la ejecucin de los mismos para dar as
una apariencia de ejecucin simultnea.

Multiprocesador. Es una maquina formada por un conjunto de procesadores que comparten memoria
principal. En este tipo de arquitecturas, los procesos concurrentes no slo pueden intercalar su
ejecucin sino tambin superponerla.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 26


Compilado por MTIJHR FUENTE:JADS/PLGCV
Multicomputadora. Es una mquina de memoria distribuida, que est formada por una serie de
NOTAS
computadoras. En este tipo de arquitecturas tambin es posible la ejecucin simultnea de los procesos
sobre los diferentes procesadores.

En general, la concurrencia ser aparente siempre que el nmero de procesos sea mayor que el de
procesadores disponibles, es decir, cuando haya ms de un proceso por procesador. La concurrencia ser real
cuando haya un proceso por procesador. Aunque puede parecer que la intercalacin y la superposicin de la
ejecucin de procesos presentan formas de ejecucin distintas, se ver que ambas pueden contemplase como
ejemplos de procesos concurrentes Existen diversas razones que motivan la ejecucin de procesos
concurrentes en un sistema:

Facilita la programacin de aplicaciones al permitir que stas se estructuren como un conjunto de


procesos que cooperan entre s para alcanzar un objetivo comn.
Acelera los clculos. Si se quiere que una tarea se ejecute con mayor rapidez, lo que se puede hacer es
dividirla en procesos, cada uno de los cuales se ejecuta en paralelo con los dems.
Posibilita el uso interactivo a mltiples usuarios que trabajan de forma simultnea.
Permite un mejor aprovechamiento de los recursos, en especial de la CPU, ya que pueden aprovechar
las fases de entrada-salida de unos procesos para realizar las fases de procesamiento de otros.

As como existen las razones que motivan la ejecucin de procesos concurrentes, tambin existen sus contras:

Inanicin e interrupcin de procesos


Ocurrencia de bloqueos
Que dos o ms procesos requieran el mismo recurso (No apropiativo).

Los procesos que ejecutan de forma concurrente en un sistema se pueden clasificar como:

Proceso independiente: Es aquel que ejecuta sin requerir la ayuda o cooperacin de otros procesos. Un
claro ejemplo de procesos independientes son los diferentes shells que se ejecutan de forma simultnea
en un sistema.

Procesos son cooperantes: Son aquellos que estn diseados para trabajar conjuntamente en alguna
actividad, para lo que deben ser capaces de comunicarse e interactuar entre ellos. En ambos tipos de
procesos (independientes y cooperantes), puede producirse una serie de interacciones entre ellos y
pueden ser de dos tipos:

Interacciones motivadas porque los procesos comparten o compiten por el acceso a recursos fsicos o
lgicos. Por ejemplo, dos procesos independientes compiten por el acceso a disco o para modificar una
base de datos.
Interaccin motivada porque los procesos se comunican y sincronizan entre s para alcanzar un objetivo
comn, Por ejemplo, un compilador que tiene varios procesos que trabajan conjuntamente para
obtener un solo archivo de salida.

Elementos a gestionar y disear a causa de la concurrencia. Se pueden enumerar los siguientes:

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 27


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
1. El sistema operativo debe ser capaz de seguir la pista de los distintos procesos activos. Esto lo hace por
medio de PBCs (Bloque de Control de Procesos).

2. El sistema operativo debe asignar y quitar los distintos recursos a cada proceso activo. Entre estos recursos
se incluyen:

Tiempo de procesador: Es funcin de la planificacin.


Memoria: La mayora de los sistemas operativos emplean esquemas de memoria virtual.
Archivos:
Dispositivos de E/S:

3. El sistema operativo debe proteger los datos y los recursos fsicos de cada proceso contra injerencias no
intencionadas de otros procesos.

2.4.1 Exclusin mutua de secciones crticas.

Es posible clasificar las interacciones de los procesos en funcin del nivel de conocimiento que cada
proceso tiene de la existencia de los dems:

Los procesos no tienen conocimiento de los dems: Estos son procesos independientes que no estn
pensados para operar juntos.

Los procesos tienen un conocimiento indirecto de los otros: Los procesos no conocen necesariamente a
los otros, pero comparten el acceso a algunos objetos.

Los procesos tienen un conocimiento directo de los otros: Los procesos son capaces de comunicarse
con los dems y estn diseados para trabajar conjuntamente en alguna actividad.

Competencia entre procesos por los recursos

Los procesos concurrentes entran en conflicto cuando compiten por el uso del mismo recurso, es decir,
quieren acceder a un recurso al mismo tiempo. Y la ejecucin de un proceso puede influir en el
comportamiento de los procesos que compiten y el sistema operativo le asignar el recurso a uno de ellos y el
otro tendr que esperar. Por lo que el proceso que quede esperando, se retrazar, se bloqueara y en el peor de
los casos nunca se terminar con xito.

Es en estos procesos concurrentes, donde, se plantean una serie de situaciones clsicas de


comunicacin y sincronizacin, entre ellos el problema de la seccin crtica. El problema de la seccin crtica es
uno de los problemas que con mayor frecuencia aparece cuando se ejecutan procesos concurrentes.

Para entender un poco mejor el concepto se presenta el siguiente ejemplo: Se tiene un Sistema
Operativo que debe asignar un identificador de proceso (PID) a dos procesos en un sistema multiprocesador.
Cuando el SO realiza esta accin en dos procesadores de forma simultnea sin ningn tipo de control, se
pueden producir errores, ya que se puede asignar el mismo PID a dos procesos distintos. Este problema se
debe a que constituyen una seccin crtica que debe ejecutarse en forma atmica, es decir, de forma completa
ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 28
Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
e indivisible y ningn otro proceso podr ejecutar dicho cdigo mientras el primero no haya acabado su
seccin.

Solucin a la seccin crtica

Para resolver el problema de la seccin crtica es necesario utilizar algn mecanismo de sincronizacin
que permita a los procesos cooperar entre ellos sin problemas. Este mecanismo debe proteger el cdigo de la
seccin crtica y su funcionamiento bsico es el siguiente:

Cada proceso debe solicitar permiso para entrar en la seccin crtica, mediante algn fragmento de
cdigo que se denomina de forma genrica entrada en la seccin crtica.
Cuando un proceso sale de la seccin crtica debe indicarlo mediante otro fragmento de cdigo que se
denomina salida de la seccin crtica. Este fragmento permitir que otros procesos entren a ejecutar el cdigo
de la seccin crtica.

Cualquier solucin que se utilice para resolver este problema debe cumplir los tres requisitos siguientes:

Exclusin mutua: Si un proceso est ejecutando cdigo de la seccin crtica, ningn otro proceso lo
podr hacer.
Progreso: Si ningn proceso est ejecutando dentro de la seccin crtica, la decisin de qu proceso
entra en la seccin se har sobre los procesos que desean entrar.
Espera acotada: Debe haber un lmite en el nmero de veces que se permite que los dems procesos
entren a ejecutar cdigo de la seccin crtica despus de que un proceso haya efectuado una solicitud de
entrada y antes de que se conceda la suya.

Exclusin mutua

La exclusin mutua la podramos definir como una operacin de control que permite la coordinacin de
procesos concurrentes, y que tiene la capacidad de prohibir a los dems procesos realizar una accin cuando
un proceso haya obtenido el permiso.

El control de la competencia involucra al sistema operativo inevitablemente, porque es el sistema


operativo el que asigna los recursos. Adems, los procesos deben ser capaces por s mismos de expresar de
algn modo los requisitos de exclusin mutua, como puede ser bloqueando los recursos antes de usarlos.

Hacer que se cumpla la exclusin mutua crea dos problemas de control adicionales.

Interbloqueo. Si se tienen dos procesos P1 y P2 y dos recursos crticos, R1 y R2. Supngase que cada
proceso necesita acceder a ambos recursos para llevar a cabo una parte de su funcin. En tal caso, es posible
que se presente la siguiente situacin: el sistema operativo asigna R1 a P2 y R2 a P1. Cada proceso est
esperando a uno de los dos recursos. Ninguno liberar el recurso que ya posee hasta que adquiera el otro y
ejecute su seccin crtica. Ambos procesos estn nterbloqueados.

Inanicin. Supngase que tres procesos, P1, P2 y P3, necesitan acceder peridicamente al recurso R.
Considrese la situacin en la que P1 est en posesin del recurso y tanto P2 como P3 estn parados,
esperando al recurso. Cuando P1 abandona su seccin crtica, tanto P2 como P3 deben poder acceder a R.
ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 29
Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
Supngase que se le concede el acceso a P3 y que, antes de que termine su seccin crtica, P1 solicita acceso
de nuevo. Si se le concede el acceso a P1 despus de que P3 termine y si P1 y P3 se conceden el acceso
repetidamente el uno al otro, se puede negar definidamente a P2 el acceso al recurso.

Requisitos para la exclusin mutua.

El uso adecuado de la concurrencia entre procesos exige la capacidad de definir secciones crticas y
hacer cumplir la exclusin mutua. Esto es fundamental para cualquier esquema de proceso concurrente.
Cualquier servicio o capacidad que d soporte para la exclusin mutua debe cumplir los requisitos siguientes:

1. Debe cumplirse la exclusin mutua: Solo un proceso, de entre todos los que poseen secciones crticas por el
mismo recurso u objeto compartido, debe tener permiso para entrar en ella en un instante dado.

2. Un proceso que se interrumpe en una seccin no crtica debe hacerlo sin estorbar a los otros procesos.

3. Un proceso no debe poder solicitar acceso a una seccin crtica para despus ser demorado indefinidamente;
no puede permitirse el interbloqueo o la inanicin.

4. Cuando ningn proceso est en su seccin crtica, cualquier proceso que solicite entrar en la suya debe
poder hacerlo sin dilacin.

5. No se pueden hacer suposiciones sobre la velocidad relativa de los procesos o su nmero.


6. Un proceso permanece en su seccin crtica solo por un tiempo finito.

Soluciones a la exclusin mutua

Hay varias formas de satisfacer los requisitos de exclusin mutua:

Soluciones por Software. Una manera es dejar la responsabilidad a los procesos que deseen ejecutar
concurrentemente, de esta manera los procesos deben coordinarse unos con otros para cumplir la exclusin
mutua sin ayuda alguna, aunque estas soluciones son propensas a errores y a una fuerte carga de proceso
(Algunos ejemplos de estas son: Algoritmo de Dekker y Algoritmo de Peterson).

Soluciones por Hardware. Propone el uso de instrucciones de la mquina a tal efecto, estas tienen la ventaja
de reducir la sobrecarga.

El tercer mtodo consiste en dar algn tipo de soporte en el sistema operativo, entre estos mtodos se
encuentran los semforos, monitores, paso de mensajes, etc.

Actividad:

Representacin teatral del concepto de concurrencia, secuenciabilidad. (abordando, lo que es, lo


que sucede, lo que no debe suceder, solucin).
Exclusin mutua (que es, la competencia, la solucin y requisitos) .
Puede ser con dialogo o sin dialogo. Con narrador o sin narrador.
ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 30
Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
2.4.2 Sincronizacin de procesos en S.C.

La sincronizacin es la transmisin y recepcin de seales que tiene por objeto llevar a cabo el trabajo
de un grupo de procesos cooperativos. Es la coordinacin y cooperacin de un conjunto de procesos para
asegurar la comparacin de recursos de cmputo.

La sincronizacin entre procesos es necesaria para prevenir y/o corregir errores de sincronizacin
debidos al acceso concurrente a recursos compartidos. La sincronizacin permite intercambiar seales de
tiempo (ARRANQUE/PARADA) entre procesos cooperantes para garantizar las relaciones especficas de
precedencia impuestas por el problema que se resuelve. Sin una sincronizacin adecuada entre procesos, la
actualizacin de variables compartidas puede inducir a errores de tiempo relacionados con la concurrencia que
son con frecuencia difciles de depurar.

Para que los procesos puedan sincronizarse es necesario disponer de servicios que permitan bloquear o
suspender bajo determinadas circunstancias la ejecucin de un proceso. Los principales mecanismos de
sincronizacin que ofrecen los sistemas operativos son:

Seales
Tuberas
Semforos
Mutex y variables condicionales
Paso de mensajes

2.4.2.1 Mecanismo de semforos.

Un mecanismo semforo consta bsicamente de dos operaciones primitivas seal (Signal) y espera
(Wait) (Originalmente definidas como P y V por Disjkstra), que operan sobre un tipo especial de variable
semforo, s. La variable semforo puede tomar valores enteros y, excepto posiblemente en su inicializacin,
solo puede ser accedida y manipulada por medio de las operaciones SIGNAL y WAIT. Ambas primitivas llevan
un argumento cada una, la variable semforo, y pueden definirse del modo siguiente:

SIGNAL (s): Incrementa el valor de su argumento semforo, s , en una operacin indivisible.

WAIT (s): Decrementa el valor de su argumento semforo, s , en tanto el resultado no sea negativo. La
conclusin de la operacin WAIT, una vez tomada la decisin de decrementar su argumento semforo, debe
ser individual.

Los semforos son un mecanismo relativamente sencillo pero poderoso de asegurar la exclusin mutua
entre procesos concurrentes para acceder a un recurso compartido. En vez de que lo usuarios inventen sus
propios protocolos de sincronizacin (tarea difcil y traicionera) los semforos son una herramienta
proporcionada por el diseador de sistemas. Los usuarios solo necesitan contribuir a controlar el acceso a los
recursos compartidos obedeciendo un protocolo estndar y sencillo.
Los semforos pueden estar disponibles en un lenguaje de programacin, como construccin del
lenguaje, o como servicio del sistema operativo invocado mediante llamadas al sistema. Cuando son
ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 31
Compilado por MTIJHR FUENTE:JADS/PLGCV
proporcionadas por el sistema operativo, las variables semforos no son declaradas ni manipuladas en el
lenguaje, sino que se manipulan a travs de llamadas al sistemas tales como: NOTAS
CREAR _ SEMFORO, ASOCIAR_A_SEMAFORO, ESPERAR, SEAL, CERRAR _ SEMFORO.

2.4.2.2 Mecanismo de monitores.

Los monitores son estructuras de datos utilizadas en lenguajes de programacin para sincronizar dos o ms procesos o
hilos de ejecucin que usan recursos compartidos.

En el estudio y uso de los semforos se puede ver que las llamadas a las funciones necesarias para utilizarlos quedan
repartidas en el cdigo del programa, haciendo difcil corregir errores y asegurar el buen funcionamiento de los
algoritmos. Para evitar estos inconvenientes se desarrollaron los monitores. El concepto de monitor fue definido por
primera vez por Charles Antony Richard Hoare en un artculo del ao 1974. La estructura de los monitores se ha
implementado en varios lenguajes de programacin, incluido Pascal concurrente, Modula-2, Modula-3 y Java, y como
biblioteca de programas.

Un monitor tiene cuatro componentes: inicializacin, datos privados, procedimientos del monitor y cola de entrada.

Inicializacin: contiene el cdigo a ser ejecutado cuando el monitor es creado


Datos privados: contiene los procedimientos privados, que slo pueden ser usados desde adentro del monitor y
no son visibles desde afuera
Procedimientos del monitor: son los procedimientos que pueden ser llamados desde afuera del monitor.
Cola de entrada: contiene a los threads que han llamado a algn procedimiento del monitor pero no han podido
adquirir permiso para ejecutarlos.

2.4.3 Interbloqueo (DeadLock).

El interbloqueo puede definirse formalmente como sigue: Un conjunto de procesos est en interbloqueo si
cada proceso del conjunto est esperando un evento que slo otro proceso del conjunto puede causar. Puesto
que todos los procesos estn esperando, ninguno de ellos puede causar ninguno de los eventos que podran
despertar a cualquiera de los dems miembros del conjunto, y todos los procesos continan esperando
indefinidamente.

Tipos de recursos

Se pueden distinguir dos categoras generales de recursos: reutilizables y consumibles.

Reutilizables: Un recurso reutilizable es aqul que puede ser usado con seguridad por un proceso y no se
agota con el uso. Los procesos obtienen unidades de recursos que liberan posteriormente para que otros
procesos las reutilicen. Como ejemplos de recursos reutilizables se tienen los procesadores, canales de E/S,
memoria principal y secundaria, dispositivos y estructuras de datos tales como archivos, bases de datos y
semforos.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 32


Compilado por MTIJHR FUENTE:JADS/PLGCV
Consumibles: Un recurso consumible es aqul que puede ser creado (producido) y destruido (consumido).
Normalmente, no hay lmite en el nmero de recursos consumibles de un tipo en particular. Un proceso
NOTAS
productor que no est bloqueado puede liberar cualquier nmero de recursos consumibles. Cuando un
proceso adquiere un recurso, ste deja de existir. Como ejemplos de recursos consumibles estn las
interrupciones, seales, mensajes, e informacin en buffers de E/S.

Condiciones para el interbloqueo

Coffman (1971) demostr que deben cumplirse cuatro condiciones para que haya un bloqueo mutuo:

1. Condicin de exclusin mutua. Cada recurso est asignado nicamente a un solo proceso o est disponible.
2. Condicin de retener y esperar. Los procesos que actualmente tienen recursos que les fueron otorgados
previamente pueden solicitar nuevos recursos.
3. Condicin de no expropiacin. No es posible quitarle por la fuerza a un proceso los recursos que le fueron
otorgados previamente. El proceso que los tiene debe liberarlos explcitamente.
4. Condicin de espera circular. Debe haber una cadena circular de dos o ms procesos, cada uno de los cuales
est esperando un recurso retenido por el siguiente miembro de la cadena.

Deben estar presentes estas cuatro condiciones para que ocurra un bloqueo mutuo. Si una o ms de estas condiciones
est ausente, no puede haber bloqueo mutuo.

2.4.3.1 Prevencin.

La estrategia de prevencin del interbloqueo consiste, a grandes rasgos, en disear un sistema de manera que est
excluida, a priori, la posibilidad de interbloqueo. Los mtodos para prevenir el interbloqueo son de dos tipos.

Los mtodos indirectos consisten en impedir la aparicin de alguna de las tres condiciones necesarias, antes
mencionadas (condiciones 1 a 3).

Los mtodos directos consisten en evitar la aparicin del crculo vicioso de espera (condicin 4).

Exclusin Mutua

En general, la primera de las cuatro condiciones no puede anularse. Si el acceso a un recurso necesita exclusin mutua,
el sistema operativo debe soportar la exclusin mutua. Algunos recursos, como los archivos, pueden permitir varios
accesos para lectura, pero slo accesos exclusivos para escritura. Incluso en este caso, se puede producir interbloqueo si
ms de un proceso necesita permiso de escritura.

Retencin y Espera

La condicin de retencin y espera puede prevenirse exigiendo que todos los procesos soliciten todos los recursos que
necesiten a un mismo tiempo y bloqueando el proceso hasta que todos los recursos puedan concederse
simultneamente. Esta solucin resulta ineficiente por dos factores. En primer lugar, un proceso puede estar suspendido
durante mucho tiempo, esperando que se concedan todas sus solicitudes de recursos, cuando de hecho podra haber
avanzado con slo algunos de los recursos. Y en segundo lugar, los recursos asignados a un proceso pueden permanecer
sin usarse durante periodos considerables, tiempo durante el cual se priva del acceso a otros procesos.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 33


Compilado por MTIJHR FUENTE:JADS/PLGCV
No apropiacin (no expropiacin)
NOTAS
La condicin de no apropiacin puede prevenirse de varias formas. Primero, si a un proceso que retiene ciertos recursos
se le deniega una nueva solicitud, dicho proceso deber liberar sus recursos anteriores y solicitarlos de nuevo, cuando
sea necesario, junto con el recurso adicional. Por otra parte, si un proceso solicita un recurso que actualmente est
retenido por otro proceso, el sistema operativo puede expulsar al segundo proceso y exigirle que libere sus recursos.
Este ltimo esquema evitar el interbloqueo slo si no hay dos procesos que posean la misma prioridad. Esta tcnica es
prctica slo cuando se aplica a recursos cuyo estado puede salvarse y restaurarse ms tarde de una forma fcil, como
es el caso de un procesador.

Crculo Vicioso de Espera

La condicin del crculo vicioso de espera puede prevenirse definiendo una ordenacin lineal de los tipos de recursos. Si
a un proceso se le han asignado recursos de tipo R, entonces slo podr realizar peticiones posteriores sobre los
recursos de los tipos siguientes a R en la ordenacin. Para comprobar el funcionamiento de esta estrategia, se asocia un
ndice a cada tipo de recurso. En tal caso, el recurso R, antecede a R, en la ordenacin si i < j. Entonces, supngase que
dos procesos A y B se interbloquean, porque A ha adquirido R, y solicitado Ry, mientras que B ha adquirido R; y solicitado
R Esta situacin es imposible porque implica que < j y j < i.Como en la retencin y espera, la prevencin del crculo
vicioso de espera puede ser ineficiente, retardando procesos y denegando accesos a recursos

2.4.3.2 Deteccin.

Las estrategias de prevencin de interbloqueo son muy conservadoras; resuelven el problema limitando el acceso a
recursos e imponiendo restricciones sobre los procesos. En cambio, las estrategias de deteccin de interbloqueo, no
limitan el acceso a recursos ni restringen las acciones del proceso. Con la deteccin del interbloqueo, se concedern los
recursos que los procesos necesiten siempre que sea posible. Peridicamente, el S. O. ejecuta un algoritmo que permite
detectar la condicin de crculo vicioso de espera.

La deteccin del interbloqueo es el proceso de determinar si realmente existe un interbloqueo e identificar los
procesos y recursos implicados en l. Una posibilidad detectar un interbloqueo es monitorear cada cierto tiempo el
estado de los recursos. Cada vez que se solicita o se devuelve un recurso, se actualiza el estado de los recursos y se hace
una verificacin para observar si existe algn ciclo.

Este mtodo est basado en suponer que un interbloqueo no se presente y que los recursos del sistema que han sido
asignados, se liberarn en el momento que otro proceso lo requiera.

2.4.3.3 Recuperacin.

Cuando se ha detectado que existe un interbloqueo, podemos actuar de varias formas. Una posibilidad es informar al
operador que ha ocurrido un interbloqueo y dejar que el operador se ocupe de l manualmente. La otra posibilidad es
dejar que el sistema se recupere automticamente del interbloqueo. Dentro de esta recuperacin automtica tenemos
dos opciones para romper el interbloqueo: Una consiste en abortar uno o ms procesos hasta romper la espera circular,
y la segunda es apropiar algunos recursos de uno o ms de los procesos bloqueados.

La recuperacin despus de un interbloqueo se complica porque puede no estar claro que el sistema se haya bloqueado.
Las mayoras de los Sistemas Operativos no tienen los medios suficientes para suspender un proceso, eliminarlo del
sistema y reanudarlo ms tarde.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 34


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
Actualmente, la recuperacin se suele realizar eliminando un proceso y quitndole sus recursos. El proceso eliminado se
pierde, pero gracias a esto ahora es posible terminar. Algunas veces es necesario, eliminar varios procesos hasta que se
hayan liberado los recursos necesarios para que terminen los procesos restantes.

Los procesos pueden eliminarse de acuerdo con algn orden de prioridad, aunque es posible que no existan prioridades
entre los procesos bloqueados, de modo que el operador necesita tomar una decisin arbitraria para decidir que
procesos se eliminarn.

Recuperacin Manual

Est forma de recuperacin consiste en avisarle al administrador o al operador del sistema que se ha presentado un
interbloqueo, y ser el administrador el que solucione dicho problema de la manera ms conveniente posible, de modo
que su decisin no afecte demasiado a al usuario del proceso en conflicto, y sobre todo que no afecte a los dems
usuarios del sistema.

Abortar los Procesos

Para eliminar interbloqueos abortando un proceso, tenemos dos mtodos; en ambos, el sistema recupera todos los
recursos asignados a los procesos terminados.

1) Abortar todos los procesos interbloqueados. Esta es una de las soluciones ms comunes, adoptada por Sistemas
Operativos. Este mtodo romper definitivamente el ciclo de interbloqueo pero con un costo muy elevado, ya que estos
procesos efectuaron clculos durante mucho tiempo y habr que descartar los resultados de estos clculos parciales,
para quiz tener que volver a calcularlos ms tarde.

2) Abortar un proceso en cada ocasin hasta eliminar el ciclo de interbloqueo. El orden en que se seleccionan los
procesos para abortarlos debe basarse en algn criterio de costo mnimo. Despus de cada aborto, debe solicitarse de
nuevo el algoritmo de deteccin, para ver si todava existe el interbloqueo. Este mtodo cae en mucho tiempo de
procesamiento adicional.

Quiz no sea fcil abortar un proceso. Si ste se encuentra actualizando un archivo, cortarlo a la mitad de la operacin
puede ocasionar que el archivo quede en un mal estado.

Si se utiliza el mtodo de terminacin parcial, entonces, dado un conjunto de procesos bloqueados, debemos
determinar cul proceso o procesos debe terminarse para intentar romper el interbloqueo. Se trata sobre todo de una
cuestin econmica, debemos abortar los procesos que nos representen el menor costo posible. Existen muchos
factores que determinan el proceso que se seleccionar, siendo los principales los siguientes:

La prioridad del proceso. Se elimina el proceso de menor prioridad.

Tiempo de procesador usado. Se abortar aquel proceso que haya utilizado menos tiempo el procesador, ya que se
pierde menos trabajo y ser ms fcil recuperarlo ms tarde.

Tipos de recursos utilizados. Si los recursos son muy necesarios y escasos ser preferible liberarlos cuanto antes.

Cuntos recursos ms necesita el proceso. Es conveniente eliminar a aquellos procesos que necesitan un gran nmero
de recursos.

Facilidad de suspensin / reanudacin. Se eliminarn aquellos procesos cuyo trabajo perdido sea ms fcil de recuperar.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 35


Compilado por MTIJHR FUENTE:JADS/PLGCV
Apropiacin de Recursos
NOTAS
Para eliminar interbloqueos utilizando la apropiacin de recursos, vamos quitando sucesivamente recursos de los
procesos y los asignamos a otros hasta romper el ciclo de interbloqueo.

Si se utiliza la apropiacin de recursos para tratar los interbloqueos, hay que considerar tres aspectos:
Seleccin de la vctima
Retroceso
Bloqueo indefinido

La deteccin y recuperacin es la estrategia que a menudo se utiliza en grandes computadoras, especialmente sistemas
por lote en los que la eliminacin de un proceso y despus su reiniciacin suele aceptarse.

2.5 Niveles, objetivos y criterios de planificacin.

La planificacin de la CPU, en el sentido de conmutarla entre los distintos procesos, es una de las
funciones del sistema operativo. Este despacho es llevado a cabo por un pequeo programa llamado
planificador a corto plazo o dispatcher (despachador). La misin del dispatcher consiste en asignar la CPU a
uno de los procesos ejecutables del sistema, para ello sigue un determinado algoritmo. En secciones
posteriores estudiaremos algunos algoritmos posibles. Para que el dispatcher conmute el procesador entre dos
procesos es necesario realizar un cambio de proceso.

Los acontecimientos que pueden provocar la llamada al dispatcher dependen del sistema (son un
subconjunto de las interrupciones), pero son alguno de estos:

El proceso en ejecucin acaba su ejecucin o no puede seguir ejecutndose (por una E/S, operacin
WAIT, etc).
Un elemento del sistema operativo ordena el bloqueo del proceso en ejecucin (ver estados de un
proceso).
El proceso en ejecucin agota su cuantum o cuanto de estancia en la CPU.
Un proceso pasa a estado listo.

Hay que destacar el hecho de que cuanto menos se llame al dispatcher menos tiempo ocupa la CPU un
programa del sistema operativo, y, por tanto, se dedica ms tiempo a los procesos del usuario (un cambio de
proceso lleva bastante tiempo).

As, si slo se activa el dispatcher como consecuencia de los 2 primeros acontecimientos se estar haciendo un
buen uso del procesador. Este criterio es acertado en sistemas por lotes en los que los programas no son
interactivos. Sin embargo, en un sistema de tiempo compartido no es adecuado, pues un proceso que se
dedicara a realizar clculos, y no realizara E/S, monopolizara el uso de la CPU. En estos sistemas hay que tener
en cuenta el conjunto de todos los procesos, activndose el dispatcher con la circunstancia tercera y,
posiblemente, la cuarta.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 36


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
Los sistema operativos en que las dos siguientes circunstancias no provocan la activacin del dispatcher
muestran preferencia por el proceso en ejecucin, si no ocurre esto se tiene ms en cuenta el conjunto de
todos los procesos.

Se puede definir el scheduling -algunas veces traducido como -planificacin- como el conjunto de polticas y
mecanismos construidos dentro del sistema operativo que gobiernan la forma de conseguir que los procesos a
ejecutar lleguen a ejecutarse.

El scheduling est asociado a las cuestiones de:


Cundo introducir un nuevo proceso en el Sistema.
Determinar el orden de ejecucin de los procesos del sistema.

El scheduling est muy relacionado con la gestin de los recursos. Existen tres niveles de scheduling estos
niveles son:
Planificador de la CPU o a corto plazo.
Planificador a medio plazo.
Planificador a largo plazo.

Planificacin a largo plazo


Este planificador est presente en algunos sistemas que admiten adems de procesos interactivos trabajos por
lotes. Usualmente, se les asigna una prioridad baja a los trabajos por lotes, utilizndose estos para mantener
ocupados a los recursos del sistema durante perodos de baja actividad de los procesos interactivos.
Normalmente, los trabajos por lotes realizan tareas rutinarias como el clculo de nminas; en este tipo de
tareas el programador puede estimar su gasto en recursos, indicndoselo al sistema. Esto facilita el
funcionamiento del planificador a largo plazo.

El objetivo primordial del planificador a largo plazo es el de dar al planificador de la CPU una mezcla
equilibrada de trabajos, tales como los limitados por la CPU (utilizan mucho la CPU) o la E/S. As, por ejemplo,
cuando la utilizacin de la CPU es baja, el planificador puede admitir ms trabajos para aumentar el nmero de
procesos listos y, con ello, la probabilidad de tener algn trabajo til en espera de que se le asigne la CPU. A la
inversa, cuando la utilizacin de la CPU llega a ser alta, y el tiempo de respuesta comienza a reflejarlo, el
planificador a largo plazo puede optar por reducir la frecuencia de admisin de trabajos.

Normalmente, se invoca al planificador a largo plazo siempre que un proceso termina. La frecuencia de
invocacin depende, pues, de la carga del sistema, pero generalmente es mucho menor que la de los otros dos
planificadores. Esta baja frecuencia de uso hace que este planificador pueda permitirse utilizar algoritmos
complejos, basados en las estimaciones de los nuevos trabajos.

Planificacin a Medio Plazo


En los sistemas de multiprogramacin y tiempo compartido varios procesos residen en la memoria principal. El
tamao limitado de sta hace que el nmero de procesos que residen en ella sea finito. Puede ocurrir que
todos los procesos en memoria estn bloqueados, desperdicindose as la CPU. En algunos sistemas se
intercambian procesos enteros (swap) entre memoria principal y memoria secundaria (normalmente discos),
con esto se aumenta el nmero de procesos, y, por tanto, la probabilidad de una mayor utilizacin de la CPU.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 37


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
El planificador a medio plazo es el encargado de regir las transiciones de procesos entre memoria principal y
secundaria, acta intentando maximizar la utilizacin de los recursos. Por ejemplo, transfiriendo siempre a
memoria secundaria procesos bloqueados, o transfiriendo a memoria principal procesos bloqueados
nicamente por no tener memoria.

Objetivos y criterios de la planificacin

El principal objetivo de la planificacin a corto plazo es repartir el tiempo del procesador de forma que se
optimicen algunos puntos del comportamiento del sistema. Generalmente se fija un conjunto de criterios con
los que evaluar las diversas estrategias de planificacin. El criterio ms empleado establece dos clasificaciones.
En primer lugar, se puede hacer una distincin entre los criterios orientados a los usuarios y los orientados al
sistema. Los criterios orientados al usuario se refieren al comportamiento del sistema tal y como lo perciben los
usuarios o los procesos. Uno de los parmetros es el tiempo de respuesta. El tiempo de respuesta es el periodo
de tiempo transcurrido desde que se emite una solicitud hasta que la respuesta aparece en la salida. Sera
conveniente disponer de una poltica de planificacin que ofrezca un buen servicio a diversos usuarios.

Otros criterios estn orientados al sistema, esto es, se centran en el uso efectivo y eficiente del procesador. Un
ejemplo puede ser la productividad, es decir, el ritmo con el que los procesos terminan. La productividad es
una medida muy vlida del rendimiento de un sistema y que sera deseable maximizar.

Otra forma de clasificacin es considerar los criterios relativos al rendimiento del sistema y los que no lo son.
Los criterios relativos al rendimiento son cuantitativos y, en general, pueden evaluarse o ser analizados
fcilmente. Algunos ejemplos son el tiempo de respuesta y la productividad. Los criterios no relativos al
rendimiento son, en cambio cualitativos y no pueden ser evaluados fcilmente. Un ejemplo de estos criterios es
la previsibilidad. Sera conveniente que el servicio ofrecido a los usuarios tenga las mismas caractersticas en
todo momento, independientemente de la existencia de otros trabajos ejecutados por el sistema.

En particular, una disciplina de planificacin debe:

Ser equitativa: debe intentar hacer una planificacin justa, esto es, se debe tratar a todos los procesos
de la misma forma y no aplazar indefinidamente ningn proceso. La mejor forma de evitarlo es emplear
alguna tcnica de envejecimiento; es decir, mientras un proceso espera un recurso, su prioridad debe
crecer.
Ser eficiente: debe maximizar el uso de los recursos tales como intentar que la ocupacin de la CPU sea
mxima. Al mismo tiempo se debe intentar reducir el gasto extra por considerar que es trabajo no
productivo. Normalmente el idear algoritmos eficientes supone invertir recursos en gestin del propio
sistema.
Lograr un tiempo bueno de respuesta, es decir, que los usuarios interactivos reciban respuesta en
tiempos aceptables.
Lograr un tiempo de proceso global predecible. Esto quiere decir que un proceso debe ejecutarse
aproximadamente en el mismo tiempo y casi al mismo costo con independencia de la carga del sistema.
Elevar al mximo la productividad o el rendimiento, esto es, maximizar el nmero de trabajos
procesados por unidad de tiempo. Eso supone, por un lado, dar preferencia a los procesos que ocupan
recursos decisivos y, por otro, favorecer a los procesos que muestran un comportamiento deseable. En
el primer caso conseguimos liberar el recurso cuanto antes para que est disponible para un proceso de
ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 38
Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
mayor prioridad. Con el segundo criterio escogemos a los procesos que no consumen muchos recursos
dejndole al sistema mayor capacidad de actuacin.

Estos criterios son dependientes entre s y es imposible optimizar todos de forma simultnea. Por
ejemplo, obtener un buen tiempo de respuesta puede exigir un algoritmo de planificacin que alterne entre los
procesos con frecuencia, lo que incrementa la sobrecarga del sistema y reduce la productividad. Por tanto, en el
diseo de un poltica de planificacin entran en juego compromisos entre requisitos opuestos; el peso relativo
que reciben los distintos requisitos depender de la naturaleza y empleo del sistema.

2.6 Tcnicas de administracin del planificador.

La planificacin se hace en cuatro instantes de tiempo. De estas cuatro, una no la realiza el sistema
operativo, sino que es externa al procesamiento, pero tiene una influencia enorme sobre la definicin del
procesamiento, dado que el sistema operativo queda determinado por las decisiones que se toman en este
nivel. A esta instancia le daremos el nombre de extra largo plazo por ser en la escala de tiempo del ser
humano.

En la administracin del procesador podemos distinguir tres niveles de planificacin de acuerdo a la


escala de tiempo en que se realiza la misma. El largo plazo en segundos, mediano plazo en milisegundos y el
corto plazo en nanosegundos o microsegundos.

2.6.1 FIFO

Cuando se tiene que elegir a qu proceso asignar la CPU se escoge al que llevara ms tiempo listo. El proceso
se mantiene en la CPU hasta que se bloquea voluntariamente.

La ventaja de este algoritmo es su fcil implementacin, sin embargo, no es vlido para entornos interactivos
ya que un proceso de mucho clculo de CPU hace aumentar el tiempo de espera de los dems procesos . Para
implementar el algoritmo (ver figura 2) slo se necesita mantener una cola con los procesos listos ordenada
por tiempo de llegada. Cuando un proceso pasa de bloqueado a listo se sita el ltimo de la cola.

En a) el proceso P7 ocupa la CPU, los procesos P2, P4 y P8 se mantienen en la lista de preparados. En b) P7 se


bloquea (ya sea al realizar una E/S, una operacin WAIT sobre un semforo a cero u otra causa) y P2 pasa a
ocupar la CPU. En c) ocurre un evento (finalizacin de la operacin de E/S, operacin SIGNAL, ...) que
desbloquea a P7, esto lo vuelve listo, pasando al final de la cola de procesos listos.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 39


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS

Algunas de las caractersticas de este algoritmo es que es no apropiativo y justo en el sentido formal, aunque
injusto en el sentido de que: los trabajos largos hacen esperar a los cortos y los trabajos sin importancia hacen
esperar a los importantes. Por otro lado es predecible pero no garantiza buenos tiempos de respuesta y por
ello se emplea como esquema secundario

2.6.2 SJF

Al igual que en el algoritmo FIFO las rfagas se ejecutan sin interrupcin, por tanto, slo es til para entornos
batch. Su caracterstica es que cuando se activa el planificador, ste elige la rfaga de menor duracin. Es decir,
introduce una nocin de prioridad entre rfagas. Hay que recordar que en los entornos batch se pueden hacer
estimaciones del tiempo de ejecucin de los procesos.

La ventaja que presenta este algoritmo sobre el algoritmo FIFO es que minimiza el tiempo de finalizacin
promedio, como puede verse en el siguiente ejemplo:

Ej: Supongamos que en un momento dado existen tres rfagas listos R1, R2 y R3, sus tiempos de ejecucin
respectivos son 24, 3 y 3 ms. El proceso al que pertenece la rfaga R1 es la que lleva ms tiempo ejecutable,
seguido del proceso al que pertenece R2 y del de R3. Veamos el tiempo medio de finalizacin (F) de las rfagas
aplicando FIFO y SJF:

FIFO F = (24 + 27 + 30) / 3 = 27 ms.


SJF F = (3 + 6 + 30) / 3 = 13 ms.

Se puede demostrar que este algoritmo es el ptimo. Para ello, consideremos el caso de cuatro rfagas, con
tiempos de ejecucin de a, b, c y d. La primera rfaga termina en el tiempo a, la segunda termina en el tiempo
a+b, etc. El tiempo promedio de finalizacin es (4a+3b+2c+d)/4. Es evidente que a contribuye ms al promedio
que los dems tiempos, por lo que debe ser la rfaga ms corta, b la siguiente, y as sucesivamente. El mismo
razonamiento se aplica a un nmero arbitrario de rfagas.

No obstante, este algoritmo slo es ptimo cuando se tienen simultneamente todas las rfagas. Como
contraejemplo, considrense cinco rfagas desde A hasta E, con tiempo se ejecucin de 2, 4, 1, 1 y 1
respectivamente. Sus tiempos de llegada son 0, 0, 3, 3 y 3. Primero se dispone de A y B, puesto que las dems
rfagas no han llegado an. Con el algoritmo SJF las ejecutaramos en orden A, B, C, D, y E con un tiempo de

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 40


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
finalizacin promedio de 4.6. Sin embargo, al ejecutarlas en orden B, C, D, E y A se tiene un promedio de
finalizacin de 4.4.
2.6.3 RR

Este es uno de los algoritmos ms antiguos, sencillos y equitativos en el reparto de la CPU entre los procesos,
muy vlido para entornos de tiempo compartido. Cada proceso tiene asignado un intervalo de tiempo de
ejecucin, llamado cuantum o cuanto. Si el proceso agota su cuantum de tiempo, se elige a otro proceso para
ocupar la CPU. Si el proceso se bloquea o termina antes de agotar su cuantum tambin se alterna el uso de la
CPU. El round robin es muy fcil de implementar. Todo lo que necesita el planificador es mantener una lista de
los procesos listos, como se muestra en la figura 6.2.

En esta figura en a) el proceso P7 ocupa la CPU. En b) P7 se bloquea pasando P2 a ocupar la CPU. En c) P2


agota su cuantum con lo que pasa al final de la lista y P4 ocupa la CPU. La figura representa un ejemplo ms
largo de la ocupacin de la CPU utilizando el algoritmo round robin.

Este algoritmo presupone la existencia de un reloj en el sistema. Un reloj es un dispositivo que genera
peridicamente interrupciones. Esto es muy importante, pues garantiza que el sistema operativo (en concreto
la rutina de servicio de interrupcin del reloj) coge el mando de la CPU peridicamente. El cuantum de un
proceso equivale a un nmero fijo de pulsos o ciclos de reloj. Al ocurrir una interrupcin de reloj que coincide
con la agotacin del cuantum se llama al dispatcher.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 41


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
2.6.4 Queves multi-level.

Planificacin con mltiples colas fijas

Este algoritmo pertenece a una clase de algoritmos de planificacin para situaciones en las que es fcil clasificar
los procesos en diferentes grupos.
Un algoritmo de planificacin con colas de mltiples nivel divide la cola de procesos listos en varias colas
distintas. Los procesos se asignan permanentemente a una cola, casi siempre con base en alguna propiedad del
proceso, como ser tamao de memoria, prioridad y tipo de proceso. Cada cola tiene su propio algoritmo de
planificacin.

Adems debe haber planificacin entre las colas, lo cual por lo regular se implementa como una planificacin
expropiativa de prioridades fijas. Por ejemplo, la cola de primer plano podra tener prioridad absoluta sobre la
cola de segundo plano, por lo tanto mientras no se vaca la cola de prioridad superior, los procesos de la cola
inferior no se ejecutan.

Otra posibilidad es dividir el tiempo entre las colas. Cada cola obtiene cierta proporcin del tiempo de CPU,
que entonces puede repartir entre los diversos procesos en su cola.
Este algoritmo tiene la ventaja de que el gasto por planificacin es bajo y la desventaja de ser inflexible.

Planificacin con mltiples colas dinmicas

Es idntico al anterior con la diferencia que los procesos se pueden mover de una cola a otra cola.
El planificador se configura usando algunos de los siguientes criterios:
Nmero de colas
Algoritmo de planificacin para cada cola.
Mtodo o criterio para subir / bajar un proceso.
Criterio para determinar en qu cola se pone inicialmente a un proceso.
Es muy apropiado para esquemas client - server
2.6.5 Multi-level feedback queves.

En el caso en que no se pueda determinar el tiempo de ejecucin, puede utilizarse este algoritmo.
La planificacin es de tipo no apropiativo por quantum de tiempo y un mecanismo de prioridades dinmico.
Cuando llega un proceso nuevo, este es colocado en la cola de mayor prioridad, luego de su primer ejecucin
ste es colocado en la cola de prioridad siguiente menor y as sucesivamente hasta que llega hasta la ltima
cola en donde se la vuelve a colocar en la misma nuevamente.

Dentro de cada cola se utiliza el algoritmo de planificacin FCFS, en el caso de la ltima se utiliza el algoritmo
round robin.
En este algoritmo puede llegar a ocurrir starvation en el caso de que entren frecuentemente procesos nuevos,
debido a que al tener mayor prioridad, no llega a ejecutarse los procesos de las ltimas colas. Para evitar esto,
se utiliza un mecanismo de variacin del quantum de tiempo de ejecucin de los procesos de acuerdo a la cola

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 42


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
en la que se encuentra. A la cola RQi se le asigna 2i quantum de tiempo, de esta forma se trata de que menos
procesos lleguen hasta la ltima cola sin terminar su ejecucin.

En el caso de que ocurra starvation, en un proceso que se queda sin ejecucin en la ltima cola, se lo puede
enviar nuevamente hasta la cola de mayor prioridad para que contine su ejecucin.

La idea de este algoritmo es separar los procesos con diferentes caractersticas en cuanto a sus rfagas de CPU.
Si un proceso gasta demasiado tiempo en CPU, se le pasar a una cola con menor prioridad. Este esquema deja
a los procesos limitados por E/S y los procesos interactivos en las colas de ms alta prioridad.
En general, un planificador de colas multinivel con realimentacin est definido por los siguientes parmetros:

El nmero de colas.
El algoritmo de planificacin para cada cola
El mtodo empleado para determinar cundo se debe promover un proceso a una cola de mayor
prioridad.
El mtodo empleado para determinar cundo se debe promover un proceso a una cola de menor
prioridad.
El mtodo empleado para determinar en cul cola ingresar un proceso cuando necesite servicio.

La definicin de un planificador de colas multinivel con realimentacin lo convierte en el algoritmo de


planificacin de la CPU ms general, ya que se puede configurar para adaptarlo a cualquier sistema especfico
que se est diseando. Desdichadamente, se requiere alguna forma de seleccionar valores para todos los
parmetros de manera que se obtenga el mejor planificador posible.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 43


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
Unidad TRES:
Administracin de memoria.

Objetivo Educacional:
Identificar las tcnicas
de administracin de
memoria

La memoria es un recurso importante que debe ser cuidadosamente gestionado. Aunque el ordenador domstico medio de
nuestros das tiene miles de veces ms memoria que el IBM 7094 (el mayor ordenador del mundo a principios de la dcada de los aos
sesenta) el tamao de los programas est creciendo mucho ms rpido que el tamao de las memorias. Para parafrasear la ley de
Parkinson: Los programas se expanden hasta llenar toda la memoria disponible para contenerlos.

La parte del sistema operativo que gestiona la jerarqua de memoria se denomina el gestor de memoria. Su trabajo es seguir
la pista de qu partes de la memoria estn en uso y cules no lo estn, con el fin de poder asignar memoria a los procesos cuando la
necesiten, y recuperar esa memoria cuando dejen de necesitarla, as como gestionar el intercambio entre memoria principal y el disco
cuando la memoria principal resulte demasiado pequea para contener a todos los procesos.

3.1 Poltica y filosofa.

En un sistema con multiprogramacin, el sistema operativo debe encargarse de realizar un reparto transparente, eficiente y seguro de
los distintos recursos de la mquina entre los diversos procesos, de forma que cada uno de ellos crea que tiene una mquina para l
solo. Esto es, el operativo debe permitir que los programadores desarrollen sus aplicaciones sin verse afectados por la posible
coexistencia de su programa con otros durante su ejecucin.

En el caso del procesador sta multiplexacin se logra almacenando en el bloque de control de cada proceso el contenido de los
registros del procesador correspondientes a dicho proceso, salvndolos y restaurndolos durante la ejecucin del mismo. En el caso de
la memoria, el sistema operativo, con el apoyo del hardware de gestin memoria del procesador, debe repartir el almacenamiento
existente proporcionando un espacio de memoria independiente para cada proceso y evitando la posible interferencia voluntaria o
involuntaria de cualquier otro proceso.

Se podra considerar que, en el caso del procesador, se realiza un reparto en el tiempo, mientras que en el de la memoria, se trata de un
reparto en el espacio. La accin combinada de estos dos mecanismos ofrece a los programas una abstraccin de procesador virtual que
les independiza del resto de los procesos. Sea cual sea la poltica de gestin de memoria empleada en un determinado sistema, se
pueden destacar las siguientes caractersticas como objetivos deseables del sistema de gestin de memoria:

Ofrecer a cada proceso un espacio lgico propio.


Proporcionar proteccin entre los procesos.
Permitir que los procesos compartan memoria.
Dar soporte a las distintas regiones del proceso.
Maximizar el rendimiento del sistema.
Proporcionar a los procesos mapas de memoria muy grandes.

Espacios lgicos independientes: En un sistema operativo multiprogramado de propsito general no se puede conocer a priori la
posicin de memoria que ocupar un programa cuando se cargue en memoria para proceder a su ejecucin, puesto que depender del
ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 44
Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
estado de ocupacin de la memoria, pudiendo variar, por tanto, en sucesivas ejecuciones del mismo. El cdigo mquina de un
programa contenido en un archivo ejecutable incluir referencias a memoria, utilizando los diversos modos de direccionamiento del
juego de instrucciones del procesador, tanto para acceder a sus operandos como para realizar bifurcaciones en la secuencia de
ejecucin. Estas referencias tpicamente estarn incluidas en un intervalo desde 0 hasta un valor mximo N.

Proteccin: En un sistema con monoprogramacin es necesario proteger al sistema operativo de los accesos que realiza el programa en
ejecucin para evitar que, voluntaria o involuntariamente, pueda interferir en el correcto funcionamiento del mismo. Todos los usuarios
que han trabajado en un sistema que no cumple este requisito de proteccin, como por ejemplo MS-DOS, han experimentado cmo un
error de programacin en una aplicacin puede causar que todo el sistema se colapse durante la ejecucin de la misma al producirse
una alteracin imprevista del cdigo o las estructuras de datos del sistema operativo.

En un sistema con multiprogramacin el problema se acenta ya que no slo hay que proteger al sistema operativo sino tambin a los
procesos entre s. El mecanismo de proteccin en este tipo de sistemas necesita del apoyo del hardware puesto que es necesario
validar cada una de las direcciones que genera un programa en tiempo de ejecucin. Este mecanismo est tpicamente integrado en el
mecanismo de traduccin: la funcin de traduccin debe asegurar que los espacios lgicos de los procesos sean disjuntos entre s y con
el del propio sistema operativo.

Observe que en el caso de un sistema que use un procesador con mapa de memoria y E/S comn, el propio mecanismo de proteccin
integrado en el proceso de traduccin permite impedir que los procesos accedan directamente a los dispositivos de E/S, haciendo
simplemente que las direcciones de los dispositivos no formen parte del mapa de ningn proceso.

Compartimiento de memoria: Para cumplir el requisito de proteccin, el sistema operativo debe crear espacios lgicos independientes
y disjuntos para los procesos. Sin embargo, en ciertas situaciones, bajo la supervisin y control del sistema operativo, puede ser
provechoso que los procesos puedan compartir memoria. Esto es, la posibilidad de que direcciones lgicas de dos o ms procesos,
posiblemente distintas entre s, se correspondan con la misma direccin fsica. Ntese que, como puede observarse en la Figura , la
posibilidad de que dos o ms procesos compartan una zona de memoria implica que el sistema de gestin de memoria debe permitir
que la memoria asignada a un proceso no sea contigua. As, por ejemplo, una funcin de traduccin como la comentada anteriormente,
que nicamente sumaba una cantidad a las direcciones generadas por el programa, obligara a que el espacio asignado al proceso fuera
contiguo, imposibilitando, por tanto, el poder compartir memoria.

Dos procesos compartiendo una zona de memoria.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 45


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
Soporte de las regiones del proceso: El mapa de un proceso no es homogneo sino que est formado por distintos tipos de regiones
con diferentes caractersticas y propiedades. Dado que el sistema operativo conoce que regiones incluye el mapa de memoria de cada
proceso, el gestor de memoria con el apoyo del hardware debera dar soporte a las caractersticas especficas de cada regin.

As, por ejemplo, el contenido de la regin que contiene el cdigo del programa no debe poder modificarse. Se debera detectar
cualquier intento de escritura sobre una direccin incluida en dicha regin y tratarlo adecuadamente (p. ej.: mandando una seal al
proceso). Observe que lo que se est detectando en este caso es un error de programacin en la aplicacin. El dar soporte al carcter de
solo lectura de la regin permite detectar inmediatamente el error, lo que facilita considerablemente la depuracin del programa.

Maximizar el rendimiento: El grado de multiprogramacin del sistema influye directamente en el porcentaje de utilizacin del
procesador y, por tanto, en el rendimiento del sistema. Adicionalmente, un mayor grado de multiprogramacin implica que puede
existir un mayor nmero de usuarios trabajando simultneamente en el sistema.

El gestor de memoria debe, por tanto, realizar un reparto de la memoria entre los procesos intentando que quepa el mayor nmero de
ellos en memoria y minimizando el desperdicio inherente al reparto. Para ello, debe establecerse una poltica de asignacin adecuada.
La poltica de asignacin determina qu direcciones de memoria se asignan para satisfacer una determinada peticin. Hay que resaltar
que la propia gestin de la memoria requiere un gasto en espacio de almacenamiento para que el sistema operativo almacene las
estructuras de datos implicadas en dicha gestin. As, ser necesario guardar la tabla de regiones y la funcin de traduccin asociada a
cada proceso (normalmente implementadas como tablas), as como una estructura que refleje qu partes de la memoria permanecen
libres y cuales estn ocupadas. Dado que el almacenamiento de estas estructuras resta espacio de memoria para los procesos, es
importante asegurar que su consumo se mantiene en unos trminos razonables.

Mapas de memoria muy grandes para los procesos: En los tiempos en los que 1a memoria era muy cara y, en consecuencia, los
equipos posean memoria bastante reducida, se producan habitualmente situaciones en las que las aplicaciones se vean limitadas por
el tamao de la memoria, Para solventar este problema, los programadores usaban la tcnica de los overlays. Esta tcnica consiste en
dividir el programa en una serie de fases que se ejecutan sucesivamente, pero estando en cada momento residente en memoria slo
una fase. Cada fase se programa de manera que, despus de realizar su labor, carga en memoria la siguiente fase y le cede el control. Es
evidente que esta tcnica no soluciona el problema de forma general dejando en manos del programador todo el trabajo. Por ello, se
ideo la tcnica de la memoria virtual, que permite proporcionar a un proceso de forma transparente un mapa de memoria
considerablemente mayor que la memoria fsica existente en el sistema.

A pesar del espectacular abaratamiento de la memoria y la consiguiente disponibilidad generalizada de equipos con memorias
apreciablemente grandes, sigue siendo necesario que el sistema de memoria, usando la tcnica de la memoria virtual, proporcione a los
procesos espacios lgicos ms grandes que la memoria realmente disponible.

3.2 Memoria real.

La memoria real o principal es en donde son ejecutados los programas y procesos de una computadora y es el
espacio real que existe en memoria para que se ejecuten los procesos. Por lo general esta memoria es de
mayor costo que la memoria secundaria, pero el acceso a la informacin contenida en ella es de ms rpido
acceso. Solo la memoria cache es ms rpida que la principal, pero su costo es a su vez mayor.
ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 46
Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
3.2.1 Administracin de almacenamiento.

Histricamente el almacenamiento principal se ha considerado como un recurso costoso, por lo cual su


utilizacin deba optimizarse. Independientemente del esquema de organizacin hay que decidir las estrategias
que se utilizarn para optimizar el rendimiento.

Las estrategias de administracin deben considerar:

Cundo se consigue un nuevo programa para colocar en la memoria?


Cundo el sistema lo pide especficamente o se intenta anticiparse a las peticiones?
Dnde se colocar el programa que se ejecutar a continuacin?
Se prioriza el tiempo de carga o la optimizacin en el uso del almacenamiento?
Con qu criterio se desplazarn programas?

3.2.2 Jerarqua.

Los programas y datos tienen que estar en la memoria principal para poder ejecutarse o ser referenciados. Los
programas y datos que no son necesarios de inmediato pueden mantenerse en el almacenamiento secundario.

El almacenamiento principal es ms costoso y menor que el secundario pero de acceso ms rpido. Los
sistemas con varios niveles de almacenamiento requieren destinar recursos para administrar el movimiento de
programas y datos entre niveles (ver Figura 3.1).

n nivel adicional es el cach o memoria de alta velocidad, que posee las siguientes caractersticas:

Es ms rpida y costosa que la memoria principal.


Impone al sistema un nivel ms de traspaso:
Los programas son traspasados de la memoria principal al cach antes de su ejecucin.
Los programas en la memoria cach ejecutan mucho ms rpido que en la memoria principal.
ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 47
Compilado por MTIJHR FUENTE:JADS/PLGCV
Al utilizar memoria cach se espera que: NOTAS
La sobrecarga que supone el traspaso de programas de un nivel de memoria a otro sea mucho menor que la
mejora en el rendimiento obtenida por la posibilidad de una ejecucin mucho ms rpida en la cach.

3.2.3 Estrategia de administracin de memoria.

Figura. (a) Particiones de memoria fijas con colas de entrada separadas para cada particin. (b) Particiones de memoria fijas con una nica cola de entrada.

La forma ms fcil de conseguir la multiprogramacin es simplemente dividir la memoria en n particiones


(posiblemente de diferentes tamaos). Esta divisin puede, por ejemplo, realizarse manualmente cuando se
pone en marcha el sistema. Cuando llega un trabajo, puede colocarse en la cola de entrada de la particin ms
pequea en la que cabe. Puesto que en este esquema las particiones son fijas, cualquier espacio en una
particin no utilizado por un trabajo se desperdicia. En la Figura anterior (a) vemos el aspecto que tiene este
sistema de particiones fijas y colas de entrada separadas.

La desventaja de ordenar los trabajos que llegan en colas separadas se hace evidente cuando la cola de una
particin grande est vaca pero la cola de una particin pequea est llena, como sucede con las particiones 1
y 3 de la Figura (a). Aqu los trabajos pequeos tienen que esperar para entrar en la memoria, a pesar de que
hay ms que suficiente memoria libre. Una organizacin alternativa sera mantener una nica cola, como en la
Figura (b). Cada vez que se desocupe una particin, se cargar en la particin vaca y se ejecutar en ella el
trabajo ms cercano al frente de la cola que quepa en esa particin. Puesto que no es deseable desperdiciar
una particin grande con un trabajo pequeo, una estrategia diferente sera examinar toda la cola de entrada
cada vez que quede libre una particin, y escoger el trabajo ms grande que quepa en ella. Advirtase que este
ltimo algoritmo discrimina a los trabajos pequeos porque no los considera merecedores de toda una

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 48


Compilado por MTIJHR FUENTE:JADS/PLGCV
particin, cuando usualmente es deseable dar a los trabajos ms pequeos (que suelen ser interactivos) el
mejor servicio, no el peor. NOTAS
Una solucin es tener al menos una particin pequea. Tal particin permitira que se ejecutasen los trabajos
pequeos sin tener que asignarles una particin grande. Otra estrategia sera tener una regla que estableciese
que un trabajo elegible para ejecutarse no puede pasarse por alto ms de k veces. Cada vez que se le pasa por
alto, se le otorga un punto. Cuando haya adquirido k puntos, ya no se le podr ignorar.

Pueden utilizarse dos enfoques generales para la gestin de la memoria, dependiendo (en parte) del hardware
disponible. La estrategia ms sencilla, llamada intercambio (swapping), consiste en cargar en la memoria un
proceso entero, ejecutarlo durante un rato y volver a guardarlo en el disco. La otra estrategia, llamada
memoria virtual, permite que los programas se ejecuten incluso cuando tan slo una parte de ellos est
cargada en la memoria principal.

En la Figura siguiente se ilustra el funcionamiento de un sistema con intercambio. Inicialmente slo est en la
memoria el proceso A. Luego se crean o se traen del disco los procesos B y C. En la Figura (d) A se intercambia
al disco. Luego llega D y B sale. Finalmente A entra de nuevo. Ya que A est ahora en un lugar distinto, es
preciso reubicar las direcciones que contiene, sea por software en el momento del intercambio, o (ms
probablemente) por hardware durante la ejecucin del programa.

Figura- La asignacin de memoria cambia a medida que los procesos entran en la memoria y salen de ella. Las regiones sombreadas representan memoria no utilizada.

La diferencia principal entre las particiones fijas de la Figura siguiente y las particiones variables de la Figura 4-5
es que en el segundo caso el nmero, la ubicacin y el tamao de las particiones vara de forma dinmica a
medida que los procesos llegan y se van, mientras que en el primero no cambian. La flexibilidad de no estar
atados a un nmero fijo de particiones que podran ser demasiado grandes o demasiado pequeas mejora la
utilizacin de la memoria, pero tambin complica la asignacin y liberacin de la memoria, as como su control.

3.2.4 Asignacin contigua v.s. no contigua.

En la asignacin de memoria contigua, una sola rea de la memoria se asigna a un proceso usando el mtodo
del primer ajuste, del mejor ajuste, o del siguiente ajuste. En la asignacin de la memoria no contigua, la
ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 49
Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
asignacin de memoria se realiza para cada parte de un proceso. En paginamiento, todas las partes del proceso
son del mismo tamao, por lo que la memoria puede partirse en reas del mismo tamao y utilizarse una
estrategia de asignacin basada en recursos en comn. Este mtodo reduce la sobrecarga de asignacin.
Tambin elimina la fragmentacin externa de la memoria; sin embargo, en la ltima pgina de un proceso
puede haber fragmentacin interna. Los sistemas que utilizan segmentacin comparten algunas desventajas de
asignacin contigua. Los segmentos no son del mismo tamao, por lo que no es posible evitar la
fragmentacin externa.

El intercambio es ms eficaz en asignacin de memoria no contigua porque la traduccin de la direccin


permite la ejecucin de un proceso intercambiado desde cualquier parte de la memoria. La proteccin es ms
efectiva porque los procesos pueden tener diferentes tipos de privilegios de acceso a una componente
compartida.

CARACTERISTICA ASIGNACION CONTIGUA ASIGNACION NO CONTIGUA


Sobrecarga No hay sobrecarga durante la La traduccin de la direccin se
ejecucin de un programa lleva a cabo durante la ejecucin
de un programa
Asignacin Asigna una sola rea de la Asigna varias reas de la memoria:
memoria un rea de la memoria para cada
componente de la memoria
Reso de la memoria En asignacin particionada hay En paginamiento: no hay
fragmentacin interna. Hay fragmentacin externa, aunque si
fragmentacin externa en la hay interna. En segmentacin: hay
asignacin con el mtodo del fragmentacin externa, pero no la
primer ajuste, del mejor ajuste y hay interna.
del siguiente ajuste
Intercambio A menos que el sistema de En cualquier rea de la memoria
cmputo cuente con un registro de puede instalarse un proceso de
relocalizacin, es necesario colocar intercambio.
un proceso de intercambio en su
rea asignada originalmente.

Fragmentacin de la memoria: Es la existencia de reas inutilizables en la memoria de un sistema de


cmputo.

Fragmentacin Interna: Ocurre si un proceso se le asigna ms memoria de la que requiere.


Fragmentacin Externa: Ocurre si un rea de la memoria permanece sin usarse debido a que no puede ser
asignada.

3.2.5 Multiprogramacin de particin fija, particin variable, con intercambio de almacenamiento.

Multiprogramacin de Particin Fija

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 50


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
Los sistemas de un solo usuario desperdician gran cantidad de recursos computacionales debido a que (ver
Figura). Cuando ocurre una peticin de e/s la cpu normalmente no puede continuar el proceso hasta que
concluya la operacin de e/s requerida.

Los perifricos de e/s frenan la ejecucin de los procesos ya que comparativamente la cpu es varios rdenes de
magnitud ms rpida que los dispositivos de e/s.

Los sistemas de multiprogramacin permiten que varios procesos usuarios compitan al mismo tiempo por los
recursos del sistema:

Un trabajo en espera de e / s ceder la cpu a otro trabajo que est listo para efectuar cmputos.
Existe paralelismo entre el procesamiento y la e / s.
Se incrementa la utilizacin de la cpu y la capacidad global de ejecucin del sistema.
Es necesario que varios trabajos residan a la vez en la memoria principal.

Las particiones del almacenamiento principal:

Son de tamao fijo.


Alojan un proceso cada una.
La cpu se cambia rpidamente entre los procesos creando la ilusin de simultaneidad.
Los trabajos se traducan con ensambladores y compiladores absolutos para ser ejecutados solo dentro
de una particin especfica (ver Figura).

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 51


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS

El S. O. resulta de implementacin relativamente sencilla pero no se optimiza la utilizacin de la memoria.

Los compiladores, ensambladores y cargadores de relocalizacin:

Se usan para producir programas relocalizables que puedan ser ejecutados en cualquier particin
disponible de tamao suficiente para aceptarlos (ver Figura 3.6).
Son ms complejos que los absolutos.
Mejoran la utilizacin del almacenamiento.
Confieren ms flexibilidad en el armado de la carga de procesos.

Si se utiliza asignacin contigua de memoria la proteccin suele implementarse con varios registros de lmites
(ver Figura 3.7 y Figura 3.8).

Los extremos superior e inferior de una particin pueden ser:

Delineados con dos registros.


Indicados el lmite inferior o superior y el tamao de la particin o regin.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 52


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS

La fragmentacin de almacenamiento ocurre en todos los sistemas independientemente de su organizacin


de memoria.

En los S. O. de multiprogramacin de particin fija la fragmentacin se produce cuando:

Los trabajos del usuario no llenan completamente sus particiones designadas.


Una particin permanece sin usar porque es demasiado pequea para alojar un trabajo que est en espera.

Multiprogramacin de Particin Variable

Los procesos ocupan tanto espacio como necesitan, pero obviamente no deben superar el espacio disponible
de memoria.
ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 53
Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS

No hay lmites fijos de memoria, es decir que la particin de un trabajo es su propio tamao. Se consideran
esquemas de asignacin contigua, dado que un programa debe ocupar posiciones adyacentes de
almacenamiento. Los procesos que terminan dejan disponibles espacios de memoria principal llamados
agujeros:

Pueden ser usados por otros trabajos que cuando finalizan dejan otros agujeros menores.

En sucesivos pasos los agujeros son cada vez ms numerosos pero ms pequeos, por lo que se genera un
desperdicio de memoria principal.

Combinacin de agujeros (reas libres)


Consiste en fusionar agujeros adyacentes para formar uno sencillo ms grande.
Se puede hacer cuando un trabajo termina y el almacenamiento que libera tiene lmites con otros agujeros
grandes.

Multiprogramacin con Intercambio de Almacenamiento


En el esquema de intercambio los programas del usuario no requieren permanecer en la memoria principal
hasta su terminacin.

Una variante consiste en que un trabajo se ejecuta hasta que ya no puede continuar:

Cede el almacenamiento y la cpu al siguiente trabajo.


La totalidad del almacenamiento se dedica a un trabajo durante un breve perodo de tiempo.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 54


Compilado por MTIJHR FUENTE:JADS/PLGCV

de llegar a su terminacin. NOTAS
Los trabajos son intercambiados, dndose que un trabajo puede ser intercambiado varias veces antes

Es un esquema razonable y eficiente para un nmero relativamente reducido de procesos de usuarios. Los
sistemas de intercambio fueron los predecesores de los sistemas de paginacin.

El rendimiento de los sistemas de intercambio mejora al reducir el tiempo de intercambio:

Manteniendo al mismo tiempo varias imgenes de usuario o imgenes de memoria en la memoria


principal.
Retirando una imagen de usuario de la memoria principal solo cuando es necesario su almacenamiento
para una nueva imagen.
Incrementando la cantidad de memoria principal disponible en el sistema.
Las imgenes de usuario (imgenes de memoria) retiradas del almacenamiento principal se graban en el
almacenamiento secundario (discos).

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 55


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
3.3 Organizacin de memoria virtual.

La memoria virtual es el mecanismo ms general para la ejecucin de programas no enteros en


memoria. Se basa en un sistema de paginacin (o combinado) en el que slo un subconjunto de las pginas del
programa estn cargadas en memoria. El resto reside en un dispositivo de almacenamiento secundario,
anlogamente al de swap. La memoria virtual presenta, adicionalmente a su capacidad para ejecutar programas
mayores que la memoria fsica disponible, un conjunto de interesantes ventajas con respecto a la paginacin
con programas enteros:

Reduce la latencia en la ejecucin de los programas, al no tener stos que cargarse completamente para
comenzar a ejecutarse.
Permite gestionar ms eficientemente la memoria fsica. Cualquier espacio libre, incluso una nica pgina,
puede ser aprovechado para cargar un nuevo programa y comenzar a ejecutarlo. Por otra parte, si una pgina
de un programa no se referencia durante la ejecucin, no habr que cargarla.
Al aumentar el grado de multiprogramacin a costa de reducir el nmero de pginas cargadas de cada
programa, permite incrementar la eficiencia de la CPU en sistemas multiprogramados.
Ahora la independencia de los programas con respecto a la mquina es completa. Adems del
direccionamiento virtual que aporta la paginacin, la cantidad de memoria fsica disponible para ejecutar el
programa slo es relevante para la velocidad de ejecucin del programa.

Soporte hardware
Adems del soporte hardware para la traduccin de direcciones de los sistemas paginados, la memoria virtual
requiere mecanismos hardware adicionales:

Espacio para paginacin en un dispositivo de almacenamiento secundario (disco).


Bit de validez, V. Para cada entrada de la tabla de pginas es necesario un bit que indique si la pgina
correspondiente est cargada en memoria o no.
Trap de fallo de pgina. Cuando la pgina referenciada no est cargada en memoria, el mecanismo de
interrupciones produce el salto a la rutina de tratamiento del fallo de pgina (que promover la carga de la
pgina en memoria). A diferencia de una interrupcin normal, el fallo de pgina puede ocurrir en cualquier
referencia a memoria durante la ejecucin de la instruccin, por lo que la arquitectura debe proporcionar los
mecanismos adecuados para establecer un estado del procesador consistente antes de saltar a la rutina de
tratamiento.
Informacin adicional para la gestin del fallo de pgina (bit de pgina modificada, referenciada, ).

3.3.1 Evaluacin de las organizaciones de almacenamiento.

Almacenamiento virtual significa la capacidad de direccionar un espacio de almacenamiento mucho


mayor que el disponible en el almacenamiento primario de determinado sistema de computacin.

Los mtodos ms comunes de implementacin son mediante:

Tcnicas de paginacin.
Tcnicas de segmentacin.
Una combinacin de ambas tcnicas.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 56


Compilado por MTIJHR FUENTE:JADS/PLGCV
Las direcciones generadas por los programas en su ejecucin no son, necesariamente, aquellas
NOTAS
contenidas en el almacenamiento primario (memoria real), ya que las direcciones virtuales suelen seleccionarse
dentro de un nmero mucho mayor de direcciones que las disponibles dentro del almacenamiento primario.

La evolucin en las organizaciones de almacenamiento puede resumirse como sigue:

REAL VIRTUAL
Sistemas dedicados a un solo usuario. Multiprogramacin en almacenamiento virtual:
Sistemas de multiprogramacin en memoria o Paginacin pura.
real: o Segmentacin pura.
Multiprogramacin en particin fija: Combinacin paginacin / segmentacin.
o Absoluta.
o Relocalizable (reubicable).
Multiprogramacin en particin variable.

El tamao combinado del programa, sus datos y su pila podra exceder la cantidad de memoria fsica que se
le puede asignar. El sistema mantiene:
o Las partes del proceso que se estn usando en memoria principal
o El resto del proceso en disco

3.3.2 Paginacin.

Una de las tcnicas de memoria virtual ms usadas que permite ejecutar programas ms grandes que la
memoria fsica disponible de forma transparente al programador.

Direcciones virtuales: Generadas por el programa. Constituyen el espacio de direcciones virtual. El espacio
de direcciones virtual es mayor al de direcciones fsicas.

La unidad de administracin de memoria (MMU): traduce las direcciones virtuales en direcciones fsicas.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 57


Compilado por MTIJHR FUENTE:JADS/PLGCV
pgina NOTAS
El espacio de direcciones virtuales se divide en pginas. El espacio de direcciones fsicas en marcos de

Tamao(Marco de pgina) = Tamao(Pgina)

La pgina es la unidad de intercambio de memoria: las transferencias entre la memoria principal y el


disco siempre se realizan en pginas.

Qu sucede si no hay asociacin pgina/marco?

Fallo de pgina:

1. La MMU detecta que la pgina no tiene correspondencia


2. La MMU provoca un fallo de pgina (interrupcin)
3. S.O. escoge un marco que no se est usando mucho (si es necesario vuelve a escribir su contenido en disco)
4. Trae la nueva pgina a ese marco
5. Modifica la tabla de pginas
6. Reinicia la instruccin

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 58


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS

Tabla de pginas: Establece la correspondencia entre direcciones virtuales y fsicas (entre las pginas virtuales
y los marcos de pgina):

o Para un funcionamiento ptimo el tamao de la pgina y el marco debe ser potencia de 2


o La direccin virtual se divide en nmero de pgina virtual y desplazamiento
N pgina virtual Desplazamiento

o El nmero de pgina virtual se usa como ndice para consultar la tabla de pginas
o La entrada correspondiente de la tabla de pginas indica el nmero de marco de pgina (si est en
memoria)
o El nmero de marco de pgina se anexa al desplazamiento para formar una direccin fsica

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 59


Compilado por MTIJHR FUENTE:JADS/PLGCV
4 bits de pgina y 12 bits de ajuste
NOTAS

Algoritmos de reemplazo de pginas

Qu marco seleccionar para una nueva pgina?

a) Algoritmo ptimo : Reemplaza la pgina que ms tiempo va a tardar en necesitarse


Irreal: el orden de las referencias a memoria no se puede saber de antemano
b) Algoritmo NRU (No Usada Recientemente): Se utilizan los bits de R (referencia) y M (modificado)
De forma peridica el bit R se establece a 0 ) distinguir las pginas que se han solicitado recientemente
c) Algoritmo FIFO: Primero en entrar, primero en salir Reemplaza la pgina que entr hace ms tiempo
en memoria (la primera que entr). Es muy malo, al no tener en cuenta el uso de las pginas.
d) Algoritmo de la segunda oportunidad: Modificacin del FIFO, evitando los problemas de desalojar
una pgina que se use mucho, teniendo en cuenta su bit R.
e) Algoritmo del reloj: Difiere del anterior slo en la implementacin. Utiliza una lista circular y un
puntero a la pgina a considerar Evita tener que mover las pginas en la lista.
f) Algoritmo LRU (Least Recently Used) Buena aproximacin al algoritmo ptimo. Selecciona la pgina
que no ha sido utilizada hace ms tiempo.
g) LRU: Implementaciones hardware
h) Algoritmo de maduracin o envejecimiento

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 60


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
3.3.3 Segmentacin.

Segmentacin: Proporciona a un proceso varios espacios de direcciones completamente independientes)

Cada segmento:
Es una sucesin lineal de direcciones, desde 0 hasta un mximo
Tiene una longitud distinta y variable
Puede crecer o disminuir independientemente
Puede tener una proteccin diferente (lectura, ejecucin,. . . )
Direcciones de dos dimensiones, se construye: Tabla de segmentos
Nmero del segmento
Direccin del segmento

Facilita la proteccin y la comparticin de objetos (procedimientos, funciones, estructuras de datos, etc.) de


forma individual.

Problema: Fragmentacin externa

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 61


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS

3.3.4 Sistemas de paginacin segmentacin.

Ofrecen las ventajas de las dos tcnicas de organizacin del almacenamiento virtual. El tamao de los
segmentos es mltiplo del de las pginas.

No es necesario que todas las pginas de un segmento se encuentren al mismo tiempo en el


almacenamiento primario. Las pginas de almacenamiento virtual, que son contiguas en este almacenamiento,
no necesitan ser contiguas en el almacenamiento real.

El direccionamiento es tridimensional con una direccin de almacenamiento virtual v = (s,p,d):

s es el nmero del segmento.


p es el nmero de pgina.
d es el desplazamiento en la pgina donde se encuentra asignado el elemento deseado.

Cada segmento se pgina internamente => ventajas de la paginacin y de la segmentacin


Direccin formada por dos partes: segmento y direccin dentro del segmento:

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 62


Compilado por MTIJHR FUENTE:JADS/PLGCV

Direccin dentro del segmento => dividida en 2 partes: NOTAS
Segmento => entrada en la tabla de segmentos que nos da la direccin de la tabla de pginas

o Nmero de pgina => entrada de la tabla de pginas que da el marco de pgina


correspondiente
o Desplazamiento dentro de la pgina

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 63


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
3.4 Administracin de memoria virtual.

3.4.1 Estrategias de administracin.

De las diversas organizaciones de memoria tratadas en el tema anterior nicamente las que realizan una
asignacin no contigua (paginacin, segmentacin y segmentacin paginada) del almacenamiento permiten
implantar una administracin virtual de la memoria. Para cualquiera de las tres formas de organizar esta
memoria virtual habr que determinar:

Estrategias de obtencin. Determinan cundo se debe transferir una pgina o un segmento del
almacenamiento secundaria al primario. Las estrategias de obtencin por demanda esperan a que un proceso
en ejecucin haga referencia a una pgina o a un segmento antes de traerla/lo. Los esquemas de obtencin
anticipada intentan determinar por adelantado a qu pginas o segmentos har referencia un proceso. Si la
probabilidad de una referencia es alta y hay espacio disponible, entonces se trae al almacenamiento primario la
pgina o segmento antes de que se haga la referencia explcita

Estrategias de colocacin. Determinan en qu lugar de la memoria principal se debe colocar una pgina o un
segmento entrante. Los sistemas de paginacin vuelven trivial la decisin de colocacin, porque una pgina
entrante se puede ubicar en cualquier marco de pgina disponible. Los sistemas con segmentacin requieren
estrategias de colocacin como las tratadas en el contexto de los sistemas de multiprogramacin con
particiones dinmicas.

Estrategias de reemplazo. Sirven para decidir qu pgina o segmento se debe desplazar para dejar espacio a
una pgina o segmento entrante cuando est completamente ocupada la memoria principal.

3.4.2 Tcnicas de reemplazo de pginas.

Cuando ocurre un fallo de pgina el sistema operativo debe elegir una pgina para retirarla de la
memoria y hacer un espacio para la pgina por recuperar. Si la pgina por eliminar fue modificada mientras
estaba en memoria, debe escribirla en el disco para mantener actualizada la copia del disco, si por el contrario
la pgina no ha sido modificada la copia del disco ya est actualizada por lo que no es necesario volver a
escribir, la pgina por leer slo escribe encima de la pgina por retirar.

Aunque es posible elegir una pgina al azar para el reemplazo relacionado con un fallo de pgina, el
rendimiento del sistema es mucho mejor si se elige una pgina de poco uso.

Algoritmo de reemplazo de pginas optimo. Mejor algoritmo posible para reemplazo de pginas pero
irrealizable en la prctica. Al momento de ocurrir un fallo de pgina cierto conjunto de pginas se encuentran
en la memoria, en la siguiente instruccin se har referencia a una de estas pginas, otras pginas no se
utilizaran sino hasta mucho despus, cada pgina puede ejecutarse con el nmero de instrucciones ejecutadas
antes de la primera referencia a esa pgina, el algoritmo dice que se elimine la pgina con la mayor etiqueta; si
una pgina no va a utilizase sino hasta mucho despus que otra la eliminacin de la primera retrasa el fallo de
pgina lo mas posible, el nico problema de este algoritmo es que es irrealizable. Al momento del fallo de
pgina el S.O. no tiene forma de saber a qu pgina se hace referencia.
ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 64
Compilado por MTIJHR FUENTE:JADS/PLGCV
Algoritmo de pgina de uso no muy reciente. NOTAS
En un fallo de pgina, el sistema operativo inspecciona todas las pginas y las divide en cuatro categoras
segn los valores actuales de los bits R y M
Clase 0: No se ha hecho referencia ni ha sido modificada
Clase 1: No se ha hecho referencia pero ha sido modificada
Clase 2: Se ha hecho referencia pero no ha sido modificada
Clase 3: Se ha hecho referencia y ha sido modificada

El algoritmo NRU implica una hiptesis que indica que es mejor eliminar una pgina modificada sin
referencias al menos por lo general un intervalo de reloj, este algoritmo es fcil de comprender, de
implantacin eficiente y con un rendimiento que, an sin ser el ptimo si es adecuado en muchos casos.

Algoritmo de reemplazo " primero en entrar, primero en salir FIFO"


El sistema operativo tiene una lista de todas las pginas que se encuentran en memoria, siendo la primera
pgina la mas antigua y la ltima la mas reciente, en un fallo de pgina, se elimina la primera pgina y se aade
la nueva al final de la lista.

Algoritmo de reemplazo de pginas de la segunda oportunidad


Una modificacin simple del FIFO que evita deshacerse de una pgina de uso frecuente inspecciona el bit R de
la pgina mas antigua, busca una pgina antigua sin referencias durante el anterior intervalo de tiempo.

Algoritmo de reemplazo de pginas del reloj


Aunque el anterior algoritmo es razonable un mejor enfoque es mantener las pginas en una lista circular con
la forma de un reloj, una manecilla apunta hacia la mas antigua. Al ocurrir un fallo de pgina se inspecciona la
pgina a la que apunta la manecilla si su bit R=0 se retira de la memoria, se inserta la nueva pgina en su lugar
en el reloj y la manecilla avanza una posicin, si R=1 la manecilla avanza una posicin y el bit se limpia, esto
continua hasta encontrar una pgina con R=0.

3.4.3 Paginacin por demanda.

Un sistema de paginacin por demanda es similar a un sistema de paginacin con intercambios. Los procesos
residen en memoria secundaria (en el disco). Cuando queremos ejecutar un proceso, lo metemos en memoria.
Sin embargo, en vez de intercambiar todo el proceso hacia la memoria, utilizamos un intercambiador perezoso.
Un intercambiador perezoso nunca reincorpora una pgina a memoria a menos que se necesite. Como ahora
consideramos un proceso como una secuencia de pginas, en vez de un gran espacio contiguo de direcciones,
el trmino intercambio es tcnicamente incorrecto. Un intercambiador manipula procesos enteros, mientras
que un paginador trata con las pginas individualmente de un proceso.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 65


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS

Cuando un proceso se reincorpora, el paginador lleva a memoria las pginas necesarias. As evita
colocar en la memoria pginas que no se utilizarn, reduciendo el tiempo de intercambio y la cantidad de
memoria fsica necesaria.

Este esquema requiere apoyo del hardware. Generalmente se aade un bit ms a cada entrada de la
tabla de pginas: un bit vlido-invlido. Cuando este bit est asignado como vlido, indica que la pgina
asociada se encuentra en memoria. Si el bit est como invlido, este valor indica que la pgina est en disco.
Una pgina marcada como invlida no tendr ningn efecto si el proceso nunca intenta acceder a esa pgina.

3.4.4 Paginacin anticipada.

El S. O. intenta predecir las pginas que un proceso va a necesitar y a continuacin precarga estas pginas
cuando hay espacio disponible.

Mientras el proceso ejecuta sus pginas actuales, el sistema carga pginas nuevas que estarn disponibles
cuando el proceso las pida, debido a ello, el tiempo de ejecucin de un proceso se puede reducir.

3.4.5 Liberacin de pgina.

Un proceso usuario puede emitir una liberacin voluntaria de pgina para liberar el marco de pgina cuando
ya no necesitara esa pgina.

Se puede eliminar el desperdicio y acelerar la ejecucin.


El inconveniente es que la incorporacin de mandatos de liberacin de pginas dentro de los programas de
usuarios puede ser peligroso y retrasar el desarrollo de aplicaciones.

Los compiladores y S. O. deberan detectar automticamente situaciones de liberacin de pgina mucho antes
de lo que es posible con estrategias de conjuntos de trabajo.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 66


Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
3.4.6 Tamao de pgina.

Al disear una mquina hay que tomar una decisin sobre el mejor tamao de pgina. Como podr suponer,
no hay un tamao nico que sea el mejor, pero existen varios factores que apoyan tamaos distintos. Los
tamaos son invariablemente potencias de dos, que suelen ir de 512 (29) a 16384 (214) bytes.

Cmo seleccionamos el tamao de pgina? Un factor es el tamao de la tabla de pginas. Para un espacio de
memoria virtual establecido, al reducir el tamao aumenta el nmero de pginas y, por tanto, el tamao de la
tabla de pginas. Para una memoria virtual de 4 MB habra 4096 paginas de 1K bytes, pero slo 512 pginas de
8192 bytes. Como cada proceso activo debe tener su propia tabla de pginas, sera deseable un tamao de
pgina grande.

Por otra parte, la memoria se utiliza mejor con pginas pequeas. Una parte de la ltima pgina estar
asignada pero no totalmente ocupada (fragmentacin interna). Suponiendo que los tamaos de los procesos y
de la pgina son independientes, podemos esperar que, en promedio, se desperdiciar la mitad de la ltima
pgina de cada proceso. Esta prdida representara slo 256 bytes en una pgina de 512 bytes, pero seran
4096 bytes en una pgina de 8192. Para minimizar la fragmentacin interna necesitamos un tamao de pgina
pequeo.
Otro problema es el tiempo necesario para leer o escribir una pgina. El tiempo de E/S est compuesto por
tiempo de bsqueda, latencia y transferencia.

El tiempo de transferencia es proporcional a la cantidad transferida (o sea, al tamao de pgina), hecho que
aparentemente apunta en favor de un tamao de pgina pequeo. Sin embargo, los tiempos de bsqueda y de
latencia son mucho mayores al tiempo de transferencia. A una velocidad de transferencia de 2MB por segundo,
la transferencia de 512 bytes cuesta slo 0.2 milisegundos. La latencia puede que sea de 8 milisegundos y el
tiempo de bsqueda de 20 milisegundos. Del tiempo total de E/S (28.2 milisegundos), por tanto, el 1% puede
atribuirse a la transferencia. Si duplicamos el tamao de la pgina, el tiempo aumenta a slo 28.4 milisegundos.
Esto significa que se invertira 28.4 milisegundos para leer una sola pgina de 1024 bytes, pero 56.4
milisegundos para leer la misma cantidad como dos pginas de 512 bytes cada una. Por lo anterior, el deseo de
minimizar el tiempo de E/S implica elegir un tamao de pgina grande.

Sin embargo, con un menor tamao de pgina se puede reducir el nmero total de E/S, ya que la localidad
mejorara. Un tamao de pgina menor permite que cada pgina se ajuste con mayor precisin a la localidad
del programa. Por ejemplo, considere un proceso de 200K, de los que slo la mitad (100K) se usan realmente
durante su ejecucin. Si tenemos una solo pgina de gran tamao, debemos transferirla y ubicarla por
completo en memoria. Con un tamao de pgina menor obtenemos una mejor resolucin, lo que nos permite
realizar menos E/S y tener menos memoria asignada.

Por otra parte, con un tamao de pgina de un byte se generara un fallo de pgina por cada byte. Cada fallo
de pgina genera una gran cantidad de procesamiento adicional para guardar registros, reemplazar la pgina,
esperar en la cola del dispositivo de paginacin y actualizar tablas. Para minimizar el nmero de fallos de
pgina necesitamos un tamao de pgina mayor.

La tendencia histrica va hacia mayores tamaos de pgina. El procesador Intel 80386 tiene un tamao de
pgina de 4K; el Motorola 68030 permite un tamao que vara 256 bytes y 32K. Esta evolucin hacia mayores
ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 67
Compilado por MTIJHR FUENTE:JADS/PLGCV
NOTAS
tamaos es consecuencia de que el aumento de la velocidad de la CPU y de la capacidad de la memoria
principal se ha producido con mayor rapidez que la velocidad de los discos. Existen otros factores que deben
considerarse (como la relacin entre el tamao de pgina y el tamao del sector del dispositivo de paginacin).
No hay solucin que pueda considerarse la mejor. Algunos factores (fragmentacin interna, localidad) apuntan
a favor de un tamao de pgina pequeo, mientras que otros (tamao de pgina, tiempo de E/S) favorecen un
tamao de pgina grande.

ITSA Ingeniera en Sistemas Computacionales Semestre VII Ago 12 Ene 13 Pg. 68


Compilado por MTIJHR FUENTE:JADS/PLGCV

Potrebbero piacerti anche