Vous êtes sur la page 1sur 119

libro abierto / serie apuntes

Pablo Ruiz Mzquiz u

Sistemas Operativos
0.5.0

Programa 1
                                                     

Programa 2
                 

P1 inactivo P1 inactivo P1 inactivo P2 inactivo P2 inactivo P2 inactivo

(a) Ejecucin secuencial

Tiempo

Programa 1
" # " # " #

P1

P2

P1

P2

P1

(b) Ejecucin multiprogramada

Un libro libre de Alqua

" # " # " # " # " # #

" ! ! ! ! ! ! ! ! !     

     

     

Programa 2

P2

Tiempo

004.451

SSOO

Sistemas Operativos

lomo para ediciones impresas

ALQ

Dedicado
A mi hermana Ins e

http://alqua.org/libredoc/SSOO

Pablo Ruiz Mzquiz u

pablo@alqua.org

http://alqua.org/people/pablo

Sistemas Operativos
versin 0.5.0 o 15 de abril de 2004

alqua,madeincommunity

c
copyleft
Copyright (c) 2004 Pablo Ruiz Mzquiz. u This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. Copyright (c) 2004 Pablo Ruiz Mzquiz. u Este trabajo cae bajo las provisiones de la licencia Atribucin-No Comercial-Comparte Igual de Creative o Commons. Para ver una copia de esta licencia visite http://creativecommons.org/licenses/by-nc-sa/1.0/ o escriba una carta a Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Serie apuntes Area Sistemas operativos CDU 004.451

Editores
Pablo Ruiz Mzquiz u pablo@alqua.org

Notas de produccin o
Plantilla latex-book-es-b.tex, v. 0.1 (C) Alvaro Tejero Cantero. compuesto con software libre

Indice general

Portada Copyleft Indice general 1. Introduccin a los Sistemas Operativos o 1.1. Denicin de Sistema Operativo . . . . . . . . . . . . . . . . . . . . . . o 1.2. Relacin con la mquina subyacente . . . . . . . . . . . . . . . . . . . . o a 1.2.1. Componentes bsicos de la arquitectura Von Neuman . . . . . . a 1.2.2. Registros del procesador . . . . . . . . . . . . . . . . . . . . . . . 1.2.3. Ejecucin de instrucciones . . . . . . . . . . . . . . . . . . . . . . o 1.2.4. Interrupciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3. Funciones y objetivos de los Sistemas Operativos . . . . . . . . . . . . . 1.3.1. El Sistema Operativo como Interfaz Usuario/Computadora . . . 1.3.2. El Sistema OPerativo como administrador de recursos . . . . . . 1.3.3. Facilidad de evolucin del Sistema Operativo . . . . . . . . . . . o 1.4. Evolucin histrica de los Sistemas Operativos . . . . . . . . . . . . . . o o 1.4.1. Proceso en serie. Primera generacin (1945-1955) . . . . . . . . . o 1.4.2. Sistemas sencillos de proceso por lotes. Segunda generacin (1955o 1965) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4.3. Multiprogramacin. Tercera Generacin (1965-1980) . . . . . . . o o 1.4.4. Computadoras personales. Cuarta Generacin (1980-1990) . . . . o 2. Gestin de procesos o 2.1. Procesos y tareas . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1. Divisin impl o cita y expl cita de tareas . . . . . . . . . . 2.1.2. Tipos de procesos y relacin entre procesos concurrentes o 2.1.3. El sistema operativo y los procesos . . . . . . . . . . . . 2.2. Creacin y terminacin de procesos . . . . . . . . . . . . . . . . o o 2.3. Estados de un proceso . . . . . . . . . . . . . . . . . . . . . . . 2.3.1. Modelo de dos estados . . . . . . . . . . . . . . . . . . . 2.3.2. Modelo de 5 estados . . . . . . . . . . . . . . . . . . . . 2.3.3. Procesos suspendidos . . . . . . . . . . . . . . . . . . . . 2.4. Estructuras de control del sistema operativo . . . . . . . . . . .

I VI VII

. . . . . . . . . . . .

1 1 2 2 3 4 5 7 7 9 9 10 10

. 11 . 11 . 13 15 15 15 16 17 18 19 19 21 23 27

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

vii

INDICE GENERAL 2.4.1. 2.4.2. 2.4.3. 2.4.4. 2.4.5. Tablas de memoria, de E/S, de archivos y de procesos . . Bloque de control de procesos (BCP) . . . . . . . . . . . . Estados del sistema y listas de procesos . . . . . . . . . . Conmutacin de procesos . . . . . . . . . . . . . . . . . . o Servicios del sistema operativo para la gestin de procesos o . . . . . . . . . . . . . . . . . . . . . . . . . 27 28 30 31 32 35 35 35 35 36 36 36 36 36 37 38 38 39 39

3. Planicacin de procesos o 3.1. Concepto y criterios de planicacin . . . . . . . . . . . . . . . . . . . . o 3.1.1. Utilizacin del procesador: . . . . . . . . . . . . . . . . . . . . . o 3.1.2. Productividad . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.3. Tiempo de retorno . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.4. Tiempo de espera . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.5. Tiempo de respuesta . . . . . . . . . . . . . . . . . . . . . . . . . 3.2. Tipos de planicadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1. Planicador a largo plazo (PLP) . . . . . . . . . . . . . . . . . . 3.2.2. Planicador a corto plazo (PCP) . . . . . . . . . . . . . . . . . . 3.2.3. Planicador a medio plazo (PMP) . . . . . . . . . . . . . . . . . 3.3. Algoritmos de planicacin . . . . . . . . . . . . . . . . . . . . . . . . . o 3.3.1. Algoritmo First Come First Serve (FCFS) . . . . . . . . . . . . . 3.3.2. Algoritmo por reparto circular de tiempo (RR, Round-Robin) . . 3.3.3. Planicacin con expropiacin basada en prioridades (ED, Evento o Driven) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.4. Planicacin MLQ (Multiple level queues) . . . . . . . . . . . . . o 4. Programacin Concurrente o 4.1. Multitarea, multiprogramacin y multiproceso . . . . . . . . . . . . . . . o 4.2. Principios de concurrencia . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3. Comunicacin y sincronizacin de procesos . . . . . . . . . . . . . . . . o o 4.3.1. Posibilidades de interaccin de procesos . . . . . . . . . . . . . . o 4.3.2. Necesidad de sincronizacin de los procesos: regin cr o o tica y exclusin mutua . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 4.4. Soluciones software para la exclusin mutua . . . . . . . . . . . . . . . . o 4.4.1. Algoritmo de Dekker . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.2. Algoritmo de Peterson . . . . . . . . . . . . . . . . . . . . . . . . 4.4.3. Semforos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 4.4.4. Monitores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.5. Paso de mensajes . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.6. Soluciones hardware para la exclusin mutua . . . . . . . . . . . o 5. Interbloqueos 5.1. Principios de interbloqueo . . . . . 5.1.1. Recursos reutilizables . . . 5.1.2. Recursos consumibles . . . 5.1.3. Condiciones de interbloqueo

. . . . . . . . . . . . .

. 42 . 43 45 45 45 46 46 47 49 49 50 56 58 60 63 73 73 73 73 74

. . . . . . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

viii

Sistemas Operativos - 0.5.0

INDICE GENERAL 5.2. Prevencin de interbloqueos . . . . . . . . . . . . . . o 5.3. Deteccin de interbloqueos . . . . . . . . . . . . . . . o 5.4. Prediccin de interbloqueo. Algoritmo del banquero o 5.4.1. Negativa de iniciacin de procesos . . . . . . o 5.4.2. Negativa de asignacin de recursos . . . . . . o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 75 76 77 78 81 81 82 84 84 87 88 88 89

6. Gestin de memoria o 6.1. Reubicacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 6.2. Asignacin de memoria con particiones jas . . . . . . . . . . . . . . . . o 6.3. Asignacin de memoria con particiones dinmicas . . . . . . . . . . . . . o a 6.4. Asignacin de memoria con paginacin simple . . . . . . . . . . . . . . . o o 6.5. Asignacin de memoria con segmentacin simple . . . . . . . . . . . . . o o 6.6. Memoria virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.6.1. Estructuras Hardware y de control . . . . . . . . . . . . . . . . . 6.6.2. Hiperpaginacin y cercan de referencias . . . . . . . . . . . . . o a 6.6.3. Memoria virtual con paginacin y buer de traduccin adelantada o o (TLB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.6.4. Software del SO para la gestin de memoria virtual . . . . . . . . o Indice alfabtico e Historia Creative Commons Deed Maniesto de Alqua El proyecto libros abiertos de Alqua Otros documentos libres

. . . . . . . .

. 90 . 90 95 97 99 101 105 109

http://alqua.org/libredoc/SSOO

ix

INDICE GENERAL

Sistemas Operativos - 0.5.0

1 Introduccin a los Sistemas Operativos o

1.1.

Denicin de Sistema Operativo o

Un sistema operativo puede ser contemplado como una coleccin organizada de exteno siones software del hardware, consistentes en rutinas de control que hacen funcionar al computador y proporcionan un entorno para la ejecucin de programas. Adems, estos o a programas utilizan las facilidades proporcionadas por el sistema operativo para obtener acceso a recursos del sistema informtico como el procesador, archivos y dispositivos a de entrada/salida (E/S). De esta forma, el SO constituye la base sobre la cual pueden escribirse los programas de aplicacin, los cuales invocarn sus servicios por medio de o a llamadas al sistema. Por otro lado, los usuarios pueden interactuar directamente con el SO a travs de rdenes concretas. En cualquier caso, el SO acta como interfaz entre e o u los usuarios/aplicaciones y el hardware de un sistema informtico. a El rango y la extensin de los servicios proporcionados por un SO dependen de varios o factores. As las funciones visibles al usuario estn en gran medida determinadas por la , a necesidades y caracter sticas del entorno objetivo que el SO est destinado a soportar. Por a ejemplo, un SO destinado al desarrollo de programas en un entorno interactivo puede tener un conjunto bastante diferente de llamadas y rdenes que un sistema operativo o diseado para soporte en tiempo de ejecucin a una aplicacin de tiempo real dedicada, n o o tal como el control del motor de un coche, el control del reactor de una central nuclear o el sistema de actualizaciones derivado de las operaciones de un cajero automtico de a una entidad bancaria. Internamente, un SO acta como gestor de los recursos del sistema informtico tales u a como el procesador, la memoria, los archivos y los dispositivos de E/S. En esa funcin, o el SO mantiene actualizada la informacin relativa al estado de sistemas que soportan o la ejecucin concurrente de programas, el SO resuelve las peticiones conictivas de reo cursos de manera que preserve la integridad del sistema y al hacerlo intenta optimizar el rendimiento nal. En general, el SO presenta al usuario el equivalente de una mquina virtual que sea a ms fcil de utilizar que la mquina subyacente y uno de sus objetivos primarios es increa a a mentar la productividad de los recursos que ofrece al sistema mediante una planicacin o lo ms ptima posible de ellos. a o

1 Introduccin a los Sistemas Operativos o

1.2.
1.2.1.

Relacin con la mquina subyacente o a


Componentes bsicos de la arquitectura Von Neuman a

A un nivel muy alto, un sistema informtico que implemente la arquitectura Von a Neuman clsica consta de 3 componentes bsicos: memoria principal, unidad central a a de proceso y dispositivos de entrada/salida. La unidad central de proceso, a su ves, est constituida por la unidad aritmtico-lgica, la unidad de control y un conjunto a e o de registros. Los componentes bsicos mencionados se encuentran interconectados para a llevar a cabo la funcin principal del computador, que consiste en la ejecucin de las o o sentencias que forman los procesos. As pues, se tienen cuatro elementos estructurales principales. Memoria principal: Comnmente conocida como memoria RAM. En ella se enconu trar el programa en cdigo mquina a ejecutar, los datos de entrada y los resultaa o a dos. La memoria est formada por un conjunto de celdas idnticas que pueden ser a e accedidas de forma aleatoria mediante los distintos registros de direccionamiento. Esta memoria es normalmente voltil y tambin se conoce como memoria real. a e La unidad aritmtico-lgica permite efectuar un conjunto de opoeraciones aritmtie o e cas y lgicas de los datos. Estos datos, que pueden proceder de memoria principal o o ser el resultado de operaciones previas, se almacenarn en los registros de entrada a de que esta unidad dispone. El resultado de la operacin, as como la informao cin relativa al estado de terminacin de la misma, quedarn almacenados en los o o a correspondientes registros. La unidad de control es la que se encarga de hacer funcionar al conjunto, para lo cual lleva a cabo las siguientes funciones: Lee de memoria las instrucciones mquina que forman el programa. a Interpreta cada instruccin le o da. Lee los datos de memoria referenciados por la instruccin. o Ejecuta la instruccin. o Almacena el resultado de cada instruccin. o Finalmente, la unidad de Entrada/Salida se encarga de realizar la transferencia de informacin entre la memoria (o los registros) y los perifricos. La E/S se puede o e efectuar bajo el gobierno de la unidad de control (E/S programada) o de forma independiente (DMA). El transporte de datos se realiza, pues, entre el computador y su entorno exterior. Dicho entorno consta de una gran variedad de dispositivos externos que incluye a los dispositivos de memoria secundaria, los equipos de comunicacin y los terminales. o Adems de los descritos anteriormente, los sistemas informticos disponene de un cona a junto de elementos de interconexin (buses de datos). Estos elementos estn constituidos o a

Sistemas Operativos - 0.5.0

1.2 Relacin con la mquina subyacente o a por mecanismos que permiten la comunicacin entre los componentes que conforman el o sistema informtico, es decir, su funcin es la de interconectar procesadores, memoria a o principal y mdulos de E/S. o

1.2.2.

Registros del procesador

Dentro del procesador hay un conjunto de registros que ofrecen un nivel de memoria que es ms rpido y pequeo que la memoria principal. Los registros del procesador a a n pueden clasicarse de la siguiente forma: Registros visibles de usuario: Un registro visible al usuario es aqul que puede ser e referenciado por medio de lenguaje mquina que ejecuta el procesador, siendo, por a lo general, accesible a todos los programas, tanto de aplicacin como de sistema. o Un programador de lenguaje de mquina o ensamblador puede minimizar las refea rencias a memoria principal mediante un uso ptimo de estos registros. Los tipos o de registro normalmente disponibles son: registros de datos, registros de direccin o y registros de cdigos de condicin. o o Los registros de datos pueden ser asignados por el programador a diversas funciones. En muchos casos, son de propsito general y pueden ser empleados o por instrucciones que lleven a cabo cualquier tipo de operacin sobre un dao to determinado. Sin embargo, suelen establecerse ciertas restricciones como dedicar algunos registros para operaciones en coma otante. Los registros de direccin guardan direcciones de memoria principal que pueo den contener datos, instrucciones o parte de una direccin efectiva utilizada o para calcularla. Como ejemplo de registros de direccin podemos incluir los o siguientes: Registro ndice: Se utiliza en el direccionamiento indexado que consiste en sumar un ndice a un valor base para obtener la direccin efectiva. o Puntero de segmento: Cuando se utiliza direccionamiento segmentado la memoria se divide en segmentos, que son bloques de palabras de tamao n variable. Una referencia a memoria consta de un segmento particular y un desplazamiento dentro del segmento. Puntero de pila: Si existe un direccionamiento de pila visible para los usuarios, la pila estar, por lo general, en memoria principal, existiendo a un registro dedicado a sealar la cima de la pila, para poder sacar (pop) n e introducir (push) elementos en ella. Una ultima categor de registros que son, al menos, parcialmente visibles a para los usuarios, son aqullos que contienen cdigos de condicin (tambin e o o e denominados indicadores o ags). Los cdigos de condicin son bits activados o o por el hardware como resultado de determinadas operaciones. Por ejemplo, una operacin aritmtica puede producir un resultado positivo, negativo, cero, o e con acarreo o con desbordamiento, lo que se reejar en el correspondiente bit a

http://alqua.org/libredoc/SSOO

1 Introduccin a los Sistemas Operativos o o ag de control y que puede consultarse posteriormente, por ejemplo, como parte de una operacin de salto condicional. Es importante tener en cuenta que o los cdigos de condicin pueden ser consultados por las aplicaciones de usuario o o pero no modicados por stas. Los bits de cdigo de condicin se sgrupan en e o o uno o ms registros que forman parte de los determinados registros o palabras a de control que veremos a continuacin. o En algunas mquinas, una llamadaa un procedimiento o subrutina provocar que a a los registros visibles de usuario se salven automticamente, para luego restaurarlos a y continuar con la ejecucin normal. Este proceso de salvar y restaurar lo lleva a o cabo el procesador como parte de las instrucciones de llamada y retorno. Esto permite que cada procedimiento pueda utilizar los registros de forma independiente. En otras mquinas, sin embargo, es responsabilidad del programador salvar los rea gistros que considere relevantes antes de efectuar una llamada a un procedimiento. Los registros de control y estado son utilizados por el procesador para el control de las operaciones o por rutinas privilegiadas del sistema operativo para controlar la ejecucin de los programas. En la mayor de las mquinas, la mayor parte de estos o a a registros no son visibles para los usuarios. Adems de los registros MAR, MBR, a IOAR, IOBR, que se utilizan en funciones de direccionamiento e intercambio de datos entre la unidad procesadora y la memoria principal y los dispositivos de E/S, la unidad de control tiene asociados una serie de registros, entre los que cabe destacar el contador de programa (PC, program counter ), que indica la direccin o de la siguiente instruccin mquina a ejecutar, el puntero de pila (SP, stack poino a ter ), que sirve para manejar la pila del sistema en memoria principal, el registro de instruccin (RI) que permite almacenar la instruccin mquina a ejecutar, y el o o a registro de estado (SR) o palabra de estado del programa (PSW, program status word ) que almacena junto con el contador de programa (PC) diversa informacin o producida por la ultima instruccin del programa ejecutada (bits de estado aritm o e tico) e informacin sobre la forma en que ha de comportarse la computadora (bits o de nivel de ejecucin que determinan el modo en que la computadora ejecuta las o instrucciones, usuario o sistema o supervisor, y bits de control de interrupciones que establecen las instrucciones que se pueden aceptar).

1.2.3.

Ejecucin de instrucciones o

La tarea bsica que realiza un computador es la ejecucin de instrucciones. El punto a o de vista ms sencillo es considerar que el procesamiento de instrucciones consiste en a una sencuencia sencilla que se repite a alta velocidad (cientos de millones de veces por segundo). Esta secuencia consiste en 3 pasos: lectura de memoria de la instruccin mo a quina apuntada por el PC, incremento del contador del programa - para que apunte a la siguiente instruccin mquina - y ejecucin de la instruccin. o a o o Esta secuencia tiene 2 prioridades fundamentales: es lineal, es decir, ejecuta de forma consecutiva las instrucciones que estn en direcciones consecutivas, y forma un bucle a

Sistemas Operativos - 0.5.0

1.2 Relacin con la mquina subyacente o a innito. Esto signica que la unidad de control de la computadora est continua e inina terrumpidamente realizando esta secuencia. Podemos decir, por tanto, que lo unico que sabe hacer la computadora es repetir a gran velocidad esta secuencia. Esto quiere decir, que para que realice algo util, se ha de tener cargados en memoria un programa mquina con sus datos y hemos de conseguir a que el contador de program apunte a la instruccin mquina inicial del programa. o a El esquema de ejecucin lineal es muy limitado, por lo que se aaden unos mecanismos o n que permiten alterar esta ejecucin lineal. En esencia, todos ellos se basan en algo muy o simple; modican el contenido del programa, con lo que se consigue que se salte o bifurque a otro segmento del programa o a otro programa (que, lgicamente, tambin ha de residir o e en memoria). Los tres mecanismos bsicos de ruptura de secuencia son los siguientes. a Las instrucciones mquina de salto o bifurcacin, que permiten que el programa a o rompa su secuencia lineal de ejecucin pasando a otro fragmento de s mismo. o Las interrupciones externas o internas, que hacen que la unidad de control modique el valor del contador de programa saltando a otro programa. La instruccin de mquinaTRAP, que produce un efecto similar a la interrupcin, o a o haciendo que se salte a otro programa. Si desde el punto de vista de la programacin son especialmente interesantes las instruco ciones de salto, desde el punto de vista de los SSOO son mucho ms importantes las a interrupciones y las interrupciones de TRAP. Por tanto, centraremos nuestro inters en e resaltar los aspectos fundamentales de estos dos mecanismos.

1.2.4.

Interrupciones

Casi todos los computadores tienen un mecanismo mediante el cual otros mdulos o (E/S, memoria) pueden interrumpir la ejecucin normal del procesador. Las interrupcioo nes aparecen, principalmente, como una v para mejorar la eciencia del procesamiento a debido a que la mayor de los dispositivos externos son mucho ms lentos que el procea a sador. Con las interrupciones, el procesador se puede dedicar a la ejecucin de otras instruco ciones mientras una operacin de E/S est en proceso. Cuando el dispositivo de E/S o a est disponible, es decir, cuando est preparado para aceptar ms datos del procesador, e e a el mdulo de E/S de dicho dispositivo enviar una seal de solicitud de interrupcin al o a n o procesador. El procesador responde suspendiendo la operacin del programa en curso y o saltando a un programa que da servicio al dispositivo de E/S en particular, conocido como rutina de tratamiento de interrupciones (Interrupt handler), reanudando la ejecucin o original despus de haber atendido al dispositivo. e Desde el punto de vista del programa de usuario una interrupcin es solamente eso: o una interrupcin de la secuencia normal de ejecucin. Cuando el tratamiento de la inteo o rrupcin termina, la ejecucin contina. El programa no tiene que disponer de ningn o o u u cdigo especial para dar cabida a las interrupciones; el procesador y el sistema operativo o

http://alqua.org/libredoc/SSOO

1 Introduccin a los Sistemas Operativos o son los responsables de suspender el pograma de usuario y de reanudarlo despus en el e mismo punto. Para dar cabida a las interrupciones, se aade un ciclo de interrupcin al ciclo de n o instruccin. En el ciclo de interrupcin el procesador comprueba si ha ocurrido alguna o o interrupcin, lo que se indicar con la presencia de alguna seal de interrupcin. Si no hay o a n o interrupciones pendientes, el procesador sigue con el ciclo de lectura y trae la prxima o instruccin del programa en curso. Si hay una interrupcin pendiente, el programador o o suspende la ejecucin del programa en curso y ejecuta una rutina de tratamiento de o interrupcin. Esta rutina, generalmente, forma parte del sistema operativo, determina la o naturaleza de la interrupcin y realiza cuantas acciones sean necesarias. Una interrupcin o o desencadena una serie de sucesos tanto en el hardware del procesador como en el software. Estos sucesos pueden secuenciarse de la siguiente forma: 1. El dispositivo emite una seal de interrupcin al procesador. n o 2. El procesador naliza la ejecucin de la instruccin en curso antes de responder a o o la interrupcin. o 3. El procesador pregunta por la interrupcin comprueba que hay una y env una o a seal de reconocimiento al dispositivo que gener la interrupcin, de forma que n o o ste suspende su seal de interrupcin. e n o 4. El procesador necesita ahora prepararse para transferor el control a la rutina de interrupcin. Para empezar, hace falta salvar la informacin necesaria para reao o nudar la ejecucin del programa en curso en el punto de la la interrupcin. La o o m nima informacin es la palabra de estado del programa (PSW) y la ubicacin o o de la prxima instruccin a ejecutar. o o 5. El procesador carga ahora el contador de programa con la ubicacin de entrada o del programa de tratamiento de interrupcin. o 6. La rutina de interrupcin suele comenzar salvando el contenido de los registros del o procesador porque la rutina puede utilizarlos y se perder la informacin que la a o ejecucin del proceso interrumpido hibiera dejado en ellos. o 7. La rutina de tratamiento de la interrupcin procesa la interrupcin realizando las o o acciones requeridas para atenderla. 8. Tras completar el tratamiento de la interrupcin, se recuperan de la pila los valores o de los registros que se salvaron y se restauran en los correspondientes registros. 9. El paso nal es restaurar los valores del la PSW y del contador de programa tambin e a partir de la pila y continuar con la ejecucin del programa interrumpido. Estas o acciones se llevan a cabo como resultado de ejecutar la instruccin mquina para o a retorno de interrupcin, RETI, que incluyen la mayor de las computadoras en su o a lenguaje mquina. a

Sistemas Operativos - 0.5.0

1.3 Funciones y objetivos de los Sistemas Operativos Las computadoras incluyen varias seales de solicitud de interrupcin, cada una de las n o cuales tiene una determinada prioridad. En caso de activarse al tiempo varias de estas seales, se tratar la de mayor prioridad, quedando las dems a la espera de ser n a a atendidas. Adems la computadora incluye un mencanismo de inhibicin selectiva que a o permite detener todas o determinadas seales de interrupcin. Las seales inhibidas no n o n son atendidas hasta que pasen a estar desinhibidas. La informacin de inhibicin de o o las interrupciones suele incluirse en la parte del registro de estado que solamente es modicable en nivel de ncleo, por lo que su modicacin queda restringida al sistema u o operativo. Las interrupciones se pueden generar por diversas causas, que se pueden clasicar de la siguiente forma: Excepciones de programa. Hay determinadas causas que hacen que un programa presente un problema en su ejecucin, por lo que deber generarse una interrupcin, o a o de forma que el SO trate dicha causa. Ejemplos de errores de este tipo son el desbordamiento de operaciones matemticas, al divisin entre cero, el intento de a o acceso a una zona de memoria no permitida, etc. Interrupciones de reloj. Interrupciones de E/S. Los controladores de los dispositivos de E/S necesitan interrumpir para indicar que han terminado una operacin o un conjunto de ellas. o Excepciones del hardware como la deteccin de un error de paridad en la memoria. o Instrucciones de TRAP. Estas instrucciones permiten que un programa genere una interrupcin y se utilizan fundamentalmente para solicitar los servicios del SO. o

1.3.

Funciones y objetivos de los Sistemas Operativos

Como ya se ha visto, un sistema operativo acta como interfaz entre la mquina u a desnuda y los programas de aplicaciones o el propio usuario. por otro lado, el sistema operativo tambin se encarga de gestionar los recursos del sistema informtico para e a obtener un uso lo ms ptimo posible de stos. A continuacin, trataremos las funciones a o e o del sistema operativo desde estos dos puntos de vista, as como las caracter sticas que debe presentar para mantener una capacidad de evolucin adecuada. o

1.3.1.

El Sistema Operativo como Interfaz Usuario/Computadora

Un sistema operativo debe hacer que la interaccin del usuario o de los programas o de aplicacin con el computador resulte sencilla y fcil y debe construirse de modo que o a permita el desarrollo efectivo, la vericacin y la introduccin de nuevas funciones en el o o sistema y, a la vez, no interferir en los servicios ya proporcionados. El Hardware y el Software que se utilizan para proveer al usuario de aplicaciones puede contemplarse de forma estraticada o jerrquica. Este usuario nal no tiene que preocua parse de la arquitectura del computador y contempla el sistema informtico en trminos a e

http://alqua.org/libredoc/SSOO

1 Introduccin a los Sistemas Operativos o de aplicaciones. Estas aplicaciones pueden construirse con un lenguaje de programacin o y son desarrolladas por los programadores de aplicaciones. Si se tuviera que desarrollar un programa de aplicacin con un conjunto de instruco ciones totalmente responsables del control del hardware, dicho programa tendr una a tarea abrumadora y compleja. Para facilitar esta tarea, se ofrecen una serie de programas de sistema. Algunos de estos programas implementan funciones muy utilizadas que ayudan a la creacin de aplicaciones de usuario, la gestin de archivos y el control de los o o dispositivos de E/S. El programa de sistema ms importante es el sistema operativo. a El sistema operativo oculta al programador los detalles del hardware y le proporciona una interfaz cmoda para utilizar el sistema y acta como mediador, ofreciendo al o u programador y a los programas de aplicacin un conjunto de servicios y utilidades que o faciliten su tarea. De forma resumida el sistema operativo ofrece servicios en las siguientes reas: a Creacin de programas: El sistema operativo ofrece una gran variedad de servicios o como los editores y depuradores (debuggers), para ayudar al programador en la creacin de programas. Normalmente, estos servicios estn en forma de programas o a de utilidad que no forman realmente parte del sistema operativo, pero que son accesibles a travs de l. e e Ejecucin de programas: Para ejecutar un programa es necesario realizar un cierto o nmero de tareas. Las instrucciones y los datos deben cargarse en memoria prinu cipal, los archivos y los dispositivos de E/S deben inicializarse y deben prepararse otros recursos. El sistema operativo administra todas estas tareas por el usuario. Acceso a los dispositivos de E/S: Cada dispositivo de E/S requiere un conjunto propio y peculiar de instrucciones o seales de control para su funcionamiento. n El sistema operativo, ayudado por los manejadores o drivers de dispositivo tiene en cuenta estos detalles de forma que el programador pueda pensar en forma de lecturas y escrituras simples desde o hacia el dispositivo. Acceso controlado a los archivos: El sistema operativo se ocupa del formato de los archivos y del medio de almacenamiento. En el caso de sistemas de varios usuarios trabajando simultneamente, es el sistema operativo el que brinda los mecanismos a para controlar que el acceso a los archivos se lleve a cabo de una forma correcta. Acceso al sistema: En el caso de un sistema compartido o pblico, el sistema u operativo controla el acceso al sistema como un todo y a los recursos espec cos del sistema. Las funciones de acceso deben brindar protecin a los recursos y a los o datos ante usuarios no autorizados y debe resolver conictos en la propiedad de los recursos. Deteccin y respuesta a errores: Cuando un sistema informtico est en funcioo a a namiento pueden producirse varios errores. El sistema operativo debe dar una respuesta que elimine la condicin de error con el menor impacto posible sobre las o aplicaciones que estn en ejecucin. a o

Sistemas Operativos - 0.5.0

1.3 Funciones y objetivos de los Sistemas Operativos Contabilidad: Un sistema operativo debe recoger estad sticas de utilizacin de los o diversos recursos y supervisar parmetros de rendimiento tales como el tiempo de a respuesta.

1.3.2.

El Sistema OPerativo como administrador de recursos

Un SO debe perseguir una utilizacin lo ms ptima y equilibrada posible de los o a o recursos que administra. De esta forma se obtendr un alto rendimiento del sistema a informtico gobernado. a El SO es el responsable de la gestin de los recursos de la mquina y mediante su o a administracin tiene el control sobre las funciones bsicas de la misma. El SO no es nada o a ms que un programa pero la diferencia clave es su propsito. El SO dirige al procesador a o en el empleo de otros recursos del sistema y en el control del tiempo de ejecucin de los o programas de usuario. Una parte del SO reside en memoria principal. En esta parte est el ncleo (kernel ) a u que incluye funciones del SO utilizdas con ms frecuencia aunque, en un momento dado, a puede incluir otras partes en uso. El resto de la memoria, que contiene datos y programas de usuario, es administrada conjuntamente por el SO y por el hardware de control de memoria. El SO decide cundo puede utilizarse un dispositivo de E/S por parte de un a programa en ejecucin y controla el acceso y la utilizacin de los archivos. El procesador o o es, en s mismo, un recurso y es el SO el que debe determinar cunto tiempo de procesador a debe dedicarse a la ejecucin de un programa usuario en particular. En el caso de sistemas o multiprocesador, la decisin debe tomarse entre todos los procesadores. o

1.3.3.

Facilidad de evolucin del Sistema Operativo o

Un SO importante evolucionar en el tiempo por una serie de razones: a Actualizaciones del hardware y nuevos tipos de hardware: Las mejoras introducidas en los componentes hardware del computador deben tener soporte en el sistema operativo. Un ejemplo es el aprovechamiento del sistema operativo del hardware de paginacin que acompaa a la memoria de algunos sistemas informticos. o n a Nuevos servicios: Como respuesta a nuevas necesidades, el sistema operativo ampliar su oferta de servicios para aadir nuevas medidas y herramientas de control. a n Correcciones: El sistema operativo tiene fallos que se descubrirn con el curso del a tiempo y que es necesario corregir. La necesidad de hacer cambios en un SO de forma regular introduce ciertos requisitos en el diseo. Una armacin obvia es que el sistema debe tener una construccin modular, n o o con interfaces bien denidas entre los mdulos y debe estar bien documentado. o

http://alqua.org/libredoc/SSOO

1 Introduccin a los Sistemas Operativos o

1.4.

Evolucin histrica de los Sistemas Operativos o o

Para intentar comprender los requisitos bsicos de un SO y el signicado de las caa racter sticas principales de un sistema operativo contemporneo, resulta util considerar a cmo han evolucionado los sistemas operativos a los largo de los aos. o n

1.4.1.

Proceso en serie. Primera generacin (1945-1955) o

En los primeros computadores, de nales de los 40 hasta mediados de los 50, el programa interactuaba directamente con el hardware: no hab sistema operativo. La operacin a o con estas mquinas se efectuaba desde una consola dotada con indicadores luminosos y a conmutadores o a travs de un teclado hexadecimal. Los programas se arrancan cargane do el registro contador de programas con la direccin de la primera instruccin. Si se o o deten el programa por un error, la condicin de error se indicaba mediante los indicaa o dores luminosos. El programador pod examinar los registros relevantes y la memoria a principal para comprobar el resultado de la ejecucin o para determinar la causa del o error. El siguiente paso signicativo de la evolucin en el uso de sistemas informticos vino o a con la llegada de dispositivos de E/S tales como tarjetas perforadas y cintas de papel y con los traductores de lenguajes. Los programas. codicados ahora en un lenguaje de programacin, se traducen a un forato ejecutable mediante un programa como un o compilador o un intrprete. Otro programa, llamado cargador, automatiza el proceso de e cargar en memoria estos programas en cdigo ejecutable. El usuario coloca un programa o y sus datos de entrada en un dispositivo de entrada y el cargador transere la informacin o desde el dispositivo a la memoria. Despus de transferir el control al programa cargado e por medios manuales o automticos, comienza la ejecucin del mismo. El programa en a o ejecucin lee sus datos desde el dispositivo de entrada asignado y puede producir ciertos o resultados en un dispositivo de salida tal como una impresora o la pantalla. Estos primeros sistemas presentaban dos problemas principales: Planicacin: La mayor de las instalaciones empleaban un formulario de reserva o a de tiempo de mquina. Normalmente, un usuario pod reservar bloques de tiempo, a a mltiplos, por ejemplo, de media hora. Si la ejecucin del programa terminaba antes u o del plazo asignado, el tiempo restante se desperdiciaba. Tambin pod suceder que e a el programa no terminara dentro del plazo asignado, con lo que el programadir no pod saber si el programa hab terminado satisfactoriamente o no. a a Tiempo de preparacin: Un programa aun siendo sencillo requer un tiempo de o a preparacin bastante grande ya que en primer lugar se cargaba un compilador o y un programa en lenguaje de alto nivel (programa fuente) en la memoria. A continuacin, se salvaba el programa ya compilado (programa objeto) y, por ultimo, o se montaba y cargaba este programa objeto junto con las funciones comunes. Este modo de trabajo pod denominarse proceso en serie porque reeja el hecho de los a que usuarios ten que acceder al computador en serie. an

10

Sistemas Operativos - 0.5.0

1.4 Evolucin histrica de los Sistemas Operativos o o

1.4.2.

Sistemas sencillos de proceso por lotes. Segunda generacin o (1955-1965)

Las primeras mquinas eran muy caras y, por tanto, era importante maximizar la a utilizacin de las mismas. El tiempo desperdiciado en la planicacin y la preparacin o o o era inaceptable. Para mejorar el uso, se desarroll el concepto de sistema operativo por lotes (batch). El o primer sistema operativo por lotes fue desarrollado a mediados de los 50 por la General Motoros para usar en un IBM 701. La idea central que est detrs del esquema sencillo de proceso por lotes es el uso de a a un elemento de software conocido como monitor. Con el uso de esta clase de sistema operativo, los usuarios ya no ten acceso directo a la mquina. En su lugar, el usuario an a deb entregar los trabajos en tarjetas o en cinta al operador del computador, quien a agrupaba secuencialmente los trabajos por lotes y ubicaba los lotes enteros en un dispositivo de entrada para su empleo por parte del monitor. Cada programa se constru a de modo tal que volviera al monitor al terminar el procesamiento y, en ese momento, el monitor comenzaba a cargar automticamente el siguiente programa. a Para obtener provecho del potencial de utilizacin de recursos, un lote de trabajos o debe ejecutarse automticamente sin intervencin humana. Para este n, deben proa o porcionarse algunos medios que instruyan al sistema operativo sobre cmo debe tratar o cada trabajo individual. Estas intrucciones son suministradas generalmente por medio de rdenes del sistema operativo incorporadas al ujo de lotes. Las rdenes del sistema o o operativo son sentencias escritas en un Lenguaje de Control de Trabajos (JCL, Job Control Language). Entre las rdenes t o picas de un JCL se incluyen las marcas de comienzo y nalizacin de un trabajo, las rdenes para cargar y ejecutar programas y las rdenes o o o que anuncian necesidades de recursos tales como el tiempo esperado de ejecucin y los o requisitos de memoria. Estas rdenes se hallan incoporadas al ujo de los trabajos, junto o a los programas y a los datos del usuario. Una parte residente en memoria del SO por lotes, a veces llamado monitor de lotes, lee, interpreta y ejecuta estas rdenes. En respuesta a ellas, los trabajos del lote se ejecutan o de uno en uno.

1.4.3.

Multiprogramacin. Tercera Generacin (1965-1980) o o

Incluso con las mejoras anteriores, el proceso por lotes dedica los recursos del sistema informtico a una unica tarea a la vez. a En el curso de su ejecucicn, la mayor de los programas oscilan entre fases intensivas o a de clculo y fases intensivas de operaciones de E/S. Esto queda indicado en la gura 1.1 a donde los periodos de clculo intensivo se indican mediante cuadros sombreados y las a operaciones de E/S mediante zonas en blanco. El problema es que los dispositivos de E/S son muy lentos comparados con el procesador. El procesador gasta parte del tiempo ejecutando hasta que encuentra una instruccin de E/S. Entonces debe esperar a que o concluya la instruccin de E/S antes de continuar. o Esta ineciencia no es necesaria. Se sabe que hay memoria suciente para almacenar

http://alqua.org/libredoc/SSOO

11

1 Introduccin a los Sistemas Operativos o


Programa 1
                                                     

Programa 2
                 

P1 inactivo P1 inactivo P1 inactivo P2 inactivo P2 inactivo P2 inactivo

(a) Ejecucin secuencial

Tiempo

Programa 1
" # " # " #

P1

P2

P1

P2

P1

(b) Ejecucin multiprogramada

Figura 1.1: Ejecucin secuencial vs multiprogramacin o o

en memoria el sistema operativo (monitor residente) y un programa usuario. Supongamos que hay espacio suciente para almacenar el sistema operativo y dos programas de usuario. Ahora, cuando un trabajo necesite esperar por una operacin de E/S, el o procesador puede cambiar a otro trabajo que est listo para ser ejecutado. Si ampliae mos la memoria para almacenar varios programas, podremos conmutar entre todos de forma que el procesador permanezca ocupado el mayor tiempo posible, evitando as el desperdicio de tiempo que suponen las esperas hasta que se completen las operaciones de E/S. Este concepto es conocido como multiprogramacin o multitarea y es el punto o central de los sistemas operativos modernos. Como sugiere la gura 1.1 se pueden lograr ganancias signicativas de rendimiento intercalando la ejecucin de los programas, o, multiprigramando, que es como se le deo nomina a este modo de operacin. Con un solo procesador no es posible la ejecucin o o paralela de programas, y como mximo, slo un programa puede tener el control del a o procesador en un instante determinado. El ejemplo presentado en la gura 1.1 (b) consigue un 100 % de utilizacin del procesador slo con dos programas activos. Aunque o o conveniente para ilustrar la idea bsica en la multiprogramacin, no se deben esperar a o resultados tan espectaculares en programas reales, ya que las distribuciones de las fases de computacin y E/S tienden a ser ms variables. Para aumentar la utilizacin de o a o recursos, los sistemas de multiprogramacin reales permiten generalmente que ms de o a dos programas compitan por los recursos del sistema al mismo tiempo. El nmero de u programas en competencia activa por los recursos de un sistema informtico se denomina a grado de multiprogramacin. En principio, mayores grados de multiprogramacin deben o o dar lugar a una mayor utilizacin de recursos. o La multiprogramacin ha sido tradicionalmente empleada para aumentar la utilizacin o o de los recursos de un sistema informtico y para soportar mltiples usuarios simultneaa u a mente activos.

12

" # " # " # " # " # #

" ! ! ! ! ! ! ! ! !     

     

     

Programa 2

P2

Tiempo

Sistemas Operativos - 0.5.0

1.4 Evolucin histrica de los Sistemas Operativos o o

1.4.4.

Computadoras personales. Cuarta Generacin (1980-1990) o

Con el desarrollo de la tecnolog LCI (Large Scale Integration) de construccin de a o circuitos, que permit fabricar chips con miles de transistores en un cent a metro cuadrado de silicio, se inicio la era de la computadora personal. En trminos de arquitectura, las e computadoras personales no eran muy distintas de las minicomputadoras del tipo PDP11, pero en trminos de precio s eran bastante distintas. Las computadoras personales e ms poderosas reciben el nombre genrico de estaciones de trabajo, pero en realidad slo a e o son computadoras personales grandes. La amplia disponibilidad de poder de cmputo condujo, junto con un nivel grco o a bastante adecuado, al crecimiento de la industria de produccin de software para las o computadoras personales. Gran parte de este software ten adems, la ventaja de prea, a sentar una gran amiganilidad con el usuario. Dos sistemas operativos han dominado la escena de las computadoras personales y las estaciones de trabajo: MS-DOS de Microsoft y UNIX de AT&T. MS-DOS tuvo un amplio uso en el IBM PC y otras mquinas que incorporaban el microprocesador 8088 de Intel a o alguno de sus sucesores. UNIX, su contendiente principal, domin las computadoras o que no utilizaban microprocesadores de Intel, as como las estaciones de trabajo, en particular las que poseen chips RISC de altas prestaciones. Un interesante desarrollo que comenz a llevarse a cabo a mediados de la dcada o e de los 80 ha sido el crecimiento de las redes de computadoras personales con sistemas operativos en red y sistemas operativos distribuidos. En un sistema operativo en red, los usuarios son conscientes de la existencia de varias computadoras y pueden conectarse con mquinas remotas. Cada mquina ejecuta su propio sistema operativo local y tiene a a su propio usuario. Un sistema operativo distribuido, por el contrario, presenta al usuario un conjunto de computadores independientes como si se tratara de un solo sistema. En un sistema operativo distribuido los usuarios no deben ser conscientes del lugar donde su programa va a ejecutarse o la ubicacin de los archivos a los que desea acceder, esas o cuestiones deben ser manejadas automticamente y de forma eciente por el sistema a operativo.

http://alqua.org/libredoc/SSOO

13

1 Introduccin a los Sistemas Operativos o

14

Sistemas Operativos - 0.5.0

2 Gestin de procesos o
2.1. Procesos y tareas

Proceso una denicin tradicional de proceso es la de instancia de un programa en o ejecucin. La ejecucin de tal programa es indicada al SO mediante una accin u o o o orden especializada. El SO responde en ese punto creando un nuevo proceso. En general, esta actividad consiste en la creacin e iniciliazacin de estructuras de datos en el SO para monitorizar o o y controlar el progreso de proceso en cuestin. Una vez creado, el proceso pasar a estar o a activo y competir por la utilizacin de recursos del sistema como el procesador y los a o dispositivos I/O. Un proceso evoluciona c clicamente entre per odos de ejecucin activa y de espera por o la terminacin de actividades de I/O. Cuando un proceso queda inactivo por especicar o una operacin de I/O y quedar a la espera de que sta se complete, el SO puede planicar o e la ejecucin de otro proceso. o Desde este punto de vista, un proceso es una entidad individualmente planicable, que puede ser asignada al procesador y ejecutada por ste. El SO controla, pues, dine a micamente la evolucin de los procesos registrando la informacin correspondiente a sus o o cambios cuando stos se produzcan. Esta informacin es utilizada por el SO para sus e o labores de planicacin y gestin sobre el conjunto de procesos que en un determinado o o momento pueden coexistir en el sistema informtico. a De esta forma adems de la plantilla esttica constituida por el programa ejecutable a a en que se basa, un proceso posee ciertos atributos que ayudan al SO en su gestin. o Los atributos de un proceso incluyen su estado actual, unidad de planicacin, derechos o de acceso, nivel de prioridad entre otros datos. Desde el punto de vista del usuario, un proceso no es ms que la ejecucin de un conjunto de instrucciones que llevan a cabo una a o determinada tarea, mientras que para el SO es una entidad que atraviesa dinmicamente a un conjunto de estados y que solicita los recursos del sistema que le son necesarios. De esta forma, el acceso a tales recursos debe ser planicado de forma que se consiga un rendimiento en la utilizacin de los mismos lo ms ptimo posible. o a o

2.1.1.

Divisin impl o cita y expl cita de tareas

Dependiendo del SO y del entorno objetivo de ejecucin de programas, la divisin o o de un trabajo en tareas que sern ejecutadas como procesos independientes as como la a asignacin inicial de los atributos de esos procesos pueden ser efectuadas o bien por el o SO o bien por el desarrollador de la aplicacin. En otras palabras, lo que constituir un o a proceso independiente puede provenir de:

15

2 Gestin de procesos o 1. Divisin impl o cita de tareas denida por el sistema. 2. Divisin expl o cita de tareas denida por el desarrollador. En general, la divisin impl o cita de tareas se aplica en sistemas operativos multitarea para multiplexar la ejecucin de una serie de programas y explotar los benecios de o la concurrencia entre una serie de aplicaciones. La divisin expl o cita en tareas permite mejoras adicionales en el rendimiento al explotar la concurrencia inherente o propia de una determinada aplicacin o programa. La divisin impl o o cita en tareas signica que los procesos son denidos por el sistema, esta divisin aparece comnmente en sistemas de o u multiprogramacin de propsito general tales como los sistemas de tiempo compartido. o o En este enfoque cada programa remitido para su ejecucin es tratado por el SO como o un proceso independiente. El SO asignar valores iniciales a lo atributos del proceso tales como la prioridad de a planicacin y los derechos de acceso en el momento de la creacin del proceso basndose o o a en el perl del usuario y en valores predeterminados del sistema. La divisin expl o cita signica que los desarrolladores denen expl citamente cada proceso y alguno de sus atributos, t picamente una unica aplicacin queda dividida en o varios procesos relacionados con objeto de mejorar su rendimiento. La divisin expl o cita se utiliza en situaciones donde se desea elevar la eciencia o controlar expl citamente las actividades del sistema. Entre las razones ms comunes para aplicar la divisin expl a o cita de tareas se incluyen 1. Ganancia de velocidad: algunas de las tareas independientes en que quede dividida la aplicacin podrn ejecutarse de forma concurrente con la consiguiente mejora o a en el tiempo total de ejecucin de la aplicacin. o o 2. Mejora en el rendimiento de la utilizacin de dispositivos de I/O con latencia: o dedicando tareas expl citas a la realizacin de operaciones I/O, stas podrn ser o e a planicadas por el SO de forma concurrente con tareas de computacin intensiva o con la consiguiente ganancia en el rendimiento. 3. Multiprocesamiento: los procesos independientes que constituyen una aplicacin o pueden ser perfectamente portados para su ejecucin en un entorno multiprocesao dor con lo que se conseguir paralelismo real. a 4. Computacin distribuida: de igual forma, cada tarea independiente puede ser asigo nada a un procesador que forme parte de un sistema distribuido, siendo necesaria una sincronizacin con el resto de procesadores que se ocupan de sus respectivas o tareas.

2.1.2.

Tipos de procesos y relacin entre procesos concurrentes o

En principio, podemos realizar una clasicacin muy general de los procesos entre o procesos de usuario y procesos de sistema. Un proceso de usuario es aquel creado por

16

Sistemas Operativos - 0.5.0

2.1 Procesos y tareas el SO como respuesta a una de ejecucin del usuario o de una aplicacin que ejecuta a o o instancias de ste. e Un proceso de sistema es un proceso que forma parte del propio SO y que desempea n alguna de sus labores caracter sticas, como por ejemplo, la eleccin del siguiente proceso o a ejecutar o bien la prestacin de un servicio determinado como el acceso a un recurso de o I/O del sistema. Cualquiera que sea la naturaleza de los procesos, stos pueden mantener e fundamentalmente dos tipos de relaciones: Competicin y/o Colaboracin. o o En virtud de la comparticin de recursos de un solo sistema, todos los procesos concuo rrentes compiten unos con otros por la asignacin de los recursos del sistema necesarios o para sus operaciones respectivas. Adems, una coleccin de procesos relacionados que a o representen colectivamente una sola aplicacin lgica, suelen cooperar entre s La coopeo o . racin es habitual entre los procesos creados como resultado de una divisin expl o o cita de tareas. Los procesos cooperativos intercambian datos y seales de sincronizacin necesan o rios para estructurar su progreso colectivo. Tanto la competicin como la colaboracin o o de procesos requiere una cuidada asignacin y proteccin de los recursos en trminos o o e de aislamiento de los diferentes espacios de direcciones. La cooperacin depende de la o existencia de mecanismos para la utilizacin controlada de los datos compartidos y el o intercambio de seales de sincronizacin. n o Los procesos cooperativos comparten t picamente algunos recursos y atributos adems a de interactuar unos con otros. Por esta razn, con frecuencia se agrupan en lo que se o denomina una familia de procesos. Aunque dentro de una familia son posibles relaciones complejas entre sus procesos miembro, la relacin ms comnmente soportada por los o a u sistemas operativos es la relacin padre-hijo. Esta relacin se establece cuando el SO o o crea un nuevo proceso a instancias de otro ya existente. Los procesos hijos heredan generalmente los atributos de sus procesos padres en el momento de su creacin y tambin o e pueden compartir recursos con sus procesos hermanos.

2.1.3.

El sistema operativo y los procesos

Todos los SSOO de multiprogramacin estn construidos en torno al concepto de o a proceso. Los requisitos principales que debe cumplir un SO para con los procesos son los siguientes: 1. El SO debe intercalar la ejecucin de procesos para optimizar la utilizacin del o o procesador ofreciendo a la vez un tiempo de respuesta razonable. 2. El SO debe asignar los recursos del sistema a los procesos en conformidad con una pol tica espec ca que evite situaciones de interbloqueo. 3. El SO podr tener que dar soporte a la comunicacin entre procesos y ofrecer a o mecanismos para su creacin, labores que pueden ser de ayuda en la estructuracin o o de aplicaciones.

http://alqua.org/libredoc/SSOO

17

2 Gestin de procesos o

2.2.

Creacin y terminacin de procesos o o

Cuando se aade un proceso a los que ya est admisnitrando el SO, hay que construir n a las estructuras de datos que se utilizan para gestionar y controlar el proceso y asignar el espacio de direcciones que va a utilizar dicho proceso. Estas acciones constituyen la creacin de un nuevo proceso. o Son cuatro los sucesos comunes que llevan a la creacin de un proceso. o 1. Nueva tarea en un sistema de proceso por lotes. 2. Nueva conexin interactiva. o 3. Nuevo proceso creado por el SO para dar un servicio. 4. Un proceso generado por otro ya existente. Por otro lado, en cualquier sistema informtico debe existir alguna forma de que un a proceso indique su terminacin. Un trabajo por lotes debe incluir una instruccin de o o detencin halt o una llamada expl o cita a un servicio del sistema operativo para indicar su terminacin, mientras que en una aplicacin interactiva, ser la accin del usuario la o o a o que indique cundo termine el proceso. a Todas estas acciones provocan al nal una peticin de servicio al SO para terminar el o proceso demandante. Adems, una serie de errores pueden llevarnos a la terminacin de a o un proceso. A continuacin se enumeran algunas de las condiciones ms habituales de o a terminacin de procesos: o 1. Terminacin normal: Un proceso termina de ejecutar su conjunto de instrucciones o y naliza. 2. Tiempo l mite excedido: El proceso requiere ms tiempo para completar su ejecua cin del que el sistema establece como mximo. o a 3. No disponibilidad de memoria: Tiene lugar cuando un proceso necesita ms mea moria de la que el sistema puede proporcionar. 4. Violacin de l o mites: Ocurre cuando un proceso trata de acceder a una posicin de o memoria a la que no puede hacerlo. 5. Error de proteccin: Se produce si un proceso intenta utilizar un recurso o un o archivo para el que no tiene permiso o trata de utilizarlo de forma incorrecta. 6. Error aritmtico: Aparece si el proceso intenta hacer un clculo prohibido como e a la divisin por cero o trata de almacenar un nmero mayor del que el hardware o u acepta. 7. Superacin del tiempo mximo de espera por un recurso: En este caso, el proceso o a se encuentra a la espera de obtener un recurso o de que tenga lugar un determinado evento durante un tiempo que alcanza el l mite establecido.

18

Sistemas Operativos - 0.5.0

2.3 Estados de un proceso 8. Fallo de dispositivo I/O: Se produce por un error en la entrada o la salida tal como la incapacidad de encontrar un archivo o la ocurrencia de un fallo de lectura o escritura despus de un nmero mximo de intentos. e u a 9. Instruccin no vlida: Se produce si un proceso intenta ejecutar una instruccin o a o inexistente. 10. Inento de acceso a una instruccin privilegiada: Se presenta si un proceso intenta o utilizar una instruccin reservada para el SO. o 11. Mal uso de los datos: Un elemento de dato no est inicializado o es de un tipo a equivocado para la operacin que se pretende realizar. o 12. Intervencin del operador o del SO: Por alguna razn, el operador o el SO termio o na con el proceso. Por ejemplo, si se considera comprometido el rendimiento del sistema. 13. Finalizacin del proceso padre: Cuando un proceso padre naliza el SO puede o disearse para terminar automticamente con todos sus descendientes. n a 14. Solicitud del proceso padre: Un proceso padre tiene normalmente autoridad para terminar con cualquiera de sus hijos.

2.3.

Estados de un proceso

En cualquier sistema operativo, es bsico conocer el comportamiento que exhibirn a a los distintos procesos y el conjunto de estados que pueden atravesar.

2.3.1.

Modelo de dos estados

El modelo ms sencillo que puede construirse tiene en cuenta que un momento dado a un proceso puede estar ejecutndose en el procesador o no. As pues, un proceso puede a estar en uno de dos estados: Ejecucin o No ejecucin (Vase la gura 2.1). o o e

entrada

no ejecucin

ejecucin

terminar

Figura 2.1: Esquema de un diagrama de dos estados

Cuando el SO crea un nuevo proceso, ste entra en el sistema en el estado de No e ejecucin. De este modo, el proceso existe, es conocido por el SO y est esperando la o a oportunidad de ejecutarse. En un momento dado, el sistema operativo decide otorgar

http://alqua.org/libredoc/SSOO

19

2 Gestin de procesos o el procesador a un proceso determinado con lo que dicho proceso pasar de estado No a ejecucin a Ejecucin. o o Cada cierto tiempo, el proceso en ejecucin es interrumpido y el sistema operativo o seleccionar un nuevo proceso para que tome el control del procesador. El proceso ina terrumpido pasa del estado de Ejecucin al de No ejecucin mientras que el proceso o o elegido realiza la transicin inversa. o Incluso en este modelo tan simple, se aprecian ya algunos de los elementos importantes en el diseo de SSOO. Cada proceso debe representarse de forma que el sistema operativo n tenga conocimiento de su estado actual y de su posicin en memoria. o Aquellos procesos que no estn en estado de ejecucin debern almacenarse en algn e o a u tipo de estructura de datos mientras esperan que el sistema operativo les otorgue el control sobre el procesador. La siguiente gura 2.2 propone una estructura basada en una cola de procesos.
COLA FIFO

entrada

Figura 2.2: Esquema de un sistema de Cola FIFO

Dicha cola consiste en una lista enlazada de bloques en la que cada uno de estos bloques representa a un proceso. Cada bloque consistir en un puntero a la estrcutura de datos a donde el SO guarda toda la informacin relativa al proceso. El comportamiento del SO en o este caso es similar al de un gestor de colas. As cada vez que el SO cree un nuevo proceso , se introducir el correspondiente bloque al nal de la cola, accin que tambin se llevar a o e a a cabo cuando un proceso sea expropiado del procesador en favor de otro o cuando se bloquee en espera de que se complete una operacin de E/S. Cuando un proceso termine o su ejecucin, ser descartado del sistema. Si todos los procesos estuvieran siempre listos o a para ejecutar, la disciplina de comportamiento de cola presentada ser ecaz. El modelo a de cola sigue un comportamiento FIFO y el procesador opera siguiendo un turno rotatorio con los procesos disponibles. De esta forma, a cada proceso de la cola se le otorga una cierta cantidad de tiempo para ejecutar. Si no se presentan bloqueos y transcurrido ste e volver a la cola para optar de nuevo a tener control sobre el procesador. Sin embargo, a esta implementacin no es adecuada debido a que algunos procesos en estado de no o ejecucin estarn listos para ejecutar mientras que otros se encontrarn a la espera de o a a obtener algn recurso solicitado o a que se complete una operacin de E/S. As pues, el u o SO puede no entregar el procesador al proceso que se encuentre al frente de la cola. Si ste est bloqueado, tendr que recorrer la cola buscando el primer proceso que no lo e a a est y que lleve ms tiempo en espera. e a Una forma ms natural de afrontar esta situacin es dividir el estado de no ejecucucin a o o en dos; los estados listo y bloqueado. Adems se aadirn dos nuevos estados al sistema. a n a

20

Procesador

terminar

Sistemas Operativos - 0.5.0

2.3 Estados de un proceso Estos estados son: nuevo y terminado, que resultan de utilidad para las labores de gestin o de procesos. As se dar lugar al modelo de 5 estados. a

2.3.2.

Modelo de 5 estados

En este modelo un proceso puede encontrarse en cualquiera de los siguiente 5 estados. 1. Estado Nuevo: esta estado corresponder a procesos que acaban de ser denidos a pero que an no han sido admitidos por el sistema operativo como procesos ejecutau bles. Para estos procesos se habrn realizado ciertas tareas de gestin interna como a o la asignacin de un identicador y la creacin de algunas estructturas de control. o o La principal motivacin para la existencia de este estado es la limitacin por parte o o del SO del nmero total de procesos activos por razones de rendimiento1 o por las u restricciones impuestas por la capacidad de la memoria. 2. Estado Listo o Preparado: En este estado se encontrarn aquellos procesos que a dispongan de todos los recursos necesarios para comenzar o proseguir su ejecucin o y se encuentran a la espera de que se les concedael control del procesador. 3. Estado de Ejecucin: En este estado se encuentra el proceso que tiene el control o del procesador. Dado que se considerarn arquitecturas que disponen de un unico a procesador, en un instante determinado slo un proceso puede encontrarse en este o estado. 4. Estado Bloqueado: En este estado se encuentran aquellos procesos que carecen de algn recurso necesario para su ejecucin siendo este recurso distinto del procesador u o o bien se encuentran a la espera de que tenga lugar un determinado evento. 5. Estado Terminado: A este estado pertenecen aquellos procesos excluidos por el SO del grupo de procesos ejecutables. Un proceso alcanza este estado cuando llega al punto normal de terminacin, cuando se abandona debido a un error irrecuperable o o cuando un proceso con la debida autoridad hace que termine su ejecucin. En este o punto, el proceso ya no es susceptible de ser elegido para ejecutarse. Sin embargo, el SO conserva cierta informacin asociada con l para su posible utilizacin, bien o e o por otras aplicaciones como programas de utilidad para el anlisis de la historia a y rendimiento del proceso o bien por parte del SO con nes estad sticos. Una vez extra esta informacin, el SO ya no necesita mantener ms datos relativos al da o a proceso y stos se borran del sistema. e En la gura 2.3 presentamos el diagrama de transiciones entre estados Transicin a Nuevo: Se crea un nuevo proceso para ejecutar un programa o

Se puede llegar a perder ms tiempo en la gestin del cambio de procesos que en el proceso mismo. a o

http://alqua.org/libredoc/SSOO

21

2 Gestin de procesos o

pasar a ejecucin Admitir PREPARADO EJECUCIN

Fin de plazo NUEVO ocurrencia de suceso BLOQUEO esperar un suceso TERMINADO

Figura 2.3: Diagrama de transiciones entre estados. La l nea punteada indica situacin expcecional. o

Transicin Nuevo-Preparado: Esta transicin tiene lugar cuando el SO est preparado o o a para aceptar o admitir un proceso ms. Se tendrn en cuenta las restricciones a a derivadas de la capacidad de la memoria y que no haya tantos procesos activos como para degradar el rendimiento. Transicin Preparado-Ejecucin: Esta transicin se produce cuando el SO selecciona o o o un nuevo proceso para ejecutar en funcin de su pol o tica de planicacin. o Transicin Ejecucin-Preparado: La razn ms comn para esta transicin es que el o o o a u o proceso que est en ejecucin ha alcanzado el tiempo mximo permitido de ejea o a cucin ininterrumpida. Hay otras causas alternativas que no estn implementadas o a en todos los SSOO como la expropiacin de un proceso en favor de otro ms prioo a ritario. Otra situacin, muy extraordinaria, que origina esta transicin es que un o o proceso ceda voluntariamente el control del procesador. Transicin Ejecucin-Bloqueo: Un proceso realiza esta transicin cuando queda a la o o o espera por la concesin de un determinado recurso o por la ocurrencia de un deo terminado suceso. Transicin Bloqueado-Preparado: Tiene lugar si a un proceso bloqueado se le concede o el recurso solicitado u ocurre el suceso por el que estaba esperando. Transicin Preparado-Terminado: Puede ocurrir si, por ejemplo, un proceso padre deo cide en un momento determinado nalizar la ejecucin de sus procesos hijos. Si o alguno de dichos procesos se encontraba en estado preparado realizar esta trana sicin. Otra razn puede ser debida a un requisito de memoria que es denegado. o o Transicin Bloqueado-Terminado: Un proceso hijo puede realizar esta transicin por la o o misma razn que la anterior. Otra causa puede ser que el proceso supere el tiempo o mximo de espera por un recurso y el sistema operativo decida entonces terminarlo a (es la razn ms habitual). o a

22

Sistemas Operativos - 0.5.0

2.3 Estados de un proceso Este modelo de 5 estados puede implementarse igualmente mediante estructuras de tipo cola siguiendo un esquema como el se muestra en la gura 2.4.
Entrada Cola FIFO Procesador Fin de Plazo Ocurrencia de suceso Cola de bloqueados Esperar suceso Terminar

Figura 2.4: Diagrama de transiciones entre estados implementada con una cola.

Ahora se dispone de dos colas, una para los procesos en situacin de preparado y o otra para los bloqueados. A medida que se admiten procesos nuevos en el sistema, stos e se sitan en la cola de preparados. Cuando el SO tiene que escoger un proceso para u ejecutar, lo hace sacanado uno de dicha cola. En ausencia de prioridades, la referida cola puede gestionarse mediante un algoritmo FIFO. Cuando un proceso es expropiado del procesador, puede ser porque ha terminado su ejecucin, porque ha excedido el tiempo o mximo de posesin del procesador y entonces es devuelto a la cola de preparados a o o porque ha quedado bloqueado a la espera de un determinado suceso con lo que se introducir en la cola de bloquedados. Cuando tiene lugar un determinado suceso, a todos los procesos que esperaban por l son pasados desde la cola de bloquedados a la e de preparados. Esta ultima medida signica que cuando se produce un suceso, el SO debe recorrer toda la cola de bloqueados buscando aquellos procesos que esperen por el suceso. En un SO grande puede haber una gran cantidad de procesos en la cola de bloqueados, por tanto, resultar ms eciente disponer de un conjunto de colas, una para cada suceso. En tal a a caso, cuando se produzca un evento, la lista entera de procesos en la cola correspondiente a ese suceso podr pasarse a estado preparado. Vase la gura 2.5. a e Si la planicacin de procesos se realiza mediante un esquema basado en prioridades, o entonces es conveniente tener un cierto nmero de colas de procesos listos, una para cada u prioridad.

2.3.3.

Procesos suspendidos

Debido a que el procesador es mucho ms rpido que los dispositivos de E/S puede a a ocurrir que en un momento dado todos los procesos del sistema se encuentren bloqueados a la espera de que se complete alguna operacin de E/S. Para solucionar este problema o existen dos opciones 1. Amplir la memoria del sistema de forma que sea posible albergar en ella ms a

http://alqua.org/libredoc/SSOO

23

2 Gestin de procesos o
Cola FIFO Procesador Fin de Plazo Ocurrencia de suceso 1 Ocurrencia de suceso 2 Ocurrencia de suceso n Cola de bloqueados por 1 Esperar suceso 1 Cola de bloqueados por 2 Esperar suceso 2 Cola de bloqueados por n Esperar suceso n Terminar

Entrada

Figura 2.5: Diagrama de transiciones entre estados con varias colas, una para cada proceso.

procesos e incrementar as la posibilidad de que alguno de ellos haga uso efectivo del procesador. 2. La otra solucin consiste en aplicar una tcnica conocida como intercambio o swao e ping. Esta tcnica consiste en que cuando todos los procesos que se encuentran e en memoria principal estn bloqueados, el SO puede sacar a uno de ellos de su a correspondiente cola y transferirlo a memoria secundaria. El proceso transferido se dice entonces que queda en estado suspendido. Una vez realizada esta operacin, o el SO est en condiciones de traer de nuevo a memoria a un proceso previamente a suspendido o bien dar entrada al sistema a un nuevo proceso. En general, se considera suspendido a un proceso que presenta las caracter sticas siguientes: 1. Un proceso suspendido no est disponible de inmediato para su ejecucin. a o 2. Un proceso puede estar esperando o no un suceso. Si lo est, la condicin de a o bloqueado es independiente de la condicin de suspendido y el acontecimiento del o suceso bloqueante no lo habilita para la ejecucin. o 3. El proceso fue situado en estado suspendido por un agente (el SO o el proceso padre) con el n de impedir su ejecucin. o 4. El proceso no puede apartarse de estado hasta que llegue la orden expresa para ello.

24

Sistemas Operativos - 0.5.0

2.3 Estados de un proceso Si aadimos este nuevo estado a nuestro diagrama de 5 estados, obtendremos la gura n 2.6.
pasar a ejecucin Admitir PREPARADO EJECUCIN

Fin de plazo NUEVO ocurrencia de suceso BLOQUEO SUSPENDIDO esperar un suceso TERMINADO

Figura 2.6: Diagrama de 5 estados + suspendido

Teniendo en cuenta que un proceso suspendido se encontraba bloqueado a la espera de que ocurriera un cierto suceso y que dicho suceso puede ocurrir mientras el proceso permanece en memoria secundaria, ser ms eciente desdoblar el estado suspendido en a a dos, uno para las procesos suspendidos que an esperan el suceso que les bloque (estado u o bloqueado y suspendido) y otro para los procesos suspendidos que por haber tenido lugar se encuentran en situacin de proseguir su ejecucin (estado listo y suspendido). Para o o verlo mejor, consletese la gura 2.7. u Las transiciones que involucran a los nuevos estados son las siguientes: Transicin Bloqueado y Suspendido-Preparado y Suspendido: Esta transicin tiene o o lugar si se ha producido un suceso por el que hab sido bloqueado el proceso a suspendido. Es importante tener en cuenta que esto requiere que est accesible e para el SO la informacin relativa a los procesos suspendidos. o Transicin Preparado y Suspendido-Preparado: Cuando no hay procesos preparao dos en memoria principal el sistema operativo tendr que traer de memoria secuna daria un proceso que pueda continuar su ejecucin. Adems, puede darse el caso de o a que el proceso en estado Preparado y Suspendido tenga una nueva prioridad mayor que la de los procesos en estado Preparado. En este caso se deber decidir entre a ejecutar el proceso de mayor prioridad con el coste consiguiente de la operacin o de intercambio si no hay espacio en memoria principal para todos los procesos, o bien esperar a que haya espacio suciente en memoria principal para albergar al proceso suspendido. Transicin Preparado-Preparado y Suspendido: Como ve o amos en la transicin o anterior, se puede producir un intercambio entre un proceso en estado Preparado

http://alqua.org/libredoc/SSOO

25

2 Gestin de procesos o

pasar a ejecucin Admitir PREPARADO EJECUCIN

Fin de plazo NUEVO ocurrencia de suceso BLOQUEO esperar un suceso TERMINADO

Preparado y Suspendido

Bloqueado y Suspendido

Figura 2.7: Diagrama de 5 estados + 2 suspendidos (preparado y suspendido, bloqueado y suspendido)

y Suspendido y otro en estado de Preparado si no hay memoria suciente para ambos. Generalmente, el SO preere suspender a un proceso bloqueado en vez de a uno en estado Preparado. Sin embargo, puede ser necesario suspender a un proceso Preparado si sta es la unica forma de liberar un bloque lo sucientemente e grande de memoria principal. Adems, el SO puede escoger suspender un proceso a Preparado de ms baja prioridad en lugar de uno bloqueado de prioridad ms alta a a si se estima que el proceso bloqueado pronto pasar a estado de Preparado. a Transicin Bloqueado y Suspendido-Bloqueado: Si un proceso termina y libera o memoria principal y existe adems algn proceso en la cola de procesos Bloqueados a u y Suspendidos con mayor prioridad de la de todos los proceso que se encuentran en la cola de Preparados y Suspendidos, el SO puede entonces traer el proceso a memoria si tiene razones para suponer que va a ocurrir pronto el suceso que bloque al proceso. o Transicin Ejecucin-Preparado y Suspendido: Generalmente, un proceso en ejecuo o cin pasa al estado Preparado cuando expira su fraccin de tiempo de procesador, o o sin embargo, si se est expulsando al proceso porque hay otro de prioridad mayor a en la lista de Bloqueados y Suspendidos que acaba de desbloquearse, entonces el SO podr pasar directamente el proceso en ejecucin a la cola de Preparados y a o Suspendidos, liberando as espacio en la memoria principal. ejemplo 1 proceso de prioridad 1 en estado Bloqueado, 3 procesos de prioridad 2 en Preparado, 1 proceso en Ejecucin de prioridad 1 y 1 Preparado de prioridad 3. 1 o

26

Sistemas Operativos - 0.5.0

2.4 Estructuras de control del sistema operativo bloqueado y suspendido de prioridad 1. los bloqueados lo dejarn de estar pronto. a qu transicin tendr lugar? e o a Entre las razones ms habituales para la suspensin de procesos podemos citar las sia o guientes: 1. Intercambio un proceso por otro(s): El SO necesita liberar memoria principal para cargar un proceso que est listo para ejecutarse. a 2. Suspensin de un proceso por el SO por sospechar que est causando algn tipo o a u de problema. 3. Solicitud expresa del usuario. 4. Un proceso puede ejecutarse peridicamente y puede ser suspendido mientras eso pera el intervalo de tiempo antes de una nueva ejecucin. o 5. Por una peticin del proceso padre. o

2.4.

Estructuras de control del sistema operativo

El SO es el controlador de los sucesos que se producen en un sistema informtico y es a el responsable de planicar y expedir a los procesos para su ejecucin en el procesador. o El SO es quien asigna los recursos a los procesos y el que responde a las solicitudes de servicios bsicos realizadas por los programas de usuario, esencialemte se puede considea rar al SO como una entidad que administra el uso que hacen los procesos de los recursos del sistema. A continuacin se tratarn los elementos que necesita el SO para llevar a cabo sus o a labores de control de procesos y de administracin de recursos. o

2.4.1.

Tablas de memoria, de E/S, de archivos y de procesos

Si el SO va a administrar procesos y recursos, entonces tiene que disponer de informacin sobre el estado actual de cada proceso y de cada recurso. El mtodo universal o e para obtener esta informacin es sencillo. El sistema operativo construye y mantiene tao blas de informacin sobre cada entidad que est administrando. Por ejemplo, las tablas o a de memoria se utilizan para mantener el control sobre la memoria principal o real y la secundaria o virtual. Las tablas de memoria debern incluir la siguiente informacin: a o 1. Asignacin de memoria principal a los procesos. o 2. Asignacin de memoria secundaria a los procesos. o 3. Atributos de proteccin de segmentos de memoria principal o secundaria. o 4. Informacin necesaria para la gestin de la memoria secundaria. o o

http://alqua.org/libredoc/SSOO

27

2 Gestin de procesos o Las tablas de E/S son utilizadas por el SO para administrar los dispositivos y los canales de E/S del sistema informtico. En un momento dado, un dispositivo de E/S puede a estar disponible o estar asignado a un proceso particular. Si hay una operacin de E/S o en marcha el SO necesita conocer el estado de dicha operacin y la posicin de memoria o o principal que se est utilizando como origen o destino de la transferencia de E/S. a El SO tambin mantiene un conjunto de tablas de archivos, las cuales ofrecen infore macin sobre las propiedades de stos. Sobre su posicin y distribucin en la memoria o e o o secundaria, su estado actual y otros atributos. Gran parte de esta informacin, sino toda, o puede ser mantenida y utilizada por un sistema de gestin de archivos. Este consisitir o a en un mdulo del SO bien diferenciado y su labor se ocupar de todas las operaciones o a necesarias para la gestin y tratamiento de los archivos. o Un ejemplo de estructura para la ubicacin de archivos es la conocida como FAT o (File Allocation Table)2 . Un ejemplo de sistema de cheros ser el utilizado por el SO a Windows NT y conocido NTFS (NT Filesystem). Las tablas de procesos almacenan informacin relativa al conjunto de procesos aco tivos presentes en un instante determinado en el sistema. La informacin t o picamente almacenada para cada proceso y conocida como imagen del proceso en memoria consiste en: 1. Datos de usuario: Almacena los datos con que trabaja el proceso as como la pila utilizada por ste. [espacio de direcciones del proceso] e 2. Programa de usuario: Contiene el cdigo objeto3 del programa que se va a ejecutar. o [espacio de direcciones del proceso] 3. Pila de sistema: Se utiliza para almacenar parmetros y direcciones de retorno. a [estructuras del sistema operativo] 4. Bloque de control de proceso: Contiene la informacin necesaria para que un proceo so pueda ser gestionado y controlado por el SO. [estructuras del sistema operativo]

2.4.2.

Bloque de control de procesos (BCP)

El SO agrupa toda la informacin que necesita conocer respecto a un proceso particular o en una estructura de datos denominada descriptor de proceso o bloque de control de proceso (BCP). Cada vez que se crea un proceso, el SO crea uno de estos bloques para que sirva como descripcin en tiempo de ejecucin durante toda la vida del proceso o o (Vase gura 2.8). Cuando el proceso termina, su BCP es liberado y devuelto al depsito e o de celdas libres del cual se extraen nuevos BCPs.
2

Consiste en una tabla enlazada que hace referencia a los sectores del disco duro asignados a un mismo chero. FAT da problemas al fragmentarse frecuentemente lo que provoca un retardo al acceder a esos datos. Para solucionar este problema existen herramientas de desfragmentacin. En sistemas UNIX o se trata desde el principio ms ecientemente esta asignacin y los datos almacenados apenas sufren a o fragmentacin. o 3 cdigo que puede ser ejecutado por una determinada arquitectura. o

28

Sistemas Operativos - 0.5.0

2.4 Estructuras de control del sistema operativo

SO

BCPs

Figura 2.8: Dentro de la memoria asignada al SO tenemos unos bloques reservados para los BCPs de los procesos.

Un proceso resultar conocido para el SO y, por tanto, susceptible de ser elegido para a competir por los recursos del sistema slo cuando existe un BCP activo asociado a l4 . o e El BCP es una estructura de datos5 con campos para registrar los diferentes aspectos de ejecucin del proceso as como de la utilizacin de los recursos. La informacin del BCP o o o se agrupa generalmente en las siguientes categor as: 1. Identicacin del proceso o La informacin correspondiente a la identicacin del proceso consiste en un cono o junto de identicadores que incluyen: a) El identicador del proceso (PID): Consiste en un nmero entero asignado u por el sistema. b) El identicador del proceso padre c) La identicacin del usuario: Es una cadena de caracteres. o 2. Informacin del estado del procesador: La informacin relativa al estado del miso o croprocesador consta de: a) Registros visibles para el usuario: Son los registros utilizados por el proceso para almacenar datos de entrada y resultados. b) Registros de control y estado, entre los cuales de incluyen el contador de programa (PC), los regitros de cdigos de condicin 6 , los registros con indicadores o o de habilitacin o inhabilitacin de interrupciones y el modo de ejecucin. o o o
4

en el modelo de 5 estados, hab un estado llamado Nuevo en donde el SO sab que exist un nuevo a a a proceso pero sin BCP ya que an no era candidato para asignarle recursos. u 5 El SO tiene bloques de memoria libres preparados para almacenar BCPs. 6 bits que reejan el resultado de una operacin aritmtica (bit de overow, bit de acarreo, bit de cero, o e etc)

http://alqua.org/libredoc/SSOO

29

2 Gestin de procesos o c) Puntero a la pila del proceso: El proceso utiliza una estructura de pila para almacenar parmetros y direcciones de retorno de funciones y procedimientos a 3. Informacin de control y gestin del proceso: La informacin de control y gestin o o o o del proceso incluye: a) Informacin de planicacin y estado: esta informacin es necesaria para que o o o el SO lleve a cabo sus funciones de planicacin. Los elementos t o picos de esta informacin son los siguientes o 1) Estado del proceso (ejecucin, preparado, etc). o 2) Prioridad de planicacin (se utilizarn algoritmos de planicacin que o a o usarn esta informacin). a o 3) Informacin para la planicacin: sta depende del algoritmo de planio o e cacin utilizado. o 4) Suceso por el que se encuentre esperando el suceso para reanudar su ejecucin o b) Estructuacin de datos: Un proceso puede estar enlazado con otros procesos o formando una cola, un anillo o alguna otra estructura. Por ejemplo; todos los procesos que se encuentran en estado preparado con un determinado nivel de prioridad pueden estar enlazado en una cola. El BCP podr contener entonces a punteros a otros BCPs para dar soporte a esas estructuras. c) Comunicacin entre procesos: en el BCP pueden ubicarse indicadores, seales o n y mensajes asociados con la comunicacin entre los procesos independientes. o d ) Privilegios de los procesos: A los procesos se les otorgan privilegios en trminos e de la memoria a la que pueden acceder y los tipos de instrucciones que pueden ejecutar. Adems, tambin se pueden aplicar privilegios al uso de servicios y a e utilidades del sistema. e) Gestin de memoria: Esta seccin incluye punteros a las tablas de pgina y/o o o a segmentos que describen la memoria asignada al proceso. f ) Recursos en propiedad y utilizacin de los procesos: Se incluyen los recursos o controlados por el proceso tales como los cheros abiertos por ste. Tambin e e se suele incluir un histrico de la utilizacin del procesador o de otro recurso. o o Esta informacin puede ser necesaria para el planicador. o

2.4.3.

Estados del sistema y listas de procesos

Un estado de un proceso es slo un componente del estado global del sistema que o incluye a todos los procesos y recursos. Para controlar la evolucin de todos los procesos, o el SO mantiene listas de BCPs clasicadas por el estado actual de los procesos aceptados. En general, existir una lista con los BCPs de todos los procesos en situacin de preparado a o y una lista con todos los BCPs en situacin de suspendido. Mediante estas listas el SO o forma colecciones de procesos en estados anlogos y sern examinadas por las rutinas de a a asignacin de recursos del SO. o

30

Sistemas Operativos - 0.5.0

2.4 Estructuras de control del sistema operativo ejemplo El planicador buscar el siguiente proceso a ejecutar en la lista de los BCPs a de procesos preparados. El rendimiento del SO puede mejorar ordenando y actualizando estas listas de la manera ms conveniente para las rutinas del SO que operan con ellas. Las transiciones de estado a de un proceso quedarn reejadas en el cambio de su BCP de una lista a otra. a

2.4.4.

Conmutacin de procesos o

Una transicin entre dos procesos residentes en memoria en un sistema multitarea se o denomina conmutacin de procesos o conmutacin de tareas. Las principales operaciones o o implicadas en una conmutacin de procesos estn resumidas en la gura 2.9. o a
Espacio de memoria de usuario Px (Proceso) Suceso Cambio de modo
Conmutacin de procesos. SO en ejecucin Guardar el estado de Px en BCP(x) Actualizar el estado de Px y los datos de planificacin Atencin del suceso (Se consideran fuera del proceso de conmutacin) Planificacin del siguiente proceso a ejecutar (Py) Restaurar el estado HW de Py y sus atributos desde BCP(y)

Espacio de memoria del SO

Cambio de modo Py(Proceso)

Figura 2.9: Esquema de conmutacin de recursos o

La gura se interpreta de la siguiente manera Estamos en modo usuario con un proceso Px ejecutndose. Ocurre un suceso. a Pasamos a modo supervisor (ejecutamos SO). Guarda el estado del proceso interrumpido en su BCP correspondiente Actualiza el estado de Px (en funcin del suceso que haya tenido lugar, el o estado ser uno u otro) y los datos de planicacin (Algunos ssoo tienen a o ciertas consideraciones para recalcular estos datos de planicacin para un o proceso. Por ejemplo, restar prioridad a procesos largos. Atendemos al suceso dependiendo de cada caso (no incluimos esta operacin o en lo que consideramos proceso de conmutacin) o

http://alqua.org/libredoc/SSOO

31

2 Gestin de procesos o Planicamos cul va a ser el siguiente proceso a ejecutar (que podr ser el a a mismo de inicio). Una vez elegido el nuevo proceso a ejecutar, llammosle Py , hay que restaurar e su estado HW y recuperamos sus atributos gracias a su BCP. Una vez elegido el nuevo proceso, realizamos un cambio de modo. La conmutacin de procesos es una operacin considerablemente ms compleja y costosa o o a que la conmutacin del contexto de interrupcin y puede ser bastante complicada en ssoo o o grandes que disponen de un mantenimiento preciso de recursos y de sosticados esquemas de planicacin. Dada su complejidad y su relativamente alta frecuencia de ocurrencia, o la implementacin de la conmutacin de procesos puede afectar signicativamente al o o rendimiento de un SO de multiprogramacin. o Es especialmente importante en sistemas donde el tiempo es un factor cr tico tales comos los sistemas en tiempo real. La eciencia de la conmutacin de procesos puede ser o mejorada con ayuda del hardware y una estructura de software especial conocida como hebra o hilo. Un esquema hardware habitualmente empleado para la acelerar la conmutacin de o procesos es disponer de mltiples conjuntos estructuralmente idnticos de registros del u e procesador. Un conjunto para el SO y otro para los procesos de usuario. Un bit dedicado en la unica copia de la palabra del estado del procesador indica el estado actual de operacin supervisor o usuario y el conjunto de registros activos. Este mtodo reduce el o e gasto software por conmutacin de modo y la mayor parte del proceso de almacenamiento o del estado hardware a la ejecucin de unas pocas instrucciones de manipulacin de bits. o o Si se dispone de ms de dos conjuntos de registros, se pueden aplicar ahorros similares a a los procesos de usuario hasta alcanzar el nmero de conjuntos de registros disponibles. u Pregunta Por qu la conmutacin de procesos es ms costosa que la conmutacin del e o a o contexto de interrupcin? o

2.4.5.

Servicios del sistema operativo para la gestin de procesos o

Aunque los ssoo suelen diferir en su losof y objetivos de diseo sus capas del ncleo a n u ms internas muestran una gran similitud en cuanto al tipo y rango de primitivas de a gestin de procesos que ofrecen. Los detalles y parmetros var inevitablemente de un o a an sistema a otro, pero las funciones proporcionadas por la coleccin total de llamadas al o SO son muy parecidas. Esto es as porque el concepto de proceso es comn a todos los u ssoo pero cada uno los gestiona de forma distinta. El servicio de creacin de procesos crear(Id_proceso, atributos): En respuesta a o esta llamada el SO crea un proceso con el identicador y los atributos especicados o predeterminados por el sistema. El SO obtiene un nuevo BCP del conjunto de memoria libre, rellena sus campos con los parmetros proporcionados y/o predea terminados e inserta el BCP en la cola de procesos preparados 7 . De esta manera,
7

cuando un proceso tiene BCP ya puede ejecutarse por lo que ya estar en el nivel de Preparado. a

32

Sistemas Operativos - 0.5.0

2.4 Estructuras de control del sistema operativo el proceso especicado podr ser elegido por el SO para su ejecucin. Algunos de a o los parmetros o atributos que pueden denirse en el momento de creacin de un a o proceso son los siguientes: 1. Nivel de privilegios. 2. Nivel de prioridad. 3. Tamao y requisitos de memoria. n 4. Informacin sobre acceso a memoria y derechos de acceso a dispositivos de o E/S. 5. Tamao mximo del rea de datos y/o de la pila. n a a El servicio de terminacin de procesos terminar(Id_proceso): La invocacin de eso o ta llamada hace que el SO destruya el proceso designado y lo suprima del sistema. El SO reacciona reclamando todos los recursos asignados al proceso especicado, cerrando los archivos abiertos por o para el proceso y efectuando otras operaciones de que pueden considerarse necesarias y que dependern de la naturaleza del a proceso. A continuacin el BCP es eliminado de la lista en que resida y devuelto o al conjunto de posiciones libres. Un proceso puede eliminarse a s mismo pero no puede crearse a s mismo. Un proceso podr eliminar a otro siempre y cuando tenga a privilegios para ello. El servicio para abortar un proceso abortar(Id_proceso): Esta orden supone la terminacin forzosa de un proceso. El SO efecta generalmente muchas de las o u acciones que conlleva la orden terminar. Habitualmente se proporciona un volcado de registros y memoria junto con la informacin relativa a la identidad del proceso o que se aborta y la razn de la accin. El uso ms frecuente de esta orden es para o o a terminaciones involuntarias. ejemplo en MS Windows NT se produce una operacin invlida y el SO lo aborta. o a Aparece una ventana detalles en donde se ofrece un volcado del registro y memoria. El servicio dividir/unir fork()/join(): La operacin dividir fork() se utiliza para o dividir una sencuencia de instrucciones en dos secuencias que se ejecutan concurrentemente. Se crea as un nuevo proceso (proceso hijo) que ejecuta una rama del cdigo dividido mientras el proceso padre contina ejecutando la otra. Esta o u llamada proporciona al proceso padre el identicador del proceso hijo y lo utiliza para asignarle una rama de cdigo. La operacin unir join() se utiliza para reunir o o las dos secuencias de cdigos divididos y puede ser empleada por un proceso padre o para sincronizarse con un proceso hijo. ejemplo Esto se utiliz mucho en servidores de cheros. Existe un proceso llamado o listener que se mantiene a la escucha. Cuando recibe la peticin de un cliente o (identicado por una direccin IP, etc). Listener realiza un fork() y al nuevo o

http://alqua.org/libredoc/SSOO

33

2 Gestin de procesos o proceso le proporciona la direccin IP del cliente mientras el proceso Padre o sigue a la escucha. El servicio para bloquear un proceso bloquear(Id_proceso): Como respuesta a esta llamada, el proceso designado queda bloqueado idenidamente y pasa a este estado. Un proceso puede bloquearse a s mismo o puede bloquear a otro proceso cuando est autorizado para ello en virtud de su nivel de privilegio, prioridad o pertenencia a a una familia. Servicio para reanudar un proceso reanudar(Id_proceso): Esta llamada al sistema saca un proceso del estado de bloqueo impuesto por la llamada anterior, el BCP del proceso pasa a la lista de preparados. Un proceso no puede reanudarse a s mismo si est en estado de bloqueo indenido, por lo que si se encuentra en a esta situacin no podr continuar hasta que sea reanudado. o a Servicio para retardar un proceso retardar(Id_proceso, tiempo): Esta orden es conocida en bastantes ssoo como sleep y bloquea a un proceso durante un tiempo igual al especicado. Servicio para leer los atributos de un proceso leer_Atributos(Id_proceso,atributos): Esta llamada vuelca en la estructura suministrada el conjunto de atributos del proceso. Servicio para modicar la prioridad de un proceso modificar_Prioridad(Id_proceso, nuevo_valor_prioridad): Esta llamada al sistema establece como nueva prioridad del proceso la especicada por parmetros. a

34

Sistemas Operativos - 0.5.0

3 Planicacin de procesos o
3.1. Concepto y criterios de planicacin o

La planicacin hace referencia a un conjunto de pol o ticas y mecanismos incorporados al SO que gobiernan el orden en que se ejecutan los trabajos que deben ser completados por el sistema informtico. Un planicador es un mdulo del SO que selecciona el sia o guiente trabajo a admitir en el sistema y el siguiente proceso que tomar el control sobre a el procesador. El objetivo primario de la planicacin es optimizar el rendimiento del o sistema de acuerdo con los criterios considerados ms importantes por los diseadores a n del mismo. Entre las medidas de rendimiento y los criterios de optimizacin ms habituales que o a los planicadores utilizan para llevar a cabo su labor se encuentran los siguientes:

3.1.1.

Utilizacin del procesador: o

La utilizacin del procesador es la fraccin de tiempo promedio durante la cual el o o procesador est ocupado, es decir, la fraccin de tiempo durante la cual el procesador se a o encuentra activo ejecutando algn proceso, bien de usuario, bien del propio SO. Con esta u interpretacin, la utilizacin del procesador puede ser medida con relativa facilidad, por o o ejemplo mediante un proceso nulo especial1 que se ejecute cuando ningn otro proceso u pueda hacerlo. Una alternativa es considerar unicamente la operacin en modo usuario o y, por tanto, excluir el tiempo empleado para el SO2 . En cualquier caso, el objetivo es mantener al procesador ocupado tanto tiempo como sea posible. De esta forma, se conseguir que los factores de utilizacin de los restantes a o componentes tambin sean elevados obtenindose con ello buenas medidas de rendimiene e to.

3.1.2.

Productividad

La produtividad se reere a la cantidad de trabajo completada por unidad de tiempo. Un modo de expresarla es denindola como el nmero de trabajos de usuario ejecutados e u por una unidad de tiempo. Cuanto mayor sea este nmero, ms trabajo aparentemente u a est siendo ejecutado por el sistema. a
1

en MINIX existe un proceso llamado idle:

idle(){ for(;;); }
2

Podr amos decir que el tiempo de uso real del procesador es el tiempo total de uso menos el tiempo que se estuvo ejecutando la instruccin idle(). o

35

3 Planicacin de procesos o

3.1.3.

Tiempo de retorno

El tiempo de retorno TR se dene como el tiempo que transcurre desde el momento en que un trabajo o programa es remitido al sistema hasta que es totalmente completado por el mismo. Es decir, el tiempo de retorno TR es el tiempo consumido por el proceso dentro del sistema y puede ser expresado como la suma del tiempo de servicio o tiempo de ejecucin + el tiempo de espera. TR = TS + TE . o

3.1.4.

Tiempo de espera

El tiempo de espera TE es el tiempo que un proceso o trabajo consume a la espera de la asignacin de algn recurso o de que tenga lugar algn evento. En este tiempo tambin o u u e se incluyen el periodo de espera por la obtencin del propio procesador3 debido a la o competencia con otros procesos en un sistema con multiprogramacin. Este tiempo es o la penalizacin impuesta por compartir recursos con otros procesos y puede expresarse o como el tiempo de retorno - el tiempo de ejecucin efectivo. El tiempo de espera TE o elimina la variabilidad debida a las diferencias en tiempos de ejecucin del trabajo. o

3.1.5.

Tiempo de respuesta

El tiempo de respuesta en sistemas interactivos se dene como el tiempo que transcurre desde el momento en que se introduce el ultimo carcter de una orden que desencadena a la ejecucin de un programa o transaccin hasta que aparece el primer resultado en el o o terminal. Generalmente tambin se le denomina tiempo de respuesta de terminal. e En sistemas en tiempo real, el tiempo de respuesta es esencialmente una latencia y se dene como el tiempo que transcurre desde el momento en que un suceso interno o externo es sealado hasta que se ejecuta la primera instruccin de su correspondiente n o rutina de servicio. A este tiempo suele denominrsele tiempo de respuesta al proceso. a

3.2.

Tipos de planicadores

En un SO complejo pueden coexistir tres tipos de planicadores: A corto, a medio y a largo plazo.

3.2.1.

Planicador a largo plazo (PLP)

Su misin consiste en controlar la admisin de procesos nuevos al sistema. Cuando o o est presente este tipo de planicador, su objetivo principal es proporcionar una mezcla a equilibrada de trabajos. El PLP decide cundo se da entrada al sistema a un nuevo a proceso para que ste sea ejecutado. Este proceso puede proceder de la respuesta al e env de un trabajo por lotes o bien a la orden de ejecucin realizada por el usuario. En o o cierto modo, el PLP acta como una vlvula de admisin de primer nivel para mantener u a o
3

no confundir estos tiempos. El tiempo de espera por el procesador est incluido en el tiempo de espera a total TE .

36

Sistemas Operativos - 0.5.0

3.2 Tipos de planicadores la utilizacin de recursos al nivel deseado. Es importante conseguir una administracin o o equilibrada para saber cmo conjugar procesos interactivos que tienen retardos especiales o con procesos por lotes que son una simple de cola de clculo. a Por ejemplo, cuando la utilizacin del microprocesador puede admitir ms trabajos, o a el planicador puede dar entrada al sistema a nuevos procesos y aumentar con ello la probabilidad de asignacin de alguno de estos procesos al procesador. Por el contrario, o cuando el tiempo para la utilizacin del procesador resulte alto y as se reeje en el o deterioro en el tiempo de espera, el PLP puede optar por reducir la frecuencia de admisin o de procesos a situacin de preparado. El PLP es invocado generalmente cada vez que un o trabajo completado abandona el sistema. La frecuencia de llamada al PLP es, por tanto, dependiente del sistema y de la carga de trabajo pero generalmente es mucho ms baja que para los otros dos tipos de a planicadores4 . Como resultado de esta no demasiada frecuente ejecucin, el PLP puede incorporar o algoritmos relativamente complejos y computacionalmente intensivos para admitir trabajos al sistema. En trminos del diagrama de transicin de estados de procesos, el PLP e o quedar a cargo de las transiciones del estado nuevo al estado preparado o listo. a
Planificcador a medio plazo

Cola de suspendidos Planificador a corto plazo

Proceso por Cola de procesos lotes por lotes Planificador a largo plazo

Cola de preparados

UCP Terminacin

Cola de bloqueados

Programas interactivos

Figura 3.1: Esquema de un SO con planicadores

3.2.2.

Planicador a corto plazo (PCP)

Este planicador decide qu procesos toman el control de la CPU. El PCP asigna el e procesador entre el conjunto de procesos preparados residentes en memoria. Su principal objetivo es maximizar el rendimiento del sistema de acuerdo a con el conjunto de criterios elegidos. Al estar a cargo de la transicin de estado preparado a ejecucin, el PCP deber o o a ser invocado cuando se realice una operacin de conmutacin de procesos para seleccionar o o
4

en una unidad de tiempo se utilizar menos veces y ello har posible que su estructura sea ms compleja. a a a

http://alqua.org/libredoc/SSOO

37

3 Planicacin de procesos o el siguiente proceso a ejecutar. En la prctica el PCP es llamado cada vez que un suceso a interno o externo hace que se modique alguna de las condiciones que denen el estado actual del sistema. Algunos de los sucesos que provocan una replanicacin en virtud de o su capacidad de modicar el estado del sistema son: 1. Tics de reloj, es decir, interrupciones basadas en el tiempo. 2. Interrupciones y terminaciones de operaciones de E/S. 3. Llamadas de operacin al sistema operativo frente a llamadas de consulta. o 4. Env y recepcin de seales. o o n 5. Activacin de programas interactivos. o En general, cada vez que ocurre uno de estos sucesos, el SO llama al PCP para determinar si deber planicarse otro proceso para su ejecucin. a o

3.2.3.

Planicador a medio plazo (PMP)

El PMP tiene por misin traer procesos suspendidos a la memoria principal. Este o planicador controla la transicin de procesos en situacin de suspendidos a situacin de o o o preparados. El PMP permanecer inactivo mientras se mantenga la condicin que dio a o lugar a la suspensin del proceso, sin embargo, una vez desaparecida dicha condicin el o o PMP intenta asignar al proceso la cantidad de memoria principal que requiera y volver a dejarlo en situacin de preparado. Para funcionar adecuadamente, el PMP debe disponer o de informacin respecto a las necesidades de memoria de los procesos suspendidos, lo o cual no es complicado de llevar a la prctica ya que el tamao real del proceso puede ser a n calculado en el momento de suspenderlo almacenndose en el BCP. a Este planicador ser invocado cuando quede espacio libre en memoria por la termia nacin de un proceso o cuando el suministro de procesos preparados quede por debajo o de un l mite especicado.

3.3.

Algoritmos de planicacin o

Antes de comenzar a estudiar los distintos tipos de algoritmos de planicacin es o importante tener en cuenta que hay dos categor generales de stos. as e La planicacin no apropiativa5 Se basa en que una vez que el proceso pasa a estado o de ejecucin no abandona el procesador hasta que termina o hasta que se bloquea o en espera de una operacin de E/S o al solicitar algn servicio del sistema. o u La planicacin apropiativa Un proceso que est ejecutando puede ser interrumpido por o a el sistema operativo para otorgar el procesador a un proceso distinto en funcin de o los criterios de planicacin utilizados; prioridad, nmero de usos del procesador, o u etc.

38

Sistemas Operativos - 0.5.0

3.3 Algoritmos de planicacin o

3.3.1.

Algoritmo First Come First Serve (FCFS)

La disciplina de planicacin ms sencilla es el algoritmo FCFS. La carga de trabajo se o a procesa simplemente en un orden de llegada. Por no tener en consideracin el estado del o sistema ni las necesidades de recursos de los procesos individuales, la planicacin FCFS o puede dar lugar a pobres rendimientos. Este algoritmo exhibe un alto tiempo de respuesta a sucesos debido a la falta de expropiacin y caracterizacin con las propiedades de los o o procesos. La planicacion FCFS elimina la nocin e importancia de las prioridades de n o los procesos. ejercicio Sean dos procesos P1 y P2 con tiempos de servicios de 20 y 2 unidades de tiempo, respectivamente. Si el primero en llegar es el proceso P1 , calcular los tiempos de retorno de ambos procesos y el tiempo de retorno medio. Realizar los mismos clculos si el primero en llegar es el proceso P2 . a P2 P1 P1 : TE = 0 TS = 20 TR = 20 P2 : TE = 20 TS = 2 TR = 22 P1 P2 P2 : T E = 0 T S = 2 T R = 2 P1 : TE = 2 TS = 20 TR = 22 TR = 12 TE = 1 TR = 21 TE = 10

3.3.2.

Algoritmo por reparto circular de tiempo (RR, Round-Robin)

En entornos interactivos tales como sistemas de tiempo compartido, el requisito principal es proporcionar tiempos de espera razonablemente buenos y, en general, compartir los recursos del sistema equitativamente entre todos los usuarios. Solamente las disciplinas de planicacin que permiten la expropiacin del procesador pueden ser consideradas o o en tales entornos y una de las ms utilizadas es la de Reparto circular de tiempos o por a turnos. Bsicamente, el tiempo del procesador se divide en cuotas o cuantos que son asiga nados a los procesos solicitantes. Ningn proceso puede ejecutarse durante ms tiempo u a que el establecido por ese cuanto si hay ms procesos esperando en la cola de preparaa dos. Si un proceso necesita ms tiempo para completarse despus de agotar su cuota de a e tiempo, volver de nuevo a la cola de procesos preparados. Si el proceso termina antes a de que expire esta cuota de tiempo, el planicador dar inmediatamente el procesador a a otro proceso en situacin de preparado. Con esta planicacin y en un sistema con n o o 1 procesos activos, cada proceso recibe aproximadamente n del tiempo del procesador. Con este algoritmo de planicacin, los procesos cortos pueden ser ejecutados dentro o de una unica cuota de tiempo y presentarn por tanto buenos tiempos de respuesta. En a el caso de procesos ms largos, stos pueden circular unas cuantas veces a travs de la a e e cola de preparados antes de terminar. El tiempo de respuesta a estos procesos ms largos a ser siempre proporcional a sus necesidades de recursos. a

http://alqua.org/libredoc/SSOO

39

3 Planicacin de procesos o La planicacin por reparto de tiempo requiere el soporte de un temporizador de o intervalos que se programa generalmente para que interrumpa al SO cada vez que expire una cuota o cuanto de tiempo, forzando as la ejecucin del planicador. El rendimiento o de este tipo de planicacin es muy sensible a la eleccin de la cuota de tiempo, que o o suele oscilar entre 1 y 100 milisegundos dependiendo del sistema. Una cuota demasiado corta puede dar lugar a retrasos signicativos debido a las frecuentes interrupciones del temporizados y consiguientes conmutaciones de procesos. En el otro extremo, una cuota demasiado larga transformar a un planicador RR en un planicador FCFS. a tiempo de retorno normalizado se dene como el tiempo de retorno/tiempo de servicio. ejercicio Sea una sistema con 5 procesos activos, los tiempos de activacin y de servicio o de cada uno de ellos son los siguiente PA PB PC 0 2 3 6 PD PE 4 6 8 4 5 2

tiempo de llegada Tll tiempo de servicio TS

1. Obtener el datagrama de ejecucin si el algoritmo de planicacin utilizado es o o FCFS. 2. Cronograma de ejecucin si la planicacin es Round-Robin con una cuota de una o o unidad de tiempo. 3. Cronograma de ejecucin si la planicacin es Round-Robin con una cuota de o o cuatro unidades de tiempo. PA 0 3 3 0 1 4 1 1.33 3 0 1 PB 2 6 7 1 1.17 17 11 2.83 17 11 2.83 PC 4 4 9 5 2.25 13 9 3.27 7 3 1.75 PD 6 5 12 7 2.48 14 9 2.80 14 9 2.80 PE 8 2 12 10 6.0 7 5 3.5 9 7 4.5

Tll TS TR TE TRN TR TE TRN TR TE TRN

40

Sistemas Operativos - 0.5.0

3.3 Algoritmos de planicacin o

Algoritmo FCFS PA PB PC PD PE

entra entra PB PC

entra PD

entra PE

Figura 3.2: Solucin grca al ejercicio propuesto: FCFS o a

PA PB PC PD PE

2 3 4 5

9 10 11 12 13 14 15 16 17 18 19 20

RR1
Figura 3.3: Solucin grca al ejercicio propuesto: RR-1 o a

http://alqua.org/libredoc/SSOO

41

3 Planicacin de procesos o

PA PB PC PD PE

2 3 4 5

9 10 11 12 13 14 15 16 17 18 19 20

RR4
Figura 3.4: Solucin grca al ejercicio propuesto: RR-4 o a

3.3.3.

Planicacin con expropiacin basada en prioridades (ED, o o Event-Driven)

Cada proceso del sistema est asignado a un nivel de prioridad y el planicador siempre a elige al proceso preparado con prioridad ms alta. Estas prioridades pueden ser estticas a a o dinmicas. La prioridad esttica no variar a lo largo del ciclo de vida del proceso miena a a tras que la prioridad dinmica s puede hacerlo. En cualquier caso, los valores iniciales a de estas prioridades son asignados por el usuario o el SO en el momento de la creacin o del proceso. Un problema habitual en este tipo de planicacin es la posibilidad de que o los procesos de prioridad ms baja queden siempre relegados en favor de los de prioridad a ms alta. As con este tipo de planicacin no puede garantizarse la terminacin de un a , o o proceso dentro de un tiempo nito. Hay SSOO donde esto no se puede consentir, por ejemplo; los sistemas operativos en tiempo real. En sistemas donde tal situacin no puede ser tolerada, el remedio habitual lo proporo ciona la utilizacin de una prioridad por envejecimiento, segn la cual, la prioridad de un o u proceso aumenta gradualmente en funcin de su tiempo de permanencia en el sistema. o Los procesos ms antiguos conseguirn as una prioridad tal que asegura su terminaa a cin en tiempo nito. En un SO de tiempo real estricto, donde cada proceso debe tener o garantizada su ejecucin antes de la expiracin de un plazo, se utiliza una disciplina o o de planicacin por plazo ms inmediato. Este tipo de planicacin dar entrada al o a o a procesador al proceso cuyo plazo est ms prximo a cumplirse. e a o Otro tipo de planicacin en este tipo de sistemas es la planicacin por m o o nima laxitud, segn la cual se selecciona el proceso con menor diferencia entre el tiempo que u tarda en cumplirse el plazo y el tiempo restante de computacin. Vase la gura 3.5. o e La prioridad puede subir porque ha transcurrido un tiempo determinado o porque al proceso se le ha expropiado x veces del procesador o por las razones que estn denidas e

42

Sistemas Operativos - 0.5.0

3.3 Algoritmos de planicacin o pero siempre premiando de alguna forma el tiempo de vida del proceso en el sistema.
CP1 CPU CP2 ENTRADA CP3 Terminacin

CPn EXPROPIACION bloqueo

Figura 3.5: Esquema de un sistema con planicacin ED o

3.3.4.

Planicacin MLQ (Multiple level queues) o

En sistemas mixtos donde coexisten procesos interactivos y procesos por lotes, resulta ms conveniente adoptar una planicacin compleja que combine a varias disciplinas. a o Un modo de implementar esta planicacin es clasicar la carga de trabajo de acuerdo o con sus caracter sticas y mantener colas de procesos separados servidas por diferentes planicadores. A este mtodo se le denomina Planicacin por colas MultiNivel. Vase e o e la gura 3.6.
Planificacin entre colas. Reparto de tiempo por prioridad

Cola de Prioridad Alta

ED

Cola de Prioridad Media

RR

CPU

Cola de Prioridad Baja

FCFS

Figura 3.6: Esquema de un sistema complejo.

http://alqua.org/libredoc/SSOO

43

3 Planicacin de procesos o

44

Sistemas Operativos - 0.5.0

4 Programacin Concurrente o
4.1. Multitarea, multiprogramacin y multiproceso o

Un sistema multitarea es aquel que permite la ejecucin de varios procesos sobre un o procesador mediante la multiplexacin de este entre los procesos. o La multitarea se implementa generalmente manteniendo el cdigo y los datos de varios o procesos simultneamente en memoria y multiplexando el procesador y los dipositivos a E/S entre ellos. La multitarea suele asociarse con soporte software y hardware para la proteccin de o memoria con el n de evitar que los procesos corrompan el espacio de direcciones y el comportamiento de otros procesos residentes en memoria, un sistema multitarea, sin embargo, no tiene necesariamente que soportar formas elaboradas de gestin de memoria o y archivos. En este sentido multitatarea es sencillamente sinnimo de concurrencia. o El trmino multiprogramacin designa a un SO que adems de soportar multitarea e o a proporciona formas sosticadas de proteccin de memoria y fuerza el control de la cono currencia cuando los procesos acceden a dispositivos E/S y a archivos compartidos, en general la multiprogramacin implica multitarea pero no viceversa. o Los SSOO operativos de multiprogramacin soportan generalmente varios usuarios o en cuyo caso tambin se les denomina sistemas multiusuario o multiacceso. Los SSOO e para multiproceso gestionan la operacin de sistemas informticos que incorporan varios o a procesadores conocidos habitualmente como sistemas multiprocesadores. Los SSOO para multiprocesadores son multitarea por denicin ya que soportan laejecucin simultnea o o a de varias tareas o procesossobre diferentes procesadores y sern multiprogramados si a disponen de los mecanismos de control de concurrencia y proteccin de memoria adecuao dos. En general todos los SSOO de multiprogramacin se caracterizan por mantener un o conjunto de procesos activos simultneamente que compiten por los recursos del sistema, a incluidos el procesador, la memoria y los dipositivos E/S. Un SO de multiprogramacin vigila el estado de todos los procesos activos y de todos o los recursos del sistema, cuando se producen cambios importantes de estado, ocuando es invocado expl citamente el SO se activa para asignar recursos y proporcionar ciertos servicios de su repertorio.

4.2.

Principios de concurrencia

La concurrencia es el punto clave en los conceptos de multitarea, multiprogramacin o y multiproceso y es fundamental para el diseo de SSOO, la concurrencia comprende n un gran nmero de cuestiones de diseo incluyendo la comunicacin entre procesos, la u n o

45

4 Programacin Concurrente o comparticin y competencia por los recursos, la sincronizacin de la ejecucin de varios o o o procesos y la asignacin del procesador a los procesos, la cocncurrencia puede presentarse o en tres contextos diferentes: Varias aplicaciones: en este caso el tiempo de procesador de una mquina es coma partido dinmicamente entre varios trabajos o aplicaciones activas. a Aplicaciones estructuradas: como consecuencia del diseo modular de una aplican cin y la divisin de la misma en tareas expl o o citas estas pueden ser ejecutadas de forma concurrente. Estrucutra del sistema operativo: como resultado de la aplicacin de la estructurao cin en el diseo del propio SO, de forma que este se implemente como un conjunto o n de procesos. Como soporte a la actividad concurrente el SO debe ser capaz de realizar un estrecho seguimiento de los procesos activos, asignando y desasignando recursos entre ellos, el SO debe proteger los datos y recursos de cada proceso contra ingerencias o intrusiones intencionadas o no, de otros procesos. El resultado de un proceso debe ser absolutamente independiente de la velocidad relativa a la que se realice su ejecucin con respecto al resto de procesos, y por supuesto o dicho resultado debe ser similar al obtenido si la ejecucin del proceso se realizara de o forma individual.

4.3.
4.3.1.

Comunicacin y sincronizacin de procesos o o


Posibilidades de interaccin de procesos o

Las posibilidadades de interaccin de los procesos pueden clasicarse en funcin del o o nivel de conocimiento que cada proceso tiene de la existencia de los dems. a 1. Un proceso no tiene en absoluto conocimiento de la existencia de los dems. Se trata a de procesos independientes que no estn preparados para trabajar conjuntamente a y mantienen entre s una relacin exclusivamente de competencia o 2. Que los procesos tengan un conocimiento indirecto de los otros procesos. Esta situacin tiene lugar cuando los procesos no tienen un conocimiento expl o cito entre ellos, pero comparten el acceso a algunos dipositivos o zonas de memoria del sistema. Entre estos procesos se establece una relacin de cooperacin por compartir o o objetos comunes. 3. Tiene lugar cuando los procesos tienen conocimiento directo unos de otros por haber sido diseados para trabajar conjuntamente el alguna actividad. Esta situacin n o muestra una relacin claramente de cooperacin. o o En cualquiera de estas tres situaciones hay que dar solucin a tres problemas de control: o

46

Sistemas Operativos - 0.5.0

4.3 Comunicacin y sincronizacin de procesos o o 1. Necesidad de exclusin mutua. Es decir, los procesos debern acceder de forma o a exclusiva a ciertos recursos o zonas de memoria considerados como cr ticos. 2. Interbloqueos: tienen lugar cuando ninguno de los procesos en competencia puede continuar su ejecucin normal por carecer de alguno de los recursos que necesita. o 3. Inhanicin: este problema tiene lugarcuando la ejecucin de un proceso queda o o siempre pospuesta a favor de algn otro de los procesos en competencia. u Por supuesto, el control de la concurrencia involucra inevitablemente al SO ya que es el encargado de asignar y arrebatar los recursos del sistema a los procesos.

4.3.2.

Necesidad de sincronizacin de los procesos: regin cr o o tica y exclusin mutua o

Independientemente del tipo de interaccin existente entre los distintos procesos aco tivos, en un sistema con multiprogramacin stos comparten un conjunto de elementos o e que deben ser accedidos de forma controlada para evitar situaciones de inconsistencia. Estos elementos compartidos ya sean dispositivos de E/S o zonas de memoria comunes son considerados como cr ticos y la parte del programa que los utiliza se conoce como regin o seccin cr o o tica. Es muy importante que slo un programa pueda acceder a su o seccin cr o tica en un momento determinado. Por esta razn, el SO debe ofrecer mecaniso mos que hagan posible una correcta sincronizacin de los distintos procesos activos en o los accesos a los recursos que comparten. El uso de variables compartidas es una forma sencilla y habitual de comunicacin entre o procesos interactivos. Cuando un conjunto de procesos tiene acceso a un espacio comn u de direcciones, se pueden utilizar variables compartidas para una serie de cometidos como, por ejemplo, indicadores de sealizacin o contadores. Sin embargo, la actualizacin n o o de variables compartidas puede conducir a inconsistencias; por esta razn, cuando se o utilicen hay que asegurarse de que los procesos acceden a ellas debidamente ordenados.
P1 P2 P3 cont=

SERVIDOR

Figura 4.1: Gestin de procesos o

Una posible ejecucin ser o a: 1. Llega el proceso 1 y se ejecuta hasta actual (actual=3) 2. El ujo de ejecucin se pone en proceso 2 por la razn que sea. Y toma actual y o o lo pone a 4, lo que har tambin proceso 1 cuando le vuelva. a e

http://alqua.org/libredoc/SSOO

47

4 Programacin Concurrente o Algoritmo 1 Productor y Servidor Productor(TipoElemento e){ actual=cont; ponerElementoEnCola(e); cont=actual+1; } TipoElemento Servidor(){ actual=cont; cont=actual-1; TipoElemento e = obtenerElementoCola(); devolver(e); } Pregunta Se permite cambio de contexto en esta situacin? o Respuesta S mientras que las variable de la regin cr , o tica no se vean amenzadas. La actualizacin de una variable compartida puede ser considerada como una seccin o o cr tica. Cuando se permita la entrada de un proceso en una de estas secciones cr ticas, dicho proceso deber completar todas las instrucciones que consituyen su regin cr a o tica antes de que se permita la entrada a otro proceso a la suya. De este manera, slo el o proceso que ejecuta la seccin cr o tica tiene permitido el acceso a la variable compartida. Los restantes proceso tendrn prohibido el acceso a dicha variable quedando en situacin a o de bloqueado si intentan acceder a su regin cr o tica. Aesta forma de acceso se la denomina acceso en exclusin mutua. El acceso en exclusin mutua es una forma de acceso en la que o o un proceso excluye temporalmente a todos los dems de utilizar un recurso compartido a con el n de asegurar la integridad del sistema. Si el recurso compartido es una variable, la exclusin mutua asegura que, como mximo, un proceso tendr acceso a ella durante o a a las actualizaciones cr ticas. En el caso de compartir dispositivos, la exclusin mutua o es mucho ms obvia si se consideran los problemas que pueden derivarse de su uso a incontrolado. Una solucin para la exclusin mutua deber garantizar que se cumplen o o a los siguientes requisitos: 1. Asegurar la exclusin mutua entre los procesos al acceder al recurso compartido. o 2. No establecer suposiciones con respecto a las velocidades y prioridades relativas de los procesos en conicto. 3. Garantizar que la terminacin de cualquier proceso fuera de su regin cr o o tica no afecta a la capacidad del resto de procesos contendientes para acceder a los recursos compartidos. 4. Cuando ms de un proceso desee entrar en su regin cr a o tica, se deber conceder la a entrada a uno de ellos en tiempo nito. Evitar interbloqueos.

48

Sistemas Operativos - 0.5.0

4.4 Soluciones software para la exclusin mutua o

4.4.
4.4.1.

Soluciones software para la exclusin mutua o


Algoritmo de Dekker

Primer intento Algoritmo 2 Algoritmo de Dekker


Program EMADS1 var turno:0..1; process 0 begin <bucle infinito en donde el proceso 0 comprueba la variable turno> <es decir, si no es su turno de ejecucin, no realiza nada.> o <En caso contrario ejecutar la seccin crtica y da el paso al> a o <siguiente proceso.> while true begin while turno<>0 do {nada}; <seccin crtica> o turno:=1; <resto de cdigo> o end; end; process 1 begin while true begin while turno<>1 do {nada}; <seccin crtica> o turno:=0; <resto de cdigo> o end; end; begin turno:=0; parbegin process0; process1; parend; end;

Este algoritmo garantiza la exclusin mutua. Si dos procesos con distinto ritmo de o ejecucin, compiten por la regin cr o o tica se adoptar el ritmo del proceso ms lento. El a a otro problema viene dado por que si un proceso falla tanto dentro como fuera de su seccin cr o tica, el otro proceso queda bloqueado indenidamente.

http://alqua.org/libredoc/SSOO

49

4 Programacin Concurrente o Preguntas asociadas al algoritmo 2: un proceso puede ejecutar dos veces seguidas su seccin cr o tica?. No, puesto que en cuanto acaba una ejecucin, le pasa el turno al otro proceso. o si un proceso se cae fuera de su regin cr o tica, afecta al funcionamiento del otro proceso?. S ya que la variable turno se queda a 1 y el otro proceso nunca tendr , a la condicin para ejecutar su seccin cr o o tica. Esto ocurre aunque el proceso1 haya logrado cambiar turno a 0, porque una vez que el proceso0 ejecuta y cambia turno a 1, no encuentra respuesta en el otro proceso. Que ritmo se sigue cuando los dos procesos tardan tiempos diferentes? Se utiliza el ritmo del ms lento, ya que es el que va marcando los tiempos de nalizado de a procesos. Segundo intento En el algoritmo 3 s se pueden regiones cr ticas de un proceso consecutivamente. Si un proceso se cae en la regin cr o tica, afectar a la ejecucin del otro, pero si ocurre en a o <resto de cdigo>, no afecta al otro. Sin embargo, no garantiza la exclusin mutua ya o o que dependemos de la rapidez relativa de ejecucin de turno[0]:=true y turno[1]:=true. o Tercer intento En el algoritmo 5 se cumplen todas las condiciones saludables. Pero una ca en la da regin cr o tica bloquea al otro proceso. En una ejecucin estrictamente paralela, los dos o procesos se ponen a true, de forma que ninguno de ellos puede continuar (se quedan en el bloqueo del do {nada} esperando indenidamente). Esto se denomina interbloqueo. Cuarto intento En este algoritmo no se produce interbloqueo ya que ambos blababa analizar cdigo n n o en casa calentito. Se sigue dando ese proble Intento nal En este caso un proceso puede ejecutar consecutivamente regiones cr ticas. Adems, a se previene el interbloqueo y aunque un proceso se caiga fuera de la regin cr o tica no afecta al otro. Si se cae en regin cr o tica, el otro queda bloqueado. Se cumple exclusin o mutua.

4.4.2.

Algoritmo de Peterson

Este algoritmo garantiza la exclusin mutua debido al uso de una variable compartida, o turno, que se chequea cada vez.

50

Sistemas Operativos - 0.5.0

4.4 Soluciones software para la exclusin mutua o

Algoritmo 3 Algoritmo de Dekker, segundo intento


Program EMADS2 var turno:array[0..1] of boolean; process 0 begin while true begin while turno[1] do {nada}; turno[0]:=true; <seccin crtica> o turno[0]:=false; <resto de cdigo> o end; end; process 1 begin while true begin while turno[0] do {nada}; turno[1]:=true; <seccin crtica> o turno[1]:=false; <resto de cdigo> o end; end; begin turno[0]:= false; turno[1]:= false; parbegin process0; process1; parend; end;

http://alqua.org/libredoc/SSOO

51

4 Programacin Concurrente o

Algoritmo 4 Algoritmo de Dekker, tercer intento


Program EMADS3 var turno:array[0..1] of boolean; process 0 begin while true begin turno[0]:=true; while turno[1] do {nada}; <seccin crtica> o turno[0]:=false; <resto de cdigo> o end; end; process 1 begin while true begin turno[1]:=true; while turno[0] do {nada}; <seccin crtica> o turno[1]:=false; <resto de cdigo> o end; end; begin turno[0]:= false; turno[1]:= false; parbegin process0; process1; parend; end;

52

Sistemas Operativos - 0.5.0

4.4 Soluciones software para la exclusin mutua o

Algoritmo 5 Algoritmo de Dekker, cuarto intento


Program EMADS4 var turno:array[0..1] of boolean; process 0 begin while true do begin turno[0]:=true; while turno[1] do begin turno[0]:=false; delay(random) turno[0]:=true; end <seccion crtica> turno[0]:=false; <resto de cdigo> o end; end; process 1 begin while true begin turno[1]:=true; while turno[0] do; begin turno[1]:=false; delay(random) turno[1]:=true; end; <regin crtica> o turno[1]:=false; <resto de cdigo> o end; end; begin turno[0]:= false; turno[1]:= false; parbegin process0; process1; parend; end;

http://alqua.org/libredoc/SSOO

53

4 Programacin Concurrente o Algoritmo 6 Algoritmo de Dekker, intento nal


Program EMADSF var se~al : [0..1] of boolean; n turno : 0..1; process cero begin while true do begin se~al[0]:=true; n while se~al[1] do n begin if (turno=1) then begin se~al[0]:=false; n while turno=1 do {nada}; se~al[0]=true; n end end <seccion crtica> turno:=1; se~al[0]:=false; n <resto de cdigo> o end; end; process uno begin while true do begin se~al[1]:=true; n while se~al[0] do n begin if (turno=0) then; begin se~al[1]:=false; n while turno=0 do {nada}; se~al[1]:=true; n end; end; <regin crtica> o turno:=0; se~al[1]:=false; n <resto de cdigo> o end; end; begin turno:=0; se~al[0]:=false; n se~al[1]:=false; n parbegin process cero; process uno; parend; end;

54

Sistemas Operativos - 0.5.0

4.4 Soluciones software para la exclusin mutua o Algoritmo 7 Algoritmo de Peterson


Program EMADSF var se~al : [0..1] of boolean; n turno : 0..1; process cero begin while true do begin se~al[0]:=true; n while se~al[1] do n begin if (turno=1) then begin se~al[0]:=false; n while turno=1 do {nada}; se~al[0]=true; n end end <seccion crtica> turno:=1; se~al[0]:=false; n <resto de cdigo> o end; end; process uno begin while true do begin se~al[1]:=true; n while se~al[0] do n begin if (turno=0) then; begin se~al[1]:=false; n while turno=0 do {nada}; se~al[1]:=true; n end; end; <regin crtica> o turno:=0; se~al[1]:=false; n <resto de cdigo> o end; end; begin turno:=0; se~al[0]:=false; n se~al[1]:=false; n parbegin process cero; process uno; parend; end;

http://alqua.org/libredoc/SSOO

55

4 Programacin Concurrente o

4.4.3.

Semforos a

Los semforos pueden contemplarse como variables que tienen un valor entero sobre a las que se denen las tres operaciones siguientes: Un semforo puede inicializarse con un valor no negativo. a La operacin WAIT decrementa el valor del semforo. Si el valor se hace negativo, o a el proceso que ejecuta WAIT queda bloqueado. La operacin SIGNAL incrementa el valor del semforo. Si el valor no es positivo, o a se desbloquea a un proceso bloqueado previamente por una operacin WAIT. o Veamos cul ser la implementacin de un semforo. a a o a Algoritmo 8 Semforos a
type semaforo: record contador : entero; cola : list of proceso; end; var s: semaforo; wait(s); s.contador:=s.contador -1; if s.contador < 0 then begin poner este proceso en cola bloquear este proceso end signal(s); s.contador := s.contador +1; if s.contador <=0 then begin quitar proceso P de la cola poner proceso P en la cola de preparados end;

En cualquier instante, el valor de s.contador puede interpretarse como sigue. Si s.contador es mayor o igual que 0, indica el nmero de procesos que pueden ejecutar WAIT sobre el u semforo sin quedar bloqueados. Si s.contador es menor estricto que 0, su valor absoluto a es el nmero de procesos bloqueados en la cola del semforo. u a ejemplo Inicializamos un semforo a 3. Llega tres procesos y ejecutan WAIT, que hace a que baje el contador a 0. El cuarto, coloca el contador a -1 y se queda bloqueado. Llega un quinto, coloca el contador a -2 y se bloquea. Si un proceso hace SIGNAL, el contador se ve incrementado en uno.

56

Sistemas Operativos - 0.5.0

4.4 Soluciones software para la exclusin mutua o Las primitivas WAIT y SIGNAL son atmicas, es decir, no pueden ser interrumpidas y o cada rutina puede considerarse indivisible. Un semforo binario es aqul que slo puede tomar los valores 0 y 1. Su implementacin a e o o es muy sencilla y podemos realizarla a partir del algoritmo 8 Algoritmo 9 Semforos binarios a
type semaforo: record valor : 0..1; cola : list of proceso; end; var s: semaforo; wait(s); if s.valor = 1 then s.valor = 0; else begin poner este proceso en cola bloquear este proceso end; end;

signal(s); if s.cola est vaca a s.valor = 1; else begin quitar proceso P de la cola poner proceso P en la cola de preparados end; end;

Si ni hay ningn proceso en la cola de bloqueados, SIGNAL activa el interrputor, es u decir, coloca s.valor a 1. Lo siguiente que veremos es cmo implementar una regin cr o o tica con un semforo. a A continuacin veremos una solucin al problema de productores-consumidores con o o la restriccin de disponer de un buer nito o limitado. Podemos considerar que este o problema tiene las siguientes especicaciones: El nmero de elementos contenidos en un momento dado en el buer vendr dado u a por la siguiente expresin. o nDatos = P roducidos Consumidos Teniendo en cuenta que el buer tendr una capacidad nita, siempre se vericar a a que 0 nDatos capacidad.

http://alqua.org/libredoc/SSOO

57

4 Programacin Concurrente o Algoritmo 10 Implementacin de una seccin cr o o tica con semforo a


program exclusion_mutua var s:semaforo; procedure P(i : integer) begin repeat wait(s); <seccin crtica> o signal(s); <resto de cdigo> o forever end; begin s:=1; par begin P(1); P(2); par end end;

Un proceso productor slo podr ejecutarse cuando nDatos < capacidad y un o a proceso consumidor cuando nDatos > 0. Una cuestin adicional es que se va a imo plementar el buer de una forma circular. Contaremos con dos punteros denotados por ENT y SAL que apuntarn respectivamente al siguiente hueco donde producir a y al siguiente elemento que consumir. La idea es tener n productores y n consumidores a la vez para que produzcan y consuman en concurrencia.

4.4.4.

Monitores

Un monitor es, esencialmente, una coleccin de datos y de procedimientos para su o manipulacin junto con una secuencia de inicializacin. Las variables de datos globales o o son generalmente privadas al monitor por lo que slo son accesibles a los procedimientos o de ste. Los procedimientos del monitor podrn ser pblicos o privados. Un monitor e a u puede considerarse como una estructura esttica que se activa unicamente cuando alguno a de sus procedimientos pblicos es llamado por un proceso en ejecucin y se dice, entonces, u o que el proceso en cuestin entra o tiene acceso al monitor. o Solamente un proceso puede estar ejecutndose en el monitor en un instante detera minado. Una estructura de datos compartida puede as protegerse situndola dentro de a un monitor que ofrecer un servicio de exclusin mutua para dicha estructura. Para que a o resulten utiles en el procesamiento concurrente, los monitores deben incluir alguna he rramienta de sincronizacin de forma que se impida el acceso al monitor a un proceso o cuando otro est ejecutando dentro de l. Esta sincronizacin se consigue por medio a e o

58

Sistemas Operativos - 0.5.0

4.4 Soluciones software para la exclusin mutua o Algoritmo 11 Productores/consumidores


program prod_consum_sem type dato = .... var buffer : array[capacidad] of dato; puedeProducir,puedeConsumir : Semaforo_General; pmutex,cmutex : SemaforoBinario; ent,sal : 1..capacidad; procedure productorX var pDato : dato; begin while true do begin wait(puedePrducir); {comprobamos que podemos producir} pDato:=producir(); {producimos} wait(pmutex); buffer[ent]:=dato; {hay que llegar aqu en exclusin mutua para que no o haya conflictos. Por eso hay antes un semforo binario} a ent:=(ent mod capacidad)+1; {aqu est la idea de buffer circular} a signal(pmutex); {liberamos la seccin crtica} o signal(puedeConsumir); {hacemos esto porque por cada elemento que deje en el buffer habr un consumidor que lo pueda consumir y eso ha de quedar reflejado} a end; end; { productorX } procedure consumidorZ var cDato : dato begin while true do begin wait(puedeConsumir); {slo si hay datos en el buffer podremos consumir, o en caso contrario, nos quedaremos bloqueados} wait(cmutex); cDato:=buffer[sal]; {consumimos en exclusin mutua} o sal:=(sal mod capacidad)+1; {dejamos la variable sal al siguiente slot del buffer} signal(cmutex); {habilitamos de nuevo el que se pueda consumir} signal(puedeProducir); {nuevos productores podrn aprovechar el hueco dejado} a consumir(cDato); {consumimos el datos propiamente} end; end; { consumidorZ } begin ent:=1; sal:=1; signal(cmutex); signal(pmutex); puedeConsumir:=0; for(i=1 to capacidad)do signal(puedeProducir); {por cada slot, habilitamos un proceso productor} par begin Productor1 . Productorn Consumidor1 http://alqua.org/libredoc/SSOO . Consumidorn par end; end;

59

4 Programacin Concurrente o de unas variables de condicin que se incluyen en el monitor y que slo son accesibles o o dentro de l. A diferencia de los semforos, estas variables de condicin no toman vae a o lor true o false ni ninguno otro sino que constituyen una cola con procesos en espera. Para trabajar con estas variables de condicin se establecen las mismas primitivas que o para los semforos. As la primitiva wait suspende la ejecucin de un proceso bajo una a , o determinada condicin con lo que el monitor quedar disponible para ser utilizado por o a otro proceso. La primitiva signal reanudar la ejecucin de un proceso bloqueado en a o una determinada variable de condicin. o Una caracter stica bsica de los monitores es proporcionar control sobre las operaciones a realizadas sobre los elementos compartidos con el n de prevenir actuaciones dainas o sin n signicado. De esta forma, se limitan los tipos de actuaciones proporcionando un conjunto de procedimientos de manipulacin ables y bien probados. Los monitores avanzan un o paso en este sentido haciendo los datos cr ticos accesibles indirecta y exclusivamente mediante un conjunto de procedimientos pblicos disponibles. u Los monitores encapsulan los datos utilizados por los procesos concurrentes y permiten su manipulacin slo por medio de operaciones adecuadas y sincronizadas. Nunca existir o o a peligro de actualizacin inconsistente por entrelazamiento de llamadas concurrentes ya o que los procesos del monitor siempre se ejecutarn en exclusin mutua. a o Veremos a continuacin el problema de productores/consumidores utilizando un moo nitor.

4.4.5.

Paso de mensajes

Los mensajes constituyen un mecanismo relativamente sencillo y adecuado tanto para la comunicacin como para la sincronizacin entre procesos que trabajan en entornos o o centralizados o entornos distribuidos. En esencia, un mensaje es una coleccin de inforo macin que puede ser intercambiada entre un proceso emisor y un proceso receptor. o Un mensaje puede contener datos, rdenes de ejecucin e, incluso, cdigo a transmitir o o o entre dos o ms procesos. Aunque, en general, el contenido de un mensaje quedar a a dividido en dos campos bien separados; Por un lado, la cabecera -que habitualmente tiene un formato jo para cada sistema operativo- y, por otro lado, el cuerpo del mensaje -que contiene el mensaje en s y cuya longitud puede variar incluso dentro de un mismo SO. Las operaciones de mensaje t picas proporcionadas por el SO son: enviar (send) y recibir (receive). Las implementaciones del env y recepcin de mensajes pueden o o diferir en una serie de detalles pero todas ellas mantienen la importancia de un conjunto de cuestiones que son: 1. Denominacin o direccionamiento: Utilizar una denominacin directa signica que o o cuando se invoca una operacin de mensaje cada emisor debe designar el receptor o espec co y a la inversa, cada receptor debe designar a la fuente desde la cual desea recibir el mensaje. send(B, mensaje) y receive(A,mensaje). Un mtodo alternativo es la comunicacin indirecta de mensajes donde stos son e o e enviados y recibidos a travs de dispositivos especializados dedicados a este n. Ese tos dispositivos se suelen denominar buzones debido a su modo de funcionamiento.

60

Sistemas Operativos - 0.5.0

4.4 Soluciones software para la exclusin mutua o

Algoritmo 12 Implementacin de un monitor o


{implementacin de un monitor} o wait_signal:monitor begin ocupado:boolean; libre:condition; procedure mwait begin if ocupado then libre.wait; ocupado:=true; end; { mwait } procedure msignal begin ocupado:=false; libre.signal; end; { msignal } {cuerpo del monitor} ocupado:=false; end;

process uno [...] wait_signal.mwait <seccin crtica>> o waitsignal.wsignal [...]

process dos [...] wait_signal.mwait <seccin crtica> o wait_signal.msignal [...]

http://alqua.org/libredoc/SSOO

61

4 Programacin Concurrente o

Algoritmo 13 Implementacin del problema de Productores/Consumidores utilizando o un monitor


program m_prod_cons const capacidad = ... var b1 : monitor begin buffer:array[1..capacidad] of dato; ent,sal:(1..capacidad); cuenta:(0..capacidad); puedeProducir,puedeConsumir:condition; procedure mdepositor(pDato dato){pblico} u begin if(cuenta=capacidad) then puedeProducir.wait; {se bloquea el proceso que intenta producir} buffer[ent]:=pDato; ent:=(ent mod capacidad)+1; cuenta:=cuenta +1; puedeConsiumir.signal; end; { mdepositor } procedure mconsumir(var cDato : dato){pblico} u begin if cuenta=0 then puedeConsumir.wait; cDato:=buffer[sal]; sal:=(sal mod capacidad)+1; cuenta:=cuenta -1; puedeProducir.signal; end; { mconsumir } {inicializacin} o ent:=1; sal:=1; cuenta:=0; end;{m_prod_cons}

62

Sistemas Operativos - 0.5.0

4.4 Soluciones software para la exclusin mutua o send(buzon,mensaje) receive(buzon,mensaje). 2. Copia: El intercambio de mensajes entre dos procesos, por denicin, transere el o contenido del mensaje desde el espacio de direcciones del emisor al espacio de direcciones del receptor. Esto puede lograrse copiando todo el mensaje de un espacio de direcciones a otro, o bien, simplemente, pasando un puntero al mensaje entre los dos procesos, en otras palabras, la transferencia del mensaje puede ser por valor o por referencia. En sistemas distribuidos que no disponen de memoria compartida la copia es inevitable mientras que en sistemas centralizados el compromiso est a entre seguridad y eciencia. 3. Intercambio s ncrono vs intercambio as ncrono: Cuando un intercambio de mensajes es s ncrono, tanto el emisor como el receptor deben proceder juntos para completar la transferencia. En sistemas s ncronos la operacin de env es bloqueante, o o es decir, cuando un proceso emisor desea enviar un mensaje para el que no se ha emitido el correspondiente receive() por parte del proceso receptor. El emisor quedar bloqueado hasta que el receptor acepte el mensaje. Como consecuencia slo a o puede haber un mensaje pendiente como mximo por cada emisor/receptor . En el a intercambio as ncrono de mensajes, el emisor no queda bloqueado cuando no hay un receive() pendiente. El env en un sistema as o ncrono se implementa haciendo que el SO almacene temporalmente los mensajes pendientes hasta que se emita el correspondiente receive(). Como resultado, el proceso emisor puede continuar su ejecucin despus de enviar un mensaje y no necesita quedar bloqueado. o e Un problema comn a ambas implementaciones es el aplazamiento indenido que u tiene lugar cuando un mensaje se env pero nunca se recibe. Una aproximacin a o para resolver este problema consiste en especicar un l mite de tiempo dentro del cual debe completarse un intercambio de mensajes particulares. 4. Longitud: La ultima cuestin en cuanto al diseo de los mensajes es si stos de o n e ber tener una longitud ja o variable. Los mensajes de tamao jo producen an n generalmente una baja carga de proceso en virtud de que permiten que los buers del sistema sean tambin de tamao jo, lo que hace su asignacin bastante sencie n o lla y ecaz. El problema es que los mensajes utilizados para comunicacin tienen o tamaos variados, con lo que los diferentes tamaos debern ser adaptados a un n n a unico tamao jo con el consiguiente desaprovechamiento de parte del espacio para n los mensajes ms cortos. a

4.4.6.

Soluciones hardware para la exclusin mutua o

Antes de discutir estrategias hardware espec cas debemos indicar que todas ellas pueden caracterizarse de forma genrica como, esencialmente, pesimistas u optimistas. e Las estrategias pesimistas tienden a suponer el peor caso y a defenderse contra l e tomando mediadas relativamente drsticas que terminan por limitar la concurrencia del a sistema.

http://alqua.org/libredoc/SSOO

63

4 Programacin Concurrente o Algoritmo 14 Implementacin del problema de Productores/Consumidores utilizando o mensajes


program prod_cons_mensj type mensaje =

record...;

const capacidad = ...; nulo = ...; {mensaje vaco} var i : integer process productorX var pmsj : mensaje begin while true do begin receive(puedeProducir,pmsj); pmsj:=producir(); send(puedeConsumir,pmsj); <resto de cdigo> o end; end; process consumidorZ var cmsj : mensaje; begin while true do begin receive(puedeConsumir,cmsj); consumir(cmsj); send(puedeProducir,cmsj); <resto de cdigo> o end; end; {proceso general} begin crear_buzon(puedeProducir); crear_buzon(puedeConsumir); for i:=1 to capacidad do: send(puedeProducir,nulo); {inicializamos a nulo} initiate productor1 [...] productorn consumir1 [...] consumidorn end; end;

64

Sistemas Operativos - 0.5.0

4.4 Soluciones software para la exclusin mutua o Suponiendo la actualizacin de una variable global compartida o de una variable seo mforo, una solucin pesimista t a o pica puede actuar del siguiente modo: 1. Bloquear todo aquello que presumiblemente puede interrumpir, de modo que nada pueda interferir. 2. Actualizacin de la variable global. o 3. Desbloqueo de la parte del sistema bloqueada en el primer paso. Las estrategias optimistas se basan en la suposicin de que lo probable es que no o haya conicto o que se experimenten muy pocos por parte de los usuarios del recurso compartido. Consiguientemente se suelen consentir referencias bastante permisivas a los datos compartidos. Cuando se presumen conictos las estrategias optimistas mantienen la integridad del sistema descartando las actualizaciones invalidadas por los procesos concurrentes contendientes, esto generalmente implica una parcial vuelta atrs en el estado del sistema a y rehacer parte de las actualizaciones afectadas. Una solucin optimista t o pica puede estructurarse del siguiente modo: 1. Lectura de la variable global y preparacin de la actualizacin local tentativa bao o sada en ese valor de forma que la variable global permanece durante ese tiempo accesible a los restantes usuarios. 2. Comparar el valor actual de la variable global con el valor utilizado para preparar la actualizacin tentativa. Si el valor de la variable global no ha sido modicado o se estar en condiciones de aplicar la actualizacin local tentativa a la variable a o global, en caso contrario, es decir si la variable global ha sido modicada mientras tanto haciendo que quede obsoleta la actualizacin preparada se descartar dicha o a actualizacin tentativa y deber repetirse el paso 1. o a Primera solucin: habilitacin/deshabilitacin de interrupciones o o o La idea bsica de este mecanismo sigue el principio de que el recurso debe ser obtenido a en exclusividad por el proceso que desea entrar a su seccin cr o tica y posteriormente liberado para su uso por el resto de procesos. Esto puede conseguirse mediante la siguiente secuencia: DI; deshabilitar interrupciones seccin crtica o EI; habilitar interrupciones El propsito de deshabilitar interrupciones es evitar cualquier interferencia de interrupo cin durante la seccin cr o o tica. Este mecanismo resulta sencillo pero implementa una losof pesimista en cuanto que impide toda concurrencia cada vez que un proceso va a a utilizar un recurso compartido. De esta forma se deshabilita no slo a los procesos o

http://alqua.org/libredoc/SSOO

65

4 Programacin Concurrente o que compiten para acceder al recurso, sino tambin a todos los procesos restantes que e nada tienen que ver con ellos. Adems este mecanismo no es en absoluto adecuado para a sistemas multiprocesadores donde no garantiza la exclusin mtua. o u Instruccin Comprobar y Fijar (Test and Set) o Esta instruccin est pensada para dar soporte hardware directo a la exclusin mutua. o a o Est diseada para resolver conictos entre procesos contendientes haciendo posible que a n solo uno de ellos reciba permiso para entrar en su seccin cr o tica. La idea bsica es jar a una variable de control global al valor libre cuando est disponible el recurso compartido e asociado a ella. Cada proceso que desee acceder a este recurso debe obtener el correspondiente permiso ejecutando la instruccin Test and Set con la variable de control asociada o como operando. el funcionamiento de la instruccion Test and Set es como sigue: TS operando; 1. Se compara el valor del operando con ocupado y se modican los cdigos de cono dicin correspondientes para que reejen el resultado de esta comparacin. o o 2. Si el estado del operando es libre entonces TS lo pone a ocupado. Una caracter stica fundamental es que los dos pasos descritos se realizan en una unica operacin indivisible. o Vemos la implementacin de la operacin wait de los semforos con una sentencia TS. o o a wait: TS S BNF1 wait RETURN Instruccin Comparar e Intercambiar (compare and swap) o La instruccin compare and swap (CS) sigue una estrategia optimista para resolver o el problema de la exclusin mutua. Esta instruccin no est pensada para implementar o o a directamente operaciones de semforos, sino para la actualizacin consistente de variables a o globales en presencia de actividad concurrente. CS tiene tres operandos. Un registro que contiene el valor de la variable global en el cual se basa la actualizacin tentativa (VIEJOREG). o Un registro que contiene la actualizacin tentativa (NUEVOREG). o La direccin de la variable global en cuestin (VARGLOB). o o CS consta de las siguiente secuencia de pasos que se ejecuta como una operacin unica o e indivisible: Veamos un ejemplo de uso con TS, otro con CS
1

BNF es Branch if Not Free (saltar si no est ocupado) a

66

Sistemas Operativos - 0.5.0

4.4 Soluciones software para la exclusin mutua o

Algoritmo 15 Actualizacin consistente de variables globales en actividad concurrente o CS VIEJOREG, NUEVOREG, VARGLOB

COMPARA VIEJOREG,VARGLOB FIJA LOS CDIGOS DE CONDICIN O O SI VIEJOREG==VARGLOB VARGLOB=NUEVOREG SI NO VIEJOREG=VARGLOB

Algoritmo 16 Ejemplo de uso con TS #la actualizacin tentativa suma 3 o T&S: TS mutex BNF T&S MOVE ACC,suma ADD ACC, #B MOVE suma, ACC MOVE mutex,1

Algoritmo 17 Ejemplo de uso con CS #la actualizacin tentativa suma 3 o T&S: TS mutex BNF T&S MOVE ACC,suma ADD ACC, #B MOVE suma, ACC MOVE mutex,1

http://alqua.org/libredoc/SSOO

67

4 Programacin Concurrente o El problema de la cena de los lsofos o Tenemos una cena muy especial a la que hemos invitado a la cena de los lsofos, o que o comen o piensan, pero nunca a la vez. El problema es que les hemos preparado espaguetis y necesitan dos tenedores para comer, pero slo le han colocado uno. El lsofo o o que consiga un tenedor de un compaero, podr comer. n a La implementacin es como sigue: o Algoritmo 18 Cena de Filsofos o program cenaFilosofos var tenedor : array[1..4] of semaforoBinario; {nmero de filsofos} u o i : integer; process filosofo(i:integer) begin while true do begin wait (tenedor[i]); wait (tenedor[(i+1) mod 4]); comer; signal (tenedor[i]); signal (tenedor[(i+1) mod 4]); pensar; end; end; begin for (i==1 to 4) do tenedor[i]==1; parbegin filosofo(1); . . . filosofo(4) parend end;

Si los cuatro lsofos cogen sus tenedores a la vez, se quedarn interbloqueados. Para o a resolver este problema, dejaremos slo n 1 lsofos a la mesa. De esta forma, siempre o o habr al menos uno que pueda comer. Cmo afecta esto a la implementacin? Aadimos a o o n un semforo general para controlar los lsofos que entran en la habitacin. a o o

68

Sistemas Operativos - 0.5.0

4.4 Soluciones software para la exclusin mutua o

Algoritmo 19 Cena de Filsofos con habitacin o o program cenaFilosofos var tenedor : array[1..4] of semaforoBinario; {nmero de filsofos} u o i : integer; habitacion : semaforoGeneral;

process filosofo(i) begin while true do begin wait (habitacion); wait (tenedor[i]); wait (tenedor[(i+1) mod 4]); comer; signal (tenedor[i]); signal (tenedor[(i+1) mod 4]); signal (habitacion); pensar; end; end; begin habitacion = 3; for (i==1 to 4) do tenedor[i]==1; parbegin filosofo(1); . . . filosofo(4) parend end;

http://alqua.org/libredoc/SSOO

69

4 Programacin Concurrente o ejercicio propuesto en un sistema tenemos tres procesos A,B y C. La regin cr o tica de cada proceso consiste simplemente en escribir soy el proceso X. Queremos conseguir que el orden de ejecucin sea el siguiente: ABC, ABC, ABC, ABC, ABC. o (eso es lo que ha de salir por pantalla).

70

Sistemas Operativos - 0.5.0

4.4 Soluciones software para la exclusin mutua o Algoritmo 20 Solucin al ejercicio propuesto ABC para los procesos a, b y c o program Ejabc var a,b,c : semaforoBinario; procedure PA begin while true do begin wait(a); printf("Soy A"); signal(b); end; end; procedure PB begin while true do begin wait(b); printf("Soy B"); signal(c); end; end; procedure PC begin while true do begin wait(c); printf("Soy C"); signal(a); end; end; begin a=1; b=0; c=0; parBegin PA; PB; PC; parend end; http://alqua.org/libredoc/SSOO 71

4 Programacin Concurrente o

72

Sistemas Operativos - 0.5.0

5 Interbloqueos
5.1. Principios de interbloqueo

Una situacin de interbloqueo tiene lugar cuando ninguno de los procesos que compiten o por los recursos del sistema o interactan entre s puede avanzar por carecer de algn u u recurso o esperar a que se produzca algn tipo de evento. u

5.1.1.

Recursos reutilizables

Un recurso reutilizable es aquel que puede ser utilizado por un proceso y no se agota por hacer uso del mismo, los procesos obtienen unidades de estos recursos y tras utilizarlas las liberan para que puedan ser reutilizadas por otros procesos. Como ejmplos de recursos reutlizables tenemos el procesador, la memoria principal y los dipositivos E/S.

5.1.2.

Recursos consumibles

Un recurso consumible es aquel que puede ser producido y consumido. Normalmente no hay l mite en el nmero de recursos consumibles de un tipo particular. As un proceso u productor podr liberar cualquier nmero de recursos consumibles. Las unicas restrica u ciones en este sentido vendrn impuestas por la capacidad de almacenamiento temporal a del sistema. Cuando un proceso consume un recurso de este tipo la parte consumida queda excluida del sistema. Ejemplos t picos son: interrupciones, seales y mensajes. n A continuacin veremos una secuencia que muestra la posibilidad de interbloqueo entre o procesos que utilizan recursos consumibles. P1 recibir(P2,M) enviar(P2,M) P2 recibir(P1,M) enviar(P1,M) A continuacin veremos otra secuencia que produce interbloqueo entre procesos que o utilizan recursos reutilizables. P1 solicitar(A) solicitar(B)

73

5 Interbloqueos

P2 solicitar(B) solicitar(A)

5.1.3.

Condiciones de interbloqueo

Deben darse tres condiciones para que se produzca interbloqueo 1. Que exista acceso a algn recurso en exclusin mutua. u o 2. Que un proceso pueda retener los recursos que le han sido asignados mientras espera que se le asignen los que necesitan. 3. Que ningn proceso pueda ser obligado a abandonar los recursos que retenga. u Estas tres condiciones de interbloqueo son condiciones necesarias pero no sucientes, es decir, pueden producirse tales situaciones y que el sistema no evolucione a un interbloqueo1 . Para que se produzca interbloqueo, debe darse una cuarta condicin que consiste en o la existencia de una cadena cerrada de procesos donde cada uno de los cuales retiene al menos un recurso de los que necesita el siguiente proceso de la cadena para continuar su ejecucin. A esta condicin se le denomina espera circular. o o

5.2.

Prevencin de interbloqueos o

La estrategia de prevencin consiste, a grandes rasgos, en disear un sistema de manera o n que est excluida a priori la posibilidad de interbloqueo. Los mtodos para prevenir e e interbloqueos son de dos tipos: Mtodos indirectos; que consisten en prevenir o impedir la aparicin de alguna de e o las tres condiciones iniciales de interbloqueo. Mtodos directos; que consisten en evitar la aparicin del c e o rculo vicioso de espera, es decir, la cuarta condicin. o A continuacin se examinarn las tcnicas empledas para impedir cada una de las cuatro o a e condiciones. 1. Condicin de exclusin mutua: No puede anularse, ya que si el acceso a un recurso o o requiere exclusin mutua, el SO debe soportarlo. o 2. Retencin y espera: Puede prevenirse exigiendo que todos los procesos soliciten too dos los recursos que necesitan a un tiempo y bloqueando al proceso hasta que todos los recursos puedan concedrsele simultneamente. Esta solucin resulta ineciente e a o por dos factores:
1

De hecho, estas tres situaciones se dan con mucha frecuencia de forma natural.

74

Sistemas Operativos - 0.5.0

5.3 Deteccin de interbloqueos o a) En primer lugar, un proceso puede estar bloqueado durante mucho tiempo esperando que se le concedan todas sus solicitudes de recursos cuando, de hecho, podr haber avanzado con slo alguno de los recursos. a o b) Los recursos asignados a un proceso pueden permanecer sin usarse durante periodos considerables de tiempo durante los cuales se priva a otros procesos de acceder a estos recursos. 3. Condicin de No Apropiacin: Esta condicin puede prevenirse de varias formas: o o o a) Si a un proceso que retiene ciertos recursos, se le deniega una nueva solicitud, dicho proceso deber liberar los recursos que pose y solictarlos de nuevo a a 2. junto con el recurso que le ha sido denegado b) Si un proceso solicita un recurso que est retenido por otro proceso, el SO a puede expulsar al segundo proceso y exigirle que libere el recurso. Este ultimo esquema evita el interbloqueo slo si dos procesos no pueden tener la misma o prioridad con respecto a la posesin de un recurso. o 4. C culo vicioso de espera: Esta condicin puede prevenirse deniendo una ordenao cin lineal en los tipos de recursos. Si a un proceso se le han asignado recursos o de tipo R slo podr realizar peticiones posteriores sobre los recursos de los tipos o a siguientes a R en la ordenacin. Para implementar esta estrategia se asocia un o ndice a cada tipo de recurso de forma que si un proceso solicita el recurso Ri y a continuacin el recurso Rj debe cumplirse que i < j. o

5.3.

Deteccin de interbloqueos o

Las estrategias de deteccin de interbloqueos no limitan el acceso a los recursos ni o restringen las acciones de los procesos como ocurr con las estrategias de prevencin de a o interbloqueos, mediante las estrategias de deteccin de interbloqueos se concedern los o a recursos que los procesos necesitan siempre que sea posible. Peridicamente el SO ejecuta o un algoritmo que permite detectar la condicin de c o rculo de espera. Los algoritmos de deteccin ms comunmente utilizados son algoritmos basados en grafos dirigidos. El o a control del interbloqueo puede llevarse a cabo tan frecuentemente como las solicitudes de los recursos o con una frecuencia menor, dependiendo de la probabilidad de que se produzca interbloqueo. La comprobacin en cada solicitud de recurso tiene dos ventajas: o Conduce a una pronta deteccin. o El algoritmo es relativamente simple puesto que est basado en cambios incremena tales del estado del sistema.

Esta parece la ms interesante de las dos. a

http://alqua.org/libredoc/SSOO

75

5 Interbloqueos Por otro lado, la frecuencia de comprobacin consume un tiempo de CPU considerable. o Una vez detectado el interbloqueo alguna estrategia de recuperacin, las siguientes o tcnicas son posibles enfoques enumerados por orden de sosticacin. e o 1. Abandono de todos los procesos bloqueados: esta es la tcnica ms utilizada por e a los SSOO. 2. Retroceder cada proceso interbloqueado hasta algn punto de control denido u previamente y volver a ejecutar todos los procesos. El riesgo de esta solucin es que o puede volver a producirse el interbloqueo inicial, sin embargo el no determinismo del procesamiento concurrente posibilita que esto no vuelva a ocurrir. 3. Abandonar sucesivamente los procesos bloqueados hasta que deje de haber interbloqueo. Para ello, se seguir un criterio de m a nimo coste. Despus de abandonar e cada proceso se debe ejecutar de nuevo el algoritmo de deteccin para ver si todav o a existe interbloqueo. 4. Apropiacin sucesiva de recursos hasta que deje de haber interbloqueo por parte de o alguno de los procesos. Se debe emplear tambin una solucin basada en el coste y e o hay que ejecutar de nuevo el algoritmo de deteccin despus de cada apropiacin. o e o Un proceso que pierda un recurso porque otro se lo apropie deber retroceder hasta a un momento anterior a la adquisicin de este recurso. o Para las dos ultimas estrategias, el criterio de seleccin podr ser uno de los siguientes o a consistentes en escoger el proceso con: 1. La menor cantidad de tiempo de procesador consumido hasta el momento. Se aplica el criterio de m nimo coste ya que el proceso hay que repetirlo. 2. Menor nmero de l u neas de salida producidas hasta el momento. 3. Mayor tiempo restante estimado. 4. Menor nmero de recursos asignados hasta el momento. u 5. Prioridad ms baja. a El algoritmo de deteccin de interbloqueo no se ejecuta cada vez que un proceso solicita o un recurso, sino con una frecuencia menor.

5.4.

Prediccin de interbloqueo. Algoritmo del banquero o

En la prediccin de interbloqueo, se decide dinmicamente si la peticin actual de o a o un recurso podr de concederse, llevar potencialmente a un interbloqueo. La predica, cin de interbloqueo necesita, por tanto, conocer las peticiones futuras de recursos. A o continuacin describiremos los dos enfoques para la prediccin del interbloqueo. o o

76

Sistemas Operativos - 0.5.0

5.4 Prediccin de interbloqueo. Algoritmo del banquero o

5.4.1.

Negativa de iniciacin de procesos o

Este enfoque consiste en no iniciar un proceso si sus demandas de recursos pueden llevar a un interbloqueo. Consideremos un sistema con n procesos activos y m tipos diferentes de recursos. Deniremos los vectores y matrices siguientes: R1 . 1. Vector de recursos : VR = . denota Ri denota la cantidad del recursos i . Rm que hay en el sistema. AV1 . 2. Vector de recursos disponibles: AVR = . donde AVi denota la cantidad . AVm de recurso i disponible en un momento dado en el sistema. C11 Cn1 . . donde C la exigencia mxima que .. . 3. Matriz demanda CR = . a ij . . . C1m Cnm el proceso i tiene del recursos j 3 . A11 An1 . . donde A denota la cantidad de .. . 4. Matriz de asignacin AR = . o ij . . . A1m Anm recurso j que tiene el proceso i en un instante determinado. Es decir, el total Ai1 . recursos que tiene asignado un proceso vendr dado por el vector AiR = . a . Aim donde i identica al proceso. Despus de denir estas matrices y vectores, deben cumplirse las siguientes condiciones. e
n u 1. j [1, m] k=1 Akj + AVj = Rj . El n mero de unidades de un recurso es la suma de las unidades utilizadas y las unidades ociosas.

de

2. i [1, n] , k [1, m] Cik Rk . La demanda de ningn proceso sobre ningn u u recurso puede superar la cantidad del recurso. 3. i [1, n] , k [1, m] Aik Cik . Ningn proceso puede tener asignada ms u a cantidad de un recurso que la que especica su demanda mxima. a

Se lee por columnas: La columna 1 indica las exigencias mximas del recurso1 respecto de todos los a recursos. Se lee por las: La la 1 indica la exigencia de todos los procesos sobre el recurso 1.

http://alqua.org/libredoc/SSOO

77

5 Interbloqueos Teniendo en cuenta estas restricciones, un proceso n + 1 slo puede arrancarse si o


n+1

j [1, m]
k=1

Ckj Rj

en palabras; la suma de las demandas mximas de todos los procesos (incluido el a candidato a nuevo) en relacin a un recurso no debe superar nunca la cantidad de ese o recurso en el sistema. De esta forma, nos aseguramos de que en el peor de los casos (todos piden demanda mxima) todos podrn ser satisfechos. a a ejercicio propuesto en un sistema tenemos tres procesos A,B y C. La regin cr o tica de cada proceso consiste simplemente en escribir soy el proceso X. Queremos conseguir que el orden de ejecucin sea el siguiente: ABC, CAB, ABC, CAB, ABC. o (eso es lo que ha de salir por pantalla).

Algoritmo 21 Algoritmo para el ejercicio propuesto

5.4.2.

Negativa de asignacin de recursos o

Esta estrategia tambin se denomina algoritmo de Banquero y fue propuesta por prie mera vez por Dijkstra. Se comienza deniendo los conceptos de estado y estado seguro. El estado de un sistema en un momento dado es simplemente la asignacin actual de o recursos a los procesos, as pues, el estado estar formado por los vectores de recursos a y de recursos disponibles, y por las matrices de demanda y asignacin denidas preo viamente. Teniendo esto en ecuenta, un estado seguro es un estado en el cual existe al menos un orden en que todos los procesos pueden ejecutar hasta el nal sin generar un interbloqueo. Un estado inseguro es, lgicamente, todo estado que no sea seguro. o Ejemplo Supongamos el siguiente sistema con las matrices y vectores de recursos y procesos que siguen: P1 P2 P3 P4 P1 P2 P3 P4 R1 0 R1 9 3 6 3 4 R1 1 6 2 0 ; AR = ; AVR = R2 1 ; R = R2 3 2 1 1 2 R2 0 1 1 0 R3 1 R3 6 2 3 4 2 R3 0 2 1 2

R CR = 1 R2 R3

Podemos comprobar que las restricciones que se impon ms atrs se cumplen. an a a Es un estado seguro? De momento, vemos que P1 no podr continuar ya que a requiere 3 unidades del recurso R1 y ste no puede ofrecrselas. P2 s puede contie e nuar y cuando termine, liberar sus recursos dejando la matriz de disponibles en a R1 6 AVR = R2 2 . Ahora P1 s puede ejecutarse sin problemas y al terminar libera R3 3

78

Sistemas Operativos - 0.5.0

5.4 Prediccin de interbloqueo. Algoritmo del banquero o sus recursos. Ahora P3 tambin puede ejecutarse y de nuevo, al terminar, libera e sus recursos utilizados, permitiendo a P4 ejecutarse y terminar. Como hemos encontrado un camino por el que todos los procesos se ejecutan al nal de un tiempo, estamos ante un estado seguro. La estretegia de prediccin de interbloqueo consiste en asegurar que el sistema est o e siempre en un estado seguro. Para conseguir esto, cuando un proceso realiza una solicitud de un recurso o de un conjunto de r ecursos, se supone que la solicitud se le concede, a continuacin se actualiza el estado del sistema para que reeje la nueva situacin y se o o determina si en esa nueva situacin, el sistema se encuentra en un estado seguro. Si el o estado es seguro se concede la solicitud, mientras que si no lo es, el proceso solicitante es bloqueado hasta que concederle los recursos lleve a un estado seguro.

http://alqua.org/libredoc/SSOO

79

5 Interbloqueos

80

Sistemas Operativos - 0.5.0

6 Gestin de memoria o
6.1. Reubicacin o

El trmino reubicabilidad de programa se reere a la capacidad de cargar y ejecutar e un programa determinado en una posicin arbitraria de memoria en contraposicin a un o o conjunto jo de posiciones especicadas durante la compilacin de dicho programa. Las o instrucciones de un proceso cargado en memoria contendrn referencias a posiciones de a memoria de dos tipos: 1. Referencias a datos empleados en instrucciones de carga, almacenamiento y algunas instrucciones aritmtico-lgicas. e o 2. Referencias a otras instrucciones empleadas fundamentalmente en bifurcaciones de control de ujo o en instrucciones de llamadas. Ambos tipos de direcciones no sern jas durante todo el periodo de permanencia del a proceso en el sistema, sino que pueden variar si el proceso es suspendido y cargado posteriormente en memoria o, simplemente, si es desplazado dentro de sta. e Distinguiremos, pues, entre dos tipos de direcciones: 1. Una direccin lgica o virtual es un identicador utilizado para referenciar informao o cin dentro del espacio de direcciones de un programa y, por tanto, es independiente o de la asignacin actual de datos a memoria debindose realizar una traduccin a o e o direccin f o sica antes de poder realizar un acceso a memoria. 2. Una direccin f o sica o absoluta designa una posicin real de memoria f o sica donde se almacena informacin en tiempo de ejecucin o o Dependiendo de cmo y cundo tenga lugar la traduccin del espacio de direcciones o a o virtuales al espacio de direcciones f sicas en un esquema de reubicacin determinado, o pueden considerarse dos tipos bsicos de estrategias: Reubicacin esttica y reubicacin a o a o dinmica. a Reubicacin esttica Implica generalmente que la reubicacin es realizada antes o duo a o rante la carga del proceso en memoria. Las constantes (valores literales), los desplazamientos relativos al PC, no dependen de esta condicin y no necesitan ser o ajustados durante la reubicacin. o

81

6 Gestin de memoria o Reubicacin dinmica Implica que la correspondencia entre el espacio de direcciones o a virtuales y el espacio de direcciones f sicas se efecta en tiempo de ejecucin. Usualu o mente con asistencia del hardware. Cuando el proceso en cuestin est siendo ejeo a cutado, todas sus referencias a memoria son reubicadas durante la ejecucin antes o de acceder realmente a la memoria f sica. Este proceso se suele implementar por medio de registros base especializados. A continuacin veremos el mecanismo hardware que posibilita tanto la reubicacin dio o nmica como la proteccin. Esta ultima consiste en impedir el acceso de un proceso a a o un espacio de direcciones que no le corresponde. El registro base contiene la direccin de carga del proceso y el registro l o mite contiene la ultima direccin correspondiente al espacio de memoria asignado al proceso. o
Dir. relativa CODIGO Reg. base sumador Dir. fisica Reg. limite comparador
Mecanismo de proteccion

DATOS

PILA

Interrupcion al sistema operativo

Figura 6.1: Esquema Hardware que da soporte a... de direcciones

6.2.

Asignacin de memoria con particiones jas o

En la mayor de los esquemas de gestin de memoria se puede suponer que el SO a o ocupa una parte de la memoria principal y que el resto de la memoria est disponible a para ser utilizada por los procesos de usuario. El esquema ms sencillo de gestin de la a o memoria es dividirla en regiones con l mites jos. Una posibilidad es emplear particiones jas de igual tamao, en este caso cualquier proceso con tamao menor o igual al tamao n n n de la particin puede cargarse en cualquier particin libre, si todas las particiones estn o o a ocupadas el SO puede sacar un proceso de alguna de ellas y cargar otro. La utilizacin o de particiones jas plantea dos dicultades: 1. Un programa puede ser demasiado grande para caber en una particin, en ese caso o el programador debe disear el programa mediante superposiciones para que solo n

82

Sistemas Operativos - 0.5.0

6.2 Asignacin de memoria con particiones jas o una parte del programa este en memoria principal en cada instante. Cuando se n necesita un mdulo que no esa presente el programa de usuario debe cargar dicho o mdulo en la particin del programa superponindolo a los programas y datos que o o e se encuentren en l. e 2. El uso de la memoria principal es extremadamente ineciente, ya que cualquier programa sin importar lo pequeo que sea ocupar una particin completa. Este n a o fenmeno donde se desperdician espacio interno de una particin porque el bloque o o de proceso que es ms pequeo que ella se denomina fragmentacin interna. a n o Con particiones del mismo tamao la ubicacin de un proceso en memoria resulta trivial. n o Puesto que todas las particiones son de igual tamao no importa que particin se utilice n o y se eligir siempre la primera libre que se encuentre. Los problemas que presenta el uso a de particiones jas de igual tamao pueden reducirse aunque no solventarse por medio n del uso de particiones de distintos tamaos. El uso de estas particiones proporciona un n cierto grado de exibilidad a las particiones jas, adems ambos tipos de esquema de a particin ja son relativamente simples y exigen un software de SO y una sobrecarga de o proceso m nimos. Con particiones de distinto tamao hay dos maneras posibles de asignar los procesos n a las particiones: 1. La forma ms simple es asignar cada proceso a la particin ms pequea en la que a o a n quepa, en este caso hace falta una cola de planicacin para cada particin. Esta o o cola albergar a los procesos cuyo destino es dicha particin. La ventaja de este a o enfoque es que los procesos se asignan de una forma en la que se desperdicia el menor espacio de memoria posible, sin embargo aunque esta tcnica parec ptima e o desde el punto de vista de una partcin individual no lo es desde el punto de vista o del sistema global ya que puede darse la situacin de que existan particiones sin o utilizar que podr ser aprovechadas por procesos que esperan en las colas de an planicacin de las particiones a las que han sido asignados. o 2. Consiste en seleccionar la particin ms pequea disponible que pueda albergar al o a n proceso. La utilizacin de particiones jas ya sean de igual o distintos tamaos plantea los sio n guientes problemas: El nmero de particiones especicadas en el momento de la generacin del sistema u o limita el nmero de procesos activos en dicho sistema. u Puesto que los tamaos de particin se programan en el momento de la generacin n o o del sistema los trabajos pequeos no hacen un uso eciente del espacio de las n particiones en un entorno en el que los requisitos bsicos de almacenamiento de a todos los procesos se conocen de antemano puede ser una tcnica razonable, pero e en la mayor de los casos es ineciente. a

http://alqua.org/libredoc/SSOO

83

6 Gestin de memoria o

6.3.

Asignacin de memoria con particiones dinmicas o a

En este esquema las particiones van a ser variables en nmero y longitud. Cuando se u trae un proceso a memoria se le asigna exactamente tanta memoria como necesita y no ms. a
S.O P1 P2 P3 128 k 320 k P2 suspendido 224 k 288 k P4 entra S.O P1 P4 Libre P3 Libre 64 k Libre 128 k 320 k 128 k 96 k 288 k P1 termina P2 reanuda P4 Libre P3 64 k Libre S.0 P2 libre 224 k 96 k 128 k 96 k 288 k 64 k

Figura 6.2: Fragmentacin de memoria o

Como muestra este ejemplo, a medida que pasa el tiempo, la memoria empieza a estar fragmentada y el rendimiento decae. A este fennemo se le denomina fragmentacin o o externa y se reere al hecho de que la memoria externa a todas las particiones se fragmenta cada vez ms. Una tcnica para superar esta fragmentacin es la compactacin a e o o o defragmentacin que consiste en desplazar los procesos para que estn contiguos de o e forma que toda la memoria libre est junta en un bloque. La compactacin requiere e o adems la capacidad de reubicacin dinmica, es decir, se debe poder mover un proceso a o a de una regin a otra de memoria principal sin invalidar sus referencias a memoria. o A la hora de ubicar procesos en memoria atae al diseador del SO decidir cmo se n n o va a llevar a cabo esta ubicacin. Los tres algoritmos que se pueden considerar son: o 1. El Mejor Ajuste (Best Fit): Lo que se hace es elegir el bloque con tamao ms n a parecido al solicitado. 2. El Primer Ajuste (First Fit): Se recorre la memoria desde el principio y se escoge el primer bloque disponible que sea sucientemente grande. 3. El Siguiente Ajuste (Next Fit): Es similar a El Primer Ajuste pero se recorre la memoria desde el lugar de la ultima ubicacin. o

6.4.

Asignacin de memoria con paginacin simple o o

Tanto las particiones estticas como las dinmicas hacen un uso ineciente de la mea a moria. Las primeras generan fragmentacin interna mientras que las segundas generan o fragmentacin externa. o Supongamos la memoria principal particionada en trozos iguales de tamao jo ren lativamente pequeos y que cada proceso est dividido tambin en pequeos trozos de n a e n

84

Sistemas Operativos - 0.5.0

6.4 Asignacin de memoria con paginacin simple o o tamao jo e igual a los de memoria. En tal caso, los trozos del proceso conocidos como n pginas pueden asignarse a los trozos libres de memoria conocidos como marcos o marcos a de pgina. a
SO A0 A1 A2 A3 B0 B1 B2 B3 C0 C1 C2 C3 Proceso D

Figura 6.3: Asignacin de memoria con paginacin simple; marcos y palabras o o

Supongamos que el proceso B termina su ejecucin y libera sus recursos de memoria. o Entonces llega el proceso D que requiere 5 pginas de memoria. No hay ningn problea u ma en asignarle los tres de B y dos del espacio libre. En este esquema la fragmentacin o interna constar slo de una fraccin del ultimo marco de pgina ocupado por el proa o o a ceso y adems no existe fragmentacin externa puesto que siempre seremos capaces de a o aprovechar los huecos. En los esquemas de particin de memoria basados en particiones jas, las direcciones o f sicas se obten sumando las virtuales a la direccin de carga del proceso. En el an o esquema de gestin de memoria con paginacin, sin embargo, ya no ser suciente con o o a un simple registro para la traduccin de direcciones. En su lugar, el SO mantiene una o tabla de pginas para cada proceso. Cada una de estas tablas contiene una entrada por a cada pgina del proceso por lo que se indexarn de forma fcil mediante el nmero de a a a u pginas comenzando siempre por la pgina 0. En cada entrada de la tabla de pginas a a a se encuentra el nmero del marco de memoria que alberga la pgina correspondiente. u a Adems, el SO mantiene una lista de marcos libres con todos los marcos de memoria a que actualmente estn vac y disponibles para las pginas. a os a Dentro del programa cada direccin lgica constar de un nmero de pgina y un o o a u a desplazamiento dentro de la pgina y ser tambin el hardware del procesador el que se a a e encargue de realizar la traduccin de direcciones lgicas a direcciones f o o sicas. Para aplicar convenientemente este esquema de paginacin, el tamao de pgina y, por o n a tanto, el temao de marco, deben ser una potencia de 2.En este caso, la direccin relativa n o denida en relacin a la direccin de carga del proceso y la direccin lgica expresada o o o o

http://alqua.org/libredoc/SSOO

85

6 Gestin de memoria o como un nmero de pgina y un desplazamiento son las mismas. u a


Dir Virtual n pgina Desplazamiento n Marco Desplazamiento

puntero a la direccin de carga de la tabla de pgina

Desplazamiento Marco

n de Marco PROGRAMA n pag MEM principal HW de PAGINACIN

Figura 6.4: Esquema hardware para la paginacin o

Supongamos un sistema donde se emplean direcciones de 16 bits siendo el tamao de n pgina de 1k palabras. Con este tamao de pgina se necesitan 10 bits para el campo a n a de desplazamiento y los 6 restantes determinan el nmero de pgina. De esta forma, la u a capacidad total de la memoria es de 64 kpalabras. Las consecuencias de utilizar un tamao de pgina potencia de 2 son las siguientes: n a 1. El esquema de direccionamiento lgico es transparente al programador, al montador o y al ensamblador. Cada direccin lgica de un proceso ser, as idntica a su o o a , e direccin relativa. o 2. Resulta relativamente sencillo realizar una funcin hardware para llevar a cabo o la traduccin de direcciones dinmicas en tiempo de ejecucin. Consideramos una o a o direccin de d = n + m bits en la que los n bits ms signicativos corresponden al o a nmero de pgina y los m bits menos signicativos corresponden al desplazamiento u a dentro de la pgina. Para la traduccin de direcciones hay que dar los siguientes a o pasos: a) Obtener el nmero de pgina a partir de los bits de la direccin lgica. u a o o b) Emplear ese nmero de pgina como u a ndice en la tabla de pginas del proceso a para determinar el marco k en que se alberga la pgina. a

86

Sistemas Operativos - 0.5.0

6.5 Asignacin de memoria con segmentacin simple o o c) El comienzo de la direccin f o sica del marco k ser k 2m1 y la direccin f a o sica de la palabra referenciada ser este nmero ms el desplazamiento determia u a nado por los m bits menos signicativos de la direccin lgica. o o As pues, la paginacin simple tal como se ha descrito es similar a la utilizacin de parti o o ciones jas de idntico tamao con la diferencia de que las particiones son ms pequeas, e n a n un proceso puede ocupar ms de una particin y las particiones correspondientes a un a o proceso no tienen porqu estar contiguas. A modo de resumen, mediante la paginacin e o simple, la memoria principal se divide en pequeos marcos del mismo tamao. Cada n n proceso se divide en pginas del tamao del marco. Cuando un proceso se carga en a n memoria, se cargan todas sus pginas en marcos libres y se rellena su tabla de pginas. a a A continuacin veremos el esquema hardware que permite realizar la traduccin de o o direcciones virtuales a f sicas. gura 04

6.5.

Asignacin de memoria con segmentacin simple o o

En segmentacin, un programa y sus datos asociados se dividen en un conjunto de sego mentos. No se impone que todos los segmentos de todos los programas tengan la misma longitud aunque s existe una longitud mxima de segmento. Como en paginacin, una a o direccin lgica segmentada consta de dos partes: nmero de segmento y desplazamiento o o u dentro del segmento. Como consecuencia del empleo de segmentos de distinto tamao, n la segmentacin resulta similar al esquema de asignacin de memoria con particiones o o dinmicas. La diferencia con ste radica en que con segmentacin un programa puede a e o ocupar ms de una particin y stas no tiene por qu estar contiguas. a o e e La segmentacin elimina la fragmentacin interna pero sufre de fragmentacin extero o o na, sin embargo, debido a que los procesos se dividen en un conjunto de partes ms a pequeas la fragmentacin externa ser menor. Mientras que la paginacin es transpan o a o rente al programador, la segmentacin es generalmente visible y se proporciona como una o comodidad para la organizacin de programas y datos. Normalmente, el programador o asigna los programas y datos a distintos segmentos. Otra consecuencia del tamao desigual de los segmentos es que no hay una corresponn dencia simple entre direcciones lgicas y direcciones f o sicas. Un esquema de segmentacin o har uso de una tabla de segmentos para cada proceso y una lista de bloques libres en a memoria principal. Cada entrada de la tabla de segmento deber contener la direccin a o de comienzo del segmento correspondiente en memoria principal y tambin la longitud e del mismo para asegurar el uso de direcciones vlidas. Cuando un proceso pasa al estado a de ejecucin se carga la direccin de su tabla de segmentos en un registro especial del o o hardware de gestin de memoria. o Considerando una direccin lgica formada por n + m bits, los n bits ms signio o a cativos indican el nmero de segmento mientras que los m bits restantes indicar el u an desplazamiento. Para la traduccin de direcciones hay que dar los siguientes pasos: o

En nuestro ejemplo, tendr amos una secuencia de 0,1024,2048,...

http://alqua.org/libredoc/SSOO

87

6 Gestin de memoria o 1. Extraer el nmero de segmento de los n bits ms signicativos de la direccin u a o lgica. o 2. Emplear ese nmero de segmento como u ndice en la tabla de segmentos del proceso para determinar la direccin f o sica de comienzo del segmento. 3. Comparar el desplazamiento expresado por los m bits menos signicativos con la longitud del segmento. Si el desplazamiento es mayor que la longitud la direccin o no es vlida. a 4. La direccin f o sica nal ser la suma de la direccin f a o sica de comienzo de segmento ms el desplazamiento. a
Dir Virtual n pgina Desplazamiento

Comparador < Dir Base


puntero a la direccin de carga de la tabla de Segmentos

Base

Tamao

PROGRAMA MEM principal HW de SEGMENTACIN

Figura 6.5: Asignacin de memoria con segmentacin simple o o

En este caso habr que sumar ya que cada segmento tendr tamao variable no ser a a n a obligatorio que comience en una potencia de 2.

6.6.
6.6.1.

Memoria virtual
Estructuras Hardware y de control

Las caracter sticas fundamentales del avance introducido por el empleo de tcnicas de e paginacin o segmentacin son, fundamentalmente, dos. o o 1. Todas las referencias a memoria dentro de un proceso son direcciones lgicas que o se traducen dinmicamente a direcciones f a sicas en tiempo de ejecucin. o 2. Un proceso puede dividirse en varias partes y no es necesario que estas partes se encuentren contiguas en memoria principal durante la ejecucin. o

88

Segmentacin

Sistemas Operativos - 0.5.0

6.6 Memoria virtual Si estas dos caracter sticas estn presentes, no ser necesario que todas las pginas o sega a a mentos del proceso estn en memoria principal durante la ejecucin. Este es el concepto e o que da pie a lo que se conoce como Memoria Virtual. Denominaremos conjunto residente del proceso a la parte de dicho proceso que est a realmente en memoria principal. Cuando el proceso se ejecute todo ir bien mientras a las referencias a memoria estn en posiciones pertenecientes al conjunto residente. Si e el procesador encuentra una direccin lgica que no se ubica en memoria principal se o o produce lo que se denomina un fallo de pgina y se genera la correspondiente interrupcin a o para que el SO bloquee al proceso y tome el control. El SO se encargar de traer a a memoria principal el fragmento de proceso que contiene la direccin lgica que provoc o o o el fallo de pgina. Una vez que este fragmento del proceso se ha cargado en memoria a principal, el proceso bloqueado est en condiciones de continuar su ejecucin y se pasa a o al estado de Listo o Preparado. Las dos implicaciones principales de la utilizacin de memoria virtual son las siguientes: o 1. Se puede mantener un mayor nmero de procesos en memoria principal. u 2. Resulta posible que un proceso sea ms grande que toda la memoria principal. De a esta forma se elimina una de las limitaciones ms notoria de la programacin. a o Como los procesos para ejecutar necesitan estar cargados en memoria principal, a esta memoria tambin se la denomina memoria real. Sin embargo, el programador o usuario e percibe en potencia una memoria mucho mayor que es la memoria secundaria. A esta memoria tambin se la denomina Memoria Virtual. e

6.6.2.

Hiperpaginacin y cercan de referencias o a

En un estado estable, prcticamente toda la memoria principal estar ocupada con a a fragmentos de procesos, por lo que el procesador y el SO tendrn acceso directo a la a mayor cantidad de proceso posible. As pues, cuando el SO traiga a memoria un fragmento, es posible que no exista en memoria principal espacio para alojarlo. En esta situacin el SO deber elegir un o a fragmento de igual o superior tamao para ser expulsado a memoria secundaria y crear n as el espacio necesario para alojar al nuevo fragmento. Si el fragmento expulsado va a ser referenciado justo despus de su expulsin, deber ser traido a memoria de forma e o a inmediata. Demasiados intercambios de fragmentos entre memoria principal y secundaria conducen a lo que se denomina hiperpaginacin o thrashing. o Estos argumentos se basan en el principio de cercan de referencias que arma que a las referencias a los datos y al cdigo del proceso tienden a agruparse y, por tanto, reo sulta vlida la suposicin de que durante periodos cortos se necesitarn slo unos pocos a o a o fragmentos del proceso. Adems ser posible hacer predicciones inteligentes sobre qu a a e fragmentos de un proceso se necesitarn en un futuro cercano y evitar as la hiperpagia nacin. o

http://alqua.org/libredoc/SSOO

89

6 Gestin de memoria o

6.6.3.

Memoria virtual con paginacin y buer de traduccin adelantada o o (TLB)

El trmino Memoria virtual se asocia normalmente con sistemas que emplean pagie nacin. Cuando se considera un esquema de memoria virtual basado en paginacin se o o necesita la misma estructura que en paginacin simple, es decir, la tabla de pginas. En o a este caso, sin embargo, las entradas de la tabla de pginas pasan a ser ms complejas a a puesto que slo algunas de las pginas de un proceso pueden estar en memoria principal. o a Se emplear un bit en cada entrada de la tabla para indicar si la pgina correspondiente a a est en memoria principal o no. Si el bit indica que la pgina se encuentra en memoria, a a la entrada incluir tambin el nmero de marco en el que se encuentra ubicada dicha a e u pgina. A este bit se le conoce como bit de presenciaI (P). a Otro bit de control necesario es el bit de modicacin (M) que indicar si el contenido o a de la pgina correspondiente se ha alterado desde que la pgina se carg en memoria a a o principal. Si no ha habido cambios, no ser necesario escribir la pgina cuando sea a a sustituida en el marco que ocupa actualmente. Cada referencia a una direccin virtual puede generar dos accesos a memoria. o 1. Para obtener la entrada de la tabla de pginas correspondiente. a 2. Para obtener el dato deseado. As pues, se podr tener el efecto de doblar el tiempo de acceso a memoria. Para solu a cionar este problema, la mayoria de los esquema de memoria virtual hacen uso de una cach especial para las entradas de las tablas de pginas llamada buer de traduccin e a o adelantada (Translation Lookaside Buer). Esta cach contiene aquellas entradas de las e tablas de pginas utilizadas hace menos tiempo. Dada una direccin virtual, el procea o sador examinar primero el TLB. Si la entrada de la tabla de pgina est presente, se a a a obtiene el nmero de marco y se forma la direccin real. Por el contrario, si no se enu o cuentra la entrada de la tabla de pgina buscada, el procesador emplea el nmero de a u pgina para buscar en la tabla de pginas del proceso. Si se encuentra activo el bit de a a presencia es que la pgina est en memoria principal y el procesador puede obtener el a a nmero de marco para formar la direccin real. El procesador, adems, actualiza el TLB u o a para incluir esta nueva entrada de la tabla de pginas. a Por ultimo, si el bit de presencia no est activo, se produce un fallo de pgina. En este a a punto se abandona el mbito hardware y se invoca al SO para cargar la pgina necesaria a a y actualizar la tabla de pginas. a

6.6.4.

Software del SO para la gestin de memoria virtual o

Pol ticas de lectura La pol tica de lectura (FETCH) est relacionada con la decisin de cundo se debe a o a cargar una pgina en memoria principal. Sus dos opciones ms comunes son la paginacin a a o por demanda y la paginacin previa: o

90

Sistemas Operativos - 0.5.0

6.6 Memoria virtual La paginacin por demanda consiste en traer una pgina a memoria principal slo o a o cuando se hace referencia a una posicin de esta pgina. o a En paginacin previa se cargan adems de la pgina demandada, pginas secuencialo a a a mente consecutivas a ella. El principal atractivo de esta estrategia est en aprovechar el a tiempo de bsqueda de la pgina demandada en memoria secundaria. Una vez enconu a trada, slo tendremos que esperar un tiempo correspondiente a la latencia de giro del o dispositivo de almacenamiento para acceder a las pginas secuencialmente contiguas. a Pol ticas de ubicacin o La pol tica de ubicacin tiene que ver con determinar dnde va a residir una parte o o del proceso en memoria principal. En un sistema de segmentacin puro, la pol o tica de ubicacin es un aspecto muy importante de diseo, teniendo como posibles alterantivas o n las pol ticas de mejor ajuste, primer ajuste y siguiente ajuste. Pol ticas de reemplazo Cuando todos los marcos de memoria principal estn ocupados y es necesario traer a a memoria una nueva pgina para atender un fallo de pgina, al pol a a tica de reemplazo se encarga de seleccionar la pgina a reemplazar de entre las que se encuentren actualmente a en memoria. Todas las pol ticas tienen como objetivo que la pgina a reemplazar sea la a que tenga una menor probabilidad de ser referenciada en un futuro cercano. En la pol tica de reemplazo se encuentran involucrados conceptos interrelacionados como los siguientes: 1. Nmero de marcos de pgina a asignar a cada proceso activo. u a 2. Si el conjunto de pginas candidatas para el reemplazo debe limitarse a las del a proceso que provoc el fallo de pgina o abarcar a todos los marcos de pginas o a a a situadas en memoria principal. 3. De entre el conjunto de pginas candidatas, la pgina que debe elegirse en particular a a para el reemplazo. Algunos de los marcos de memoria principal pueden estar bloqueados. Cuando un marco se encuentra bloqueado, la pgina cargada actualmente en l no puede ser reemplazada. a e La mayor del ncleo del SO as como las estructuras de control son albergados en a u marcos bloqueados. Para estudiar algunas de las pol ticas de algoritmos de reemplazo vamos a considerar un caso donde un proceso hace referencia hasta a cinco pginas distintas y el SO permite a una asignacin constante de tres marcos por proceso. La cadena de referencia a las o pginas durante la ejecucin del programa es la siguiente: a o 2 3 2 1 5 2 4 5 3 2 5 2

La primera pol tica que vamos a ver es la Pol tica Optima. Esta Pol tica selecciona

http://alqua.org/libredoc/SSOO

91

6 Gestin de memoria o para reemplazar la pgina que tiene que esperar ms tiempo hasta que se produzca la a a referencia siguiente. Se puede demostrar que esta pol tica genera el menor nmero de u fallos de pgina, sin embargo, este algoritmo resulta imposible de implementar porque a requiere que el SO tenga un conocimiento exacto de los sucesos futuros. De todas formas, sirve como estndar para comparar los otros algoritmos. a
2 2 3 2 3 2 2 3 1 2 3 1 4 4 3 5 FALLO 5 4 3 5 3 4 3 5 2 4 2 5 FALLO 5 2 3 5 FALLO 5 4 2 5 2 4 2 5 2 2 3 5

Figura 6.6: Esquema de Pol tica Optima para el caso propuesto

LRU (Last Recently Used): este algoritmo reemplaza la pgina de memoria que no ha a sido referenciada desde hace ms tiempo. Debido al principio de cercan de referencias, a a sta deber ser la pgina con menor probabilidad de ser referenciada en el futuro. La e a a pol tica LRU ana casi tanto como la pol tica ptima pero plantea una gran dicultad o de implementacin. o
2 2 3 2 3 2 2 3 1 2 3 1 4 2 5 4 FALLO 5 2 5 4 3 2 3 4 FALLO 2 2 3 4 5 2 5 1 FALLO 5 2 3 5 FALLO 2 2 3 5 2 2 5 1

Figura 6.7: Esquema de Pol tica LRU para el caso propuesto

FIFO: La Pol tica FIFO trata los marcos asignados a un proceso como un buer

92

Sistemas Operativos - 0.5.0

6.6 Memoria virtual circular y las pginas se suprimen de memoria segn la tcnica de espera circular Rounda u e Robin. Todo lo que se necesita un puntero que circula a travs de los marcos del proceso. e Resulta, por tanto, una de las pol ticas de reemplazo ms fciles de implementar. La a a lgica que hay detrs de esta eleccin, adems de su sencillez, es reemplazar la pgina o a o a a que ha estado ms tiempo en memoria. a
2 2 3 2 3 2 2 3 1 2 3 1 4 5 2 4 FALLO 5 5 2 4 3 3 2 4 FALLO 2 3 2 4 5 5 3 1 FALLO 5 3 5 4 FALLO 5 2 1 FALLO 2 3 5 2 FALLO 2

Figura 6.8: Esquema de Pol tica FIFO para el caso propuesto

Pol tica del Reloj: La forma ms simple de esta pol a tica requiere asociar un bit adicional a cada marco, denominado bit de uso. Cuando se cargue una pgina por primera vez, a este bit se pone a 0 y cuando se hace referencia posteriormente a la pgina el bit de uso se a pone a 1. Para el algoritmo de reemplazo de pginas, el conjunto de marcos candidatos a a ser reemplazado se considera como un buer circular con un puntero asociado. El alcance es local si los candidatos son de un solo proceso y global si procede de toda la memoria. Cuando llega el momento de reemplazar una pgina, el SO recorre el buer buscando un a marco con el bit de uso a 0, eligiendo para reemplazar el primero que encuentre. Cada vez que se encuentra un marco con el bit de uso a 1, se pone a 0.

http://alqua.org/libredoc/SSOO

93

6 Gestin de memoria o

2 2

3 2 3

2 2* 3

1 2* 3 1

5 2 3 1 FALLO 5 2* 5* 3

2 2* 5 1 2 2* 5* 3

4 2* 5 4 FALLO

5 2* 5* 4

3 2 5 3 FALLO

2 2* 5 3

Figura 6.9: Esquema de Pol tica del Reloj para el caso propuesto

94

Sistemas Operativos - 0.5.0

Indice alfabtico e
acceso en exclusin mutua, 48 o Algoritmo de Banquero, 78 arquitectura Von Neuman, 2 bit de modicacin, 90 o bit de presencia, 90 bit de uso, 93 bloque de control de proceso, 28 buer de traduccin adelantada, 90 o buzones, 60 cdigos de condicin, 3 o o conjunto residente del proceso, 89 conmutacin de procesos, 31 o contador de programa, 4 divisin implicita de tareas, 16 o division explicita de tareas, 16 El Mejor Ajuste, 84 El Primer Ajuste, 84 El Siguiente Ajuste, 84 espera circular, 74 estado bloqueado, 20, 21 estado de ejecucin, 21 o estado listo, 20, 21 estado nuevo, 21 estado preparado, 21 estado terminado, 21 Event-Driven, 42 fallo de pgina, 89 a familia de procesos, 17 FCFS, 39 fragmentacin externa, 84 o fragmentacin interna, 83 o grado de multiprogramacin, 12 o interbloqueo, 50 llamadas al sistema, 1 Matriz de asignacin, 77 o Matriz demanda, 77 memoria principal, 2 MLQ, 43 multiprogramacin, 12 o multitarea, 12 paginacin por demanda, 91 o paginacin previa, 91 o palabra de estado del programa, 4 palabras de control, 4 Planicacin por colas MultiNivel, 43 o planicador, 35 Pol tica Optima, 91 prcoeso suspendido, 23 proceso, 15 proceso de sistema, 17 proceso de usuario, 16 produtividad, 35 Puntero de pila, 3 puntero de pila, 4 Puntero de segmento, 3 Registro ndice, 3 registro base, 82 registro de estado, 4 registro de instruccin, 4 o registro l mite, 82 registros de cdigos de condicin, 3 o o registros de control y estado, 4

95

INDICE ALFABETICO registros de datos, 3 registros de direccin, 3 o reubicacin dinmica, 82 o a reubicacin esttica, 81 o a Round-Robin, 39 seccion cr tica, 47 sistemas multiprocesadores, 45 Tablas de memoria, 27 Test and Set, 66 unidad unidad unidad unidad aritmtico-lgica, 2 e o central de proceso, 2 de control, 2 de Entrada/Salida, 2

Vector de recursos, 77 Vector de recursos disponibles, 77

96

Sistemas Operativos - 0.5.0

Historia
0.5.0 - 15 de abril de 2004 Primera versin pblica a partir de los materiales y las clases preparados por o u Antonio Reinoso. Las siguientes tareas merecen atencin, a juicio de los editores y autores: o Ampliar el tema de Programacin concurrente o Mejorar algunas guras Incorporar una bibliograf a

97

Historia

98

Sistemas Operativos - 0.5.0

Creative Commons Deed


Attribution-NonCommercial-ShareAlike 1.0: Key License Terms
Attribution. The licensor permits others to copy, distribute, display, and perform the work. In return, licensees must give the original author credit. Noncommercial. The licensor permits others to copy, distribute, display, and perform the work. In return, licensees may not use the work for commercial purposes unless they get the licensors permission. Share Alike. The licensor permits others to distribute derivative works only under a license identical to the one that governs the licensors work. Whoever has associated this Commons Deed with their copyrighted work licenses his or her work to you on the terms of the Creative Commons License found here: Legal Code (the full license) This is not a license. It is simply a handy reference for understanding the Legal Code (the full license) - it is a human-readable expression of some of its key terms. Think of it as the user-friendly interface to the Legal Code beneath. This Deed itself has no legal value, and its contents do not appear in the actual license. Creative Commons is not a law rm and does not provide legal services. Distributing of, displaying of, or linking to this Commons Deed does not create an attorney-client relationship. Learn how to distribute your work using this license

99

Creative Commons Deed

100

Sistemas Operativos - 0.5.0

Maniesto de Alqua
Origen y metas del proyecto
En 1999 fundamos el proyecto Alqua con el objetivo de promover la creacin de un o fondo de documentos libres de carcter cient a co que permita a cualquiera aprender con libertad. Al constatar la duplicacin de esfuerzos en la preparacin de materiales didcticos o o a para la f sica y con el deseo de compartir nuestros conocimientos, nos inspiramos en los principios de libertad que rigen el movimiento del software libre para establecer aqullos de Alqua. Primero pensamos que lo que escribisemos deber poder disfrutarse e e a sin merma de libertad por las personas interesadas, y ms tarde decidimos organizar a nuestros esfuerzos para ayudar a otras personas que compart nuestra visin a difundir an o sus saberes mediante un esfuerzo cooperativo. Para hacer efectivos dichos principios decidimos que los documentos publicados deben ser libres en un sentido amplio: pueden reproducirse y distribuirse (gratuitamente o no, es irrelevante) pero tambin pueden modicarse y usarse como base para otros trabajos. e A n de evitar que estas libertades del lector-autor se restrinjan posteriormente, los documentos contienen una licencia que explica los derechos que posee y estipula que nadie que distribuya el documento, modicado o no, puede hacerlo de modo no libre.

Las ventajas de los documentos libres


Actualmente es ilegal compartir o modicar la mayor del conocimiento cient a co en fuentes impresas, que suelen ser inaccesibles para la mayor de los estudiantes y a bibliotecas del mundo en virtud de su precio y se actualizan con poca frecuencia debido a su sistema de distribucin tradicional. o En este contexto los documentos libres presentan ciertas ventajas. Por una parte, en algunas disciplinas los documentos libres permiten facilitar el establecimiento de un sistema de mrito reduciendo las barreras de precio y disponibilidad. e El modelo de desarrollo libre para la ciencia se apoya sobre las libertades de distribucin o y modicacin. Estas se ven favorecidas por el medio digital, as como por la concepcin o o del conocimiento como un patrimonio comunitario. Todo lo anterior permite reducir el coste del documento a una cantidad marginal y anima a que lo mejor se combine con lo mejor para producir un resultado excelente a la vez que actualizado. Por otra parte, en casos donde la evaluacin del mrito es ms subjetiva, los documeno e a tos libres pueden aportar una base sobre la que elaborar con un menor esfuerzo diferentes perspectivas doctrinales o estticas, mutaciones, iteraciones y apuestas que incentivan la e

101

Maniesto de Alqua creacin como un aspecto ms del disfrute de la obra. o a En suma, los documentos libres fomentan un acceso a la cultura ms justo y coma pleto. Para algunos dominios del conocimiento cient co el proceso de desarrollo libre facilita la recombinacin, lo que permite la produccin de obras muy sosticadas y como o pletas mientras que en otros mbitos facilita la difusin de perspectivas plurales y la a o experimentacin creativa. o

Una nueva dinmica de creacin y aprendizaje a o


Algunas personas que hemos conocido estn interesadas por este modelo de colaboa racin, pero se preguntan qu clase de control tienen sobre sus documentos libres. La o e respuesta es sencilla: la licencia est diseada de modo que a cada cual se le atribuya a n aquello de lo que es responsable y nada ms. Para ello, se incluye en el documento una a seccin en la que se explica quin hizo qu y cundo lo hizo. o e e a Uno de los efectos ms interesantes de introducir los documentos libres en el aula es a que difuminan la frontera entre quien aprende y quien ensea. Los documentos libres son n un puente para establecer contacto con una comunidad de inters mucho ms vasta que la e a del centro educativo, permitiendo el aprendizaje continuo y fomentando una experiencia plural y transformadora: el criterio para participar en un documento es, solamente, hacerlo bien. Un autor puede pensar que distribuir su documento bajo un copyright que restringe la libertad de copia es ms rentable que otorgar mayores libertades. Esto no es necesaa riamente as por varias razones. , En primer lugar, libre no quiere decir gratuito. Una editorial puede publicar un documento libre obteniendo benecio de ello. De hecho, es una buena idea hacerlo dado lo agradable que resulta manejar un libro bien encuadernado. Tambin los autores pueden e aceptar una compensacin de los lectores por su trabajo en un determinado documento. o En segundo lugar, la mayor parte de los autores son primeramente lectores. Cabe esperar, pues, que para la mayor el enorme ahorro derivado del acceso a muchos documentos a libres supere holgadamente el benecio econmico obtenido de unos pocos documentos o no libres. La experiencia del software libre lo avala. Finalmente, no se puede poner precio al benecio social derivado de la existencia de documentos libres. Gracias a los derechos que uno posee sobre un documento libre puede adaptarlo para un curso acadmico eliminando lo que no es pertinente o es demasiado e avanzado y complementando el tema con nuevas aportaciones, desde ejercicios o diagramas hasta apartados enteros. Pensamos que las universidades u otras instituciones educativas podr cumplir mejor an su funcin social poniendo a disposicin de la sociedad que las nancia, en condiciones o o de libertad, su patrimonio ms importante: el conocimiento. a El modelo de cooperacin que proponemos (que anima al trabajo en equipo aunque no o lo impone) permite abrir todas estas perspectivas y algunas ms. Alqua intenta ofrecer a los medios para esta tarea y relacionar, a travs de los documentos libres, a los que tienen e saberes que comunicar y a los que sienten curiosidad por dichos saberes.

102

Sistemas Operativos - 0.5.0

Maniesto de Alqua

Conclusin o
Alqua tiene una tarea muy ilusionante y tan ambiciosa que slo es factible en comuo nidad. Por ello, pedimos a las personas que forman parte de instituciones o empresas que colaboren con Alqua para que stas apoyen econmicamente el proyecto o patrocie o nen ediciones impresas y donaciones a las bibliotecas pblicas. Ciertamente, los medios u materiales son necesarios, pero intiles si, a nivel particular, no contamos con tu partiu cipacin como individuo, aprendiendo y enseando, para que los documentos libres en o n marcha y otros nuevos alcancen los altos niveles de calidad a los que aspiramos. Te invitamos a construir un patrimonio cient co que nos pertenezca a todos. Versin 2.0, marzo de 2003 o http://alqua.org/maniesto Copyright (C) Alvaro Tejero Cantero y Pablo Ruiz Mzu quiz, 2003. This work is licensed under the Creative Commons Attribution-NoDerivs License. To view a copy of this license, visit http://creativecommons.org/licenses/bynd/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

http://alqua.org/libredoc/SSOO

103

Maniesto de Alqua

104

Sistemas Operativos - 0.5.0

El proyecto libros abiertos de Alqua


El texto que sigue es una explicacin de qu es y cmo se utiliza un libro abierto o e o y contiene algunas recomendaciones sobre cmo crear un libro abierto a partir de un o documento de Alqua. Si ests leyendo estas pginas como anexo a otro documento, ste a a e es casi con seguridad un documento libre de Alqua; libre en el sentido descrito en el maniesto de Alqua y las directrices para documentos libres de Alqua . Si has obtenido dicho documento en un centro pblico, como una biblioteca, entonces es adems un libro u a abierto de Alqua.

Qu son los libros abiertos e


Los libros abiertos son ediciones impresas de los documentos libres de Alqua que se pueden obtener en las bibliotecas u otros centros pblicos. La particularidad de los u libros abiertos no reside en qu contienen (el contenido es el mismo que el de los libros e descargados de la red) sino en cmo pueden utilizarse. o Al igual que los usuarios de Alqua a travs de la red forman una comunidad de e inters que aprende colectivamente leyendo los documentos, discutiendo sobre ellos y e modicndolos para adaptarlos a propsitos muy variados, los lectores de una bibliotea o ca constituyen tambin una comunidad. El ciclo de vida de un documento libre es de e constante realimentacin: las nuevas versiones son le o das, corregidas o quiz bifurcadas, a lo que conduce a la publicacin de nuevas versiones listas a su vez para un nuevo ciclo o del proceso. Por qu no abrir esa dinmica a la participacin de comunidades que no se e a o articulan en torno a la red?. No todos disponen del tiempo o los medios para participar efectivamente en el proceso de mejora de los documentos a travs de la red, que es la e aportacin diferencial ms importante de los libros libres respecto a los no libres. Por ello o a queremos poner a disposicin de las bibliotecas libros abiertos que faciliten lo siguiente: o El acceso de personas sin recursos informticos al conocimiento que su estudio a proporciona. La posibilidad de contribuir a la mejora de dichos documentos por parte de la ampl sima comunidad de lectores de las bibliotecas, sin otro medio que un lpiz o a una pluma. La formacin de grupos de inters locales: compartir a travs de un documento o e e libre puede compartir su proceso de aprendizaje con personas interesadas por temas anes.

105

El proyecto libros abiertos de Alqua La constitucin, hasta en los centros que cuentan con una nanciacin ms dbil, de o o a e un fondo de documentos libres que cubra reas del conocimiento que su presupuesto a no permite afrontar.

Cmo puedo contribuir a los libros abiertos? o


Slo tienes que utilizarlos como si fuesen tuyos, pero recordando que compartes tu o experiencia de aprendizaje con otras personas. Por ejemplo, contrariamente a lo que har con cualquier otro libro de la biblioteca as puedes escribir en los mrgenes de los libros abiertos tus propios comentarios: correca ciones, aclaraciones, bibliograf relacionada... Intenta hacerlo ordenadamente, de modo a que no interrumpa la lectura. Si quieres compartir algn razonamiento ms largo, puedes utilizar tus propias hojas u a e incorporarlas al nal del documento, poniendo una nota donde corresponda. En este caso, no olvides rmar tu contribucin con un nombre o seudnimo y, opcionalmente, o o una direccin de correo electrnico u otra forma de contacto. o o Cualquiera que pueda participar a travs de la red puede incorporar tus contribucioe nes a la versin que se distribuye en l o nea, con la ayuda de la comunidad de Alqua. De esta manera abrimos el mecanismo de colaboracin a los lectores que no estn acoso a tumbrados al ordenador o preeren no usarlo. La rma permite atribuir la autor en a el caso de que los cambios se incorporen y establecer contacto al respecto. Damos por hecho que al escribir tus aportaciones en un libro abierto ests de acuerdo con que sean a libremente utilizadas (en el sentido descrito en las directrices para documentos libres ya mencionadas) y por lo tanto incorporadas a las sucesivas versiones digitales. Los libros abiertos pueden ser editados de modo que se puedan separar sus hojas porque no hay inconveniente en que stas sean fotocopiadas: no tenemos que usar la encuadere nacin como un modo de evitar la reproduccin, puesto que no slo no la prohibimos o o o sino que animamos a ella. Por tanto, una vez que obtengas un ejemplar en prstamo e puedes llevar contigo slo la parte que ests utilizando. o e Como lector, tu ayuda es necesaria no slo para mejorar los documentos, sino para o que existan: hace falta imprimir, encuadernar y donar a una biblioteca un documento libre de Alqua para que se convierta en un libro abierto. Quienes tengan acceso a una impresora pueden ayudar a que los libros abiertos perduren en la biblioteca sustituyendo las partes deterioradas por el uso y actualizando peridicamente el documento impreso. Para facilitar la tarea a continuacin proponeo o mos un sistema de encuadernacin modular. o

Cmo puedo publicar un libro abierto? o


Los pasos para publicar un libro abierto son los siguientes: 1. Imprimir la versin ms actualizada del documento tal cual se distribuye en la o a pgina web de Alqua, http://alqua.org a

106

Sistemas Operativos - 0.5.0

El proyecto libros abiertos de Alqua 2. Conseguir una encuadernacin modular sugerimos un archivador de anillas con o una ventana o de portada transparente. Ello permite llevar consigo slo la parte o del libro que se est usando y aadir hojas con nuevas contribuciones. a n 3. Encuadernar el libro y situar el t tulo, el autor y la clasicacin decimal universal o en su lomo y tapas. 4. Si puedes, adjuntar al archivador una copia del CD-ROM de documentos libres de Alqua . 5. Donarlo a la biblioteca y comunicar a Alqua la edicin, escribiendo a librosabiero tos@alqua.org . Se trata de un proceso sencillo al alcance tanto de particulares como de bibliotecas y otras instituciones, con un coste marginal que no se ver signicativamente incrementado a por la conservacin y actualizacin puesto que se puede mantener la encuadernacin y o o o sustituir solamente las pginas impresas. a

En conclusin o
El proyecto libros abiertos, consecuencia de los principios establecidos en el maniesto de Alqua , persigue dotar a las bibliotecas de un fondo amplio y asequible de documentos libres y a la vez facilitar la participacin de los usuarios en el proceso creativo del que o son fruto. Tu ayuda es esencial para que el proyecto alcance estos objetivos. (C) Alvaro Tejero Cantero, 2003. This work is licensed under the Creative Commons Attribution-NoDerivs License. To view a copy of this license, visit http://creativecommons.org/licenses/bynd/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

http://alqua.org/libredoc/SSOO

107

Sistemas Operativos
Pablo Ruiz Mzquiz u

descripcin o
Este documento trata los conceptos fundamentales de los sistemas operativos. Se explica su desarrollo histrico y se abordan la gestin y planicacin de o o o procesos, la programacin concurrente a un nivel o introductorio y el anlisis de la gestin de memoria. a o

requisitos
Manejo elemental de un ordenador Conocimiento bsicos de hardware. a

http://alqua.org/libredoc/SSOO Aprende en comunidad - http://alqua.org

otros documentos libres


Variedades, tensores y f sica - Optica electromagntica - Ecuaciones e diferenciales ordinarias - Introduccin a la f o sica cuntica, segunda a parte - Redes y sistemas - Sistemas Operativos - Geometr simplctia e ca - F sica del lser - Anlisis funcional - Geograf general de Espaa a a a n (en preparacin). o http://alqua.org/libredoc/

alqua,madeincommunity

Vous aimerez peut-être aussi