You are on page 1of 69

NOTAS

SCC-0431 Antologa de la Materia de Sistemas Operativos

Ingeniera en Sistemas Computacio nales

Compilacin Hecha por: MTIJHR

ITSA

Ingeniera en Sistemas Computacionales

Semestre VII Compilado por MTIJHR

Ago 12 Ene 13 Pg. 0 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 Compilado por MTIJHR Ago 12 Ene 13 Pg. 1 FUENTE:JADS/PLGCV

1.1 Definicin y concepto. 1.2 Funciones y caractersticas. 1.3 Evolucin histrica. 1.4 Clasificacin. 1.5 Estructura (niveles o estratos de diseo). 1.6 Ncleo. 1.6.1 Interrupciones (FLIH). 1.6.2 Despachador(Scheduler). 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. 2.4.2.2 Mecanismo de monitores. 2.4.3 Interbloqueo (DeadLock). 2.4.3.1 Prevencin. 2.4.3.2 Deteccin. 2.4.3.3 Recuperacin. 2.5 Niveles, objetivos y criterios de planificacin. 2.6 Tcnicas de administracin del planificador. 2.6.1 FIFO 2.6.2 SJF 2.6.3 RR 2.6.4 Queves multi-level. 2.6.5 Multi-level feedback queves. 3.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, particin variable, con intercambio de almacenamiento. 3.3 Organizacin de memoria virtual. 3.3.1 Evaluacin de las organizaciones de almacenamiento. 3.3.2 Paginacin. 3.3.3 Segmentacin. 3.3.4 Sistemas de paginacin segmentacin. 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.

1 Introduccin a los sistemas operativos.

4 Administracin de entrada/salida

4.1 Dispositivos y manejadores de dispositivos (device drivers). 4.2 Mecanismos y funciones de los manejadores de dispositivos (device drivers). 4.3 Estructuras de datos para manejo de dispositivos. 4.4 Operaciones de Entrada /salida.

NOTAS

2 Administracin de procesos y del procesador.

5.1 Concepto. 5.2 Nocin de archivo real y virtual. 5.3 Componentes de un sistema de archivos. 5.4 Organizacin lgica y fsica. 5.5 Mecanismos de acceso a los archivos. 5.6 Manejo de espacio en memoria secundaria. 5.7 Modelo jerrquico. 5.8 Mecanismos de recuperacin en caso de falla.

3 Administracin de memoria.

6 Proteccin y seguridad.

5 Sistema de archivos.

6.1 Concepto y objetivos de proteccin. 6.2 Funciones del sistema de proteccin. 6.3 Implantacin de matrices de acceso. 6.4 Proteccin basada en el lenguaje. 6.5 Concepto de seguridad. 6.6 Clasificaciones de la seguridad. 6.7 Validacin y amenazas al sistema. 6.8 Cifrado.

ITSA

Ingeniera en Sistemas Computacionales

Semestre VII Compilado por MTIJHR

Ago 12 Ene 13 Pg. 2 FUENTE:JADS/PLGCV

FUENTES DE INFORMACIN 1. Silberschatz, Abraham Galvin, Peter. Sistemas Operativos. Pearson. 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.

NOTAS

ITSA

Ingeniera en Sistemas Computacionales

Semestre VII Compilado por MTIJHR

Ago 12 Ene 13 Pg. 3 FUENTE:JADS/PLGCV

NOTAS Unidad UNO: Introduccin a los Sistemas Operativos.


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

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 Compilado por MTIJHR Ago 12 Ene 13 Pg. 4 FUENTE:JADS/PLGCV

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.

NOTAS

1.2 Funciones y caractersticas


Las funciones clsicas, del sistema operativo se pueden agrupar en las tres categoras siguientes: I) II) III) Gestin de os recursos de la computadora. Ejecucin de servicios para lo: programas. 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 Compilado por MTIJHR

Ago 12 Ene 13 Pg. 5 FUENTE:JADS/PLGCV

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.

NOTAS

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.
USUARIOS PROGRAMAS DE USUARIO SERVICIOS NCLEO HARDWARE SHELL

API

Sistema Operativo

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 Compilado por MTIJHR Ago 12 Ene 13 Pg. 6 FUENTE:JADS/PLGCV

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

NOTAS

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 Compilado por MTIJHR

Ago 12 Ene 13 Pg. 7 FUENTE:JADS/PLGCV

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.

NOTAS

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 Compilado por MTIJHR Ago 12 Ene 13 Pg. 8 FUENTE:JADS/PLGCV

Planificacin de memoria sencilla, generalmente se divide en dos: parte residente del S.O. y programas transitorios. No requieren gestin crtica de dispositivos en el tiempo. Suelen proporcionar gestin sencilla de manejo de archivos: se requiere poca proteccin y ningn control de concurrencia para el acceso.

NOTAS

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 Compilado por MTIJHR

Ago 12 Ene 13 Pg. 9 FUENTE:JADS/PLGCV

Sistemas Operativos de multiprogramacin (o Sistemas Operativos de multitarea).

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.

NOTAS

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 Compilado por MTIJHR

Ago 12 Ene 13 Pg. 10 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 Compilado por MTIJHR Ago 12 Ene 13 Pg. 11 FUENTE:JADS/PLGCV

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.

NOTAS

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 Compilado por MTIJHR Ago 12 Ene 13 Pg. 12 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 Programa Program de a usuario de usuario API API
Modo Ncleo

Procesos Servidores Servidor Servidor Servidor de de de procesos memoria E/S Servidor de Servidor Servidor archivos y de de directorios seguridad comunicaci n

Modo Usuario

Microncleo 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 Compilado por MTIJHR Ago 12 Ene 13 Pg. 13 FUENTE:JADS/PLGCV

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 Compilado por MTIJHR Ago 12 Ene 13 Pg. 14 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.

NOTAS

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 Compilado por MTIJHR Ago 12 Ene 13 Pg. 15 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
Es una funcin bsica de los Sistemas operativos.

Primitivas de comunicacin (IPC)

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 Compilado por MTIJHR Ago 12 Ene 13 Pg. 16 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 Compilado por MTIJHR

Ago 12 Ene 13 Pg. 17 FUENTE:JADS/PLGCV

NOTAS

Unidad DOS: Administracin de procesos y procesador


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

ITSA

Ingeniera en Sistemas Computacionales

Semestre VII Compilado por MTIJHR

Ago 12 Ene 13 Pg. 18 FUENTE:JADS/PLGCV

Los primeros Sistemas de computacin solo permitan la ejecucin de un programa a la vez. 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.

NOTAS

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 Compilado por MTIJHR

Ago 12 Ene 13 Pg. 19 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 Compilado por MTIJHR

Ago 12 Ene 13 Pg. 20 FUENTE:JADS/PLGCV

De forma ms especfica, las operaciones que debe hacer el sistema operativo son las siguientes:

NOTAS

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 Compilado por MTIJHR

Ago 12 Ene 13 Pg. 21 FUENTE:JADS/PLGCV

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.

NOTAS

Diagrama completo con los estados de un proceso.

ITSA

Ingeniera en Sistemas Computacionales

Semestre VII Compilado por MTIJHR

Ago 12 Ene 13 Pg. 22 FUENTE:JADS/PLGCV

ACTIVIDAD
1. 2. 3. 4. 5. 6.

NOTAS

Que es un proceso y cul es la informacin que contiene. Un programa es o no es un proceso?. 4 Ejemplo de procesos que hayas detectado al usar tu PC Explicar el primer diagrama, ejemplificando un proceso que hayas realizado en la PC Explicar mediante el diagrama cmo se forma un proceso. Explicar el tercero diagrama 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 Compilado por MTIJHR Ago 12 Ene 13 Pg. 23 FUENTE:JADS/PLGCV

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.

NOTAS

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 Compilado por MTIJHR

Ago 12 Ene 13 Pg. 24 FUENTE:JADS/PLGCV

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.

NOTAS

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 Compilado por MTIJHR Ago 12 Ene 13 Pg. 25 FUENTE:JADS/PLGCV

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.

NOTAS

ACTIVIDAD
1. 2. 3. 4. 5. Qu es un hilo?. Para qu sirve un hilo? Diferencia entre hilo y proceso Estados y cambio de estado de un hilo 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 Compilado por MTIJHR

Ago 12 Ene 13 Pg. 26 FUENTE:JADS/PLGCV

Multicomputadora. Es una mquina de memoria distribuida, que est formada por una serie de computadoras. En este tipo de arquitecturas tambin es posible la ejecucin simultnea de los procesos sobre los diferentes procesadores.

NOTAS

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 Compilado por MTIJHR

Ago 12 Ene 13 Pg. 27 FUENTE:JADS/PLGCV

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:

NOTAS

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 Compilado por MTIJHR Ago 12 Ene 13 Pg. 28 FUENTE:JADS/PLGCV

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 Compilado por MTIJHR Ago 12 Ene 13 Pg. 29 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.

NOTAS

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 Compilado por MTIJHR Ago 12 Ene 13 Pg. 30 FUENTE:JADS/PLGCV

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

NOTAS

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 Compilado por MTIJHR Ago 12 Ene 13 Pg. 31 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: CREAR _ SEMFORO, ASOCIAR_A_SEMAFORO, ESPERAR, SEAL, CERRAR _ SEMFORO.

NOTAS

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 Compilado por MTIJHR

Ago 12 Ene 13 Pg. 32 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 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.

NOTAS

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 Compilado por MTIJHR Ago 12 Ene 13 Pg. 33 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 Compilado por MTIJHR

Ago 12 Ene 13 Pg. 34 FUENTE:JADS/PLGCV

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 Compilado por MTIJHR Ago 12 Ene 13 Pg. 35 FUENTE:JADS/PLGCV

NOTAS

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 Compilado por MTIJHR

Ago 12 Ene 13 Pg. 36 FUENTE:JADS/PLGCV

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.

NOTAS

ITSA

Ingeniera en Sistemas Computacionales

Semestre VII Compilado por MTIJHR

Ago 12 Ene 13 Pg. 37 FUENTE:JADS/PLGCV

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:

NOTAS

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 Compilado por MTIJHR Ago 12 Ene 13 Pg. 38 FUENTE:JADS/PLGCV

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.

NOTAS

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 Compilado por MTIJHR

Ago 12 Ene 13 Pg. 39 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 Compilado por MTIJHR Ago 12 Ene 13 Pg. 40 FUENTE:JADS/PLGCV

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.

NOTAS

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 Compilado por MTIJHR

Ago 12 Ene 13 Pg. 41 FUENTE:JADS/PLGCV

2.6.4 Queves multi-level.

NOTAS

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 Compilado por MTIJHR Ago 12 Ene 13 Pg. 42 FUENTE:JADS/PLGCV

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.

NOTAS

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 Compilado por MTIJHR

Ago 12 Ene 13 Pg. 43 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 Compilado por MTIJHR Ago 12 Ene 13 Pg. 44 FUENTE:JADS/PLGCV

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.

NOTAS

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 Compilado por MTIJHR

Ago 12 Ene 13 Pg. 45 FUENTE:JADS/PLGCV

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.

NOTAS

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 Compilado por MTIJHR Ago 12 Ene 13 Pg. 46 FUENTE:JADS/PLGCV

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).

NOTAS

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 Compilado por MTIJHR Ago 12 Ene 13 Pg. 47 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 Compilado por MTIJHR Ago 12 Ene 13 Pg. 48 FUENTE:JADS/PLGCV

particin, cuando usualmente es deseable dar a los trabajos ms pequeos (que suelen ser interactivos) el mejor servicio, no el peor. 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.

NOTAS

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 Compilado por MTIJHR Ago 12 Ene 13 Pg. 49 FUENTE:JADS/PLGCV

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 Sobrecarga ASIGNACION CONTIGUA ASIGNACION NO CONTIGUA No hay sobrecarga durante la La traduccin de la direccin se ejecucin de un programa lleva a cabo durante la ejecucin de un programa Asigna una sola rea de la Asigna varias reas de la memoria: memoria un rea de la memoria para cada componente 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 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.

NOTAS

Asignacin

Reso de la memoria

Intercambio

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 Compilado por MTIJHR

Ago 12 Ene 13 Pg. 50 FUENTE:JADS/PLGCV

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.

NOTAS

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 Compilado por MTIJHR

Ago 12 Ene 13 Pg. 51 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 Compilado por MTIJHR Ago 12 Ene 13 Pg. 52 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 Compilado por MTIJHR Ago 12 Ene 13 Pg. 53 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 Compilado por MTIJHR Ago 12 Ene 13 Pg. 54 FUENTE:JADS/PLGCV

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

NOTAS

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 Compilado por MTIJHR

Ago 12 Ene 13 Pg. 55 FUENTE:JADS/PLGCV

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 Compilado por MTIJHR Ago 12 Ene 13 Pg. 56 FUENTE:JADS/PLGCV

NOTAS

Las direcciones generadas por los programas en su ejecucin no son, necesariamente, aquellas 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 Sistemas dedicados a un solo usuario. Sistemas de multiprogramacin en memoria real: Multiprogramacin en particin fija: o Absoluta. o Relocalizable (reubicable). Multiprogramacin en particin variable. VIRTUAL Multiprogramacin en almacenamiento virtual: o Paginacin pura. o Segmentacin pura. Combinacin paginacin / segmentacin.

NOTAS

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 Compilado por MTIJHR

Ago 12 Ene 13 Pg. 57 FUENTE:JADS/PLGCV

El espacio de direcciones virtuales se divide en pginas. El espacio de direcciones fsicas en marcos de pgina

NOTAS

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 Compilado por MTIJHR

Ago 12 Ene 13 Pg. 58 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 o Para un funcionamiento ptimo el tamao de la pgina y el marco debe ser potencia de 2 La direccin virtual se divide en nmero de pgina virtual y desplazamiento N pgina virtual Desplazamiento El nmero de pgina virtual se usa como ndice para consultar la tabla de pginas La entrada correspondiente de la tabla de pginas indica el nmero de marco de pgina (si est en memoria) El nmero de marco de pgina se anexa al desplazamiento para formar una direccin fsica

o o o

ITSA

Ingeniera en Sistemas Computacionales

Semestre VII Compilado por MTIJHR

Ago 12 Ene 13 Pg. 59 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 Compilado por MTIJHR

Ago 12 Ene 13 Pg. 60 FUENTE:JADS/PLGCV

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

NOTAS

ITSA

Ingeniera en Sistemas Computacionales

Semestre VII Compilado por MTIJHR

Ago 12 Ene 13 Pg. 61 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 Compilado por MTIJHR Ago 12 Ene 13 Pg. 62 FUENTE:JADS/PLGCV

Segmento => entrada en la tabla de segmentos que nos da la direccin de la tabla de pginas Direccin dentro del segmento => dividida en 2 partes: o Nmero de pgina => entrada de la tabla de pginas que da el marco de pgina correspondiente o Desplazamiento dentro de la pgina

NOTAS

ITSA

Ingeniera en Sistemas Computacionales

Semestre VII Compilado por MTIJHR

Ago 12 Ene 13 Pg. 63 FUENTE:JADS/PLGCV

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.

NOTAS

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 Compilado por MTIJHR Ago 12 Ene 13 Pg. 64 FUENTE:JADS/PLGCV

Algoritmo de pgina de uso no muy reciente. 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.

NOTAS

ITSA

Ingeniera en Sistemas Computacionales

Semestre VII Compilado por MTIJHR

Ago 12 Ene 13 Pg. 65 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 Compilado por MTIJHR

Ago 12 Ene 13 Pg. 66 FUENTE:JADS/PLGCV

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 Compilado por MTIJHR Ago 12 Ene 13 Pg. 67 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.

NOTAS

ITSA

Ingeniera en Sistemas Computacionales

Semestre VII Compilado por MTIJHR

Ago 12 Ene 13 Pg. 68 FUENTE:JADS/PLGCV

You might also like