You are on page 1of 538

SISTEMAS OPERATIVOS: TEORiA Y PROBLEMAS

No esta permitida la reproducci6n total 0 parcial de este libro, ni su tratamiento informatico, ni la transmisi6n de ninguna forma 0 cualquier medio ya sea electr6nico, por fotocopia, por registro u otro metodo, sin el permiso previo y por escrito de los editores y autores.

@ Joaquin Aranda Alamansa M." Antonia Canto Diaz

Jesus Manuel de la Cruz Garcia Sebastian Dormido Bencomo Carolina Mafioso Hierro

@ EDITORIAL SANZ Y TORRES, S.L.

Pinos Alta, 49 - 28029 Madrid Telefs.: 902400415 - 913148782 Fax: 91 323 1559

www.sanzytorres.com editorial@sanzytorres.com libreria@sanzytorres.com

ISBN: 84-88667-81-7

Dep6sito legal: M. 53.409-2002

Impreso por: EDIGRAFOS, S.A. c/ Volta 2. Poligono Industrial San Marcos 28906 Getafe (Madrid)

Contenido

Pr61ogo xiii

1 Introducci6n 1

1.1 (,Que es un sistema operativo? 3

1.1.1 Los sistemas operativos como maquinas virtuales 3

1.1.2 EI sistema operativo como gestor de recursos 5

1.2 Historia de los sistemas operativos 6

1.3 Conceptos fundamentales 9

1.3.1 Procesos 9

1.3.2 Gestion de Ia memoria y del sistema de archivos 10

1.3.3 Llamadas al sistema 10

1.3.4 Gestion y planificacion de los recursos II

1.3.5 Proteccion y seguridad de la informacion 12

1.4 Estructura de los sistemas operativos 13

1.5 Disefio e implementacion de sistemas operativos 15

1.6 Conclusiones 17

1.7 Cuestiones propuestas 18

1.8 Cuestiones resueltas 19

2 Gesti6n de procesos 23

2.1 Introduccion a los procesos 24

2.1.1 Ejemplo 25

2.1.2 Distincion entre programas y procesos 26

2.2 Relacion entre los procesos 27

2.3 Especificaci6n de los procesos 28

2.3.1 Ejemplo 1 28

2.3.2 Ejemplo 2 29

2.4 Estados de los procesos 31

viii

Sistemas Operatlvos: Teoria y Problemas

2.4.1 Transiciones entre los estados 32

2.5 EI bloque de control de procesos 33

2.5.1 Listas de procesos 34

2.6 Procesos y hebras 36

2.7 EI planificador de procesos 37

2.7.1 Algoritmos de planificaci6n 38

2.7.2 Criterios para la planificacion 39

2.7.3 Planificaci6n por expropiaci6n 40

2.7.4 Planificacion por prioridades 40

2.7.5 Planificacion FCFS: primero en llegar primero en ser servido 40

2.7.6 Planificaci6n SJF: primera tarea mas corta .41

2.7.7 Planificacion SRT: tiempo que queda mas corto 41

2.7.8 Planificaci6n RR: priori dad circular 41

2.7.9 Planificaci6n basada en el reloj de tiempo real 42

2.7.10 Planificaci6n MLQ: colas multinivel... 43

2.7.11 Planificaci6n MLFQ: colas multinivel con realimentaci6n 43

2.8 Conclusiones 45

2.9 Cuestiones propuestas 47

2.10 Problemas propuestos 49

2.11 Cuestiones resueltas 57

2.12 Problemas resueltos 68

3 Sincronizacion y comunlcaclon de procesos 101

3.1 Exclusi6n mutua 102

3.1.1 Ejemplo 1 102

3.1.2 Bloqueo mediante el uso de variables compartidas 1 04

3.1.3 Ejemplo 2 104

3.1.4 Ejemplo 3 107

3.1.5 Ejemplo d 108

3.1.6 Algoritmo de Peterson 108

3.1.7 Algoritmo de Dekker 110

3.2 Semaforos 113

3.2.1 Exclusi6n mutua con sernaforos 115

3.2.2 Ejemplo 5 116

3.2.3 Sincronizaci6n 117

3.2.4 Ejemplo6 118

3.2.5 Ejemplo 7 119

3.2.6 Version mas general de los sernaforos 122

3.3 Monitores 124

3.3.1 Sintaxis del monitor 126

3.3.2 Ejemplo 8 126

3.3.3 Ejemplo 9 127

3.3.4 Implementaci6n de un monitor 129

3.4 Mensajes 131

Contenido

ix

304.1 Modos de referenciar a los procesos 13 I

304.2 Modelos de sincronizaci6n 132

304.3 Almacenamiento y estructura del mensaje 134

3.4.4 Ejemplo 10 135

3.4.5 Ejemplo 11 137

3.5 Interbloqueo 140

3.5.1 Caracterizacion del interbloqueo 141

3.5.2 Prevenci6n de interbloqueos 141

3.5.3 Evitacion de los interbloqueos 143

3.5.4 Ejemplo 12 143

3.5.5 Deteccion de los interbloqueos 145

3.5.6 Recuperacion de interbloqueos 147

3.6 Conclusiones 149

3.7 Cuestiones propuestas 151

3.8 Problemas propuestos 152

3.9 Cuestiones resueltas 158

3.10 Problemas resueltos 167

4 Gesti6n de la memoria 207

4.1 Sistemas elementales de gesti6n de la memoria 209

4.2 Gestion de la memoria con particiones fijas 211

4.2.1 Principia de operacion 211

4.2.2 Ejemplo I 2 I 2

4.2.3 Intercambio 213

4.204 Archivo de intercambio 214

4.2.5 Reubicacion y proteccion 215

4.2.6 Seleccion del tamafio de la particion: fragmentacion de la memoria 217

4.3 Gestion de la memoria con particiones variables 219

4.3.1 Principio de operacion 219

4.3.2 Ejemplo 2 219

4.3.3 Sistemas de registro del uso de la memoria 221

4.3.4 Ejemplo 3 223

4.3.5 Analisis de la gesti6n de la memoria con particiones variables 225

4.4 Paginaci6n 227

404.1 Principio de operaci6n 227

4.4.2 Implementacion de las tab las de paginas 228

4.4.3 Cornparticion de paginas y protecci6n 231

4.5 Segmentaci6n 232

4.5.1 Principio de operaci6n 232

4.5.2 Protecci6n y compartici6n 235

4.5.3 Sistemas combinados de paginacion-segmentacion 235

4.6 Memoria virtual 237

4.6.1 Principio de operaci6n 237

4.7 Politicas de sustituci6n de paginas 241

x

Sistemas Operativos: Teoria y Problemas

4.7.1 Algoritmo de sustitucion FIFO: primero en entrar, primero en salir.. 241

4.7.2 Algoritmo de sustitucion optimo 242

4.7.3 Algoritmo de sustitucion LRU: la menos usada ultimamente 244

4.7.4 Algoritmo de sustitucion de la segunda oportunidad 245

4.7.5 Otros algoritmos de sustitucion 246

4.8 Politicas de asignacion 247

4.8.1 El modelo del conjunto de trabajo 248

4.9 Aspectos de disefio para los sistemas de paginacion 251

4.9.1 Tamafio de pagina 251

4.9.2 Prepaginacion 252

4.9.3 Frecuencia de fallos de paginas 252

4.10 Conclusiones 254

4.11 Cuestiones propuestas 256

4.12 Problemas propuestos 257

4.13 Cuestiones resueltas 266

4.14 Problemas resueltos 271

5 Gesti6n del sistema de archivos 297

5.1 Archivos 298

5.1.1 Tipos y estructuras de los archivos 299

5.1.2 Operaciones con los archivos 300

5.2 Directorios de archivos 306

5.2.1 Operaciones con directorios 309

5.3 Realizacion del sistema de archivos 312

5.3.1 Gestion del espacio libre 312

5.3.2 Metodo de asignacion contigua 314

5.3.3 Metodo de asignacion mediante listas enlazadas 315

5.3.4 Metodo de asignacion mediante indexacion 316

5.3.5 Algunos aspectos de disefio 317

5.3.6 Comparticion de archivos 318

5.4 Caches de disco 320

5.5 Seguridad y protecci6n 322

5.5.1 Integridad del sistema de archivos 322

5.5.2 Ataques a la integridad y seguridad del sistema de archivos 324

5.5.3 Principios de disefio de sistemas seguros 325

5.5.4 Identificacion de usuarios 326

5.6 Mecanismos de proteccion y control de acceso 328

5.6.1 Dominios de proteccion 328

5.6.2 Matriz de acceso 329

5.6.3 Lista de accesos 330

5.6.4 Lista de capacidades 330

5.7 Conclusiones 332

5.8 Cuestiones propuestas 333

5.9 Problemas propuestos 334

Contenido

xi

5.10 Cuestiones resueltas 341

5.11 Problemas resueltos 352

6 Gestion del sistema de entrada/salida 377

6.1 Controlador de EIS 382

6.1.1 Funciones del controlador de E/S 382

6.1.2 Estructura del controlador de E/S 384

6.1.3 Estructura del sistema de E/S 385

6.2 E/S controlada por programa 387

6.2.1 Ordenes de E/S 388

6.2.2 Instrucciones de E/S 389

6.2.3 Ejemplo 391

6.3 E/S controlada por interrupciones 392

6.3.1 Clasificacion de las interrupciones 396

6.4 Acceso directo a memoria (OMA) 397

6.4.1 Controlador de DMA 397

6.4.2 Transferencia de datos mediante DMA 399

6.5 Procesador de EIS (PElS) 402

6.5.1 Caracteristicas de los PElS 403

6.5.2 Clasificacion de los PE's 404

6.6 Gestion del sistema de EIS 406

6.6.1 Principios generales de disefio del sistema operativo 406

6.6.2 Estructura logica de la funcion de E/S 407

6.7 Buffers de EIS 411

6.7.1 Buffersimple 412

6.7.2 Buffer doble 413

6.7.3 Cornparacion de los tiempos de transferencia 413

6.8 Discos magneticos 415

6.8.1 Estructura ffsica 415

6.8.2 Ejemplo 418

6.8.3 Controlador del disco 418

6.9 Planificacion del disco 422

6.9.1 Planificacion FCFS: primero en llegar, primero en ser servido 422

6.9.2 Planificacion SSTF: primero la de menor tiempo de posicionamiento 423

6.9.3 Planificacion SCAN 423

6.9.4 Planificacion C-SCAN 424

6.9.5 Planificacion LOOK y C-LOOK 424

6.10 Conclusiones 426

6.11 Cuestiones propuestas 428

6.12 Problemas propuestos 431

6.13 Cuestiones resueltas 434

6.14 Problemas resueltos 442

xii

Sistemas Operativos: Teoria y Problemas

A Multiprocesadores y sistemas distribuidos .459

A.I Ventajas e inconvenientes de los sistemas distribuidos .461

A2 Hardware de los multiprocesadores 463

A.2.1 Multiprocesadores con bus compartido .463

A2.2 Sistemas conectados mediante barras cruzadas .464

A2.3 Sistemas conectados mediante una red de conmutacion multietapa .465

A.2.4 Conexiones hipercubo 466

A3 Sistemas operativos para multiprocesadores 468

A3.1 Clases de sistemas operativos para multiprocesadores .468

A.3.2Gesti6n de los recursos 469

A.4 Redes de computadores 471

A.4.1 Topologia de las redes 471

A4.2 Protocolos de comunicacion y el modelo de referencia OS1 .4 73

A.4.3 Redes locales 475

A.4.4 Redes de area extensa 476

AS Tipos de sistemas operativos para sistemas distribuidos 479

A.5.1 Sistemas operativos de redes 479

A.5.2 Sistemas operativos realmente distribuidos 480

A.5.3 Algunas consideraciones para el disefio 481

A.6 Servicios remotos , 483

A.6.1 Mecanismo de Hamada a procedimientos remotos .483

A.7 Gestion de procesos distribuidos 486

A.7.l Ordenacion de sucesos 486

A.7.2 Exclusion mutua 488

A.7.3 Bloqueos 491

A 7.4 Sistemas de archivos distribuidos .496

A. 7.5 Un sistema comercial de archivos distribuidos: NFS .496

A.7.6 E1 sistema de archivos Andrew 499

A.8 Conclusiones SOl

Bibliografia 503

Glosario 507

indice 517

Prologo

Objetivos

EI objetivo besico del libro es ofrecer una desctipcion, 10 mas completa posible, de los conceptos fundamentales de los sistemas operativos.

Un computador sin el "software" es una rnaquina sin utilidad, necesita de programas que Ie permitan gestionar bases de datos, realizar complicados calculos matematicos, ayudar en el diseiio, procesar irnaqenes, comunicarse con computadores situados en cualquier parte del mundo y todas aquellas tareas que estamos acostumbrados que realicen. Pero un computador es un sistema complejo que se compone de procesadores, memoria central, discos, terminales, conexiones de red, dispositivos de ElS, etc.

La gesti6n de todos estos elementos y su utilizaci6n correcta es una labor ardua y en extremo dificil. Si esta gesti6n la tienen que hacer los propios programas de aplicaci6n, que adem as pueden estar ejecutandose simultaneamente, es muy probable que los programadores se vieran desbordados por la dificultad. No obstante, hace tiempo se via la necesidad de distinguir dos tipos de programas:

a) Los programas del sistema.

b) Los programas de aplicaci6n.

En un sentido amplio los programas del sistema se encargan de controlar las operaciones propias del computador, mientras que los programas de aplicaci6n son los que resuelven problemas especfficos a los usuarios. De los programas del sistema el mas importante es el sistema operetivo, su objetivo es que el computador se pueda utilizar de manera c6moda y eficiente, proporcionando a la maquina desnuda un caparaz6n que permite dar la visi6n de una meouine virtual, con la que es factible comunicarse al crearse un interfaz entre el usuario y la maquina y gestionar los recursos de la misma.

EI sistema operativo es en definitiva un programa que hace que el uso del computador sea sencillo ya que oculta toda la complejidad del hardware y, adernas, gestiona los recursos del sistema de forma que se utilicen de manera eficaz.

xvi

Sistemas operativos: Teoria y Problemas

Tema 6: Gestion del sistema de entrada/salida

Un computador careceria de utilidad si no dispusiera de alguna unidad de entrada/salida (EIS). Las operaciones de EIS se pueden realizar mediante una gran variedad de dispositivos extern os que proporcionan diferentes formas de intercambiar datos entre el mundo exterior y el computador. Una de las principales funciones del sistema operative es la de controlar todos los dispositivos de entrada/salida (tarnbien IIamados pentencoss. proporcionando un interfaz entre los dispositivos y el resto del sistema que sea sencilla y facil de usar.

La primer parte esta dedicada al estudio de los mecanismos con los que un controlador de ElS interacciona con el resto del computador. Se utilizan las siguientes tecnicas: a) EIS controlada por programa b) ElS par interrupciones c) Acceso directo a memoria d) Procesadores de ElS. En el resto del tema se analiza la qestion del sistema de EIS desde el punto de vista del sistema operative, exponiendose un modelo conceptual por capas que va desde los propios perlfericos hasta los procesos de los usuarios. EI tema finaliza con un estudio dedicado a los discos rnaqneticos presentandose aspectos relativos tanto a la estructura fisica como a su software.

Apendlce A: Multiprocesadores y sistemas distribuidos

Este tema se dedica al estudio de los sistemas MIMD (Multiple Instruction Multiple Data) asl como a los diferentes esquemas que se han propuesto para distribuir el calculo, Se comienza comentando las ventajas y desventajas de los sistemas distribuidos. A continuacion se estudian los conceptos relativos a los sistemas multiprocesadores, considerados como sistemas de hardware fuertemente acoplado. En primer lugar se presentan sus aspectos de interconexion y despues los sistemas operativos.

Como paso previa al estudio de los sistemas debilmente acoplados, se introducen los conceptos de redes de computadores y se analizan los distintos tipos de sistemas operatives para los sistemas distribuidos, claslflcandolos en SO de redes y SO real mente distribuidos. Por ultimo, se muestran los sistemas de archivos distribuidos, comentando dos ejemplos de los mismos, uno de uso comercial (el sistema de archivos en red) y otro en desarrollo (el sistema de archivos Andrew).

Metodologia

Se ha tratado de cuidar de manera muy especial los aspectos especificos de la enserianza a distancia. Los conceptos se introducen de forma progresiva, de manera que el estudiante pueda ir progresando en el estudio a su propio ritmo.

La estructuracion de los temas es uniforme pudiendose distinguir en ellos una parte teorica y una parte practice. EI modulo teorico comienza con una seccion en la que se exponen los objetivos a cubrir. A continuacion se introducen los conceptos de una manera sencilla, progresiva y acornpariados de ejemplos aclaratorios. Finalmente se presenta una seccion de conclusiones en la que se resumen los conceptos introducidos en el tema.

Proloqo

xv

Tema 3: Slncronlzacion y comunicaclon de procesos

Las tareas que corren en un sistema se disef\an para lIevar a cabo un objetivo cornun y, por 10 tanto, es necesario que algunas de elias se comuniquen entre sl; adernas, en su ejecuci6n cornpetiran por conseguir los recursos del sistema -una zona de datos especificos, 0 un dispositivo de EIS- y dicha competici6n se debe regular proporcionando los mecanismos adecuados para la sincronizecion de los procesos. Tarnbien se precisa esta sincronlzacion para establecer un orden de ejecuci6n de las tareas que sea coherente con el objetivo global del sistema.

Existen dos rnetodos basicos de comunicacion entre procesos: comoerticion de datos e intercambio de informacion. En este tema se trata inicialmente el problema de la comunicaci6n entre procesos mediante compartici6n de datos y se realiza su introducci6n estudiando el problema de la exclusion mutua. A contlnuacion se introducen herramientas tanto para la comunicaclon como para la sincronizaci6n de los procesos, tales como los semetoros, los monitores y los mensajes. Finalmente se trata el problema del interbloqueo, que aparece frecuentemente en los sistemas con multiprogramaci6n y se dan varias estrategias para manejarlo.

Tema 4: Gestion de la memoria

La mlsion del gestor de la memoria es la asignaci6n de memoria principal a los procesos que la soliciten. EI espacio vacante se puede utilizar para cargar procesos que estan ya preparados para su ejecucion, de forma que el planificador este en mejores condiciones de preparar las tareas que se van a ejecutar.

En este tema se estudian desde sistemas elementales de gestion de la memoria, para un solo proceso, hasta esquemas de compartici6n de la memoria para la elecuclon concurrente de varios procesos. Entre estos ultirnos esquemas se tienen tecnlcas de gesti6n de memoria basad as en asiqnacion contigua mediante particiones fijas 0 variables, tecnicas en las que se elimina el requisito de la aslqnacion contigua como son la paginacion y seqmentecion y finalmente la qestlon de memoria virtual en la que se elirnina la necesidad de que todo el proceso se encuentre cargado en la memoria.

Tema 5: Gestion del sistema de archivos

Para muchos usuarios, el sistema de archivos es el aspecto mas visible de un sistema operativo. EI sistema de archivos se puede estudiar desde diferentes puntos de vista. Asi, la preocupaclon de los usuarios es la forma de nombrar a los archivos, las operaciones permitidas en ellos, la apariencia del arbol de directorios y otros aspectos de su interfaz. Por otra parte, los disef\adores adernas se interesan en la forma de almacenamiento de los archivos y directorios, la adrninistracion del espacio en el disco y del modo de que esto sea eficiente y de confianza al usuario en su utilizacion.

La primera parte se centra mas en el punto de vista de los usuarios, mientras que en el resto del tema se estudia la vision que los disef\adores y programadores del sistema poseen del sistema de archivos. La ultima parte esta dedicada al estudio de la seguridad y los mecanismos de proteccion.

xiv

Sistemas operativos: Teoria y Problemas

A quien va dirigido este texto

"Sistemas Operativos: Teoria y Problemas" esta concebido como texto base de la asignatura "Sistemas Operativos I" que tienen que cursar los alum nos de la Escuela Superior de Ingenieria Informatica de la UNED, en e12° curso de las carreras de Ingeniero Tecnico en Informatica de Sistemas y de Ingeniero Tecnico en Informatica de Gesti6n. Este motivo impone una serie de restricciones sobre la estructuraci6n de sus contenidos y la forma de desarrollarlos debido a que en la medida de 10 posible, deberia ser autosuficiente y comprensible a estudiantes que no asisten de forma habitual a clases de tipo presencia!.

Tarnbien puede resultar util a estudiantes de Facultades de Ciencias 0 Escuelas de Ingenierias que tengan en sus planes de estudio asignaturas relacionadas con los Sistemas Operativos.

Orqanizacion del texto

EI texto consta de 7 Temas y un Apendice. Adernas incluye un Glosario y una extensa Bibliograffa.

Los contenidos te6ricos de cada tema son los siguientes:

Tema 1: lntroducclon

Lo que hace que un computador sea una rnaquina util es el software y no hay duda de que el programa mas importante en este sentido es el sistema operativo. Definirlo no es facit, es por ello que 10 que se realiza en este tema es una presentaci6n de sus principales funciones y objetivos, que son esencialmente dos:

1) Proporcionar una rnaquina virtual cara a los usuarios y a las aplicaciones, que resulte mas facil de programar y de utilizar.

2) Ser el gestor de los recursos de la maqulna (memoria, archivos, dispositivos de EIS, ... ) de forma que se utilicen de manera eficiente.

Tema 2: Gestion de procesos

EI tema trata, en primer lugar, de dar una idea 10 mas clara posible de 10 que son y representan los procesos en un sistema operativo, de las relaciones que existen entre ellos y de la forma en que pueden especificarse. Se analizan tarnbien los diferentes estados por los que pueden pasar los procesos a 10 largo de su ejecuci6n y las estructuras necesarias para su representaci6n.

Se introduce el concepto de hebras, que representa una soluci6n software usada por algunos sistemas operativos modern os para mejorar su rendimiento y que supone un refinamiento del concepto de proceso. Por ultimo, se estudia el planificador de procesos. Se llama asi a aquella parte del sistema operativo encargada de asignar los recursos, yen especialla CPU, a los procesos que la solicitan. Se presentan los tres tipos de planificadores que aparecen en un sistema operativo y se describen los algoritmos mas utilizados en la realizaci6n de los mismos.

Pr61ogo

xvii

La parte practica esta dividida en una secci6n de cuestiones y otra de problemas, ambas muy extensas. Los ejercicios de dichas secciones inicialmente se proponen para que el alumno haga el esfuerzo de trabajarlos por s! mismo y a continuaci6n se resuelven para que pueda servir de autoevaluaci6n. La secci6n titulada cuestiones recoge los conceptos mas sencillos introducidos en el capitulo. De esta forma el alumno puede determinar si ha adquirido los conocimientos basicos trasmitidos en esa unidad ternatlca. Por el contrario, en la secci6n titulada problemas se resuelven ejercicios de mayor grado de dificultad, pues en ellos se relacionan conceptos, se solicitan calculos, etc. Despues de realizar estos ejercicios el alumno podra comprobar que maneja con soltura 10 aprendido en el capitulo.

Agradecimientos

Los autores expresan su agradecimiento mas sincero a sus cornparieros en los Departamentos de las Universidades Complutense y UNED en los que han desarrollado su actividad universitaria por su apoyo en todo momento.

En el desarrollo del libro hemos empleado una gran parte de nuestro tiempo libre durante los ultimos aries. Este tiempo robado a nuestros familiares supone una deuda con ellos que esperamos que alqun dla sepan comprender. S610 nos queda agradecerles desde 10 mas profundo de nuestro corazon su carino y comprensi6n y dedicarles modestamente este texto.

Madrid, enero de 2002

Los Autores

lntroducclon

Un computador sin el "software" es una maquina sin utilidad, necesita de programas que Ie perrnitan gestionar bases de datos, realizar complicados calculos matematicos, ayudar al disefio, procesar irnagenes, comunicarse con computadores situados en cualquier parte del mundo y a todas las tareas que estamos acostumbrados que realicen. Pero un computador es un sistema complejo que se compone de procesadores, memoria central, discos, terminales, conexi ones de red, dispositivos de £IS, etc. La gesti6n de todos estos elementos y su utilizaci6n correcta es una labor ardua y en extremo dificil. Si esta gesti6n la tienen que hacer los propios program as de aplicaci6n, que ademas pueden estar ejecutandose simultaneamente, es muy probable que los programadores se vieran desbordados por la dificultad.

No obstante, hace tiempo que se vio la necesidad de distinguir dos tipos de programas:

a) Los program as del sistema

b) Los program as de aplicaci6n

En un sentido amplio los programas del sistema se encargan de controlar las operaciones propias del computador, mientras que los programas de aplicaci6n son los que resuelven problemas especificos a los usuarios. De los programas del sistema el mas importante es el sistema operativo cuyo objetivo es que el computador se pueda utilizar de una manera c6moda y eficiente, proporcionando un caparaz6n a la maquina desnuda que permite dar la visi6n de una maquina virtual. con la que es factible comunicarse al crearse un interfaz entre el usuario y la maquina y gestionar los recursos de la misma.

La Figura 1.1 muestra un diagram a con esta situaci6n. En la parte inferior se encuentra el hardware, en el que esta incluido el procesador, la memoria y los demas perifericos, como la consola, los discos, etc, adernas, si el procesador esta implementado mediante 16gica microprogram ada tambien hay que considerar la microprogramacion (firmware) y ellenguaje maquina (ver Dormido et al., 2000).

EI sistema operativo oculta toda esta complejidad del hardware y proporciona un interfaz mas adecuado para usar el sistema. Actua como un mediador, de forma que los programadores y los programas de aplicaci6n puedan acceder y utilizar los recursos y servicios del sistema de una forma mas facil, sin preocuparse de la gesti6n de los mismos.

2

1 Introducci6n

Aplicaciones

( Usuario final )r~~~~)

#7#~/e"k~..v~ffe"S Ed,rp/e"s Cao/p~P"are"s P4Pu/;P"..M9S

C ) Programas de utilidades

Programador r~~~~) t---~~~~~~~~~~~--t

. - Sistema Operativo

Diseriador del Sistema Operativ~

Hardware

Figura 1.1: Capas en las que se pueden dividir los componentes de un computador

Los programadores emplean otros programas del sistema, como compiladores, editores 0 depuradores.

Las aplicaciones que estos desarrollan tarnbien usan los programas del sistema que efectuan Ilamadas al sistema operativo, a las funciones de EIS y al sistema de archivos.

En el extremo superior de la Figura 1.1, por encima de los programas del sistema, se encuentran las aplicaciones. EI usuario final, que no es consciente de la arquitectura del sistema, vera al computador a traves de estas aplicaciones desarrolladas por el programador de aplicaciones.

1-1 l.Que es un sistema operativo?

3

(,Que es un sistema operativo?

En terrninos generales no hay una definicion de sistema operativo completamente adecuada y que sea aceptada universalmente. En los afios sesenta se decia que era el software que contro/aba at hardware, sin embargo esta definicion ha quedado totalmente desfasada en la actualidad. Ahora quizas sea mas facil decir que hacen los sistemas operativos que decir que son. Por ello, mas que dar una definicion diciendo que es un sistema operativo, 10 que se va arealizar es exponer cuales tienen que ser sus funciones u objetivos.

En la Figura 1.1 se ha situado al sistema operativo como una capa por encima del hardware, de forma que 10 oculta al resto de los programas y a los usuarios. Desde esta perspectiva el sistema operativo no es mas que un programa que controla la ejecucion de los programas de aplicaciones y actua como un interfaz entre los usuarios del computador y el hardware del mismo. Sus objetivos basicos son:

I) Comodidad para los usuarios. EI SO haee que el eomputador sea mas facil de utilizar. En este caso hace que los usuarios yean una maquina virtual 0 extend ida, que es mas sencilla de programar y de utilizar que la maquina desnuda.

2) Eficiencia. El SO gestiona los recursos del sistema de forma mas eficaz. Su funcion es en este caso la de un gestor de recursos.

A continuacion se analizan cada uno de estos objetivos.

1.1.1 los sistemas operativos como maquinas virtuales

La utilizacion directa del hardware es dificil, especialmente para la realizacion de las operaciones de £IS. Por ejemplo, para operar directamente con el controlador de un disquete hay que manejar del orden de 16 ordenes, y donde cada una puede tener mas de una docena de parametres, que hay que empaquetar en un registro del dispositivo de 8 bytes, devolviendose despues de la operacion un registro de 7 bytes con los estados y los campos de errores. Para hacer una escritura en el disquete hay que verificar si el motor esta funcionando, si no 10 esta dar la orden de arranque, esperar a que gire a la velocidad adecuada, entonccs dar las ordenes de posicionamiento del brazo en el sector y pista adecuada, ordenar la escritura, etc. El programador, y usuario en general, no desea enfrentarse a toda esta problernatica, sino que de sea una abstraccion sencilla y facil de entender. Por ejemplo, ver al disco como un conjunto de archivos, de forma que cuando se quiere escribir algo solo hay que indicar el nombre del archivo.

Para ocultar toda esta problematica del hardware esta el sistema operativo, de forma que el programador y el usuario yen una abstraccion del mismo que se les presenta como una maquina virtual que entiende 6rdenes a un nivel superior. En este sentido, el sistema operativo tiene que proporcionar servicios para las funciones siguientes:

4

1 Introducci6n

1) Creaci6n de programas. Existen otros programas del sistema, como son los depuradores, los editores y los enlazadores, que no son parte del sistema operativo, pero que son accesibles a traves de el.

2) Ejecuci6n de programas. Para poder ejecutar un programa se tiene que realizar una serie de funciones previas, tales como cargar el c6digo y los datos en la memoria principal, inicializar los dispositivos de E/S y preparar los recursos necesarios para la ejecucion. Todo esto 10 gestiona el sistema operativo.

3) Operaciones de entrada/salida. Un programa puede requerir una operacion de E/S sobre un periferico. Pero cada uno tiene sus peculiaridades y un controlador especifico con su conjunto de instrucciones. Como en el ejemplo del controlador de la disquetera anterior, es el propio sistema operativo el encargado de hacer todas esas funciones que permiten la lectura, escritura y comunicaci6n con los perifericos,

4) Manipulacion y control del sistema de archivos. Adernas de comunicarse con el controlador del periferico en donde esta el sistema de archivos, el sistema operativo debe conocer la propia estructura (formato) de almacenamiento y proporcionar los mecanismos adecuados para su control y proteccion.

5) Deteccion de errores. Hay una gran cantidad de errores, tanto del hardware como del software, que pueden ocurrir. Por ejemplo: un mal funcionamiento de un periferico, fallos en la transmisi6n de los datos, errores de calculo en un programa, divisiones por cero, rebose, fallos de Ia memoria, violaciones de permisos, etc. EI sistema operativo debe ser capaz de detectarlos y solucionarlos 0 por 10 menos hacer que tengan el menor impacto posible sobre el resto de las aplicaciones.

6) Control del acceso al sistema. En sistemas de acceso compartido 0 en sistemas publicos, el sistema operativo debe controlar el acceso al mismo, vigilando quien tiene acceso y a que recursos. Por este motivo tiene que tener mecanismos de proteccion de los recursos e implementar una adecuada politica de seguridad, de forma que no pueda acceder quien no este autorizado. Debido a la gran conectividad que tienen hoy dia los sistemas informaticos, este es un aspecto que cada vez esta teniendo mayor interes.

7) Elaboraci6n de informes estadisticos. Resulta muy conveniente conocer el grado de la utilizaci6n de los recursos y de los distintos parametros del sistema, como el tiempo de respuesta. De esta forma se dispone de informacion que permite saber con antelacion las necesidades futuras y configurar al sistema para dar el mejor rendimiento.

1.1.2

EI sistema operativo como gestor de recursos

La vision anterior de un sistema operativo es una visi6n de abajo hacia arriba. Un punto de vista alternativo, considera al SO como el gestor de todos los elementos que componen el sistema. En este caso su funcion es proporcionar a los programas que compiten por ellos una asignacion ordenada y controlada de los procesadores, la memoria y los perifericos.

E1 sistema operativo realiza este control de una forma muy peculiar, si se compara con los mecanismos que utilizan otros sistemas. Por ejemplo, el control de temperatura de un edificio se hace mediante un termostato que esta totalmente diferenciado del sistema de distribucion de calor (los radiadores) y del mecanismo de generacion de calor (la caldera). Esta separacion no existe en el caso del sistema operativo,

1-1 l,Que es un sistema operativo?

5

que funciona de la misma forma que otro programa (al cual tiene que controlar y dar servicio); es decir, el sistema operativo se ejecuta en el procesador 10 mismo que el resto de los programas. Otra caracteristica que 10 hace peculiar es que con eierta frecuencia pierde el control sobre el procesador y debe esperar a disponer de el.

Desde este punto de vista, el sistema operativo no es mas que otro programa del computador que el proccsador no distingue del resto. La gran diferencia esta en la finalidad, ya que la CPU dedicara parte de su tiempo a ejecutar otros programas segun 10 planifique el sistema operativo y tarnbicn controla el acceso a los otros recursos del sistema. Sin embargo, esto requiere que el propio sistema operativo ceda cl control del procesador a otra "tarea" y cuando posteriormente 10 recupera otra vez, debe preparar la siguicnte tarea que va a ejecutarse en el procesador.

6

1 Introducci6n

Historia de los sistemas operativos

En la evolucion de los sistemas operativos, al igual que en la del hardware de los computadores, podemos marcar una serie de etapas evolutivas 0 generaciones.

La denominada generacion cera abarca la dec ada de los afios 40 y se caracteriza por la ausencia de sistemas operativos en los computadores. El usuario tenia acceso completo allenguaje maquina y todas las instrucciones se codificaban manualmente. Los propios usuarios eran quienes controlaban la ejecucion de sus programas.

La primera generacion abarca los afios 50. La creacion del primer sistema operativo se Ie atribuye a los laboratorios de investigacion de General Motors, y fue desarrollado para su computador IBM 701. En 1955 General Motors y North American Aviation colaboraron para desarrollar un sistema operativo para el IBM 704. Hacia 1957 ya se habian desarrollado, de manera particular, distintos sistemas operativos para ese modelo de computador.

EI fin de estos primeros sistemas operativos era permitir en la maquina la secuencia automatica de los trabajos de los usuarios. De esta forma se conseguia evitar el tiempo que se perdia, y que podia ser considerable, desde que un proceso terminaba su ejecuci6n hasta que comenzaba el siguiente. Para ello los trabajos se organizaron en lotes. Un trabajo en ejecucion tenia el control total de la maquina y no comenzaba otro hasta que se lIegaba al final del que estaba en ejecucion u ocurria un error. En este ultimo caso el sistema operativo dab a alguna explicacion rudimentaria sobre 10 que habia ido mal y procedia inmediatamente con el siguiente trabajo dellote.

Debido al elevado coste que tenian los computadores de aquella epoca se intent6 mejorar el rendimiento en su utilizacion y aumentar el numero de trabajos ejecutados en un intervalo de tiempo dado. Esto se consigui6 fundamentalmente con la introduccion de la multiprogramacion y el multiprocesamiento, dando lugar ala segunda generacion que ocupa la primera parte de la decada de los afios 60.

EI elemento clave en la concepcion de la multiprogramaci6n fue la diferencia de velocidades entre los dispositivos de entrada y salida y el procesador. Un programa que realizaba una peticion de una operaci6n de EIS, y que no podia continuar hasta que esta se hubiera completado, dejaba al procesador, el recurso mas valioso del sistema, desocupado durante todo el tiempo de espera. Con la multiprogramacion varios programa pod ian residir a la vez en memoria y el procesador se podia conmutar rapidamente entre ellos, 10 que permitia que un trabajo pudiera estar realizando calculos a la vez que otro leia de una cinta magnetica, un tercero escribia en un disco, etc.

En los sistemas con multiprocesamiento se utilizaban varios procesadores en un unico computador para lograr una mayor potencia de calculo en la maquina. Tambien aparecieron en esta epoca los primeros sistemas de tiempo real dedicados al control de procesos industriales y para monitorizar miles de puntos con

1-2 Historia de los sistemas operativos

7

fines militares. En estos sistemas, mas que tenerlos muy ocupados, se requeria que su respuesta ante una serie de sucesos extern os fuera rapida. Por ejemplo, el aumento de la temperatura en un punto de una refineria de petr61eo deberia comunicarse inmediatamente para tomar las acciones oportunas para evitar una explosi6n.

Los sistemas mas significativos de esta epoca fueron el Master Control Program (MCP) de Burroughs disefiado para su computador B5000 y el sistema SABRE de IBM y la American Airlines destinados a las reservas de viajes. EI MCP fue escrito en un lenguaje de alto nivel y poseia muchas de las caracteristicas que proporcionan los sistemas actuales: multiprogramaci6n, multiprocesamiento, memoria virtual y la capacidad de depurar el lenguaje fuente. EI sistema SABRE era un sistema de tiempo compartido, con miles de terminales distribuidos por toda la geografla norteamericana, desde los cuales se podia interactuar directamente con el sistema. EI usuario hacia una petici6n desde un terminal y el computador procesaba la petici6n y respondia a traves del terminal tan pronto como podia, a veces en un tiempo inferior a un segundo. El sistema SABRE estaba dirigido a una unica funci6n.

EI primer sistema de tiempo compartido de proposito general fue el Compatible Time-Sharing System (CTSS) desarrollado en el Instituto Tecnologico de Massachusetts (MIT) bajo la direccion de Fernando Corbato y que corria en un IBM 70917090. EI proyecto se inicio en 1961 y se puso en funcionamiento en 1963. Entre las caracteristicas de este sistema estaban:

a) Empleo de numerosos terminales conectados al computador que se pod ian usar al mismo tiempo

b) Cada terminal de usuario parecia tener disponible toda la potencia de la maquina y todo el software del computador

c) El tiempo necesario para realizar tareas no muy grandes era 10 suficientemente pequefio como para hacer pensar a los usuarios que tenian la maquina solo para su servicio

d) Disponia de varios compiladores, utilidades para el manejo de archivos y aplicaciones especificas.

La tercera generacion comienza con la introduccion en 1964 de la familia de computadores IBM/360.

El sistema operativo de esta familia de computadores era el OS/360. Aunque el sistema operativo no poseia algunas de las caracteristicas mas avanzadas de otros sistemas, como el MCP de Burroughs, excedia con mucho al resto de los sistemas en el area de apoyo al c1iente. EI sistema operativo disponia de la mayor cantidad de programas de utilidad para facilitar el uso del computador que se habia suministrado hasta la fecha. Ademas, el sistema permitia avanzar en la serie, segun aumentaban las necesidades de potencia de calculo, sin que fuera necesario cambiar de sistema operativo.

La generaci6n se extiende hasta mediados los afios 70. Se caracteriza por el desarrollo de sistemas operativos grandes y costosos que pretendian incorporar todas las posibilidades. Algunos proporcionaban simultaneamente el procesamiento por lotes, el procesamiento en tiempo real, el procesamiento en tiempo compartido y el muItiprocesamiento. El inconveniente era que obligaban a muchos usuarios a pagar un precio muy elevado y aprender mas de 10 que real mente necesitaban.

La cuarta generaci6n corresponde al estado actual del campo. La mayoria de los sistemas operativos de los computadores grandes son descendientes directos de los de la tercera generacion, tales como el Multics de Honeywell, VMS y VM/370 de IBM y el Scope de Control Data. Todos estos sistemas disponian de:

a) Multiprogramaci6n

b) Tiempo compartido

c) Memoria virtual

8

1 Introducci6n

d) Procesos secuenciales que cooperan por medio de semaforos

e) Sistemas de archivos jerarquicos

f) EIS independiente del dispositivo.

Posiblemente el mas influyente de los sistemas operativos actuales sea Unix. Su desarrollo se realiz6 adoptando muchas de las ideas que se introdujeron en Multics. Una diferencia esencial entre ambos es que este se desarrollo para grandes computadores. Unix se disefio a principio de los afios 70 en los laboratorios de la Bell en tomo al minicomputador mas caracteristico de la epoca, el PDP-II de Digital y con una dimension de un orden de magnitud inferior a aque!. A pesar de su menor tamafio Unix retiene la mayor parte de las caracteristicas mas utiles de su predecesor, tales como procesos, sistema de archivos jerarquicos, independencia de los dispositivos, redireccion de la entrada-salida y un lenguaje de interprete de ordenes (shell) de alto nive!. La mayor parte de Unix se escribio en el lenguaje C, 10 que le ha permitido ser transportado a una gran variedad de procesadores, desde gran des maquinas a computadores personales. En el Tema 8 se estudia este sistema operativo con mas detalle.

En los afios 80 se desarrollaron un gran numero de sistemas operativos para computadores person ales, entre los que destacan el MS-DOS, Apple-DOS, CP/M y Xenix. Todos estos sistemas estaban muy limitados en sus funciones. Se desarrollaron inicialmente para microprocesadores de 8 yI6 bits con poca capacidad de memoria. Sin embargo, la velocidad y la capacidad de memoria actuales son ahora suficientes como para soportar sistemas operativos con todas sus posibilidades.

Dos aspectos que caracterizan los sistemas actuales son las redes de computadores y los sistemas distribuidos. Los usuarios de la cuarta generacion no estan limitados ya a comunicarse con un solo computador en tiempo compartido. Los computadores personales estan equipados con programas de comunicaciones que les permiten acceder a informaciones localizadas en bases de datos dispersas geograficamente.

Sistemas operativos como Unix y VMS de Digital creados originalmente con el fin de servir a una unica maquina han evolucionado para adaptarse a las redes de computadores. El sistema de archivos de red de Sun Microsystems conocido como NFS (Network File System) fue uno de los primeros sistemas de archivos basado en Unix en ofrecer un espacio unico de nombres de archivos situado par encima de una red de servidores y estaciones de trabajo.

Actualmente el disefio de 10 sistemas operativos encuentra nuevos retos con la construccion de computadores paralelos que disponen de miles de procesadores. Para estas maquinas los SO deben dar soporte a la comunicacion y a la sincronizacion extremadamente rapida de miles de procesadores. Cada procesador puede disponer de sus propios dispositivos, 10 que hace que el sistema operativo deba controlar a la vez a miles de canales de EIS. Conceptos tales como memoria virtual y tiempo compartido deben extenderse para adaptarse al paralelismo masivo. Quizas el desafio mas importante es conseguir que el entomo de programacion de estos sistemas permita desarrollar programas paralelos con un esfuerzo solo ligeramente superior al de la escritura de un programa secuencial.

1-3 Conceptos fundamentales

9

Conceptos fundamentales

A 10 largo de la historia de los sistemas operativos se han ido desarrollando una serie de conceptos, que son sus mayores aportaciones. Entre estos conceptos estan los de:

I) Proceso

2) Gesti6n de la memoria

3) Sistema de archivos

4) Llamadas al sistema

5) Gesti6n y planificaci6n de los recursos

6) Protecci6n y seguridad de la informaci6n.

Aunque estos conceptos se van desarrollando a 10 largo del texto, a continuaci6n se da una somera idea de los mismos.

1.3.1 Procesos

Uno de los conceptos mas fundamentales en los sistemas operativos es el de proceso. Fue introducido por los disefiadores de Multics en los afios 60, como un termino mas general que el de trabajos (jobs). Desde entonces se han dado muchas definiciones de 10 que es un proceso.

Se puede decir que basicamente un proceso es un programa en ejecuci6n. Pero hay quien prefiere una definici6n mas formal y 10 define como "la entidad que puede ser asignada a un procesador y ejecutada por el", Tambien hay quien da a la definici6n un aire mas espiritual y habla del "espiritu animado de un programa".

EI concepto se ira aclarando en los Temas 2 y 3, pero se puede considerar ya como un programa en ejecuci6n, que consta del programa ejecutable, de los datos necesarios para el programa (variables, espacio de trabajo, buffers, etc.) y del contexto de ejecuci6n del programa. En esto ultimo se incluye toda la informaci6n que necesita el sistema operativo para gestionar al proceso y que requiere el procesador para ejecutarlo apropiadamente, as! se incluye en el contexto de .ejecucion la pila del programa, el contador de programa, el puntero a la pila, los registros de datos, la prioridad del proceso, etc.

Una forma facil e intuitiva de entender el concepto de proceso es considerar un sistema de tiempo compartido. En estos sistemas, cada cierto tiempo el sistema operativo tiene que parar el proceso en ejecuci6n y arrancar otro, de forma que cada proceso tenga asignado el procesador durante un intervalo de tiempo prefijado.

10

1 tntroducclon

En esta situacion, el proceso que se ha detenido temporalmente se dice que se ha suspendido y sera arrancado posteriormente en el mismo estado en el que se suspendio.

La informacion sobre cada proceso se almacena en una tabla de procesos construida y mantenida por el propio sistema operativo, y que se puede implementar como una lista enlazada con una entrada por cada proceso. Cada entrada a la tabla incluye un puntero ala ubicacion del bloque de memoria que contiene al proceso, tam bien puede contener parte 0 todo el contexto de ejecucion del proceso.

Como mantener la informacion de los procesos y como gestionarlos se estudia en el Tema 2, mientras que el Tema 3 se dedica a presentar como realizar la comunicacion entre los procesos y como sincronizar, su ejecucion se estudia en el Tema 3.

1.3.2 Gestion de la memoria y del sistema de archivos

Los usuarios y los program adores han ido viendo como necesidad el disponer de un soporte para la prograrnacion modular y para un uso flexible de los datos. Ademas el administrador del sistema necesita un control ordenado y eficiente del almacenamiento asignado. Para satisfacer estos requerimientos, el sistema operativo tiene que responsabilizarse de:

1) Aislar los procesos, de manera que un proceso no interfiera en los datos 0 en la memoria de otro.

2) Ubi car y gestionar autornaticamente a los procesos, de una manera que sea transparente a los programadores. EI sistema asignara memoria a los procesos segun las limitaciones que se tengan y teniendo en cuenta las necesidades de los distintos trabajos.

3) Soportar una programacion modular, de forma que se puedan definir modules de programas en los que se puedan alterar dinamicamente sus tamafios,

4) Controlar el acceso y proteger la memoria. Aunque se comparta la memoria, un programa no acceda al espacio de direcciones de otro, 0 que a ciertas partes de la memoria puedan acceder distintos usuarios pero controlando el acceso.

5) Disponer de un medio de almacenamiento de larga duracion.

Para cumplir con estas responsabilidades el sistema operativo cuenta con la nocion de memoria virtual y las funciones del sistema de archivos.

Con el concepto de memoria virtual los programas pueden direccionar la memoria desde un punto de vista logico, sin considerar la cantidad de memoria principal realmente instalada en el sistema; cuando un programa se ejecuta, solo se carga en memoria principalla parte de codigo y datos que se van a utilizar. Este es un concepto que se estudiara en el Tema 4, cuando se expliquen los distintos mecanismos de gestion de la memoria principal.

Un almacenamiento de larga duracion se construye el sistema de archivos. La informacion se almacena en archivos y estos archivos se mantienen en directorios, que puede tener una estructura arborescente dentro de otros directorios. En el Tema 5 se estudian los conceptos de archivo y directorio y la implernentacion de los mismos.

1.3.3 Llamadas al sistema

Una buena forma de conocer 10 que hace un sistema operativo es analizar las llamadas al sistema. Este concepto corresponde a la interfaz entre el sistema operativo y los program as y los usuarios.

1-3 Conceptos fundamentales

11

Las llamadas al sistema se pueden hacer de varias formas, dependiendo del computador. Para hacer la Hamada se requiere cierta informacion, aparte de Ia identidad de la Hamada, esta informacion depende del sistema operativo y de Ia Hamada en concreto. Por ejemplo, una Hamada de lectura de un archivo desde un program a seria del tipo:

cuenta = read (archivo, buffer, nbytes);

En este caso la Hamada es read, que tiene tres parametros, arch iva que es el nombre del archivo que se quiere leer, buffer es un buffer 0 almacenamiento temporal en el que se colocan los datos leidos, nbytes es el numero de bytes que se quieren leer. La funcion devuelve un valor, cuenta, que es el numero de bytes leidos. Generalmente coincidira con nbytes, pero puede ser menor, por ejemplo si hay un error de lectura 0 se ha llegado al final del archivo.

Las llamadas al sistema se pueden agrupar en cinco categorias:

1) Control de procesos

2) Manipulacion de archivos

3) Manipulacion de perifericos

4) Mantenimiento de Ia informacion

5) Comunicaciones.

En la Tabla 1.1 se resumen algunos de los tipos de llamadas al sistema que se suelen hacer para cada categoria.

Control de Manlpulaclon de Manipulacion de Mantenimiento de la Comunicaciones
procesos archivos perifericos informacion
Crear proceso Crear archivo Solicitar periferico Obtener hora-fecha Crear concxion
Cargar Abrir Escribir Estableccr hora- fecha Enviar mensajes
Ejecutar Escribir Leer Obtener datos del sistema Recibir mcnsajes
Obtener atributos Leer Obtener atributos Establecer datos del sistema Transferir informacion del estado
Establecer atributos Obtener atributos Establecer atributos Obtener atributos Eliminar conexion
Esperar un tiempo Establecer atributos Liberar periferico Establecer atributos
Esperar un succso Cerrar
Liberar memoria Eliminar archivo
Abortar
Terminar proceso Tabla 1.1: Llamadas al sistema

1.3.4

Gestion y planlficacion de los recursos

Entre las tareas claves de un sistema operativo esta la de gestionar los diferentes recursos que disponga el sistema (procesadores, memoria, perifericos, etc.) y planificar la utilizacion de los mismos de la forma mas eficiente por los procesos en ejecuci6n.

La politica de planificacion y de asignacion de recursos tiene que ser justa y eficiente. Esto supone que

12

1 Introducci6n

todos los procesos que compiten por la utilizaci6n de un determinado recurso, deben disponer de el de una forma equitativa, esto se debe cumplir sobre todo en trabajos de la misma clase que poseen la misma priori dad.

Por otro lado, hay situaciones en las que es necesario distinguir entre diferentes clases de trabajos con diferentes exigencias de servicio. El sistema operativo debe intentar hacer la planificaci6n y la asignaci6n considerando el total de los requerimientos. Estas decisiones se hacen dinamicamente, por ejemplo, si un proceso esta esperando para utilizar un periferico, el sistema operativo debe planificar su ejecucion de forma que 10 libere 10 antes posible para poder satisfacer peticiones posteriores de otros procesos.

1.3.5 Protecci6n y seguridad de la informaci6n

Una de las cuestiones que mas interes ha despertado ultimamente, con el auge de los sistemas de tiempo compartido y con las redes de computadores, es la relativa ala protecci6n de la informaci6n.

EI National Bureau of Standards (Branstad, 1978) describi6 una serie de amenazas tfpicas que se pueden producir de forma intencionada por parte de las personas, muchas veces con el objetivo principal de obtener un beneficio econornico. Hay muchos ejemplos de individuos u organizaciones (0 de estas por medio de sus empleados) que han realizado ataques a los sistemas informaticos de la administraci6n publica 0 de otras organizaciones. En el Tema 5 se comentan algunas politicas de seguridad y mecanismos de protecci6n.

1-4 Estructura de los sistemas operativos

13

Estructura de los sistemas operativos

Los sistemas operativos han ido creciendo lIegando a un tamafio tan vasto y complejo, que su construcci6n debe hacerse con cuidado para que funcionen correctamente y puedan modificarse con facilidad.

Un sistema tan grande solo se puede construir si se particiona en componentes mas pequefios. Aunque no todos los sistemas operativos tienen la misma estructura, es bastante usual dividirlos en el siguiente conjunto de componentes basicos:

1) Gestor de procesos.

2) Gestor de la memoria principal.

3) Gestor del almacenamiento secundario y del sistema de archivos.

4) Gestor del sistema de £IS.

5) Sistema de protecci6n

6) Sistema de cornunicacion

7) Interprete de 6rdenes.

Algunos de estos componentes se summistran como programas de utilidades, mas que como un componente propio del sistema operativo. Es el caso del interprete de ordenes de Unix, denominado shell, que es un programa de utilidad que puede cambiarse hasta por uno que 10 haya disefiado el propio usuario.

En la Tabla 1.1 se dieron ejemplos de lIamadas al sistema en una clasificacion que puede corresponder a una division de este tipo. La estructura del sistema correspondera a como intereonectar estas partes de modo que formen un nucleo,

Una de las primeras estructuras que se consideraron fue la de hacer sistemas monoliticos (son aquellos sistemas que no tienen una estructura bien definida), que es un caso que se da en muchos sistemas operativos. Un ejemplo bien conocido es el de MS-DOS, que se disefio sin pensar ni siquiera remotamente en la popularidad que alcanzaria y en las capacidades del hardware en el que llegaria a ejecutarse. Comenzo como un sistema pequefio y ha sobrepasado el campo inieial de su aplieaei6n.

En una estructura de este tipo, el sistema operativo se puede construir compilando por separado los diferentes procedimientos que 10 eonstituyen y enlazandolos despues en un unico archivo. La primera versi6n de Unix poseia tambien una estructura de este tipo, con dos partes separadas: el nucleo y los programas del sistema.

Estos sistemas tenian un disefio de estructura modular, sin embargo para grandes sistemas operativos, de cientos de miles o de millones de lineas de codigo, la modularidad solamente no es suficiente y se ha ido

14

1 Introduccion

imponiendo la utilizaci6n de conceptos tales como los de niveles jerarquicos y abstracci6n de fa informacion.

La estructura jerarquica de un sistema operativo modemo diferencia sus funciones de acuerdo a su complejidad, sus caracteristicas en el tiempo y su nivel de abstracci6n. En este caso se puede ver el sistema como una serie de niveles. Cada uno implementa un subconjunto de las funciones requeridas por el sistema operativo y a su vez dependen del nivel inmediato inferior para realizar funciones mas elementales y ocultar sus detalles a los niveles superiores a los que proporciona un servicio. Los niveles se tienen que definir de forma que los cambios que se hagan en un nivel no supongan modificaciones en los otros.

Un enfoque de este tipo se utiliz6 por primera vez en el sistema operativo THE en la Technische Hogeschool Eindhoven. THE se defini6 en los seis niveles que se muestran en la Tabla 1.2.

NivelS Programas de los usuarios
Nivel4 Manejador de dispositivos y buffers de EIS
Nivel3 Manejador de la consola
Nivel2 Gestor de la memoria
Nivel l Planificador del procesador
NivelO Hardware Tabla 1.2: Estructura de niveles del sistema operativo THE

Otros sistemas operativos tambien han utilizado este enfoque. Venus se disefio utilizando un enfoque analogo al de THE. La mayor dificultad en el disefio de estas estructuras es definir los niveles, ya que cada uno s610 pueden utilizar los servicios del nivel inferior.

1-5 Dlsefio e lrnplernentacion de sistemas operativos

15

Dlseno e implernentaclon de sistemas operativos

Cuando se va a disefiar un nuevo sistema operativo, el primer problema es definir adecuadamente sus objetivos y especificaciones. Hay que tener en cuenta que se vera afectado por el hardware elegido y por el tipo de sistema que se quiere implementar (monousuario, multiusuario, distribuido, multiprocesador, de tiempo real, de proposito general, etc.). Por otra parte hay que espeeificar sus requisitos que se pueden dividir en dos grandes grupos:

I) Requisitos del usuario. EI usuario desea que el sistema sea comedo, facil, sencillo de utilizar y aprender, fiable, segura y rapido.

2) Requisitos del sistema. EI sistema debe ser facil de disefiar, implementar y mantener, flexible, fiable, sin errores y eficiente.

A la hora de disefiar e implementar un sistema operativo, tambien hay que tener en cuenta otra exigencia del sistema, que es su capacidad de evolucion, de forma que se permita la introducci6n de nuevas funciones sin interferir con los servicios ya disponibles.

Hay diferentes razones por las que hay que considerar en el disefio de un sistema operativo su posible evolucion:

I) Las aetualizaciones del hardware y la aparicion de nuevos tipos de maquinas.

2) La posibilidad de afiadir nuevos servicios solicitados por los usuarios.

3) La necesidad de corregir fallos detectados despues de un tiempo de funcionamiento.

En realidad, todos estos requisitos resultan vagos y no hay una solucion general como 10 prueba la amplia gama de sistemas operativos existentes.

Si bien no existe una solucion general, si se han desarrollado algunos principios generales. EI area que se ocupa de estas cuestiones es la ingenieria del software, que tiene en los sistemas operativos un gran campo de aplicaci6n de muchas de sus ideas.

Una vez disefiado el sistema operativo, hay que implementarlo. En este punto hay que elegir e1lenguaje que se piensa utilizar para escribirlos. Inicialmente se codificaban integramente en lenguaje ensamblador, pero en la actualidad es cada vez mas normal escribirlos en un lenguaje de alto nivel, aunque ciertas partes, muy dependientes del hardware, se escriban en ensamblador.

Esta idea de escribirse el sistema operativo en un lenguaje de alto nivel se utilizo ampliamente en la reescritura de Unix para VAX, pero antes ya se habian eserito otros sistemas operativos con esta misma filosofia. EI primer sistema que se escribio en un lenguaje de alto nivel fue MCP (Master Control Program) para los computadores Burroughs (se utilizo una variante de ALGOL). Tambien Multics se hizo en PLiI.

16

1 Introducci6n

Las ventajas de utilizar un lenguaje de alto nivel para construir un sistema operativo son las mismas que

las de utilizarlos para generar las aplicaciones. Entre estas ventajas se pueden resaltar:

I) EI codigo se puede escribir mas rapidamente

2) Facilidad de comprender y depurar el codigo

3) Transportabilidad del SO a otras plataformas

Como inconvenientes se sue len indicar los derivados de un codigo compilado, que puede estar menos optimizado (men or velocidad y mayores requisitos de almacenamiento) que si se realiza en ensamblador por un programador experto. Tambien es cierto, que si se dispone de un buen compilador el codigo resultante mejora apreciablemente.

No obstante, se consiguen mejores rendimientos con estructuras de datos apropiadas y utilizando buenos algoritmos, que con solo una optimizacion del codigo. Las partes mas criticas para lograr un buen rendimiento del sistema operativo son el gestor de memoria y el planificador del procesador. Se pueden hacer analisis y ver que rutinas pueden degradar el sistema y sustituirlas por otras mas optimizadas, 0 reescribirlas directamente en ensamblador.

1·6 Conclusiones

17

Conclusiones

Lo que hace que un computador sea una maquina uti I es el software y no hay duda de que el program a mas importante en este sentido es el sistema operativo, Definirlo no es facil y 10 que se hace es decir cuales deben ser sus funciones y objetivos.

Sus principales funciones y objetivos son esencialmente dos:

1) Proporcionar una maquina virtual cara a los usuarios y a las aplicaciones, que resulte mas facil de programar y de utilizar

2) Ser un gestor de los recursos de la maquina.

No siempre ha sido esta la forma de ver a los sistemas operativos, de hecho ha evolucionado segun se han ido introduciendo nuevos conceptos a 10 largo de su desarrollo. Entre estos merecen destacarse por su importancia los siguientes:

a) Proceso

b) Gesti6n de la memoria

c) Sistema de archivos

d) Llamadas al sistema

e) Gesti6n y planificaci6n de los recursos

f) Proteccion y seguridad de la informacion.

Estos conceptos, y los que han surgido a partir de ell os, se iran estudiando a 10 largo del texto.

Los sistemas operativos considerados como un programa han alcanzado un tamafio muy grande, debido a que tienen que hacer muchas cosas. Por esta raz6n para construir un SO es conveniente dividirlo en componentes mas pequefios y hacer una estructura en niveles,

18

1 Introducci6n

Cuestiones propuestas

1) 6Cuales son los dos objetivos principales de un sistema operativo?

2) El sistema operativo permite que el usuario yea una maquina virtual. 6Cuales son los servicios que tiene que proporcionar en este caso el sistema operativo?

3) ;,Que diferencias hay entre el sistema operativo como una maquina virtual y el sistema operativo como gestor de recursos?

4) 6Cual es el objetivo de las llamadas al sistema?

5) 6Cuales son las caracteristicas de una estructura jerarquica en niveles de un sistema operativo?

6) GPor que es necesario considerar en el disefio de un sistema operativo posibles cambios futuros en el mismo?

1-8 Cuestiones resueltas

19

Cuestiones resueltas

Cuesti6n 6-1

(,Cuales son los dos objetivos principales de un sistema operativo?

~ -~ - ~~--~~----

Soluci6n

Los objetivos basicos de un sistema operativo son:

I) Porporcionar una mayor comodidad para los usuarios, haciendo que el computador sea mas facil de utilizar. Los usurios veran una maquina virtual 0 extendida, que es mas facil de programar y de utilizar que la maquina desnuda.

2) Aumentar la eficiencia, gestionando los recursos del sistema. En este caso su funcion es la de un gestor de recursos.

Cuesti6n 6-2

EI sistema operativo permite que el usuario yea una maquina virtual. (,Cuales son los servicios que tiene que proporcionar en este caso el sistema operativo?

Soluci6n

EI sistema operativo tiene que proporcionar servicios para las siguientes funciones:

I) Creacion de programas. La creacion de un programa supone editarlo, compilarlo, depurarlo, enlazarlo, etc. Para ella hay programas del sistema, que no son parte del sistema operativo, pero que son accesibles a traves de el y que realizan estas funciones.

2) Ejecucion de programas. La ejecuci6n de un programa supone: cargar el codigo y los datos en la memoria principal, inicializar los dispositivos de E/S y preparar los recursos necesarios para la ejecucion, Todo esto 10 gestiona el sistema operativo.

3) Operaciones de entrada/salida. Las operaciones de EIS que requiera un program a en ejecucion son

20

1 Introduce ion

encargadas al sistema operativo, el cual es el encargado de hacer las funciones que permiten la lectura, escritura y cornunicacion con los perifericos,

4) Manipulacion y control del sistema de archivos. EI sistema operativo se ocupa tambien de la manipulacion y el control del sistema de archivos, que puede encontrarse en un disco (memoria secundaria). Adernas de comunicarse con el controlador del periferico en donde esta el sistema de archivos, el sistema operativo debe conocer la propia estructura (formato) de almacenamiento y proporcionar los mecanismos adecuados para su control y protecci6n.

5) Deteccion de errores. EI sistema operativo debe ser capaz de detectar y solucionar aquellos errores, tanto de hardware como de software, que pueden ocurrir. Por ejemplo: un mal funcionamiento de un periferico, fallos en la transmisi6n de los datos, errores de calculo en un programa, divisiones por cero, rebose, fallos de la memoria, violaciones de permisos, etc.

6) Control del acceso al sistema. En un sistema compartido el control del acceso es tambien responsabilidad del sistema operativo, vigilando quien tiene acceso y a que recursos. Para ello dispone de mecanismos de protecci6n de los recursos y de politicas de seguridad.

7) Elaboracion de informes estadisticos. Esta puede ser una tarea secundaria, pero es conveniente tam bien conocer la utilizaci6n de los distintos recursos del sistema. De esta forma se dispone de informacion que permite saber can antelaci6n las necesidades futuras y configurar al sistema para dar el mejor rendimiento.

Cuastion 6-3

l,Que diferencias hay entre el sistema operativo como una maquina virtual y el sistema operativo c6mo gestor de recursos?

Solucion

AI considerar al sistema operativo como una maquina virtual, este debe proporcionar una serie de funcionalidades que hagan mas ami gable la utilizacion del computador, ocultando toda la problernatica del hardware, en este sentido el sistema operativo debe proporcionar las funciones indicadas en la cuestion anterior.

Cuando se considera al sistema operativo como un gestor de recursos, es un programa mas cuya funcion es proporcionar a los otros program as que compiten por los recursos una asignaci6n orden ada y controlada de los mismos.

Cuastlon 6-4

l,Cmil es el objetivo de las lIamadas al sistema?

1-8 Cuestiones resueltas

21

Soluci6n

Cuando se qui ere que el sistema operativo haga determinada funcion, requerida por ejemplo por el program a en ejecuci6n, se consigue haciendo una Hamada al sistema. Esto corresponde al interfaz entre el sistema operativo y los programas. Con las lIamadas al sistema se pueden controlar los procesos (creandoios y abortandolos), manipular los archivos y los perifericos, etc.

Cuesti6n 6-5

(,Cuales son las caracteristicas de una estructura jerarquica en niveles de un sistema operativo?

Soluci6n

La caracteristica de una estructura jerarquica es que diferencia las funciones de acuerdo a su complejidad, sus caracteristicas en el tiempo y su nivel de abstraccion. Viendose el sistema como una serie de niveles, en cada uno se implementa un subconjunto de la funciones del sistema operativo.

Cuesti6n 6-6

GPar que es necesario considerar en el disefio de un sistema operativo posibles cambios futuros en el mismo?

Soluci6n

Son varias las razones par las que hay que considerar cambios futuros en un sistema operativo:

I) Las actualizaciones del hardware y la aparicion de nuevas tipos de maquinas.

2) La posibilidad de afiadir nuevos servicios solicitados par los usuarios.

3) La necesidad de corregir fallos detectados despues de un tiempo de funcionamiento.

E

G)

t-

Gestion de procesos

Aunque existen muchas definiciones de 10 que se entiende por proceso, la mas utilizada es la de programa en ejecucion. Hay sin embargo una distinci6n explicita entre un programa y un proceso. Un program a es una entidad estatica constituida por sentencias del programa que definen la conducta del proceso cuando se ejecutan utilizando algun conjunto de datos. Un proceso es una entidad dinamica que ejecuta un programa sobre un conjunto particular de datos utilizando los recursos que Ie proporciona el sistema operativo. Dos 0 mas procesos podrian estar ejecutando el mismo programa, empleando sus propios datos y recursos. Este concepto de proceso, que sera explicado ampliamente en este tema, es esencial en la construcci6n de los sistemas operativos multiprogramados. Los objetivos principales de estos sistemas se pueden expresar en los terminos siguientes:

1) Permitir la creacion y comunicaci6n entre los procesos.

2) Gestionar entre los procesos la utilizaci6n de la CPU y del resto de los recursos del sistema (tales como la memoria y los dispositivos de E/S).

EI tema trata, en primer lugar, de dar una idea 10 mas clara posible de 10 que son y representan los procesos en un sistema operativo, de las relaciones que existen entre ellos y de la forma en que pueden especificarse. Se analizan a continuaci6n los diferentes estados (activo, preparado, bloqueado, nonato y muerto) por los que pueden pasar los procesos a 10 largo de su ejecuci6n y las estructuras necesarias para su representaci6n.

Se introduce despues la noci6n de hebras, que representan una soluci6n software usada por algunos sistemas operativos modemos para mejorar su rendimiento y que supone un refinamiento del concepto de proceso. Finalmente, se estudia el planificador de procesos. Se llama as! a aquella parte del sistema operativo encargada de asignar los recursos, y en especialla CPU, a los procesos que la solicitan. Se destacan dos tipos de planificadores que coexisten en un sistema operativo:

1) Planificadar a larga plaza (PLP) 0 planificador de trabajos

2) Planificador a carto plazo (PCP) 0 planificador del procesador describiendose los algoritmos mas utilizados en la realizaci6n de los mismos.

24

2 Gesti6n de procesos

Introducci6n a los procesos

Un sistema operativo (SO) se define como "un conjunto de extensiones software del hardware original, que culminan en una maquina virtual que sirve como un entorno de programaci6n de alto nivel que gestiona el flujo de trabajo en una red de computadores" (Ralston y Reilly, 1993). El SO proporciona una serie de servicios y una interfaz a dichos servicios.

En la programaci6n convencional se dice que los programas son secuenciales, ya que cabe imaginar al procesador ejecutando el c6digo senten cia a senten cia. En cada in stante pensamos que la maquina esta ejecutando una (mica sentencia. Sin embargo, hay muchas aplicaciones en las que varios calculos pueden ejecutarse potencial mente en paralelo 0 procesarse de forma concurrente. Los sistemas operativos sustentan este tipo de operaci6n inherente a todos los sistemas de tiempo real.

La mayor parte de los computadores actuales proporcionan mas recursos de los que suele necesitar un program a convencional. En los primeros computadores s610 se ejecutaba un programa 0 trabajo a la vez. Sin embargo, se puso rapidamente de manifiesto que algunos programas estaban limitados en su velocidad de ejecuci6n por el uso continuado de unidades de EIS, como lectores de tarjetas 0 unidades de cinta magnetica. Por el contrario, habia otros program as en los que su velocidad estaba limitada por la unidad de procesamiento ya que hacian poco uso de las unidades de EIS. Ninguno de los programas de este tipo utilizaba toda la potencialidad del computador, unos por tener liberado de trabajo al procesador y otros por tener desocupadas las unidades de EIS. Este problema se intent6 resolver con la multiprogramacion, en la que con el entrelazado y el solapamiento de la ejecuci6n de mas de un programa, se intenta mantener del modo mas ocupado posible a todos los recursos del sistema. As), con la ejecuci6n concurrente de mas de un trabajo 0 programa se puede obtener una mejor utilizaci6n del sistema.

Por ejemplo, una vez que un computador ha comenzado a leer datos de un disco el procesador puede ejecutar instrucciones al mismo tiempo que los datos se van transfiriendo, por acceso directo a memoria (ver Seccion 6-4), a una zona utilizada como memoria intermedia (buffer). Si se dispone de un unico procesador, este puede realizar labores para distintos trabajos pasando de uno a otro, mientras que en un determinado instante esta dedicado en exclusiva a una tarea. En este caso, el progreso de los dos programas se debe a que uno utiliza el procesador mientras que el otro utiliza una unidad de EIS. Una vez que el program a que realiza la EIS de datos ha terminado de efectuar su tarea, debera esperar a que el procesador cambie a el para seguir progresando. Este cambio entre dos programas se puede extender a otros programas que esten esperando a ejecutarse. De este modo, solamente con cambiar la atenci6n de un unico procesador entre varios program as y dejando que cada uno de ellos se ejecute unas milesimas de segundo antes de ir a otro, permite crear la ilusi6n de la ejecuci6n concurrente 0 al unisono de los programas. Se dice entonces que es un sistema con multiprogramacion.

Los sistemas con multiprogramaci6n interactiva, en los que se asigna a cada programa un mismo

2-1 Introducci6n a los procesos

25

intervalo de tiempo de ejecuci6n se denominan sistemas de tiempo compartido.

Si se dispone de un computador con varios procesadores se puede hacer que varios programas 0 partes de un mismo program a se ejecuten en paralelo, cada uno de ellos en un procesador. En el caso de un unico procesador se puede obtener la percepcion de que algunos programas 0 partes de un unico programa se ejecutan en paralelo haciendo que, como se ha indicado en los sistemas de tiempo com partido, todos ellos dispongan del procesador un intervalo de tiempo, de modo que ninguno utilice dos veces el procesador sin que todos los demas hayan dispuesto de el. Se consigue asi una cierta imagen del concepto de paralelismo.

Sin embargo, la noci6n de procesamiento concurrente va mas alia de la idea de ir ejecutando en paralelo partes de algunos programas convencionales 0 altemando un unico procesador entre diferentes zonas de un s610 programa. Asi, de forma mas precisa, se puede afirmar que un sistema operativo cambia el procesador entre muchos calculos denominados procesos, tare as 0 trabajos (processes, tasks 0 jobs). La denominaci6n suele variar segun los sistemas operativos y autores; en 10 que sigue los usaremos indistintamente.

Se utiliza el termino multitarea para referirse a la capacidad que tienen los sistemas operativos de ejecutar de forma simultanea varios procesos, reservandose el terrnino muItiprocesamiento a un computador que dispone de varios procesadores. E1 termino multiprogramacion es conceptual mente mas general que el de multitarea, pues tiene en cuenta ademas de la posibilidad de multitarea, los requisitos

necesarios para ella, como son la capacidad de gesti6n de memoria y del sistema de ficheros I. Para fij ar las ideas consideremos el siguiente ejemplo ilustrativo de los conceptos que acabamos de introducir.

2.1.1 Ejemplo

Supongamos un estudiante que tiene que preparar varias asignaturas durante el curso. Relacionamos al estudiante con un computador con un unico procesador, su cerebro. Una organizaci6n secuencial del estudio de las asignaturas podria ser estudiar una asignatura durante un numero de dias hasta aprenderla, despues otra asignatura y asi sucesivamente hasta preparar la ultima. Otra organizaci6n podria ser estudiar cada dia un poco de cada asignatura. En cada in stante de tiempo estara estudiando una (mica asignatura, pero visto el trabajo a una esc ala macroscopica al cabo del curso podriamos afirmar que el estudiante ha llevado las asignaturas en paralelo 0 de forma concurrente.

Durante el proceso de aprendizaje habra momentos en que tendra que abandonar temporal mente este para realizar otras tareas, como atender una llamada de telefono 0 abrir la puerta. Al afiadir estas nuevas tareas de su quehacer cotidiano el estudiante necesita una cierta planificacion que le permita determinar cuando debe pasar de la ejecuci6n de una {area a otra. Dicha planificacion forma parte de su "modus operandi" 0 sistema operativo; segun este, el estudio de una asignatura se realizara durante un cierto intervalo de tiempo, transcurrido el cual se producira el cambio a otra asignatura. Si durante el estudio se produce, por ejemplo, una llamada telef6nica, el estudiante la atendera y salvo que la 11amada Ie obligue a realizar otra tarea, como salir a comprar comida para los amigos que Ie acaban de comunicar que van a venir a cenar, proseguira con el estudio.

I. En la mayoria de los textos, los terminos multitarea y multiprogramacion se utili zan indistintamente, considcrandose sinonimos.

26 2 Gestion de procesos

2.1.2 Dlstlnclon entre programas y procesos

EI ejemplo anterior podemos enmarcarlo dentro de la realizacion de distintos programas convene ion ales alternando entre ellos, Pensemos ahora en la ejecucion de un programa de edicion de textos en un sistema que esta multiprogramado y es multiusuario. EI programa de edicion puede ser ejecutado por varios usuarios al mismo tiempo. EI programa es unico, pero cada invocaci6n a el genera un proceso distinto e independiente, que utilizara unas estructuras de datos diferentes a las de otros procesos que resulten de la utilizacion del editor por otros usuarios. Cuando uno de ellos termina la edicion, se elimina el proceso asociado sin que esto influya en el resto de los procesos de edici6n de otros usuarios. A su vez, los procesos de edicion pueden generar nuevos procesos independientes; por ejemplo guardar los datos en un fichero. Una vez creado el proceso para almacenar los datos, su ejecucion tiene lugar de forma concurrente con el resto de los procesos.

Aunque los procesos de edicion se pueden considerar como independientes, 10 cierto es que estes compiten por el uso de los recursos del sistema, de manera que se necesitan herramientas que permitan la sincronizacion y la comunicacion entre los mismos. A veces dos 0 mas procesos cooperan para alguna operacion comun.

Vemos pues, que el concepto de proceso es por su propia naturaleza dinamico, ligado intimamente a la ejecucion de un programa y que normalmente pasa por varios estados antes de finalizar su ejecucion. Asi, en cualquier instante, s610 un proceso estara en ejecucion mientras que los otros estaran preparados para acceder al procesador cuando 10 disponga el SO, 0 bloqueados, esperando que ocurra algun evento que les permita volver a estar dispuestos para acceder al procesador.

2-2 Relaci6n entre los procesos

27

Relaci6n entre los procesos

El sistema operativo debe suministrar los servicios necesarios que permitan el procesamiento concurrente. Basicamente estos servicios proporcionan los medios para la realizacion de las siguientes actividades:

a) Ejecucion concurrente de los procesos.

b) Sincronizacion entre procesos.

c) Comunicacion entre procesos.

Adernas, el sistema operativo debe disponer de algoritmos de planificacion y gestion de procesos que se encarguen de las siguientes acciones:

1) Decidir que proceso se ejecutara 0 tornara el procesador

2) Llevar cuenta de los estados de los procesos, sus prioridades y toda la restante informacion relevante acerca de ellos.

Oependiendo de la interaccion entre los procesos, estes se pueden clasi ficar de la forma siguiente:

a) Procesos independientes. Los procesos independientes no se comunican 0 sincronizan entre ellos.

En un sistema con un solo procesador, los procesos independientes en senti do estricto no existen, ya que todos cornpiten por la posesion del procesador y posiblernente par la memoria y los dispositivos de £/S.

b) Procesos cooperativos. Los procesos cooperativos se cornunican y sincronizan sus actividades para realizar una labor comun. Por ejernplo, en el computador a bordo de un avian hay procesos encargados de vigilar el funcionamiento de los motores, actualizar los instrumentos de vuelo, procesar las sefiales de los instrumentos de navegacion y mantener el rumbo, Todos los procesos cooperan durante el vuelo del avian, 10 que puede requerir frecuentes interacciones entre todos ellos.

c) Procesos competitivos. Al compartirse los recursos de un computador todos los procesos necesariamente deben competir entre ellos. El acceso ordenado a estos recursos necesita de la sincronizacion y a veces tambien de la cornunicacion entre los procesos.

En este sentido cabe considerar al sistema operativo como un verdadero director de orquesta que trata de armonizar, priorizar y ordenar la ejecucion de los diferentes procesos que compiten por los recursos I imitados del computador con el objetivo final de permitir el procesamiento concurrente de todos ellos. Se trata en definitiva de optimizar el rendimiento del computador en la realizacion de su trabajo.

28

2 Gesti6n de procesos

Especificacion de los procesos

En algunos sistemas operativos como en los de tiempo compartido, cada programa que se pas a a ejecuci6n, por ejemplo mediante una orden de "ejecutar" dada por el usuario, se trata como un proceso independiente. Estos procesos generados por el SO se denominan implicitos. Una vez terminada la ejecuci6n de los mismos, su eliminaci6n tambien la realiza el propio SO. As! mismo, el SO proporciona en tiempo real los servicios que son necesarios para que el usuario pueda definir procesos de forma explicita. Los program as acceden a estos servicios realizando lIamadas al sistema (system calls).

Estas llamadas pueden aparecer incrustadas en el c6digo de un programa de usuario 0 del propio sistema, en cuyo caso, se asemejan a llamadas a procedimientos 0 funciones que dan lugar a transferencias de rutinas del SO cuando se invocan en tiempo real. Las llamadas al sistema se realizan tambien, pero de forma indirecta, cuando se dan ordenes al SO a traves de un terminal: la rutina de monitorizaci6n del terminal (que es a su vez un proceso) se encarga de transformar la orden en llamadas al sistema.

De este modo, al comienzo de la ejecucion del programa principal de un usuario se inicia la ejecuci6n de un proceso. A su vez el proceso podria crear nuevos procesos. En este caso, el proceso que crea otro nuevo se denomina proceso padre (parent process), y el proceso creado se denomina proceso hijo (child process). Una vez creado un proceso hijo, la ejecuci6n de padre e hijo transcurre de manera concurrente. De esta forma, se puede crear una jerarquia arborescente de procesos, en la que un padre puede tener varios hijos y estes pueden tener otros hijos, etc, pero donde cada hijo solo tiene un padre.

2.3.1 Ejemplo 1

A continuacion se muestra un programa principal y dos procedimientos prdl y prd2 de un programa en C ejecutado con el SO Xinu. El program a principal crea dos procesos mediante la llamada al sistema operativo create. El primer argumento de esta Hamada es la direccion donde empezaran a ejecutar las instrucciones cada uno de los procesos creados, que en este caso, seran los procedimientos prdl para el primer proceso y prd2 para el segundo proceso. Adernas de esta direcci6n de comienzo de ejecuci6n, en la Hamada se especifican otros atributos necesarios para la creaci6n del proceso. Entre elIos en Xinu estan: el espacio de pila necesario para el proceso, su priori dad, un nombre 0 descriptor del mismo, el nurnero de argumentos y los argumentos.

La funcion create devuelve un numero entero que identifica de forma unica al proceso creado. A este valor se Ie denomina id del proceso, 0 pid del proceso. En este SO, la creacion del proceso no hace que este se ejecute inmediatamente, sino que queda preparado en el estado de bloqueado hasta que se ejecute la Hamada al sistema resume. Esta funcion recibe como argumento el pid que devuelve create y pasa al proceso al estado de preparado para que pueda ejecutarse.

2·3 Especificaci6n de los procesos

29

/*Ejemp I.e main, prd I, prd2*/ #include <conf.h>

int prdl (void);

int prd2 (void);

void main (void)

{

resume (create (prd l , 400, 10, "procl ",0»; resume (create (prd2, 400, 10, "proc2", 0)); }

/*prd 1 -Imprime 'A' indefinidamente*/ int prdl (void)

(

while (I)

putc (consola, ' A ');

/*prd2 -Imprime 'B' indefinidamente*/ int prd2 (void)

(

while (I)

putc (consola, 'B');

La ejecucion de la funcion resume deja al proceso compitiendo por utilizar el procesador del sistema can el resto de los procesos que esten preparados para ejecutarse y eventualmente se ejecutara. Asi, una vez finalizada la ejecuci6n de la funci6n resume del proceso ligado al programa principal, este seguira su ejecucion de forma concurrente con el proceso procJ. Una vez ejecutada la segunda sentencia resume, el proceso proc2 se ejecutara concurrentemente con el resto de los proeesos.

El program a principal, que tarnbien es un proceso, alcanza el final y se elimina su proceso asociado.

Dicha eliminacion supone el cese de su ejecucion y la liberacion de la memoria ocupada. No obstante, los dos procesos creados siguen ejecutandose concurrentemente de forma indefinida. l,Como se pueden eliminar estos procesos? En Xinu la llamada del sistema kill perrnite terrninar un proceso. Esta funci6n, que se puede considerar la inversa de la funci6n create, solo necesita como argumento el pid del proceso que se desea eliminar. Esta llamada al sistema suele formar parte de la terminaci6n ordenada de un programa. Normalmente la mayoria de los sistemas con procesamiento concurrente permiten que un proceso se pueda suprimir a si mismo, utilizando en la llamada a la funcion kill su propio pid. Muchos compiladores normalmente transforman el end de un programa principal en una lIamada a kill con el pid de su proceso asociado.

2.3.2 Ejemplo 2

Para retlejar mas la diferencia entre programa y proceso, en el ejemplo siguiente, que es una modificacion del anterior, se muestra como los procesos no tienen por que ejecutar c6digos independientes. Ahara, un misrno procedimiento da lugar ados procesos independientes.

30

2 Gesti6n de procesos

/*Ejemp2.c main, prd*/ #include <conf.h>

int prd (char);

void main (void)

{

resume (create (prd, 400,10, "procl ", 1,' A')); resume (create (prd, 400, 10, "proc2", 1, 'B'»; }

/*prd -Imprime un caracter indefinidamente*/ int prd (char ch)

{

while (I)

putc (consola, ch);

La primera senten cia create crea un proceso, proci, para ejecutar el codigo del procedimiento prd. Al proceso se Ie pasa como argumento el caracter 'A'. EI numero anterior a este caracter en la sentencia create, indica el numero de argumentos que se Ie pasan al proceso, en este caso s610 1. EI proceso comienza la ejecucion del c6digo del procedimiento con el caracter ch igual al caracter 'A'.

EI proceso proc2 comienza con ch igual a 'B'. Los dos procesos se ejecutan concurrentemente sin ningun efecto del uno sobre el otro. Esto es posible gracias a que el sistema operativo hace que los argumentos y variables locales del procedimiento 0 funcion que da lugar al proceso, se asocian a este y no al codigo en el que aparecen. De esta manera, el sistema crea para cada proceso un conjunto independiente de variables locales, de parametros formales y de llamadas a los procedimientos y a las funciones.

Algunos lenguajes de programacion como Ada, Modula y Occam disponen de estructuras para la declaracion explicita de procesos y de su ejecucion concurrente y por ello no es necesaria la invocacion directa de las llamadas al sistema.

2-4 Estados de los procesos

31

Estados de los procesos

Como se ha puesto de manifiesto, el proceso es un elemento dinamico que puede pasar por diferentes estados a 10 largo de su "existencia", De forma general, un proceso puede encontrarse en un in stante determinado en uno de los siguientes estados:

a) Activo.
b) Preparado.
c) Bloqueado 0 suspendido.
d) Nonato.
e) Muerto. La tarea activa es la que esta ejecutandose en un instante dado. En el caso de sistemas con un unico procesador, solo puede haber una tare a en dicho estado en cada instante.

En el estado de preparado, se encuentran todas las tare as que estan listas para ejecutarse pero que esperan a que un/el procesador quede libre (hay otros procesos mas prioritarios en ejecucion).

Las tareas que estan a la espera de que se cumpla alguna condicion y que por 10 tanto, no estan preparadas para ejecutarse, se dice que estan en el estado de bloqueado 0 suspendido; algunos ejemplos de condicion son: que se termine una operacion de EIS 0 que se reciba una sefial de sincronizacion,

Un proceso esta muerto cuando ha terminado su ejecucion 0 bien el sistema operativo ha detectado un error fatal y 10 ha transferido a dicho estado. Tambien es posible que haya entrado en 61 como resultado de un fallo del propio sistema operativo (cuestion que desgraciadamente suele ocurrir con harta frecuencia en algunos SO).

El estado de nonato indica que el programa real mente existe pero todavia no es conocido por el SO.

Se denomina estado global del sistema en un instante determinado, al conjunto de recursos y procesos existentes con sus estados correspondientes. EI sistema operativo cambia el estado global del sistema, modificando el estado de los procesos y la asignacion de los recursos, en respuesta a eventos externos 0 internos. Algunos ejemplos de eventos son las lIamadas al sistema operativo (para solicitar un recurso 0 realizar alguna operacion sobre un proceso) 0 cualquier interrupcion hardware.

EI sistema operativo dispone de algoritmos de planificacion y de gesti6n de los procesos y de los recursos de modo que, considerando como entradas al algoritmo los eventos y el estado global del sistema en un instante, genera un nuevo estado global reasignando los recursos entre los procesos, intentando optimizar el comportamiento del sistema de acuerdo con unos objetivos de disefio.

32 2 Gestion de procesos

2.4.1 Transiciones entre los estados

La Figura 2.1 muestra de forma general las transiciones entre los distintos estados. Este es un modele "elemental", cuando posteriormente se entre en mas detalles sera preciso refinarlo aun mas con algun nuevo estado y transiciones (ver Seccion 3-2).

Figura 2.1: Estados y transiciones de los procesos.

EI sistema operativo posee un m6dulo, el planificador que se encarga de activar los proeesos que estan en el estado preparado, de acuerdo con unos criterios determinados (por ejemplo en funci6n de sus prioridades). Toda interrupcion hace que la tare a que esta activa en ese instante deje de ejecutarse en favor del sistema operativo que decidira de entre los procesos que ya estan preparados, cual de ellos tiene que ponerse en el estado activo (pasa a usar el procesador). Por ejemplo un proceso activo puede efectuar llamadas al sistema para solieitar servicios de este, tales como realizar una operaci6n de EIS, crear 0 eliminar otro proceso, etc. Como resultado una vez terminado el servicio, el sistema operativo puede devolver el control al proceso que esta en ejecucion 0 transferirlo a uno de los otros estados.

EI proeeso en ejeeuci6n tambien puede volver al estado preparado por la accion del planificador (scheduler) del SO, sin que medie una Hamada al sistema; esta seria la situacion de un sistema de tiempo compartido en el que se hubiera terminado el intervalo de tiempo asignado al proceso en ejecucion 0, en otros sistemas, el caso de que pasara al estado de preparado un proceso con una prioridad mayor.

Un proceso pasa del estado nonato al estado preparado cuando el sistema a traves del planificador 10 decide. Si el proceso esta en el estado bloqueado, puede pasar al estado preparado si tiene lugar un evento que estuviera esperando para poder proseguir la ejecucion. Es decir, si un proceso esta bloqueado, solo puede activarse cuando desaparezca la causa de su bloqueo y esto sucedera cuando se ejecute la rutina de interrupci6n al final del evento que el proceso esta esperando; el proceso pasara a estar preparado.

Un proceso en ejecucion puede pasar a bloqueado si solicita el servicio de un recurso sin cuyos resultados no puede continuar, por ejemplo una operacion de EIS, 0 bien, si necesita que tenga lugar algun evento para poder continuar. Tambien puede pasar a este estado un proceso al ser creado 0, si estando en el estado de preparado, tiene lugar alguna ace ion determinada, como una llamada al sistema operativo del proceso que esta en ejecucion en ese momento para suspenderle. Un proceso pasa al estado muerto cuando finaliza 0 cuando queda eliminado por otro proceso.

2-5 EI bloque de control de procesos

33

EI bloque de control de procesos

EI sistema mantiene toda la informaci6n sobre un proceso en una estructura de datos denominada bloque de control de procesos (BCP) (ver Figura 2.2). La creacion de un proceso origina la creacion de su BCP que sirve para describirle hasta que se elimina 0 pasa al estado muerto, don de los procesos no poseen su BCP.

En el BCP se guarda la informacion que necesita el sistema para controlar al proceso y dar cuenta de sus

recursos y toda la que inf1uye en la ejecucion de un programa. Por ejemplo:

a) EI identificador unico del proceso (pid).

b) EI estado del proceso (activo, preparado, bloqueado).

c) La prioridad.

d) EI estado hardware (contador de programa, codigos de condicion, punteros de pila, etc).

e) La informacion para gestionar la memoria (punteros, tablas, registros).

f) La informaci6n de estado del sistema de EIS (dispositivos de EIS asignados al proceso, lista de archivos abiertos, etc).

g) La informacion de contabilidad y planificaci6n.

pid del proceso
estado del proceso
prioridad
contador de prograrna
registros
... Figura 2.2: Bloque de control de procesos

Cuando el sistema operativo cambia el procesador entre tareas, utiliza una zona del BCP en la que deja toda la informaci6n necesaria para que se pueda proseguir la ejecucion de la tarea cuando esta retome el procesador. Por elIo, no solo se necesita guardar el contador de programa, sino todos aquellos registros que

34

2 Gestion de procesos

contengan resultados intermedios y cualesquiera otros registros que influyan en la ejecucion, tales como el registro de condicion y los punteros de pila.

En la informacion contable, se mantiene la informacion necesaria para permitir que los algoritmos de planificacion del SO puedan conseguir organizar los procesos de modo que se obtenga el mejor comportamiento posible del sistema 0 10 que es equivalente, el rendimiento optimo en el uso del procesador (0 de los procesadores) del sistema y de los recursos. Informaciones relevantes para este fin son, entre otras, la hora de inicio del proceso, el tiempo real de uso del procesador, el tiempo de espera para conseguir un determinado recurs a y el tiempo medio transcurrido desde que el proceso esta preparado hasta que consigue el procesador.

2.5.1 Listas de procesos

EI SO mantiene listas de BCP para cada uno de los estados del sistema. Cada proceso pertenece a una unica lista. Asi, posee una lista de los procesos que estan en el estado preparado, una lista de los procesos en el estado bloqueado 0 suspendido y en el caso de sistemas multiprocesador, una lista de los procesos activos 0 en ejecuci6n. Si el sistema es uniprocesador la lista de los procesos activos se reduce a una sola entrada. Normalmente las listas de los estados preparado y bloqueado se organizan como listas enlazadas (ver Figura 2.3).

Lista de procesos activos

Lista de procesos preparados

Lista de procesos bloqueados

pid: proc. #5

pid: proc. #3 p pid: proc. #1 r pid: proc. #4


.i. pid: proc. #2 p pid: proc. #7 p pid: proc. #6


_j_ Figura 2.3: Listas de los estados en los que se encuentran los diferentes procesos

2-5 EI bloque de control de procesos

35

EI planificador del SO se encarga de gestionar el paso de los procesos de una lista a otra, manteniendo las listas ordenadas y actualizadas de la forma mas conveniente para las rutinas que operan sobre elIas. Asi, la lista de procesos en el estado preparado se puede gestionar como una cola con prioridad, mientras que la lista de procesos bloqueados es posible hacerlo como una cola FIFO.

Las causas por las que un proceso esta suspendido pueden ser muy variadas. En principio, cada dispositivo de EIS puede hacer que un proceso que de see utilizarlo deba esperar algun tiempo hasta que se realice su operacion. De este modo, un proceso que qui era, por ejemplo, acceder a un disco del sistema que este ocupado con la solicitud de algun otro proceso, debe permanecer a la espera de que quede libre. EI proceso puede estar en una lista unica de estados bloqueados 0 en una lista de estados suspendidos ligada en exclusiva a un dispositivo 0 evento (ver Figura 2.4).

Lista de procesos bloqueados (dispositivo 1)

Lista de procesos bloqueados (dispositivo 2)

Lista de procesos bloqueados (dispositivo 3)

pid: proc. #2

pid: proc. #6

Figura 2.4: Listas de los estados bloqueados asociadas a dispositivos

36

2 Gesli6n de procesos

Procesos y hebras

Tal como se han presentado los procesos hasta ahora, aparecen como la unidad basica de trabajo dentro de un sistema operativo, el cual se encarga de que se ejecuten y de proporcionarles los recursos necesarios para ello. Ambos aspectos, ejecucion y posesion de recursos, pueden verse como dos conceptos independientes y que pueden tratarse de forma separada. De esta forma, podemos ver el proceso como una entidad formada por una o mas unidades de ejecucion denominadas hebras (threads) y un conjunto de recursos asociados. A las hebras tambien se las denomina procesos primitivos. Si un proceso pasa al estado activo una hebra toma posesion del procesador; esta se puede interrumpir para que se pase a ejecutar otra hebra, y as! sucesivamente hasta que el proceso sale de dicho estado. Por esta razon, cada hebra posee su propio vector de estado, esto es, el contenido de los registros del procesador (contador de programa, puntero de pila, registros de proposito general, c6digos de condicion, etc). Una hebra no existe fuera de un proceso y solo pertenece a uno de ellos.

Los recursos no estan asociados a las hebras si no al proceso; este es el que puede acceder de forma protegida a los recursos del sistema y se encarga de su gestion entre las hebras. EI proceso se puede ver ahora como un espacio de direccion virtual que contiene la imagen de un program a y es la unidad propietaria de los recursos para un conjunto de hebras. EI proceso sirve as! de entomo para la ejecucion de las hebras.

Con esta concepcion se obtiene una mejora en el comportamiento del sistema operativo. La creacion de una hebra dentro de un proceso requiere menos tiempo que la creacion de un proceso nuevo, ya que su estado se ve reducido con respecto al del proceso. Tambien mejora el tiempo de conmutacion entre hebras con respecto al de los procesos. Adernas, las hebras comparten la memoria y los ficheros asignados al proceso, 10 que facilita su comunicacion y sincronizacion. Asi, en aquellas aplicaciones que puedan realizarse como unidades de ejecucion relacionadas, es mas eficaz hacerlo de esta manera que mediante procesos separados.

Las hebras se han utilizado con exito en los servidores de ficheros en una red local. Cada vez que se realiza una peticion de un fichero el gestor genera una hebra para atender la peticion correspondiente. En un sistema con una fuerte demanda de servicio se crean y eliminan muchas he bras en un corto periodo de tiempo, por 10 que la implementacion en base a hebras en lugar de procesos aumenta la velocidad del sistema. En un sistema multiprocesador las hebras se podrian ejecutar simultaneamente en varios procesadores.

En los sistemas con hebras parte de la planificacion se realiza tomando como base a estas. Un proceso esta en ejecucion cuando se esta ejecutando al menos una de sus hebras. En el estado preparado alguna hebra debe de estarlo para poder pasar a ejecucion. Por eso, la mayor parte de la informacion que tiene que ver con la ejecucion del proceso se guarda a nivel de hebras. La suspension del proceso, sin embargo, afecta a todas las hebras, ya que el sistema operativo 10 transfiere fuera de la memoria principal y la gestion se realiza, por 10 tanto, a nivel de proceso. Lo mismo ocurre cuando se termina la ejecuci6n del proceso.

En los SO antiguos las nociones de hebra y de proceso son equivalentes; el proceso se considera constituido por una sola hebra. Las hebras aparecen en algunos de los SO actuales, por ejemplo Windows NT.

2-7 EI planificador de procesos

37

EI planificador de procesos

Se denomina planificador al software del SO encargado de asignar los recursos de un sistema entre los procesos que los solicitan. Siempre que hay a que tomar una decision, el planificador debe decidir cual de los procesos que compiten por la posesion de un determinado recurso 10 recibira. En la definicion, el procesador se considera como un recurso mas del sistema. Fijaremos ahora nuestra atencion en este recurso.

Hay dos tipos fundamentales de planificadores que coexisten en un sistema operativo: el planificador a largo plazo (PLP) 0 planificador de trabajos y el planificador a corto plazo (PCP) 0 planificador del procesador (ver Figura 2.5).

Lote de trahajos

Cola del j
Cola de )
cstado / CPU
Iotes
preparado
Programas interactivos -
Cola del
estado
hloqucado / PLP

PCP

Salida

Figura 2.5: Esquema de la planificacion en un sistema operativo

EI PLP determina que trabajos se admiten en el sistema para su procesamiento y son, por 10 tanto, cargados en la memoria disponible. En los sistemas por lotes normalmente se presentan mas trabajos de los que pueden ser admitidos para una ejecuci6n inmediata. Estos trabajos se guardan en un dispositivo de almacenamiento para su ejecucion posterior. El PLP se encarga de seleccionar de ese alrnacenarnicnto los trabajos que considera mas adecuados lIevar a la memoria para su ejecucion, de acuerdo con una cierta politica de gestion.

EI PLP es el principal responsable de que se cumplan los criterios de gestion establecidos para la utilizacion global del sistema; para ello debe realizar una mezcla adecuada de trabajos "destinados" al procesador y trabajos "destinados" al sistema de £IS, con el fin de mantener en to do momento un uso adecuado de los recursos. Lo mas usual es definir una funci6n de prioridad y asignarle a cada program a un valor para la misma que se actualiza en instantes determinados por el PLP. Las tareas con mayor priori dad se llevan al estado preparado.

38

2 Gesti6n de procesos

Entre dos instantes de gestion del PLP los procesos se gestionan por el planificador PCP, mas sencillo que aquel ya que no soporta la sobrecarga del calculo de las prioridades.

Existen sistemas que no tienen algoritmo PLP 0 este es minimo, como es el caso de algunos sistemas de tiempo com partido que se limitan a poner en el estado de preparado cualquier proceso nuevo. En estos sistemas se consigue un comportamiento adecuado con la limitaci6n del numero de terminales disponibles 0 can la autorregulacion de los usuarios, de modo que si el sistema no va muy bien algunos dejaran sus tareas para otro momenta. Como norma general se puede afirmar que el PLP s610 existe en sistemas que admiten procesamiento por lotes.

EI PCP selecciona al proceso que pasara al estado activo de entre todos los procesos residentes en memoria que estan en el estado preparado. Como ya se ha indicado, este algoritmo se ejecuta muchas veces entre dos invocaciones al PLP. Su elevada frecuencia de usa hace que el algoritmo suela ser sencillo para evitar gastar mucho tiempo del procesador en su ejecuci6n. En la practica este algoritmo se llama, siempre que un evento origina un cambio en el estado general del sistema, para determinar si dicho evento implica un cambio en el proceso que debe pasar al estado activo. Entre los eventos que suelen producir una invocaci6n al PCP estan:

a) Las sefiales del reloj del sistema.

b) Las interrupciones.

c) La finalizacion de las operaciones de EIS.

d) Las llamadas al sistema operativo.

e) EI envio y la recepci6n de seiiales.

f) La activaci6n de programas interactivos.

En algunos sistemas al PCP tarnbien se le denomina distribuidor (dispatcher), sin embargo, en otros se reserva este nombre a aquella parte del PCP encargada en exclusiva de realizar las gestiones oportunas para pasar el procesador ala tarea seleccionada para su ejecuci6n.

Algunos sistemas introducen un planificador de nivel intermedio (ver Figura 2.6) denominado planificador a medio plazo (PMP). Este tipo de planificador se basa en el hecho de que a veces es conveniente llevar a la memoria secundaria un proceso que ha sido suspendido en su ejecuci6n por algun evento, 10 que permite liberar la memoria principal para otros procesos que estan en disposici6n de ejecutarse. Otro motivo para llevar un proceso suspendido a la memoria secundaria es el de conseguir una mezcla adecuada de procesos "destinados" al procesador y procesos "destinados" al sistema de £15. EI proceso de salvar una tarea suspendida en la memoria secundaria se den om ina intercambio (swapping). EI PMP solo se encuentra en aquellos SO que utilizan esta tecnica de gestion de la memoria.

2.7.1 Algoritmos de plan ificaci6n

Se han propuesto un numero elevado de algoritmos de planificaci6n cuya adecuacion a un sistema completo depende del tipo de planificador que se desee y de los objetivos que se persigan. Por ello en los sistemas actuales es posible encontrar una gran variedad de algoritmos. Nos limitaremos a exponer las caracteristicas generales de los mas importantes, prestando atenci6n a los que se utilizan en el PCP, si bien en la mayoria de los casos esos mismos algoritmos se pueden utilizar en el PLP.

2-7 EI planificador de procesos

39

Lote de trabajos

PMP~ Cola del estado
bloqueado en
memoria secundaria
PLP PCP
Cola de j ~ Cola del j
CPU
lotes estado .-'
preparado

Programas interactivos -
Cola del
estado
bloqueado Salida

Figura 2.6: Planificaci6n con uso de memoria secundaria

2.7.2 Criterios para la planlflcacion

Los algoritmos tienen distintas propiedades segun los criterios en los que se basen para su construccion, 10 cual se refleja en que un tipo de procesos se puede ver favorecido frente a otro en la disputa por eI procesador. Asi, antes de realizar la eleccion de un algoritmo se deben considerar las propiedades de estos frente al criterio de disefio elegido. Algunos de estos son:

a) Eficacia. Se expresa como un porcentaje del tiempo medio de utilizacion. Aunque puede parecer logico intentar mantener este parametro proximo al 100%, con un valor tan elevado otros aspectos importantes de medida del comportamiento del sistema pueden verse deteriorados, como por ejemplo el tiempo medio de espera.

b) Rendimiento (throughput). Es una medida del numero de procesos completados por unidad de tiempo. Por ejemplo, 10 procesos por segundo.

c) Tiempo de retorno 0 regreso (turnaround). Es el intervalo de tiempo que transcurre desde que un proceso se crea 0 presenta hasta que se completa por el sistema.

d) Tiempo de espera. Es el tiempo que el proceso espera hasta que se le concede el procesador.

Puede resultar una medida mas adecuada de la eficiencia del sistema, ya que se elimina de la medida el tiempo que tarda en ejecutarse el mismo.

e) Tiempo de respuesta a un evento. Se denomina as! al intervalo de tiempo que transcurre desde que se sefiala un evento hasta que se ejecuta la primera instruccion de la rutina de servicio de dicho evento.

EI criterio de seleccion de un algoritmo se suele basar en la maximizaci6n 0 minimizaci6n de una funcion de los parametres anteriores. Por ejemplo, maximizar la eficacia y el rendimiento y mini mizar el tiempo de espera, 0 bien, minimizar la varianza del tiempo de respuesta.

40 2 Gestion de procesos

2.7.3 Planjflcacion por expropiacion

En los algoritmos de tipo expropiativo, el proceso que se esta ejecutando puede ser interrumpido y pas ado al estado de preparado por parte del SO. La decision de aduefiarse de la CPU puede llevarse a cabo cuando llega un nuevo proceso, cuando se produce una interrupcion 0 periodicamente,

En los algoritmos con estrategia de no expropiaclon el proceso que esta activo permanece con el procesador hasta que el mismo devuelve el control al SO. Este tipo de estrategia suele hacer un uso menos frecuente del PCP que la estrategia con expropiacion, 10 que implica una mayor dedicacion a los procesos de los usuarios frente a los del sistema.

2.7.4 Planiflcaclon por prioridades

En los algoritmos de planificacion por prioridades cada proceso tiene asignada una y el de mayor prioridad en el estado preparado es el que toma el procesador. EI valor inicial puede ser asignado par el usuario 0 par el sistema. La asignacion puede ser de dos tipos:

a) Estatica, en cuyo caso no cambia durante el tiempo en que el proceso existe

b) Dinamica, que es cuando la prioridad puede ser modificada por el propio usuario 0 por el sistema.

La rnodificacion se suele realizar en funcion de ciertos parametres como la cantidad de memoria que utiliza, el numero de acciones de EIS que Ileva realizado, el tiempo medio de utilizacion del procesador hasta ese momento, el numero de ficheros abiertos, etc. Par ejemplo, los procesos con una gran cantidad de operaciones de EIS ocupan la mayor parte de su tiempo en el estado bloqueado, en espera de que estas conc1uyan. Cada vez que uno de estos procesos desee utilizar el sistema de EIS, puede ser conveniente concederselo con rapidez, para que se pueda ir realizando esta operacion en paralelo con otra que necesite el procesador y lograr, de esta manera, un uso intensivo de la mayoria de los recursos. Los algoritmos con planificacion por prioridades pueden ser de tipo de expropiacion 0 no expropiacion. En el caso de expropiacion, si un proceso pasa al estado de preparado y tiene una prioridad mayor que el que esta en ejecucion, el PCP llevara al proceso en ejecucion al estado de preparado y pasara el procesador al nuevo proceso. En una estrategia no preferente el nuevo proceso, aunque con mayor prioridad, tendra que esperar a que el proceso en ejecucion se suspenda para poder acceder al procesador. Los algoritmos con expropiacion y con prioridades se dice que estan guiadas par eventas (event-driven).

En los algoritmos con prioridades se puede plantear el problema de que los procesos con menor prioridad queden relegados y sin posibilidades de utilizar el procesador; si se de sea evitar esto, la solucion que se suele adoptar es la de ir aumentando la priori dad de aquellos procesos que Ilevan un tiempo de espera muy elevado. Esta estrategia se conoce como priaridad par envejecimiento (aging).

2.7.5 Planlflcacion FCFS: primero en lIegar primero en ser servido

EI modo mas sencillo de planificacion es aquel en el que los procesos en el estado preparado acceden al procesador en el orden en que llegan a dicho estado. FCFS es el acronimo de: First-Come-First-Served (primero en Ilegar primero en ser servido). El metodo no es de expropiacion, Rara vez se utiliza en la actualidad, pero se emplea dentro de otros esquemas, por ejemplo, el algoritmo de planificacion puede basarse en prioridades, pero dentro de los que pose en la misma prioridad los procesos se pueden gestionar del modo FCFS.

2-7 EI planificador de procesos

41

2.7.6 Planificaci6n SJF : primera tarea mas corta

Es una estrategia de planificacion no expropiativa en la que a cada trabajo 0 proceso se Ie asocia una estima del tiempo que Ie resta para finalizar su ejecucion y la seleccion se realiza en base a dicho tiempo: se selecciona el trabajo con el menor valor de tiempo restante de ejecucion. SFJ es el acronimo de Shortest-Job-First (primera tarea mas corta). Si dos trabajos tienen el mismo tiempo se seleccionan segun la estrategia FCFS.

Esta estrategia es optima desde el punto de vista de minimizar el tiempo medio de espera de los trabajos pendientes de ejecucion. Su dificultad real estriba en conocer el tiempo que Ie queda a cada trabajo para terminar su ejecucion. En entomos de produce ion donde los trabajos se ejecutan regularmente es posible tener una estima aceptable, pero en entomos de desarrollo rara vez se conoce el tiempo que tardara en ejecutarse un programa.

2.7.7 Planificaci6n SRT: tiempo que queda mas corto

EI metodo SJF es no expropiativo y por 10 tanto no resulta adecuado en entornos de tiempo compartido en los que se requiere tener garantizado un tiempo de respuesta razonable. EI algoritmo SRT corresponde a la version expropiativa del metoda SJF: es el metoda en el que se elige a continuacion aquel proceso al que Ie queda menos tiempo para terminar su ejecucion, incluyendo a los nuevos que lIeguen. SRT es el acronimo de Shortest-Remaining-Time (tiempo que queda mas corto). Este metodo tiene, frente al SJF, mayor frecuencia de invocacion del planiftcador, ala vez que una carga superior en las labores que tiene que realizar, 10 que puede llevar a un men or rendimiento y eficacia del procesador.

2.7.8 Planificaci6n RR: prioridad circular

En la planificacion por priori dad circular 0 de reparto del tiempo, tambien denominada "round robin" (RR), a todos los procesos en el estado preparado se les asigna un tiempo de ejecucion denominado cuanto. EI planificador va asignando el procesador a cada tarea de forma secuencial por el cuanto de tiempo definido. S i un proceso necesita un tiempo de ejecucion mayor que su cuanto asociado, una vez transcurrido este y si existen mas procesos en espera de ejecucion, se coloca al final de la lista del estado preparado y el procesador pasa al proceso que queda en cabeza de la lista. Tambien 10 hace si el proceso en ejecucion cambia al estado preparado (ver Figura 2.7). EI estado A pasa a ejecucion, una vez transcurrido un cuanto vuelve a la cola del estado preparado.

Lista del estado preparado

Finalizacion

Fin del cuanto

Figura 2.7: Planificaci6n RR par priori dad circular

42

2 Gestion de procesos

Este metodo de planificacion resulta muy adecuado en sistemas de tiempo compartido, en los que se necesita garantizar un tiempo de respuesta razonable a todos los usuarios que esten actuando de forma interaetiva con el sistema.

La realizacion de la planificacion RR neeesita de un temporizador que eontrole el cuanto asignado a los procesos y genere una interrupcion siempre que se produzea su finalizacion. La interrupcion hace que se llame al PCP que se encarga de guardar el contexto del proceso en ejecucion, 10 !leva al final de la lista de procesos preparados para ejecutarse y pas a a ejecucion al proeeso cabeeera de la lista.

El problema mas importante que se plantea en un algoritmo del tipo RR, es el de fijar el valor del cuanto ya que su eleccion supone llegar a un compromiso entre la efieaeia del procesador (que exigiria un valor no demasiado pequefio) y el tiempo de respuesta (que si 10 exigiria).

Supongamos un sistema con un cuanto de 10 ms en el que las operaeiones del PCP emplean un tiempo de 2 ms. Cada 10 ms es necesario utilizar 2 ms en gestiones, 10 que supone que un 20% del tiempo del procesador se gasta en tareas de tipo administrativo. Para mejorar los tiempos del sistema podemos incrementar el cuanto hasta 200 ms 10 que haee que solo se desperdieie un 1 % del tiempo del procesador. Si suponemos ahora que el sistema es interactivo y que veinte usuarios inician simultaneamente una comunicacion a la vez, entonces, admitiendo que solo hay esos veinte procesos para ejecutarse, el tiempo que tendra que esperar el ultimo usuario para ser servido, en el caso de que todos us en eompletamente su euanto, es de casi cuatro segundos. Este tiempo puede resultar excesivo para dicho usuario.

2.7.9

Planiflcaclon basada en el reloj de tiempo real

Adernas del reloj que controla la veloeidad a la que un proeesador ejecuta las instrucciones, la mayoria de los sistemas disponen de un reloj de tiempo real (RTR) que se encarga de generar una serial de forma periodica utilizada para produeir una interrupcion a un intervalo de tiempo fijo, previamente estableeido. EI RTR no posee un contador que vaya aeumulando el numero de interrupeiones produeidas, sino que esta cuenta es responsabilidad del sistema. La atencion a estas interrupciones se debe disefiar para que se realice rapidamente ya que si se tarda mucho tiempo en atenderla, 0 si se opera con la interrupcion inhibida durante mas de un ciclo de reloj, esta se perdera. Para evitar esto, los procesadores sue len dar la mayor prioridad a las interrupciones del reloj.

En muchos casos puede ser eonveniente ralentizar al reloj para, a pesar de perder precision, lograr una funeionalidad mas rica. Supongamos por ejemplo un sistema cuyo RTR produce cien interrupciones por segundo y que la atencion a esta frecuencia de interrupciones produce una carga muy fuerte sobre el sistema. Para simular un reloj con una frecuencia menor, par ejemplo 10 interrupeiones por segundo, el gestor de las interrupciones debe aeeptar todas las interrupciones; nueve veces se limita a decrementar un contador y salir rapidamente del tratamiento de la interrupcion, pero a la decima se ejecuta el codigo real de tratamiento de la interrupcion, logrando de esta manera una frecuencia de tratamiento de 10Hz frente a la de 100 Hz del RTR. A la velocidad real de ejecucion efectiva del codigo de tratamiento se la conoce como velocidad de tic (10 Hz en el ejemplo).

EI sistema operativo utiliza el RTR para las funciones siguientes:

a) Limitar el intervalo de tiempo en el que un proceso puede estar en ejecucion,

b) Proporcionar servicios a los usuarios, como iniciar tareas cic1icas y la funcion retardo.

La rutina de tratamiento de la interrupcion del RTR se encarga de mirar la lista de los procesos

2 .. 7 EI planificador de procesos

43

retardados y de pasar al estado preparado a aquellos para los que haya transcurrido el tiempo de retardo.

La mayoria de los sistemas poseen adem as del RTR, un reloj con la hora del dia que podriamos asimilar a un reloj de pulsera. Con esta finalidad se dispone de un reloj (puede servir el propio RTR) y un contador que acumula los pulsos del reloj. Unos programas se encargan de determinar la hora y la fecha y otros de escribir en el contador del reloj por si es necesario inicializarlo, 10 que ocurre raras veces, ya que el reloj continua contando correctamente mientras tenga alimentacion de corriente, independientemente de que funcione 0 no la CPU. De este modo es po sible, tanto para el sistema como para el usuario, conocer la fecha y la hora y utilizar estos datos para desencadenar eventos.

2.7.10 Planificaclon MLQ: colas multinivel

En estos metodos se utilizan algoritmos de planificacion en los que se clasifican las tareas en diferentes grupos a los que se aplican distintas estrategias de planificaci6n. MLQ es el acronirno de Multi-Level-Queus (colas multinivel). Para ella se crean colas de tareas separadas que se gestionan por criterios diferentes. Cada tarea se asigna a una sola cola de acuerdo con alguna propiedad de la tarea. Por ejernplo, los procesos del SO y de servicio a las interrupciones se pueden organizar segun una planificacion guiada por sucesos, los program as interactivos por el metodo RR y las tareas por lotes por FCFS. Adernas, debe existir un criterio de planificacion entre las colas. Normalmente este suele ser el de prioridad fija con expropiacion. De este modo no puede ejecutarse ninguna tare a de una cola si las que la preceden en prioridad tienen alguna tarca pendiente. Por ejernplo, la cola de procesos del SO debe tener priori dad absoluta sobre la de los programas interactivos y por lotes y solo se ejecutara una tare a de lotes si las otras dos colas estan vacias. Si una tarea de lotes esta en ejecucion y una tarea asignada a una cola de mayor prioridad pasa a estar preparada para ejecutarse, 10 hara tras expropiar a la primera.

Otra posibilidad de gestion de las colas es la de compartir el tiempo entre las colas: a cada una de elias se Ie asigna una porcion de tiempo que debe utilizar para planificar entre las distintas tareas de su cola. La porcion de tiempo asignada se puede realizar, por ejemplo, de modo proporcional a las prioridades de las colas.

2.7.11 Planlflcaclon MLFQ: colas multinivel con reallrnentaclon

En los algoritmos de tipo MLQ a las tareas se les asigna una cola de forma fija, de modo que estas no se mueven entre las colas. Sin embargo en las colas multinivel con realimentaci6n (MLFQ) si se permite la movilidad entre las colas. Para ello, las colas se organizan segun sus caracteristicas de uso del procesador. Las tareas que emplean poco el procesador se mantienen en las colas de mayor prioridad y las que 10 utilizan mucho se situan en las colas de menor prioridad. EI movimiento de las tareas entre las colas se realiza segun su comportamiento dinamico a 10 largo de su tiempo de vida efectiva.

Como ejemplo, consideremos un planificador MLFQ con tres colas denominadas de nivel 1, 2 y 3 respectivamente y con orden de prioridad segun se las ha numerado (ver Figura 2.8). Las colas de niveles 1 y 2 se gestionan por RR. EI cuanto del nivel 1 es de 10 milisegundos y el del nivel 2 es de 20 milisegundos. EI nivel3 se gestiona por FCFS.

El planificador ejecuta en primer lugar todas las tareas de la cola del nivel I y s610 cuando esta cola esta vacia ejecuta las tareas del nivel2; finalmente las tareas del nivel 3 solo entran en ejecuci6n cuando las colas de los niveles anteriores estan vacias. Una tarea del nivel 2 expropia a una del nivel 3 y una del nivel I a cualquiera de los niveles 2 y 3. Una tarea que entra en el estado preparado se coloca en el nivel I. Si no

44

2 Gesti6n de procesos

finaliza su ejecuci6n en 10 milisegundos se pasa a la cola del nivel2. Si la cola del nivell esta vacia se pasa a ejecutar la tarea que se encuentra en cabeza de la cola del nivel 2. Si esta no finaliza su ejecuci6n en los 20 milisegundos que tiene asignada resulta expropiada y pasa a la cola del nivel3.

Nivell

10 ms

(
Nivel2
20 ms ~,

(
Nivel3
FCFS Figura 2.8: Colas multinivel con realimentacion

Mediante este algoritmo se da la mayor priori dad a las tareas que no consumen de una vez mas de 10 milisegundos del procesador. Las que tienen un tiempo de ejecuci6n de mas de 10 milisegundos, pero menos de 30, tambien consiguen una ejecuci6n rapida, y las que necesitan mas tiempo caen en el nivel 3 y s6lo se sirven cuando todas las tareas que les preceden han sido ejecutadas y no hay tareas de niveles 1 y 2 que esten preparadas. Alternativamente, tam bien se podria haber pensado en la posibilidad de subir de nivel a aquellas tareas que terminan su ejecucion en un tiempo inferior al del nivel que les precede.

Existen muchos algoritmos posibles de planificacion por MLFQ que pueden definirse de forma mas

general por los pararnetros siguientes:

a) EI nurnero de colas.

b) El algoritmo de planificacion de cada cola.

c) Los metodos que determinan el movimiento de las tareas entre las colas.

d) EI metodo que indica la cola en la que entra una tarea cuando necesita un servicio.

2-8 Conclusiones

45

Conclusiones

EI concepto de proceso tiene una connotaci6n dinamica y va ligado a la ejecuci6n de un programa. Durante su ejecuci6n un proceso compite con el resto de los procesos del sistema por el uso de los recursos. EI reparto de estos entre los distintos procesos y su ejecuci6n concurrente se conoce como multiprogramaci6n. Los procesos pueden ser generados por el SO 0 definirse de forma explicita por los usuarios, con cl fin de aprovechar las posibilidades de ejecuci6n concurrente dentro del sistema. Los SO disponen de los servicios necesarios para la gesti6n de los procesos, tales como su creacion, terminacion, ejecuci6n periodica, cambiar la priori dad, etc. Estos servicios pueden invocarse tanto por el usuario como por el propio SO.

Durante su existencia los procesos pasan por distintos estados cuyas transiciones estan controladas por el sistema operativo. De la forma mas sencilla posible un proceso puede estar en tres estados: activo, preparado y bloqueado. EI proceso que esta en el estado activo es aquel que tiene un procesador. Un proceso en el estado preparado se caracteriza porque podria usar un procesador si hubiera alguno disponible. Un proccso bloqueado esta a la espera de que se cumpla alguna condici6n para poder pasar al estado preparado.

Toda la informaci6n de un proceso que el SO necesita para controlarle, se mantiene en una estructura de datos conocida como bloque de control de procesos y que puede considerarse como una representaci6n del mismo. EI sistema operativo mantiene listas de bloques de control de procesos para cada uno de los estados del sistema.

Se denomina planificador a aquella parte del sistema operativo encargada de asignar los recursos del sistema de manera que se consigan unos objetivos de comportamiento especificados. Hay tres tipos de planificadores que pueden coexistir en un sistema operativo: planificadores a largo, medio y corto plazo. Su denominaci6n hace referencia a la frecuencia relativa con la que se utilizan. EI planificador a largo plazo determina los programas que se admiten en el sistema para su procesamiento. EI planificador a medio plazo es el responsable de la transferencia de los procesos desde la memoria principal a la memoria secundaria, hasta que suceda algun even to que implique su paso al estado bloqueado, y tambien desde este estado al de preparado. EI planificador a corto plazo selecciona al proceso que pasara al estado activo de entre todos los procesos que estan en el estado preparado.

La elecci6n de los algoritmos de planificaci6n se realiza teniendo en cuenta sus caracterfsticas frente a los criterios de disefio elegido. Las propiedades de los algoritmos se expresan en termino de aspectos tales como la eficacia en el uso del procesador, el rendimiento 0 numero de procesos completados por unidad de medida temporal, el tiempo de espera de un proceso y el tiempo de respuesta a un evento.

Se han presentado distintos algoritmos de planificaci6n. Un algoritmo se denomina expropiativo cuando un proceso en ejecuci6n pas a al estado de preparado por decisi6n del SO.

En la planificaci6n por prioridades cad a proceso tiene asignada una. EI proceso de mayor prioridad en el

46

2 Gestion de procesos

estado preparado es el que toma el procesador. La prioridad puede ser estatica 0 dinamica, A los algoritmos con prioridades y expropiacion se les denomina guiados por eventos.

EI metodo de planificaci6n mas sencilla es el de dar servicio segun el orden de llegada (FCFS), pero tambien es el de menor rendimiento.

EI algoritmo SJF es una estrategia no expropiativa en la que la seleccion de los procesos se realiza teniendo en cuenta el tiempo que Ie resta de ejecucion. La version expropiativa del algoritmo es la planificacion SRT.

La planificacion con prioridad circular 0 por reparto del tiempo (RR) es la mas utilizada en los sistemas de tiempo compartido. En ella se asigna un tiempo de ejecucion 0 cuanto a todos los procesos que estan en el estado preparado. EI procesador se va rotando entre los procesos por el cuanto de tiempo definido.

EI reloj de tiempo real del sistema proporciona las interrupciones que permiten la expropiacion de un proceso cuando ha transcurrido su cuanto. Adernas, permite iniciar los procesos que requieren una ejecucion cic1ica, as! como implementar la funcion retardo.

En la planificaci6n por colas multinivel los procesos se clasifican en diferentes grupos a los que se aplican distintas estrategias de planificacion, En la variante con realimentacion se permite la movilidad de los procesos entre las distintas colas.

2-9 Cuestiones propuestas

47

Cuestiones propuestas

1) Explicar brevemente que significa el termino multiprogramacion y que se entiende por grado de multiprogramacion.

2) Discutir si existen ventajas en el uso de sistemas operativos con multiprogramacion, en vez de procesamiento en serie, en un computador dedicado a servir las necesidades de un unico usuario.

3) En los primeros computadores cada byte de datos de lectura 0 escritura era directamente manejado par la CPU (es decir, no habia Acceso Directo a Memoria 0 DMA). (,Que implicaciones tiene esta organizacion con respecto a la multiprogramacion?

4) EI cambio del procesador de un proceso a otro juega un papel fundamental en la gestion de estos, Describir los pasos que debe seguir un proceso cuando tiene lugar un cambio de contexto.

5) Indicar las transiciones que se producen entre los diferentes estados de un proceso por actuacion del planificador a corto plazo (PCP), el planificador a medio plazo (PMP) y el planificador a largo plazo (PLP).

6) Los criterios de planificacion mas utilizados son el tiempo de retorno 0 regreso, el tiempo de espera, el rendimiento y la eficacia. Explicar dichos conceptos de manera sencilla y breve.

7) Dar una ecuacion que relacione los siguientes periodos de tiempo de un trabajo: tiempo de retorno, tiempo de ocupaci6n de la CPU y tiempo de espera.

8) Expresar matematicamente los conceptos de la eficacia y el rendimiento.

9) Establecer una breve definicion de los principales algoritmos de planificacion a corto plazo.

10) Un sistema operativo de tiempo compartido utiliza planificacion basada en prioridades para procesos criticos y planificacion por priori dad circular 0 por reparto de tiempo para procesos de usuarios interactivos. En un momenta determinado, se mejora el hardware reemplazando la CPU con un modelo funcional equivalente que es dos veces mas rapido, Discutir los cambios que experimentan las diferentes clases de usuarios. (,Deberian modificarse algunos de los parametres del sistema operativo?

11) Se tienen 3 procesos, Pj, P2 Y P3, con tiempos de ejecucion, 85,45 y 118 ms, respectivamente. Si actua el planificador a corto plazo segun el algoritmo SJF determinar el orden en que se encuentran en la lista de preparados. (,En que se diferencia si el planificador fuera a largo plazo?

12) l,Como se suele representar graficamente la planificacion de procesos?

48

2 Gestion de procesos

13) Para los tres procesos de la Cuestion 2-11 calcular sus tiempos de retorno, de espera, rendimiento y eficacia del sistema. Dibujar el diagrama de Gantt 0 diagrama temporal de la posesion del procesador.

14) Si el tiempo de retorno 0 regreso de un proceso, PI, es de 30 ms y el de ejecucion real de 10 ms, l,Cwil es su tiempo de espera, la eficacia y el rendimiento de este sistema?

15) Se tienen dos procesos, PI Y P2, de tiempos de ejecucion 25 y 30 ms, respectivamente. El planificador a corto plazo actua segun el algoritmo RR 0 de prioridad circular con cuanto de 10 ms. l,Cwll sera el tiempo de retorno 0 regreso de PI y P2?

16) Sean dos procesos, PI con tiempo de ejecucion de 20 ms Y P2 con 15 ms. El planificador a corto plazo actua segun el algoritmo de prioridad circular con cuanto de 10 ms y tiempo de conmutacion de tarea de 5 ms. Marcar el tiempo de retorno (regreso) de PI y P2 .

2-10 Problemas propuestos

49

Problemas propuestos

1) Se de sea mantener el bloque de control de los procesos (BCP) en una estructura de datos denominada tabla de procesos. La tabla tendra una entrada por cada uno de los procesos. EI pid de cad a proceso es un entero entre 0 y <numero maximo de procesos - 1> que proporciona su entrada en la tabla. Una de las entradas correspondera siempre a la del proceso en ejecucion, y el resto a procesos que esperan por una u otra causa. Cada entrada de la tabla dispondra de toda la informacion necesaria del proceso:

a) Direccion inicial del codigo del proceso.

b) Numero identificador del proceso (Pici).

c) Un array con el nombre del proceso.

d) Estado del proceso (ejecucion, preparado, suspendido y entrada sin proceso -para una entrada no ocupada por proceso-).

e) Prioridad del proceso (de 0 a 9).

f) Un campo que contiene el estado del proceso que se salvara al hacer el cambio de contexto, y que contiene:

• EI contador del programa.

• EI estado de la CPU.

• EI segmento de datos.

• El segmento de c6digo.

• EI segmento de pila.

• EI puntero de pila.

g) Un puntero al BCP del siguiente proceso.

Declarar en un pseudocodigo de alto nivel una estructura adecuada para el BCP que se ha definido.

2) Se dispone de un sistema operativo con planificacion por prioridades y con expropiacion en el que el estado preparado dispone de N prioridades, cada una de las cuales tiene asociada una cola. El estado suspendido tiene M colas, cada una de ellas asociada a un suceso distinto. llustrar mediante un diagrama las transiciones de estados del planificador del sistema operativo.

3) Para mantener las listas de procesos utilizadas en un sistema operativo se utiliza una tabla con dos entradas consecutivas para cada lista: la primera para la cabeza de la lista y la segunda para la cola de la lista. La misma tabla contiene una entrada para cada uno de los procesos. Se supone que un proceso solo puede estar en una lista. Las entradas de los procesos ocupan las <numero maximo de procesos>

50

2 Gesti6n de procesos

primeras posiciones de la tabla, cada una segun su identificador 0 pid. A continuacion van las entradas de las cabeceras y colas de las listas. Cada entrada a la tabla tiene tres campos. Un campo con la priori dad del proceso, otro con un entero que sefiala la entrada en la tabla del proceso que sigue en la lista y, el ultimo, un campo con un entero que sefiala la entrada en la tabla del anterior en la lista. EI campo del anterior del primer proceso de la lista apunta a la entrada de la cabeza de la lista, y el campo siguiente del ultimo de la lista apunta a la entrada de la cola de la lista.

Lista de procesos activos

Lista de procesos preparados

Lista de procesos bloqueados (dispositivo 1)

Lista de procesos bloqueados (dispositivo 2)

Lista de procesos bloqueados (dispositivo 3)

pid: proc. #3 ~ pid: proc. #1 r?> pid: proc. #4


11 .i. pid: proc. #6

Figura 2.9: Listas de los estados en los que se encuentran los procesos del Problema 2-3

Para las entradas a la tabla que corresponden a las cabezas y colas de las listas, el campo correspondiente a la prioridad Bevan los valores del men or y del mayor entero, respectivamente. Al puntero nulo se Ie asigna el valor -1.

2-10 Problemas propuestos

51

a) Supongase un sistema con 5 procesos tal que el estado global del sistema corresponde a una lista de procesos preparados en la que aparecen los procesos 2, 3 y I, en este orden, el proceso activo es el 5 y el 4 esta bloqueado. Representar graficarnente estas listas y hacer un esquema del contenido de una tabla como la que se ha descrito.

b) Mostrar la evolucion que tendria una tabla con esta estructura para el estado global del sistema que se muestra en la Figura 2.9.

4) La lista de los estados suspendidos no esta organizada por prioridades. Exponer algunas razones de por que no se utiliza la prioridad e indicar bajo que circunstancias podria resultar util su empleo.

5) En la estructura de listas del Problema 2-3 se pone la condicion de que un proceso solo puede aparecer en una lista. Expliquese 10 que sucederia si con una estrategia de tiempo compartido un proceso apareciera dos veces en la lista de preparado. Indicar razones que podrfan llevar a tomar esa decision. Prescindir del tipo de estructura que se haya utilizado para implementarla.

6) Supongase un tipo de computador en el que pueden ejecutarse simultanearnente 11 procesos, utilizando una variante de algoritmo de prioridad circular (Round Robin), lIamada Particion del procesador. Despues de cada instruccion tiene lugar un cambio de proceso de forma que la instruccion I viene del proceso I, la instrucci6n 2 del proceso 2 etc. EI cambio de proceso no produce un costo extra. Si un proceso necesita T segundos para terminar en ausencia de otros. (,Cuanto tiempo sera necesario si se emplea particion del procesador entre los 11 procesos?

7) En un sistema operativo con planificacion por priori dad circular, sea E el tiempo medio de ejecucion de un proceso antes de solicitar una peticion de entrada/salida (E/S) y C es el tiempo invertido en la conmutacion entre procesos, donde E » C. Analizar el efecto que sobre los procesos y el rendimiento del sistema tienen cada una de las situaciones siguientes, en las que varia el valor del cuanto, Q:

a) Cuanto arbitrariamente grande.

b) Cuanto muy pequefio, ligeramente superior a cero.

c) Cuanto muy cercano a E, tal que C < Q < E.

d) Cuanto igual a C.

8) Sean E y C cantidades definidas de forma similar a la realizada en el problema anterior. Para la planificacion por prioridad circular con un valor de cuanto igual a Q, calculese la eficiencia del procesador para cada uno de los siguientes casos:

a) Q es infinito.

b) Q> E.

c) C< Q < E.

d) Q = C.

e) Q es proximo a cero.

9) (,Que algoritmo minimiza el tiempo de espera medio? Demuestrelo.

52

2 Gesti6n de procesos

10) Supongase que se tienen que realizar cinco trabajos cuyas caracteristicas se muestran en la Tabla 2.1.

Estos trabajos llegan en el orden descrito en esta tabla. Se pide:

a) Realizar los diagramas de Gantt que ilustren la ejecucion de estos trabajos utilizando los algoritmos siguientes: FCFS (Primero en llegar primero en ser servido), SJF (Primera tarea mas corta), SRT (Tiempo que queda mas corto), RR (Prioridad circular) con un cuanto de I ms y, finalmente, una planificacion por prioridades no expropiativo.

b) Determinar para cada uno de los procesos con cada uno de los algoritmos de planificacion

anteriores el tiempo de retorno. Calcular la media resultante para cada algoritmo.

c) Idem para la eficiencia.

d) Idem para el tiempo de espera.

e) Idem para el tiempo de respuesta.

1) Analizar los resultados anteriores y extraer consecuencias.

Trabajo Tiempo de uso de CPU Prioridad
1 1 1
2 10 4
3 2 3
4 2 4
5 6 2 Tabla 2.1: Resumen de los procesos a ejecutar con sus prioridades y tiempos de ejecuci6n

11) Supongase que se tienen que realizar cinco trabajos cuyas caracteristicas se muestran en la Tabla 2.2.

Estos trabajos lIegan en el orden descrito en esta tabla. Se pide:.

Trabajo Tiempo de uso de CPU Prioridad
1 10 3
2 1 1
3 2 3
4 1 4
5 5 2 Tabla 2.2: Resumen de los procesos a ejecutar con sus prioridades y tiempos de ejecuci6n

a) Realizar un diagrama de Gantt que ilustre la ejecucion de estos trabajos para los algoritmos: FCFS (Primero en lIegar primero en ser servido), RR (prioridad circular) con cuanto de I ms, SJF (Primera tarea mas corta), prioridades no expropiativo. (El orden de Uegada es el orden con el que

2-10 Problemas propuestos

53

se han descrito en la tabla).

b) (, Cual es el tiempo de retorno de cada trabajo para cada uno de los algoritmos anteriores de planificaci6n?, (,Cual es el tiempo de espera de cada trabajo para cada uno de los algoritmos anteriores de planificaci6n? Razonar sobre el tiempo de espera medio de cada algoritmo.

12) En un sistema operativo multiproceso se dispone de un planificador que emplea el algoritmo por prioridad circular, RR, con gesti6n de la lista de preparados par FCFS y con valor de cuanto de 10 ms. (Se supone despreciable el tiempo de conmutacion de tarea).

Sean tres procesos, cuya ejecucion si no existieran otros seria la indicada en la Figura 2.10. EI tiempo para realizar la operacion de entrada/salida es de 4 ms y para simplificar s610 se hace sabre un unico dispositivo. Un proceso puede estar en los siguientes estados:

• Esperando en la cola de preparados: P

• Ejecutandose: E

• Esperando a que el dispositivo de EIS quede libre: W

• Realizando una operacion de EIS: 0

18 ms EIS 4 ms

12 ms EIS 4 ms

4 ms EIS 9 ms

Figura 2.10: Ejecuci6n secuencial de los tres procesos

En la Tabla 2.3 se indica el instante de lIe gada al sistema de cada proceso y su tiempo necesario para finalizar su ejecucion (en ms):

Trabajo Tiempo de Uegada Tiempo maximo necesario
1 0 26
2 8 20
3 17 17 Tabla 2.3: Resumen de los procesos a ejecutar

a) Dibujar la evolucion temporal de los procesos del sistema, sefialando el estado en el que se encuentra cada proceso. As! como la ocupaci6n temporal de la CPU 0 diagrama de Gantt.

54

2 Gestlon de procesos

b) Calcular para cada proceso la eficiencia.

13) Se deben ejecutar cinco trabajos: PI, P2, P3, P4 Y Ps. Sus tiempos de ejecuci6n (en ms) previstos son: 9,6,3,5 Y X lEn que orden se deberian de ejecutar aplicando el algoritmo SJF? Calcular el tiempo de espera medio para cada uno de los casos. (Obviamente, la solucion propuesta dependera de X).

14) En la Tabla 2.4 se muestra el orden en el que estan las tareas en la lista de preparados (todas tienen la misma priori dad), los cuantos que se conceden a cada tarea cada vez que obtiene la CPU (un valor fijo para cada tarea), los tiempos que tardaran las tareas en completarse si fueran las (micas del sistema, Y los tiempos maximos permitidos (tiempo maximo entre el comienzo de la tarea hasta su finalizaci6n).

Trabajo Orden an la cola Cuantos asignados Tiempo de ejecucien (ms) Tiempo maximo permitido (ms)
A I 3 160 540
B 2 2 280 1000
C 3 3 200 800
D 4 2 200 900
E 5 I 400 Infinito Tabla 2.4: Resumen de las caracteristicas de los procesos para ejecuci6n

Suponiendo que ninguna tarea realiza ninguna operaci6n de entrada/salida, decir si todas las tareas se realizaran sin problemas (es decir, se realizan antes de su tiempo maximo permitido, no dando un error denominado time _out). Para ilustrar la solucion:

• Dibujar un diagrama de Gantt de las tareas.

• Calcular los tiempos de retorno de cada una de ellas.

• Explicar breve mente las diferencias del algoritmo prioridad circular (RR) y el algoritmo aplicado.

Tener en cuenta que el cuanto es de 40 ms y el tiempo de conmutaci6n de tarea es de 10 ms.

15) Se tiene un SO de tiempo real con tres tareas crfticas (tienen que terminar en un tiempo maximo lIamado tiempo critieo). Estos tiempos junto con los tiempos de ejecuci6n por tarea se definen en la Tabla 2.5.

Trabajo Tiempo critico Tiempo de ejecucion
A 200 ms 80 ms
B 100 ms 40 ms
C 250 ms 120ms Tabla 2.5: Resumen de las caracteristicas de los procesos para ejecuci6n

Se pide:

a) Representar el orden de las tare as despues de la actuaci6n del planificador a largo plazo.

2-10 Problemas propuestos

55

b) Representar el orden de ejecucion de las tareas en un diagrama de Gantt.

c) Calcular el tiempo de retorno de las tareas, su tiempo de espera y decir si todas las tareas se ejecutan antes de finalizar su tiempo critico.

Para ella se debe de conocer que:

• Las tres tareas han llegado a la vez y el planificador a largo plazo actua segun el algoritmo SJF.

• La planificacion a corto plazo es par priori dad circular con cuanto de 25 ms, utilizando el

algoritmo FSFC para determinar cual es el siguiente proceso que pas a al estado de activo.

• EI tiempo de conrnutacion de proceso es de 0.5 ms .

• Si una tarea no ha terminado al finalizar su tiempo critico, continua hasta completar la ejecucion.

• Las tareas no realizan peticiones de entrada/salida.

16) La Tabla 2.6 recoge la informacion de cinco procesos que se van a ejecutar en un sistema.

Trabajo Tiempo de lIegada (ms) Tiempo de ejecuclon (ms)
A 0 10
B I 2
C 2 3
D 3 I
E 4 5 Tabla 2.6: Resumen de las caracteristicas de los procesos para ejecucion

Calcular el tiempo de retorno de cada uno de los trabajos y representar la ejecucion en diagramas de Gantt para los siguientes algoritmos:

a) FCFS

b) SRT

c) RR, con cuanto de 2 ms. Si el cuanto de un proceso en ejecucion expira ala vez que la lIegada de un nuevo proceso, entonces el nuevo proceso se afiade a la cola de procesos preparados antes que el proceso que termina,

Despreciar el tiempo necesario para el cambio de contexto.

17) La Tabla 2.7 muestra informacion de cinco procesos. Calcular el tiempo de retorno de cada uno (despreciar el tiempo de cambio de contexto) y representar la ejecucion en diagram as de Gantt para los algoritmos:

a) SJF

b) RR, con cuanto de 4 ms. Si el cuanto de un proceso en ejecuci6n expira a la vez que la lIegada de un nuevo proceso , entonces el nuevo proceso se afiade a la cola de procesos en espera de

56

2 Gesti6n de procesos

ejercutarse antes que el proceso que termina.

Trabajo Tiempo de lIegada (ms) Tiempo de ejecuclon (ms)
A 0 14
B 3 12
C 5 7
D 7 4
E 19 7 Tabla 2.7: Resumen de las caracteristicas de los procesos para ejecuci6n

18) La Tabla 2.8 recoge la informacion de cinco procesos que se van a ejecutar en un sistema. Calcular el tiempo de retorno de cada uno de los trabajos y representar la ejecuci6n en diagram as de Gantt para los siguientes algortimos:

a) FCFS

b) SJF

c) RR, con cuanto de 2 ms. Si el cuanto de un proceso en ejecucion expira a la vez que la llegada de un nuevo proceso, entonces el nuevo proceso se afiade a la cola de procesos en espera de ejercutarse antes que el proceso que termina.

d) Idem, pero RR con prioridades, teniendo en cuenta que la maxima priori dad corresponde a 4 y la minima a 1.

Despreciar el tiempo necesario para el cambio de contexto.

Trabajo Tiempo de Ilegada (ms) Tlempo de ejecucion (ms) Prioridad
A 1 8 2
B 2 2 4
C 3 I 3
D 4 2 4
E 5 5 1 Tabla 2.8: Resumen de las caracteristicas de los procesos para ejecucion

2-11 Cuestiones resueltas

57

Cuestiones resueltas

Cuesti6n 2-1

Explicar breve mente que significa el termino multiprograrnacion y que se entiende por grado de multiprogramacion.

Soluci6n

Durante la ejecucion de un programa, este transcurre entre fases de calculo y fases de entrada/salida (EIS). Como es sabido los dispositivos de EIS son lentos comparados con el procesador, ella hace que el procesador este desocupado a menudo, durante bastante tiempo, esperando que termine la operacion de EIS antes de seguir con la ejecucion de dicho programa. En la Figura 2.11 se representa la ejecucion idealizada de dos programas. Por simplificacion se sup one que ambos programas tienen un comportamiento identico con respecto al procesador y a las operaciones de EIS. Se puede observar que el procesador pasa parte del tiempo ejecutando el program a hasta que encuentra una instrucci6n de EIS. Entonces debe esperar a que esta concluya antes de continuar.

+c

+1

+c

+1

+1

+c

+(

+c

+1

Figura 2.11: Ejecucion de dos program as en serie

Como se puede observar el tiempo total que han necesitado los dos procesos para terminar su ejecuci6n ha sido el tiempo necesario del proceso p] (3t), del proceso P2 (3/) Y el tiempo que han tenido que estar en espera por las cuatro operaciones de EIS que se han realizado y en las que el procesador ha estado desocupado, (4c).

Este desaprovechamiento del procesador puede solucionarse. Si se dispone de suficiente memoria para alojar a los dos programas, cuando un proceso en ejecucion necesite esperar por una operacion de EIS, el procesador puede pasar a ejecutar el otro trabajo, que probable mente no estara esperando por una EIS. Esta situacion se puede observar en la Figura 2.12.

58

2 Gestion de procesos

Figura 2.12: Ejecucion de dos programas concurrentemente

Como puede compararse ambos procesos fin ali zan su ejecuci6n con antelaci6n al caso representado en la Figura 2.11. Esto se debe a que se utilizan los periodos en los que el procesador estaria desocupado al estarse realizando una operaci6n de EIS, (espacios con tram a) para pasar a ejecutarse otro proceso. De esta forma si se realizan las operaciones de EIS del proceso PI se pasa a ejecutar el proceso P2 (trama gruesa) y si se realizan las operaciones de EIS de P2 el procesador pasa a ejecutar el proceso PI (tram a fina).

Cuestlon 2·2

Discutir si existen ventajas en el uso de sistemas operativos con multiprogramacion, en vez de procesamiento en serie, en un computador dedicado a servir las necesidades de un unico usuario.

Solucion

La multiprogramaci6n resulta tambien beneficiosa en entomos monousuario. Aunque el usuario del sistema sea unico, siempre existe mas de un trabajo 0 tare a por realizar. Por 10 tanto, si se permite el entrelazado y el solapamiento de la ejecuci6n de dichas tareas, es decir, si el sistema permite la multiprogramacion, se mantendra del modo mas ocupado posible a todos los recursos del sistema, obteniendose una mejor utilizaci6n del mismo. Por ejemplo, una vez que el computador ha comenzado a leer datos del disco, el procesador puede ejecutar instrucciones de un program a al mismo tiempo que los datos se van transfiriendo por Acceso Directo a Memoria (DMA). Asi, en entomos con un sistema operativo con multiprogramaci6n se va a permitir, ademas de la ejecuci6n de las actividades particulares del usuario, gestionar concurrentemente el trafico de la red, soportar multiples ventanas activas, imprimir, etc. La desventaja es el incremento en la complejidad y los requerimientos de recursos de la operacion multitarea. Sin embargo, esto no supone un grave problema usualmente en entomos monousuario donde la CPU y la mayoria de los otros recursos experimentan comparativamente bajos niveles de utilizaci6n.

Cuestion 2·3

En los primeros computadores cada byte de datos de lectura 0 escritura era directamente manejado por la CPU (es decir, no habia Acceso Directo a Memoria 0 DMA). (,Que implicaciones tiene esta organizacion con respecto a la multiprogramacion?

2·11 Cuestiones resueltas

59

Soluci6n

En un computador con un m6dulo DMA cuando el procesador de sea leer 0 escribir un bloque de datos, emite una orden a este modulo enviandole la informacion necesaria (si requiere una lectura 0 escritura, la direcci6n del dispositivo de EIS involucrado, la direcci6n inicial de memoria desde la que se va a leer 0 escribir y el numero de palabras a leer 0 escribir). El procesador, a partir de este instante, continua con su trabajo, puesto que ha delegado la operacion de EIS en el modulo de DMA y es dicho m6dulo el que tendra que encargarse de esta. De esta forma el modulo de DMA transfiere la informaci6n directamente hacia 0 desde la memoria, sin pasar por el procesador. Cuando se completa la transferencia, el m6dulo de DMA envia una sefial de interrupci6n al procesador. De esta forma, el procesador se ve involucrado solo al principio y al final de la transferencia estando desocupado en el transcurso de la operacion de EI5. De ahi surge la necesidad del uso de la multiprogramacion, ocupar la CPU con la ejecucion de otro proceso, mientras espera a que una operacion de entrada/salida termine.

Si no existe Acceso Directo a Memoria (DMA), se requiere de la intervenci6n activa del procesador para transferir los datos entre la memoria y el modulo de EIS y, ademas cualquier transferencia de datos debe recorrer un camino que pasa por el procesador. Por 10 tanto, es la CPU la encargada de realizar dicha operacion, y puesto que la CPU esta ocupada, no tiene sentido la multiprograrnacion puesto que, independientemente de cuantas operaciones de EIS conlleve la ejecuci6n de un programa, la CPU estara ocupada al 100 por ciento.

Cuesti6n 2-4

El cambio del procesador de un proceso a otro juega un papel fundamental en la gestion de estos. Describir los pas os que debe seguir un proceso cuando tiene lugar un cambio de contexto.

Soluci6n

La transici6n del procesador entre dos procesos residentes en memoria en un sistema de multiprogramaci6n se den om ina conmutacion de proceso 0 conmutacion de tarea. Esta transicion requiere una serie de pasos que de forma simplificada son los siguientes:

• Salvar el contexte del procesador, incluyendo el contador del programa y otros registros.

• Actualizar el bloque de control del proceso que se estaba ejecutando.

• Mover dicho bloque a la lista apropiada.

• Seleccionar otro proceso para su ejecuci6n de acuerdo con el algoritmo de planificacion

correspondiente.

• Actualizar el bloque de control del proceso seleccionado para ejecutarse.

• Actualizar las estructuras de datos de gesti6n de memoria.

• Restaurar el contexto del procesador al estado en el que se hallaba el proceso seleccionado la ultima vez que se ejecut6.

60

2 Gestlon de procesos

La conmutacion de proceso conlleva la transferencia del control al sistema operativo para la ejecucion de todas estas acciones. Puesto que un sistema operativo de multiprogramaci6n se ejecuta generalmente en modo protegido y en un espacio de direcciones aparte del espacio de direcciones del usuario, la transicion desde el proceso de usuario al sistema operativo requiere cruzar la frontera de proteccion, A esta operacion se le denomina cambia de modo. Por 10 tanto una conmutacion de proceso conlleva un cambio de modo.

Cuestion 2·5

Indicar las transiciones que se producen entre los diferentes estados de un proceso por actuacion del planificador a corto plazo (PCP), el planificador a medio plazo (PMP) y el planificador a largo plazo (PLP).

Solucion

El planificador a corto plazo selecciona, en base a un determinado algoritmo, el proceso que pasara al estado activo de entre todos los procesos que estan en el estado de preparado. Esta definicion queda reflejada en la Figura 2.13.

PCP

Lista de

estados

preparados

Figura 2.13: Transici6n entre estados a que da lugar la acci6n del planificador a corto plazo

El planificador a medio plazo selecciona el proceso que pasara al estado preparado de entre todos los procesos que estan en el estado bloqueado pero que adem as se encuentran en memoria secundaria. La caracterfstica de este planificador es que forma parte de la funcion de intercambio 0 swapping relativa a la gestion de memoria. (Ver Figura 2.14).

PMP

Lista de j Lista de
estados hloqueados estados
en memoria secundaria preparados Figura 2.14: Transici6n entre estados a que da lugar la acci6n del planificador a medio plazo

El planificador a largo plazo determina que procesos se admiten en el sistema es por ella que el proceso pasara del estado nonato al estado de preparado. (Observar la Figura 2.15).

2·11 Cuestiones resueltas

61

PLP

j

Lista de estados preparados

Figura 2.15: Transici6n entre estados a que da lugar la acci6n del planificador a largo plaza

Cuesti6n 2·6

Los criterios de planificacion mas utilizados son el tiempo de retorno 0 regreso, el tiempo de espera, el rendimiento y la eficacia. Explicar dichos conceptos de manera sencilla y breve.

Soluci6n

Entre las medidas de rendimiento y los criterios de optimizacion mas habituales que los planificadores pueden utilizar en su intento de maxi mizar el rendimiento del sistema se incluyen:

• EI tiempo de retorno 0 regreso es el tiempo que transcurre desde que un proceso se crea hasta su finalizacion.

• El tiempo de espera es el tiempo que un proceso 0 trabajo consume esperando la asignacion de recursos debido a la competencia con otros en un sistema multiprogramacion. En otras palabras, el tiempo de espera es la penalidad impuesta por compartir recursos con otros procesos.

• EI rendimiento 0 productividad es el numero de procesos terminados por unidad de tiempo. Esta medida indica la cantidad de trabajo que se esta llevando a cabo.

• La eficacia 0 utiIizaci6n es el porcentaje de tiempo en el que el procesador esta ocupado.

Cuesti6n 2·7

Dar una ecuacion que relacione los siguientes periodos de tiempo de un trabajo: tiempo de retorno, tiempo de ocupacion de la CPU y tiempo de espera.

Soluci6n

De acuerdo con sus definiciones existe una relacion entre estos conceptos. Asi, el tiempo de retorno, R, es la suma del tiempo de ejecucion real 0 de ocupacion del procesador, U, y el tiempo consumido en la espera par los recursos, E, incluido el procesador. Expresado matematicamente:

R = E+ U

2-11 Cuestiones resueltas

61

PLP

j

Lista de estados preparados

Figura 2.15: Transici6n entre estados a que da lugar la accion del planificador a largo plazo

Cuestlon 2-6

Los criterios de planificacion mas utilizados son el tiempo de retorno 0 regreso, el tiempo de espera, el rendimiento y la eficacia. Explicar dichos conceptos de manera senci lla y breve.

Solucion

Entre las medidas de rendimiento y los criterios de optimizacion mas habituales que los planificadores pueden utilizar en su intento de maximizar el rendimiento del sistema se incluyen:

• EI tiempo de retorno 0 regreso es el tiempo que transcurre desde que un proceso se crea hasta su finalizacion.

• EI tiempo de espera es el tiempo que un proceso 0 trabajo consume esperando la asignacion de recursos debido a la competencia con otros en un sistema multiprogramacion, En otras palabras, el tiempo de espera es la penalidad impuesta por compartir recursos con otros procesos.

• EI rendimiento 0 productividad es el numero de procesos terminados por unidad de tiempo. Esta medida indica la cantidad de trabajo que se esta Ilevando a cabo.

• La eficacia 0 utlllzacion es eI porcentaje de tiempo en el que el procesador esta ocupado.

Cuestlon 2-7

Dar una ecuacion que relacione los siguientes periodos de tiempo de un trabajo: tiempo de retorno, tiempo de ocupacion de la CPU y tiempo de espera.

Soluclon

De acuerdo con sus definiciones existe una relacion entre estos conceptos. Asi, el tiempo de retorno, R, es la suma del tiempo de ejecucion real 0 de ocupacion del procesador, U, y el tiempo consumido en la espera por los recursos, E, incluido el procesador. Expresado matematicamente:

R = E+ U

62

2 Gestion de procesos

Otros criterios para la planificacion pueden ser la eficacia, el rendimiento y el tiempo de respuesta a un evento.

Cuestlon 2-8

Expresar maternaticamente los conceptos de la eficacia y el rendimiento.

Solucion

Dentro del conjunto de criterios can los que se evalua las diversas estrategias de planificacion se encuentra la eficiencia (Ef) que corresponde al tiempo medio de utilizacion del procesador. Matematicamente se puede

expresar como la fraccion entre el tiempo de ejecucion util 0 real, U, y el tiempo de uso de CPU total, T, de ese proceso (expresado en tanto par ciento):

Ef = !!.. x 100 % . T

Parece logico intentar que este parametro este proximo al 100% ya que si se mantiene el procesador ocupado tanto tiempo como sea posible, los factores de utilizaci6n de los restantes componentes tambien seran elevados. Desgraciadamente al aproximarse al 100% de uti lizacion del procesador, otros aspectos importantes de medida del comportamiento del sistema pueden verse deteriorados, como por ejemplo, el tiempo de espera media tiende a crecer excesivamente.

EI rendimiento 0 productividad, P, es una medida del numero de trabajos completados por unidad de tiempo. De esta forma, si es N, el numero de procesos completados en S segundos, la expresi6n matematica que calcula el rendimiento sera:

N p=

S

Cuastion 2-9

Establecer una breve definici6n de los principales algoritmos de planificacion a corto plaza.

Solucion

Entre los algoritmos de planificacion se pueden encontrar los siguientes:

• FCFS (primero en lIegar, primero en ser servido) (First-Come-First-Served): EI proceso seleccionado para ser ejecutado es el mas antiguo de los preparados.

• SJF (primero la tarea mas corta) (Shortest-Jab-First): Es una estrategia de planificaci6n no expropiativa. Se selecciona el proceso can el menor valor de tiempo restante de ejecucion.

2-11 Cuestiones resueltas

63

SRT (Tiempo que queda mas corto) (Shortest-Remaining-Time): Es una estrategia de planificaci6n expropiativa. Se selecciona el proceso al que Ie queda menos tiempo para terminar su ejecuci6n, incluyendo los procesos nuevos que se incorporen.

• RR (Prioridad circular 0 reparto de tiempo) (Round Robin): EI procesador se asigna a cada proceso de forma secuencial durante un periodo de tiempo definido denominado cuanto.

• Prioridades: El proceso seleccionado para pasar a ejecucion es aquel que posee mayor prioridad entre las asignadas a los procesos ya sea bien por el usuario 0 por el sistema.

Cuesti6n 2-10

Un sistema operativo de tiempo compartido utiliza planificacion basada en prioridades para procesos criticos y planificacion por prioridad circular 0 por reparto de tiempo para procesos de usuarios interactivos. En un momento determinado, se mejora el hardware reemplazando la CPU con un modelo funcional equivalente que es dos veces mas rapido. Discutir los cambios que experimentan las diferentes clases de usuarios. ~Deberian modificarse algunos de los parametros del sistema operativo?

Soluci6n

En el algoritmo por priori dad circular la cuesti6n principal de disefio es la longitud del cuanto de tiempo 0 fraccion que se va a usar, ya que su elecci6n supone lIegar a un compromiso entre la eficacia del procesador (que exigiria un valor no demasiado pequefio) y el tiempo de respuesta (que si 10 exigiria). Si el cuanto es muy pequefio, los procesos cortos pasan por el sistema rapidamente, Por otro lado, se produce una sobrecarga en la gesti6n de las interrupciones del temporizador y en la ejecucion de las funciones de planificacion y expedicion.

Una cuota de 2 ms en un sistema donde una conmutacion de proceso tarda 500 us supone un cargo del 25%. Por otra parte, una cuota de tiempo demasiado larga reduce el cargo por expropiacion pero aumenta el tiempo de respuesta. Por ejemplo una cuota de 100 ms en un sistema con 50 usuarios activos implica un molesto tiempo de respuesta de 5 s. En el extremo, una cuota de tiempo muy larga transforma un planificador prioridad circular en un planificador FCFS (primero en llegar, primero en ser servido).

Al cambiar la velocidad del procesador se logra diferente cantidad de trabajo dentro de la cuota de tiempo de duracion determinada, es decir, el nurnero de instrucciones ejecutadas por cuanto es diferente, mayor. Adernas, la sobrecarga por intercambio de proceso es menos problematica con la CPU mas rapida. Por estas razones, el parametro del sistema que se debe probablemente cambiar es la longitud del cuanto usado en el algoritmo prioridad circular. El cuanto debe ser reducido.

Por otra parte, en la planificacion por prioridades, el nivel de priori dad puede ser determinado como un resultado en el que influyen el valor inicial, las caracteristicas y necesidades de los recursos y el comportamiento en tiempo de ejecucion del proceso. Es por ello, que estos parametres no deberian cambiar ya que son establecidos independientemente de la velocidad de la CPU.

64

2 Gesti6n de procesos

Cuesti6n 2-11

Se tienen 3 procesos, PI> P2 y P3, can tiempos de ejecucion, 85,45 y 118 ms, respectivamente. Si actua el planificador a corto plazo segun el algoritmo SJF determinar el orden en que se encuentran en la lista de preparados. (,En que se diferencia si el planificador fuera a largo plazo?

Soluci6n

De acuerdo a la definicion previamente sefialada el proceso seleccionado sera aquel que posea menor tiempo de ejecucion. De esta forma el primer proceso que pasara al est ado activo de entre estos tres procesos sera Pb

pues 45 ms es el menor tiempo de ejecucion. Cuando este proceso finaliza su ejecucion sera de nuevo llamado el algoritmo de planificacion que en este caso seleccionara al proceso PI para su ejecucion.

Finalmente cuando este proceso muera se pasara a ejecutar P3.

Si es el planificador a largo plazo el que utiliza este algoritmo, la estrategia no varia y, por 10 tanto, el orden de seleccion sera el mismo, Pb PI Y P3, ahora bien, esta seleccion no es para pasar a ejecucion sino para pasar a la lista de procesos en estado de preparados.

Cuesti6n 2-12

(,Como se suele representar graficamente la planificacion de procesos?

Soluci6n

La planificacion de los procesos se sue Ie representar graficamente utilizando los diagramas de Gantt.

Como es sabido, en estes se representa en el eje de abcisas el tiempo y en el eje de ordenadas los procesos que se planifican para su ejecucion por la CPU. Para cada proceso, una linea 0 un rectangulo muestra el tiempo en que dicho proceso dispone de la CPU. A continuacion se muestra el diagrama de Gantt de tres procesos, PI, P2 Y P3 que se ejecutan en este orden, can tiempos de ejecucion, tb ': Y t3 Y de conmutacion de tareas, c.

Cuesti6n 2-13

Para los tres procesos de la Cuestion 2-11 calcular sus tiempos de retorno, de espera, rendimiento y eficacia del sistema. Dibujar el diagrama de Gantt 0 diagrama temporal de la posesion del procesador.

2-11 Cuestiones resueltas

65

---~~~---- -_--

Soluci6n

La evoluci6n temporal del procesador queda reflejada en el siguiente diagrama:

85

130

248

ms

Los parametros que se solicitan para estos procesos son los siguientes:

Proceso, PI:

• Tiempo de retorno, R): 130 ms

• Tiempo de espera, EI: R) - V) = 130 - 85 = 45 ms

• Eficacia, Efl:

E /1

= VI X 100 = TI

85 x 100 = 65,38% 130

• Tiempo de retorno, R2: 85 ms

• Tiempo de espera, Ei R2 - V2 = 85 - 85 = ° ms

• Eficacia, Ef2:

E f2

= V2 X 100 = T2

85 x 100 85

100%

• Tiempo de retorno, R3: 248 ms

• Tiempo de espera, E3: R3 - U3 = 248 - 118 = 30 ms

• Eficacia, Ej3:

= V3 X 100 = T3

118 x 100 = 47,58 % 248

EI rendimiento del sistema es:

_ N _ 3

P--- =0,012

S 248

66

2 Gestion de procesos

Cuestion 2-14

Si el tiempo de retorno 0 regreso de un proceso, P], es de 30 ms y el de ejecuci6n real de 10 ms, l,CUill es su tiempo de espera, la eficacia y el rendimiento de este sistema?

Soluclon

La expresi6n que relaciona el tiempo de retorno con el tiempo de espera es:

R = E+ U

Por 10 tanto,

E = R - U = 30 - 10 = 20 ms

La eficacia sera:

U

Ef = - x 100 . T

= .!.Q x 100 = 30

33,33 %

El rendimiento sera:

P

N S

=

= 0,033 30

Cuestlon 2-15

Se tienen dos procesos, PI y P2, de tiempos de ejecucion 25 y 30 ms, respectivamente. El planificador a corto plazo actua segun el algoritmo RR 0 de prioridad circular con cuanto de 10 ms. l,Cual sera el tiempo de retorno 0 regreso de PlY P 2 ?

Soluclon

De acuerdo a este algoritmo los procesos en la lista de preparados iran pasando a ejecucion de manera secuencial durante un tiempo definido igual a 10 ms. Cuando terminan de tomar el procesador todos los procesos de la Iista durante el tiempo establecido vuelven a comenzar, de ahi el nombre de priori dad circular. Si el orden en la lista de preparados es primero PI Y despues P2, entonces pasara a ejecutarse PI durante 10 ms Y despues P2 durante otros 10 ms. De nuevo comienza el cicIo con PI durante 10 ms, Y a continuaci6n P2 con el mismo cuanto. Finalmente comienza su ejecuci6n PI pero no necesita todo el cuanto asignado para terminar, solamente 5 ms. Al terminar este proceso, el estado global del sistema varia por 10 que de nuevo se vuelve a !lamar al planificador, como solo el proceso P2 esta en la lista de preparados pasara a ejecucion

requiriendo todo el cuanto asignado para terminar su ejecuci6n por completo. De esta forma el tiempo de retorno para el proceso PI es el tiempo que transcurre desde que se crea (se supone que ambos procesos se

2·11 Cuestiones resueltas

67

crean al tiempo 0 ms) hasta que finaliza su ejecuci6n. Por 10 tanto, se debe contabilizar el tiempo en el que finalizan su ejecuci6n ambos procesos. Para PI corresponde ados ciclos totales mas 5 ms, en total 45 ms y

para P2 seran 10 ms mas, es decir 55 ms. Si se representa el diagrama de Gantt se pueden observar de forma mas clara e intuitiva los tiempos de retorno:

10

20

30

40

45

55

illS

cusstlon 2·16

Sean dos procesos, PI con tiempo de ejecuci6n de 20 ms y P2 con 15 ms. El planificador a corto plaza actua segun el algoritmo de priori dad circular can cuanto de 10 ms y tiempo de conmutaci6n de tarea de 5 ms. Marcar el tiempo de retorno (regreso) de PI y P2.

Soluclon

En la resolucion de este ejercicio se debe tener en cuenta el tiempo de conmutaci6n 0 tiempo en que el sistema operativo realiza el cambio de contexto.

El proceso PI comienza su ejecuci6n, trascurrido el cuanto de 10 ms tiene lugar el cambio de contexto que tarda 5 ms y cambia a la ejecucion del proceso P2 durante otros 10 ms. A continuaci6n tiene lugar otro cicio, pas a a ejecutarse el proceso PI que finaliza su ejecucion con el cuanto, por 10 que su tiempo de retorno es de 40 ms. Trascurrido el tiempo de conmutaci6n de tare a necesario para que el proceso P2 sea planificado, comienza este a ejecutarse, pero no necesitara to do el cuanto sino que transcurridos 5 ms finaliza su ejecuci6n, por 10 que el tiempo de retorno es de 50 ms. Si directamente se dibuja el diagrama de Gantt, se puede observar que el tiempo de retorno para el proceso PI es de 40 ms y para el proceso P2 es de 50 ms.

10

15

25

30

40

45 50

ms

68

2 Gesti6n de procesos

Problemas resueltos

Problema 2·1

Se de sea mantener el bloque de control de los procesos (BCP) en una estructura de datos denominada tabla de procesos. La tabla tendra una entrada por cada uno de los procesos. El pid de cada proceso es un entero entre o y <numero maximo de procesos - I> que proporciona su entrada en la tabla. Una de las entradas correspondera siempre a la del proceso en ejecucion, y el resto a procesos que esperan por una u otra causa. Cada entrada de la tabla dispondra de toda la informacion necesaria por el proceso, que supone que es:

a) Direccion inicial del codigo del proceso.

b) Numero identificador del proceso (pid).

c) Un array con el nombre del proceso.

d) Estado del proceso (ejecucion, preparado, suspendido y entrada sin proceso -para una entrada no ocupada por proceso-).

e) Prioridad del proceso (de 0 a 9).

f) Un campo que contiene el estado del proceso que se salvara al hacer el cambio de contexto, y que contiene:

• El contador del programa.

• EI estado de la CPU.

• EI segmento de datos.

• EI segmento de codigo.

• EI segmento de pila.

• El puntero de pila.

g) Un puntero al BCP del siguiente proceso.

Declarar en un pseudocodigo de alto nivel una estructura adecuada para el BCP que se ha definido.

Soluci6n

El sistema operativo agrupa toda la informacion que necesita conocer respecto a un proceso particular en una estructura de datos denominada descriptor de proceso 0 bloque de control de proceso (BCP). Cada vez que se crea un proceso, el sistema operativo crea un BCP correspondiente para que sirva como descripcion en

2-12 Problemas resueltos

69

tiempo de ejecucion durante toda la vida del proceso. Cuando el proceso termina, su BCP es liberado y destruido. Un proceso resulta conocido y, por 10 tanto, elegible para competir por los recursos del sistema s610 cuando existe un BCP activo asociado a el. EI bloque de control de proceso es una estructura de datos con campos para registrar los diferentes aspectos de la ejecucion del proceso y de la utilizacion de recursos. A continuacion se va a escribir en pseudocodigo la estructura del BCP de este sistema, es decir, la definicion de datos para el BCP:

type

contexto = record; 1* estructura que recoge el estado del proceso en la conmutaci6n de contexto*1 contadar_programa: word;

Estado: byte;

seg_dato: word;

seg_codigo: word;

Seg_pila: word;

punt_pila: word;

end;

estado = set of {ejecucion, preparado, suspendido, entada_sin_proceso} I*estado del proceso*1 nombre = array [1 .. max_cadena] of char;l*cadena que define el nombre del proceso*1 puntero_BCP = pointer ofBCP; 1* puntero a BCP*I

BCl> = record I*estructura que define el BCP*I pid_proceso: integer;

nombre_proceso: nombre;

estado_proceso: estado;

prioridad: integer;

estado_contextual: contexto; siguiente_proceso: puntero_BCP;

codigo: pointer;

end;

La estructura de datos denominada tabla de procesos, formada por los bloques de control de procesos sera la siguiente:

tabla_procesos = array [0 .. max_pid_proceso _ I] ofBCP;

Problema 2-2

Se dispone de un sistema operativo con planificacion par prioridades y con expropiacion en el que el estado preparado dispone de N prioridades, cada una de las cuales tiene asociada una cola. EI estado suspendido tiene M colas, cada una de ellas asociada a un suceso distinto. Ilustrar mediante un diagrama las transiciones de estados del planificador del sistema operativo.

70

2 Gesti6n de procesos

Soluci6n

En los algoritmos de planificacion basados en prioridades, cada proceso del sistema esta asignado a un nivel de prioridad, y el planificador siempre elige el proceso preparado con priori dad mas alta. Las prioridades pueden ser estaticas (no cambia durante el tiempo en que el proceso existe) 0 dinamicas (puede ser modificada). En cualquier caso, sus valores iniciales son asignados por el usuario 0 por el sistema en el momenta de la creaci6n del proceso.

Este algoritmo puede ser de tipo expropiativo 0 no expropiativo. En el caso de expropiaci6n, si un proceso pasa al estado de preparado y tiene una prioridad mayor que el que esta en ejecuci6n, el planificador a corto plazo llevara al proceso que estaba en ejecucion al estado de preparado y cedera el procesador al nuevo proceso con prioridad mas alta. Los algoritmos con prioridades y expropiaci6n se dice que estan guiados por eventos. En una estrategia no expropiativa, el nuevo proceso, aunque con mayor prioridad, debera esperar a que el proceso en ejecuci6n se suspenda para poder acceder al procesador.

La Figura 2.16 muestra el uso de prioridades. En vez de una (mica cola de procesos en estado preparado se representan varias colas en orden de prioridad descendente: Cola de Prioridad I, Cola de Prioridad 2, ... , Cola de Prioridad N, donde Prioridad i es mayor que Prioridad j para i <i. Cuando se vaya a realizar una selecci6n de planificacion, el planificador comenzara por la cola de preparados con mayor priori dad (Cola de Prioridad I). Si hay uno 0 mas procesos en esta cola, se selecciona uno de ellos mediante alguna politica de planificacion. Si Cola de Prioridad 1 esta vacia, se examina Cola de Prioridad 2, y as! sucesivamente.

Preparado ./ - - - --- ____

/' I I I <,
...
/ \
/ Cola de Prioridad 1
I 1 1 1 1 1 \
... \

\ Cola de Prioridad 2
\ /
/
\ )1 1 1 1 1 /
'" ...
<, ./
--S;o/a de Prioridad N ./
--- ~__...
- - Ejecuclon Muerto
--- --
__... ---
.pcurrc s~csV I 1 1 1 ... I 1 !Sper~ succso I

/ Cola del suceso I \
Ocufrc suceso 21 1 1 ... 1 1 fispera suc~~o 2
( I
\ Cola del suceso 2 /
\ /
Ocurre suceso M 1 1 1 Esp::a soceso M
< "I ... 1

<, Co/a del SUCCS() M ./ ...- Bloqueado

Figura 2.16: Diagrama de transicion de estados

2·12 Problemas resueltos

71

Un problema de este esquema de planificacion es que los procesos de prioridad mas baja pueden sufrir inanici6n, es decir, quedar relegados indefinidamente. Este problema tiene lugar si hay un tlujo continuo de procesos preparados de prioridad mas alta. La solucion que se suele adoptar es la de ir aumentando la prioridad de aquellos procesos que lIevan un tiempo de espera muy elevado. Esta estrategia se denomina prioridad par envejecimiento (aging). Para finalizar el diagrama de planificacion del sistema opcrativo se va a analizar el estado suspendido 0 bloqueado. Se define el estado bloqueado, como aquel estado que no se puede ejecutar hasta que se produzca cierto suceso, como, por ejemplo, la terminacion de una operacion de £IS. De esta forma, cuando se produce un suceso el sistema operativo debe recorrer toda la cola de procesos bloqueados buscando a aquellos procesos que esperan ese suceso.

En un sistema operativo grande puede haber miles de procesos en dicha cola. Es por ello que es mas eficiente la solucion que se propone: tener una serie de colas, una para cada suceso (Cola del suceso 1, Cola del suceso 2, ... , Cola del suceso M). Asi, cada vez que se produce un suceso, la lista entera de procesos de la cola correspondiente al suceso pasa al estado de preparado.

Problema 2·3

Para mantener las listas de procesos utilizadas en un sistema operativo se utiliza una tabla con dos entradas consecutivas para cad a lista: la primera para la cabeza de la lista y la segunda para la cola de la lista. La misma tabla contiene una entrada para cada uno de los procesos. Se supone que un proceso s610 puede estar en una lista. Las entradas de los procesos ocupan las <numero maximo de procesos> primeras posiciones de la tabla, cada una segun su identificador 0 pid. A continuaci6n van las entradas de las cabeceras y colas de las listas. Cada entrada a la tabla tiene tres campos. Un campo con la prioridad del proceso, otro con un entero que sefiala la entrada en la tabla del proceso que sigue en la lista y, el ultimo, un campo con un entero que sefiala la entrada en la tabla del anterior en la lista. El campo del anterior del primer proceso de la lista apunta a la entrada de la cabeza de la lista, y el campo siguiente del ultimo de la lista apunta a la entrada de la cola de la !ista. Para las entradas a la tabla que corresponden a las cabezas y colas de las listas, el campo correspondiente ala prioridad lIevan los valores del menor y del mayor entero, respectivamente. AI puntero nulo se le asigna el valor -I.

a) Supongase un sistema con 5 procesos tal que el estado global del sistema corresponde a una !ista de procesos preparados en la que aparecen los procesos 2, 3 Y I, en este orden, el proceso activo es el 5 y el 4 esta bloqueado. Representar graficamente estas listas y hacer un esquema del contenido de una tabla como la que se ha descrito.

b) Mostrar la evolucion que tendria una tabla con esta estructura para el estado global del sistema que se muestra en la Figura 2. I 7.

Soluci6n

a) Un estado de un proceso es solo un componente del estado global del sistema, que engloba a todos los procesos y recursos. Para seguir la pista a todos los procesos, el s.o. mantiene listas de BCP clasificados segun los posibles estados de los mismos. Asi, existe una lista de procesos preparados que contiene los BCP de todos los procesos en este estado y una lista de procesos suspendidos 0

72

2 Gestion de procesos

un conjunto de listas de procesos suspendidos, ligada cada una de ellas a un suceso diferente que produjo la suspension. En sistemas multiprocesadores tambien habra una lista de procesos en ejecucion global que en sistemas monoprocesador degenera en una sola entrada.

Lista de procesos activos

Llsta de procesos preparados

Lista de procesos bloqueados (dispositivo 1)

Llsta de procesos bloqueados (dispositivo 2)

Llsta de procesos bloqueados (dispositivo 3)

pid: proc. #5

pid: proc. #3 r7 pid: proc. #1 --7 pid: proc. #4

_L I Cabecera ~ pid: proc. #2

I Cola \ I

r7 pid: proc. #7

/1L____:==h1 _j_

'-- ---'

pid: proc. #6

Figura 2.17: Listas de los estados en los que se encuentran los diferentes procesos

De acuerdo con el enunciado, las listas que hay que gestionar son las que se muestran en la Figura 2.18. Estas listas se pueden implementar en una tabla. Las primeras posiciones de la tabla estan ocupadas por los procesos, con suspid: 1,2,3,4,5 indicando el orden de entrada. A continuacion se representan las cabezas y las colas de las listas (cabeza y cola de lista de preparados, cabeza y cola de lista de bloqueados y cabeza y cola de lista de activos).

2-12 Problemas resueltos

73

Lista de estados activos

pid: proc. #5

Lista de estados preparados

pid: proc. #2 r'> pid: proc. #3 p pid: proc, #1


JI _l_ Lista de estados bloqueados

pid: proc. #4

Figura 2.18: Estado global del sistema de acuerdo a las especificaciones del apartado a)

Cada una de estas entradas tiene tres campos. EI primer campo representa la prioridad del proceso (H], H2, H3, H4 Y Hs) Y cuando las entradas son las cabezas y las colas de las listas este campo es

el menor y mayor entero que exista en la tabla, respectivamente, es decir, I y II.

Los otros dos campos son el siguiente, que representa la entrada del proceso que Ie sigue en la lista y el anterior que representa la entrada en la tabla del proceso que esta antes en la lista. Asi, cl proceso 3, ocupa la tercera entrada en la tabla y los campos son su prioridad H3, la entrada en la tabla del proceso que le sigue en la lista, como el proceso que Ie sigue en la lista es el proceso 1. la entrada es la primera y la entrada del proceso anterior en la lista, al ser el proceso 2 la entrada es la segunda.

EI campo anterior del primero de una lista apunta a la cabeza (el proceso 2 es el primero de la lista de preparados, su campo anterior sera la cabeza de la lista, cuya entrada en la tabla es 6) Y el campo siguiente del ultimo de una lista apunta a la cola (el proceso I es el ultimo de la lista de preparados, su campo siguiente viene representado por la cola de la lista cuya entrada en la tabla es 7),

Los campos anterior y posterior de las cabezas y las colas de las listas se representan por el puntero nulo (-1). La Tabla 2.9 es la resultante.

b) Si se repite la construcci6n de la tabla de acuerdo con las especificaciones del enunciado para las listas de la Figura 2.17 se obtiene la Tabla 2.10.

74

2 Gestlon de procesos

Entrada Prioridad Siguiente Anterior
) (PID:) HI 7 3
2 (PID:2) H2 3 6
3 (PlD:3) H3 I 2
4 (PID:4) H4 9 8
5 (PID:5) H5 11 10
6 (cabeza_preparados) I -I -1
7 (cola _preparados) II -1 -I
8 (cabeza_bloqucados) 1 -I -1
9 (cola_bloqueados) 11 -1 -I
10 (cabeza _ activos) 1 -I -I
II (cola_activos) II -I -I Tabla 2.9: Tabla representante del estado global del sistema de acuerdo con la Figura 2.18

Entrada Prioridad Siguiente Anterior
I (PlD:l) HI 4 3
2 (PlD:2) Hz 7 10
3 (PID:3) H3 J 8
4 (PID:4) H4 9 I
5 (PID:5) Hs 17 16
6 (PID:6) H6 13 12
7 (PID:7) H7 II 2
8 (cabeza _preparados) 1 -I -I
9 (cola _preparados) 17 -I -I
10 (cabeza_hloqueadosl) I -I -I
11 (cola_bloqueadosl) 17 -I -I
12 (cabeza_bloqueados2J 1 -1 -I
13 (cola _bloqueados2) 17 -1 -I
14 (cabeza_bloqueados3) 1 -I -I
15 (cola_bloqueados3) 17 -1 -I
16 (cabeza _ activos) 1 -I -1
17 (cola_activos) 17 -1 -I Tabla 2.10: Tabla representante del estado global del sistema de acuerdo con la Tabla 2.17

2-12 Problemas resueltos

75

Problema 2-4

La lista de los estados suspendidos no esta organizada por prioridades. Exponer algunas razones de por que no se utiliza la prioridad e indicar bajo que circunstancias podria resultar util su empleo.

Soluci6n

La lista de procesos suspendidos esta formada por aquellos procesos que adem as del procesador carecen de otros recursos. Tales procesos estan normalmente exc1uidos de la competencia de la ejecuci6n hasta que desaparezca la condici6n de suspension, por ejemplo, que termine una operaci6n de E/S 0 que reciba una serial de sincronizaci6n. En la Figura 2.19 se observa un ejemplo de una lista de estados bloqueados, los procesos X, Y, Z han sido bloqueados por diferentes causas y se encuentran a la espera de diferentes sucesos.

Lista de procesos bloqueados

pid: proc. #X ~ pid: proc. # Y P pid: proc, #Z


j1 _l_ Figura 2.19: Unica lista de procesos suspendidos 0 bloqueados

Otra alternativa es tener diferentes listas de procesos suspendidos. Cada una ligada en exclusiva al dispositivo que produjo la suspensi6n. En la Figura 2.20, los procesos P y Q, estan a la espera del dispositivo 1, el proceso R del dispositivo 2 y no existe ningun proceso bloqueado por la espera del dispositivo 3.

Lista de procesos bloqueados (dispositivo 1)

Lista de procesos bloqueados (dispositivo 2)

Lista de procesos bloqueados (dispositivo 3)

pid: proc. #P

pid: proc. #Q

pid: proc. #R

Figura 2.20: Diferentes listas de bloqueados 0 suspendidos

76

2 Gestlon de procesos

En cualquier caso, el sistema operativo tiene anotado la razon de la suspensi6n de modo que pueda reanudar al proceso 0 procesos cuando la condici6n de suspensi6n desaparezca por efecto de las acciones de algunos de los otros procesos 0 por la llegada de un suceso externo. Es por ella que la lista no esta ordenada por prioridades porque s610 importan los sucesos que bloquearon a los procesos para desbloquearlos. A hora bien, si se tienen a varios procesos esperando el mismo suceso para desbloquearse, si se podria asignar prioridades para que se desbloqueen cuando aparezca el suceso correspondiente segun el orden que establezcan las prioridades. Asi, por ejemplo, si se tienen dos procesos en espera de acceder a un mismo disco del sistema que se haya ocupado por la solicitud de algun otro proceso, cuando el disco quede libre, desaparece la condici6n de suspensi6n y pasaran a estado preparado, en el orden que establezcan sus prioridades, primero el que posea mayor prioridad, que sent el que acceda al disco, volviendo el segundo proceso a bloquearse.

Problema 2-5

En la estructura de Iistas del Problema 2-3 se pone la condicion de que un proceso solo puede aparecer en una !ista. Expliquese 10 que sucederia si con una estrategia de tiempo compartido un proceso apareciera dos veces en la lista de preparado. Indicar razones que podrian llevar a tomar esa decision. Prescindir del tipo de estructura que se haya utilizado para implementarla.

Soluclon

En la planificacion por tiempo compartido (Round Robin, RR), basicamente, el tiempo del procesador se divide en cuotas 0 cuantos que son asignados a los procesos peticionarios. Ningun proceso puede ejecutarse durante mas de una cuota de tiempo cuando hay otros esperando en la cola de preparados. Si un proceso necesita mas tiempo para completarse despues de ago tar su cuota de tiempo, se coloca al final de la lista de preparados para esperar la asignaci6n siguiente. De esta forma se logra una comparticion equitativa de los recursos del sistema. Los procesos cortos pueden ser ejecutados dentro de una unica cuota de tiempo y por tanto, exhiben buenos tiempos de respuesta. Los procesos largos pueden requerir varias cuotas y, por 10 tanto, ser forzados a circular a traves de la lista de preparados un as cuantas veces antes de terminar, es por ello que, sus tiempos de retorno y de espera son relativamente largos de forma que se discriminan frente a los cortos.

A continuacion, se muestra un ejemplo de la aplicacion de este algoritmo. Para ella se parte de la lista de procesos preparados de la Figura 2.21, en la que se supone que el proceso X necesita para su ejecucion tres cuantos, el proceso Y requiere un cuanto y finalmente el proceso Z, dos cuantos.

Lista de procesos preparados

pid: proc. #X p pid: proc. #Y -7 pid: proc. #Z


;;1 .i. Figura 2.21: Ejemplo de Iista de procesos preparados

2-12 Problemas resueltos

77

En la Figura 2.22 se representa el diagrama temporal de la posesi6n del procesador (diagrama de Gantt), es decir, el orden en que los procesos estan en estado listo 0 en ejecucion de acuerdo con este algoritmo. En una primera vuelta se ejecutan los procesos X, Y y Z. De esta ejecuci6n se concluye que el proceso Y ha finalizado y los procesos X y Z se encuentran de nuevo en la lista de preparados. A continuaci6n, tiene lugar una segunda vuelta pasando a ejecutarse ambos procesos. Como resultado finaliza el proceso Z y el proceso X se mantiene en la lista de preparados. Finalmente, tiene lugar una tercera vuelta en la que se ejecuta y finaliza el proceso X.

x

y

z

x

z

x

21

3t

41

51

61

Figura 2.22: Diagrama de Gantt de la aplicacion del algoritmo tiempo compartido a los procesos de la Figura 2.21

Si se modifica el algoritmo, de forma que se permite a un proceso aparecer mas de una vez en la lista, se Ie asociaran mas cuantos de tiempo por cicio que al resto de los procesos en la misma. Esto indica que, se Ie adjudicara mayor tiempo de ejecucion por cicio que al resto. Este metodo podria ser usado para dar mas priori dad de ejecucion a determinados procesos, bien sea porque interesa su pronta ejecuci6n 0 porque son procesos largos para evitar su discriminaci6n.

Asi, para el ejemplo anterior, supongase que se afiade de nuevo el proceso X al final de la lista de procesos preparados de la Figura 2.21. Entonces, el diagrama de Gantt tras la aplicaci6n de algoritmo por tiempo compartido sera el representado en la Figura 2.23.

En una primera vuelta se ejecutan los procesos X, Y, Z y X. En este cicio de ejecuci6n finaliza el proceso Y y los procesos X, Z Y X se encuentran de nuevo en la lista de preparados. En una segunda vuelta, se ejecutan los procesosXy e1 Z y ambos finalizan (No hace falta que el procesoX se ejecute otra vez, pues el proceso ha finaiizado y al pasar a estado de muerto desaparece de 1a 1ista de preparados). Como puede observarse el proceso X ha terminado su ejecuci6n con anterioridad que en el caso previo, es decir se Ie ha dado mas priori dad a su ejecucion.

x

y

z

x

x

z

21

31

4t

51

61

Figura 2.23: Diagrama de Gantt de la aplicaci6n del algoritmo tiempo compartido modificado a los procesos de la Figura 2.21

Problema 2-6

Sup6ngase un tipo de computador en ei que pueden ejecutarse simultaneamente n procesos, utiiizando una variante de algoritmo de prioridad circular (Round Robin), Hamada particion del procesador. Despues de cada instrucci6n tiene lugar un cambio de proceso de forma que la instruccion I viene del proceso I, la instrucci6n 2 del proceso 2 etc. EI cambio de proceso no produce un costa extra. Si un proceso necesita T segundos para terminar en ausencia de otros. l,Cwinto tiempo sera necesario si se empiea partici6n del procesador entre los n procesos?

78

2 Gesti6n de procesos

Soluci6n

Si en ausencia de otros procesos un proceso necesita T segundos para ejecutarse, y suponiendo que esta farm ado por X instrucciones, es obvio que el procesador tardara en ejecutar cada instruccion T/X segundos. Si, adernas, se supone que los n procesos son iguales, al final de la primera vue Ita del algoritmo de prioridad circular, se habran ejecutado n instrucciones, por 10 que habra tardado en realizar este primer ciclo n(T/X) segundos. Como seran necesarias X vueltas para finalizar todos los procesos, tantas como instrucciones se ha supuesto que tiene cada proceso, entonces el tiempo total sera:

X x n( T/ X) = n T segundos

En la Figura 2.24 se puede observar un diagrama temporal de la ocupacion de la CPU (diagrama de Gantt).

I I

2

I I

2

I I

x

[ [

x

TIX

nT/X

(n+l)T/X

(2n)TIX

«X-l)n+l)T/X

nT

Figura 2.24: Diagrama de Gantt de los n procesos bajo el algoritmo de particion del procesador

Problema 2·7

En un sistema operativo con planificacion par prioridad circular, sea Eel tiempo medio de ejecucion de un proceso antes de solicitar una peticion de entrada/salida (EIS) y C es el tiempo invertido en la conmutacion entre procesos, donde E » C. Analizar el efecto que sobre los procesos y el rendimiento del sistema tienen cada una de las situaciones siguientes, en las que varia el valor del cuanto, Q:

a) Cuanto arbitrariamente grande.

b) Cuanto muy pequefio, I igeramente superior a cero.

c) Cuanto muy cercano a E, tal que C < Q < E.

d) Cuanto igual a C.

----~.-.--- .. ~---

Soluci6n

La planificacion por prioridad circular se considera a menudo una disciplina de planificacion "justa". Sin embargo, se debe tener en cuenta que, el rendimiento de la planificacion es muy sensible a la eleccion de la cuota de tiempo. Una cuota de tiempo demasiado corta da lugar a recargos excesivos, y una cuota demasiado larga degenera de planificacion priaridad circular a planificacion FCFS (primero en llegar, primero en ser servido), ya que los procesos ceden el control al sistema operativo en lugar de ser expropiados por el temporizador de intervalos. El valor "optimo" del cuanto se encuentra en algun lugar entre ambos, pero es dependiente del sistema y de la carga de trabajo. A continuacion se va a establecer una analisis de las consecuencias que producen las diferentes posibilidades de la elecci6n del cuanto sobre los procesos y el rendimiento del sistema:

2·12 Problemas resueltos

79

a) Para una eleccion de cuanto muy grande se puede concluir:

• Si el tiempo asignado a cada proceso es muy grande, mayor que los tiempos de ejecucion necesarios para los procesos, esta estrategia de planificacion degenera en el algoritmo FCFS (primero en llegar, primero en ser servido).

• Un proceso solo dejara la CPU cuando va a atender una peticion de EIS.

• Se beneficia a los procesos con tiempos largos de CPU.

• EI rendimiento del sistema es muy alto, pues se pierde poco tiempo en conmutacion de procesos. b) Cuando el valor del cuanto se ha elegido practicamente nulo el resultado es que:

• Se beneficia a los procesos intensos de EIS.

• El rendimiento es muy bajo, practicamente nulo, ya que se produce una sobrecarga del sistema por conmutacion de proceso pues se pasa mas tiempo cambiando de proceso que procesando.

c) Para una eleccion del valor del cuanto proximo al tiempo media de ejecucion de los procesos las conclusiones son las siguientes:

• En media, trata por igual a todos los procesos.

• EI rendimiento es optimo, se minimiza la sobrecarga por conmutacion de procesos ya que el cuanto se adapta al tiempo, E, que un proceso esta ocupando la CPU antes de realizar una operaci6n de EIS.

d) Cuando el cuanto es proximo al tiempo invertido en la conmutacion de los procesos, se puede concluir que:

• Se beneficia a los procesos intensos de EIS.

• EI rendimiento es bajo. EI 50% de tiempo de CPU se invierte en realizar la conmutaci6n de procesos.

Problema 2·8

Sean E y C cantidades definidas de forma similar a la realizada en el problema anterior. Para la planificacion por priori dad circular con un valor de cuanto igual a Q, calculese la eficiencia del procesador para cada uno de los siguientes casos:

a) Q es infinito.

b) Q > E.

c) C<Q<E.

d) Q = C.

e) Q es proximo a cero.

80

2 Gastlon de procesos

Solucion

A continuacion se va a evaluar la eficiencia para los diferentes rangos de valores en los que puede oscilar el cuanto del algoritmo. Para ella se parte de la siguiente relacion:

E1 = !:! x 100% T

donde el tiempo de ejecucion util 0 real es U y el tiempo de uso de CPU total es T.

a) Tanto para el caso en el que el valor de cuanto, Q, es infinito, como

b) Para el caso en que Q > E, el proceso se ejecuta sin interrupcion dentro del valor de la cuota de tiempo asignada hasta su finalizaci6n. A continuaci6n el sistema operativo planificara otro proceso para ejecucion, esta operacion corresponde a la conmutaci6n de procesos cuya duraci6n es C. Por 10 tanto, la eficacia sera:

Dado que el tiempo de ejecuci6n del proceso es mucho mas grande que el tiempo invertido en la conmutacion de tareas, es decir, E» C, la eficacia es practicamente dell 00% (E/-l 00%). Este valor de la eficiencia resulta evidente dado que la CPU ha empleado todo su tiempo en la ejecucion del proceso. Por otra parte, como se ha comentado otros procesos no han podido comenzar su ejecuci6n, por 10 que sus tiempos de espera son grandes.

c) En este caso el valor del cuanto es inferior al tiempo de ejecuci6n real del proceso, por 10 que este debera ser planificado EIQ veces. Estas conmutaciones de tareas necesarias conllevan una perdida de tiempo de C x (EIQ). Por 10 tanto, sustituyendo en la expresi6n de la eficiencia los valores anteriores:

E

E1 = x 100

E+Cx!i

Q

= _Q_ x 100% Q+C

d) En este caso el valor del cuanto es igual al tiempo de conmutacion de tareas, Q = C, que corresponde a un caso particular del apartado anterior, por 10 tanto si se sustituye en su expresi6n, se tiene:

E/=50%

Este resultado es total mente esperado, ya que si el cuanto es igual al tiempo de conmutaci6n, el procesador se pasa la mitad del tiempo ejecutando el proceso y la otra mitad conmutando.

e) Finalmente se va a considerar el caso en el que el valor del cuanto es proximo a cero. Si, de la misma forma, se sustituye en la expresi6n del apartado c), este valor, Q = 0, se tiene:

E/=O%

De nuevo este resultado es predecible. La CPU pasa todo el tiempo conmutando tare as y no las ejecuta, dado que el tiempo asignado para ella es nulo. Por 10 tanto, toda su labor resulta inutil.

2·12 Problemas resueltos

81

Problema 2·9

i,Que algoritmo minimiza el tiempo de espera medio? Demuestrelo.

Soluci6n

EI algoritmo que minimiza el tiempo de espera medio es el algoritmo SJF (primero la tarea mas corta). Para la demostracion supongase un sistema can n trabajos cuyos tiempos de ejecucion son t" 12, t3, ... Y tn- Sin perdida de generalidad se va a considerar que el orden de ejecucion es PI> P2, ... Y Pn Y que el tiempo de conrnutacion de tarea es despreciable. Bajo estas suposiciones, el tiempo de espera de cada proceso se puede calcular y queda recogido en la Tabla 2.11.

Trabajo Tiempo de espera
PI 0
P2 II
P3 II + 12
... . ..
Pn II + /2 + ... + tn·1 Tabla 2.11: Tiempo de espera de los n procesos

De acuerdo con los resultados de la Tabla 2.11, el tiempo de espera medio es (suma de los tiempos de espera de cada proceso dividido entre el numero total de procesos):

E = (n-l)tJ+(n-2)t2+···+tn_1 n

Para minimizar este tiempo, t1 debe ser el numero mas pequefio de la serie {II, h- '3, ... "n} porque es el que contribuye mas a E (al ir mutiplicado par el factor mayor (n - I», a continuacion t: debe ser el mas pequefio de {t2' '3, ... , In} Y asi sucesivamente. Entonces t1 debe ser el trabajo de menor tiempo de ejecucion, despues t2, etc. Orden que es el que determina el algoritmo SJF.

Problema 2·10

Supongase que se tienen que realizar cinco trabajos cuyas caracteristicas se muestran en la Tabla 2.12. Estos trabajos llegan en el orden descrito en esta tabla. Se pide:

a) Realizar los diagramas de Gantt que ilustren la ejecucion de estos trabajos utilizando los algoritmos siguientes: FCFS (primero en llegar primero en ser servido), SJF (primera tarea mas

82

2 Gastlon de procesos

corta), SRT (tiempo que queda mas corto), RR (prioridad circular) con un cuanto de 1 ms y, finalmente, una planificaci6n por prioridades no expropiativo.

b) Determinar para cada uno de los procesos con cada uno de los algoritmos de planificaci6n

anteriores el tiempo de retorno. Calcular la media resultante para cada algoritmo.

c) Idem para la eficiencia.

d) Idem para el tiempo de espera.

e) Idem para el tiempo de respuesta.

f) Analizar los resultados anteriores y extraer consecuencias.

Trabajo Tiempo de uso de CPU Prioridad
1 1 1
2 10 4
3 2 3
4 2 4
5 6 2 Tabla 2.12: Resumen de los procesos a ejecutar can sus prioridades y tiempos de ejecuci6n

Solucion

a) EI algoritmo FCFS (primero en Ilegar primero en ser servido) (First-Come-First-Served) corresponde a la disciplina de planificaci6n en la que los procesos en estado preparado acceden al procesador en el orden en que llegan a dicho estado, sin expropiaciones. La implernentacion del planificador FCFS es bastante directa, y su ejecuci6n da lugar a pocos recargos. Los procesos largos hacen esperar a los cortos. EI diagrama de Gantt a que da lugar esta planificaci6n es el siguiente:

I I

2

3

4

5

11

13

15

21

EI algoritmo SJF (primera tarea mas corta) (Shortest-Job-First) es una disciplina de planificacion no expropiativa en el cual el trabajo (0 proceso) en espera con el tiempo estimado de ejecucion hasta su terminaci6n mas corto, es el siguiente en ser ejecutado. SJF favorece a los trabajos cortos a costa de los mas largos. Si dos trabajos tienen el mismo tiempo se seleccionan segun la estrategia FCFS. Asi, los procesos 3 y 4 requieren del mismo tiempo de ejecucion luego el orden de ejecuci6n de acuerdo a su orden de llegada sera primero el proceso 3 y luego el 4.

2-12 Problemas resueltos

83

I I

3

4

5

2

3

5

II

21

EI algoritmo SRT (tiempo que queda mas corto) (Shortest-Remaining-Time). Es la contraparte expropiativa del SJF. EI proceso con el tiempo estimado de ejecucion men or para lIegar a su terrninacion es el siguiente en ser ejecutado, incluyendo las nuevas I1egadas. En nuestro caso como estan planificados los trabajos (no llegando ninguno nuevo), y como se parte del mas corto en tiempo, siempre seguira siendo el mas corto a medida que se ejecuta, por 10 que es igual que el algoritmo SJF.

La diferencia tiene lugar cuando los trabajos no estan planificados, ya que de esta forma se pone de manifiesto la cualidad expropiativa de este algoritmo, que es 10 que Ie diferencia del SJF, por ejemplo, si se esta ejecutando un proceso con un tiempo de ejecucion de 6 s y han pasado 3 s, y entra un proceso que requiere 2 s para ejecutarse, Ie expropiara,

EI algoritmo RR (prioridad circular) (Round Robin) los procesos se despachan en FCFS pero se les otorga una cantidad limitada de tiempo de CPU Hamada cuanto. Si un proceso no term ina antes de expirar su tiempo de CPU, entonces la CPU es expropiada y otorgada al siguiente proceso en espera.

2 3 4 5 6 7 8 9 10 II 12 13 14 15 16 17 18 19 20 21

EI algoritmo de prioridades (no expropiativo) En esta estrategia de planificacion por prioridades cada proceso tiene asignada una y el de mayor prioridad es el que toma el procesador. Asi, suponiendo que el orden de maxima prioridad es para el de prioridad 1 y as] sucesivamente y que a igualdad de prioridades se seleccionan segun la estrategia FCFS se tiene el siguiente diagrama de Gantt:

5

3

2

4

7

9

19

21

b) El tiempo de retorno corresponde al tiempo transcurrido desde ellanzamiento de un proceso hasta su finalizacion. La Tabla 2.13 muestra el tiempo de retorno de cada proceso para cada algoritmo, como se puede observar de cada diagrama de Gantt anterior.

c) La eficiencia (Ef) es la fraccion de tiempo medio durante el cual el procesador esta ocupado de manera util en la ejecuci6n de un proceso:

Ef = Y. x 100 % T

84

2 Gesti6n de procesos

don de el tiempo de ejecucion uti I 0 real es U y el tiempo de uso de CPU total es T.

A la hora de calcular la eficiencia del procesador para un proceso se ha tenido en cuenta que el tiempo util, U, corresponde al tiempo de ejecuci6n real de ese proceso (dado por la Tabla 2.12) frente al tiempo total de uso de la CPU, T, (ejecuci6n y conmutacion) 0 tiempo que transcurre hasta que el proceso en concreto final ice su ejecuci6n, que correspondent al tiempo de retorno de dicho proceso (dado por la Tabla 2.13).

En la Tabla 2-14 se resume los resultados encontrados.

Trabajo FCFS RR SJF Prioridad
1 1 1 1 1
2 11 21 21 19
3 13 7 3 9
4 15 8 5 21
5 21 17 11 7
Tiempo medio 12.2 10,8 8,2 11,4 Tabla 2.13: EI tiempo de retorno para los cinco procesos segun los diferentes algoritmos de planificacion

Trabajo FCFS (%) RR(%) SJF (%) Prioridad (%)
1 100 100 100 100
2 90,90 47,61 47,61 52,63
3 15,38 28,57 66,66 22,22
4 13,33 25 40 9,52
5 28,57 35,29 54,54 85,71
Tiempo medio 49,63 47,29 61,76 54,01 Tabla 2-14 La eficiencia para los cinco procesos segun los diversos algoritmos de planificaci6n

d) El tiempo de espera corresponde al tiempo que un proceso consume esperando la asignacion de recursos debido a la competencia con otros en un sistema con multiprogramaci6n. Matematicamente se puede expresar como el tiempo de retorno menos el tiempo de ejecuci6n. En la Tabla 2.15 se recogen los calculos realizados.

e) EI tiempo de respuesta a un evento corresponde al intervalo de tiempo que transcurre desde que se sefiala un evento hasta que se ejecuta la primera instrucci6n de la rutina de servicio de dicho evento. En definitiva es el tiempo que esta esperando en el estado de preparado 0 bloqueado para empezar a ejecutarse. Asi, a partir de estos resultados se puede calcular el tiempo de respuesta,

2·12 Problemas resueltos

85

como queda recogido en la Tabla 2.16

Trabajo FCFS RR SJF Prioridad
I 0 0 0 0
2 I 11 II 9
3 11 5 1 7
4 13 6 3 19
5 15 11 5 I
Tiempo medio 8 6,6 4 7,2 Tabla 2.15: El tiempo de espera para los cinco procesos segun los diversos algoritmos de planificacion

Trabajo FCFS RR SJF Prioridad
1 0 0 0 0
2 1 I II 9
3 II 2 I 7
4 13 3 3 19
5 15 4 5 I
Tiernpo media 8 2 4 7,2 Tabla 2.16: El tiempo de respuesta para los cinco procesos segun los diversos algoritmos de planificacion

f) Del analisis de las tab las anteriores se puede concluir que los mejores resultados se obtienen para

el algoritmo SJF:

• El menor tiempo de retorno medio (8,2)

• La mayor eficiencia media de la CPU (61,7%)

• EI tiempo de espera medio mas pequefio (4)

Problema 2-11

Supongase que se tienen que realizar cinco trabajos cuyas caracteristicas se muestran en la Tabla 2.17. Estos trabajos llegan en el orden descrito en esta tabla.

Se pide:

a) Realizar un diagrama de Gantt que ilustre la ejecuci6n de estos trabajos para los algoritmos: FeFS (primero en llegar primero en ser servido), RR (priori dad circular) con cuanto de 1 ms, SJF (primera tarea mas corta), prioridades no expropiativo.

86

2 Gesti6n de procesos

b) l,Cwil es el tiempo de retorno de cada trabajo para cada uno de los algoritmos anteriores de planificacion", l,Cmll es el tiempo de espera de cada trabajo para cada uno de los algoritmos anteriores de planificacion? Razonar sobre el tiempo de espera medio de cada algoritmo.

Trabajo Tiempo de uso de CPU Prioridad
1 10 3
2 1 1
3 2 3
4 1 4
5 5 2 Tabla 2.17: Resumen de los procesos a ejecutar can sus prioridades y tiempos de ejecucion

Soluci6n

a) A continuacion se presentan los diagramas de Gantt para los algoritmos indicados:

• Algoritmo FCFS: la carga de trabajo se procesa simplemente en orden de llegada, sm expropiaciones.

1

3

5

10

II

13

14

19

• Algoritmo RR: El planificador va asignando el procesador a cada proceso de forma secuencial durante el cuanto de tiempo definido.

2

3

4

5

6

7

8

9 10 II 12 13 14 15 16 17 18 19

• Algoritmo SJF: Se selecciona el trabajo con el menor valor de tiempo restante de ejecucion.

3

5

2

4

9

19

You might also like