12.10.2014 Views

TEMA 2. GESTIÓN DE PROCESOS - Universidad de Almería

TEMA 2. GESTIÓN DE PROCESOS - Universidad de Almería

TEMA 2. GESTIÓN DE PROCESOS - Universidad de Almería

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Diseño <strong>de</strong> Sistemas Operativos<br />

Tema <strong>2.</strong> Gestión <strong>de</strong> Procesos<br />

Pasos en el cambio <strong>de</strong> contexto <strong>de</strong> un proceso:<br />

1. Decidir si realizar un cambio <strong>de</strong> contexto y si éste es permisible ahora.<br />

<strong>2.</strong> Salvar el contexto <strong>de</strong>l proceso antiguo.<br />

3. Buscar el mejor proceso para planificar (scheduler) su ejecución.<br />

4. Restaurar su contexto.<br />

• Abortive Return. Finalización anormal <strong>de</strong> la secuencia <strong>de</strong> ejecución <strong>de</strong>l kernel ⇒ Reejecutar <strong>de</strong>s<strong>de</strong><br />

el contexto previo save_context {crea una nueva capa <strong>de</strong> contexto}, setjmp {almacena la capa <strong>de</strong><br />

contexto en la u-Area}, longjmp {restaura la capa <strong>de</strong> contexto <strong>de</strong>s<strong>de</strong> la u-Area}.<br />

• Copia <strong>de</strong> datos en el kernel ⇔ Usuario. Los modos kernel y usuario son excluyentes, pero<br />

necesitan intercambiar datos (Usuario ⇒ kernel: parámetros, kernel ⇒ Usuario: resultados).<br />

<strong>2.</strong>6. MANIPULACIÓN <strong>DE</strong>L ESPACIO <strong>DE</strong> DIRECCIONES <strong>DE</strong> UN<br />

PROCESO. ALGORITMOS.<br />

• Hemos visto como el kernel realiza cambios <strong>de</strong> contexto metiendo y sacando contextos <strong>de</strong> la pila,<br />

pero viendo el contexto <strong>de</strong> usuario como un objeto estático que no cambia durante los cambios <strong>de</strong><br />

contexto. Sin embargo, hay varias llamadas al sistema que manipulan el espacio virtual <strong>de</strong> un<br />

proceso. Para revisar estas llamadas al sistema necesitamos <strong>de</strong>finir las estructuras que <strong>de</strong>scriben las<br />

regiones y algunos algoritmos básicos que serán utilizados por las llamadas al sistema.<br />

• El espacio <strong>de</strong> direcciones <strong>de</strong> un proceso ⇒ Representación lógica como regiones. Este espacio <strong>de</strong><br />

direccionamiento incluye:<br />

– El código <strong>de</strong>l proceso.<br />

– Los datos <strong>de</strong>l proceso, que se <strong>de</strong>scompone en dos segmentos, por una parte data, que<br />

contiene las variables inicializadas, y por otra parte bss que contiene las variables no<br />

inicializadas.<br />

– La pila utilizada por el proceso.<br />

• Cada región <strong>de</strong> memoria se caracteriza por varios atributos:<br />

– Sus direcciones <strong>de</strong> inicio y fin.<br />

– Los <strong>de</strong>rechos <strong>de</strong> acceso que tiene asociada.<br />

– El objeto asociado (por ejemplo, un archivo ejecutable que contiene el código ejecutable por<br />

el proceso).<br />

• Tabla <strong>de</strong> regiones.<br />

– Información necesaria para <strong>de</strong>scribir una región (<strong>de</strong>scriptor <strong>de</strong> regiones). Los campos más<br />

importantes son los siguientes:<br />

+ Puntero al inodo <strong>de</strong>l archivo cuyo contenido está cargado inicialmente en la región.<br />

+ Tipo <strong>de</strong> la región (texto (código), memoria compartida, datos privados o pila).<br />

+ Tamaño <strong>de</strong> la región.<br />

+ Localización <strong>de</strong> la región en memoria física.<br />

+ Estado <strong>de</strong> la región ⇒ combinación <strong>de</strong>:<br />

* Bloqueada.<br />

* En <strong>de</strong>manda.<br />

* En proceso a ser cargada en memoria (cargándose).<br />

* Válida (cargada en memoria).<br />

+ Cuenta <strong>de</strong> referencia ⇒ número <strong>de</strong> procesos que la referencian (región compartida).<br />

– Organización <strong>de</strong> los <strong>de</strong>scriptores <strong>de</strong> regiones organizados en Linux. Se mantiene una lista <strong>de</strong><br />

<strong>de</strong>scriptores organizados como un árbol AVL (árbol equilibrado en memoria), lo que permite<br />

reducir la complejidad <strong>de</strong> la búsqueda <strong>de</strong> O(n) a O(log n). Destacar que a partir <strong>de</strong> la versión<br />

<strong>2.</strong>4.9 <strong>de</strong>l kernel <strong>de</strong> Linux se utilizan árboles roji-negros para acelerar las búsquedas <strong>de</strong> un<br />

<strong>de</strong>scriptor <strong>de</strong> región particular.<br />

• Operaciones que manipulan regiones:<br />

– Crear / suprimir regiones <strong>de</strong> memoria.<br />

– Bloquear / <strong>de</strong>sbloquear una región para prevenit accesos mientras se manipula una región.<br />

– Asignar / liberar una región. Asignar ⇒ mover <strong>de</strong> la lista <strong>de</strong> regiones libres a la lista <strong>de</strong><br />

regiones activas, iniciándola. Liberar ⇒ liberar la región y los recursos asociados a ella.<br />

Departamento <strong>de</strong> Lenguajes y Computación. <strong>Universidad</strong> <strong>de</strong> Almería Página <strong>2.</strong>25

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!