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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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

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

}<br />

Para cada región que se especifique en el módulo <strong>de</strong> carga.<br />

Asignar nuevas regiones (allocreg);<br />

Asociar la región (attachereg);<br />

Si proce<strong>de</strong>, cargar la región en memoria (loadreg). La región <strong>de</strong> datos es inicialmente dividida<br />

en dos partes: datos inicializados en compilación y datos no inicializados (bss). La<br />

asignación se realiza para datos inicializados y <strong>de</strong>spués <strong>de</strong>be usar growreg para los no<br />

inicializados y ponerlos a cero. Por último, asigna una región para la pila <strong>de</strong>l proceso y la<br />

asocia;<br />

Copiar argums a la nueva pila (stack) <strong>de</strong>l proceso (en la pila creada en el punto anterior);<br />

Proceso especial para el setuid. El kernel inicializa el array <strong>de</strong> direcciones <strong>de</strong> tratamiento <strong>de</strong> señales en<br />

la u-Area (las pendientes se quedarán sin ser atendidas);<br />

Preparar contenido <strong>de</strong> registros para regresar a modo usuario. Ahora el kernel modifica los registros en<br />

el contexto <strong>de</strong> usuario (primera capa) colocando el nuevo valor <strong>de</strong>l puntero a pila y el contador <strong>de</strong><br />

programa;<br />

Liberar el i-nodo (iput), para balancear el namei (equivale a haber hecho un open y un close <strong>de</strong>l<br />

archivo ejecutable, a excepción que no hay una entrada en la Tabla <strong>de</strong> Archivos.<br />

<strong>2.</strong>7.4.3. Comentarios sobre exec.<br />

• Cuando el proceso llame exec ⇒ ejecutará el código <strong>de</strong>l nuevo programa.<br />

• Es el mismo proceso que antes <strong>de</strong>l exec.<br />

– Mismo PID <strong>de</strong> proceso y posición en la jerarquía <strong>de</strong> procesos.<br />

– Diferente el contexto <strong>de</strong>l nivel <strong>de</strong> usuario.<br />

• Texto (código) y datos en secciones separadas <strong>de</strong>l programa ejecutable ⇒ regiones separadas <strong>de</strong>l<br />

proceso.<br />

• Ventajas <strong>de</strong> separar el texto (código) y los datos: protección y compartición.<br />

• Optimización: Compartir regiones (segmento <strong>de</strong> código) ⇒ sticky-bit.<br />

• sticky-bit ⇒ el sticky-bit es uno <strong>de</strong> los bits <strong>de</strong> la palabra <strong>de</strong> modo <strong>de</strong> un archivo, sólo es aplicable a<br />

archivos ejecutables e indica que el segmento <strong>de</strong> código <strong>de</strong>l programa (archivo ejecutable) pue<strong>de</strong><br />

ser compartido por varios procesos. Es <strong>de</strong>cir, este bits indica al kernel que dicho archivo es un<br />

programa con capacidad para que varios procesos compartan el segmento <strong>de</strong> código (texto) y que<br />

este segmento se <strong>de</strong>be mantener en memoria, aun cuando alguno <strong>de</strong> los procesos que lo utiliza <strong>de</strong>je<br />

<strong>de</strong> ejecutarse o pase al área <strong>de</strong> intercambio (swap). La técnica <strong>de</strong> compartir el mismo código entre<br />

varios procesos permite gran ahorro <strong>de</strong> memoria en el caso <strong>de</strong> programas muy utilizados, como<br />

editores <strong>de</strong> texto, compiladores, etc. Cuando el kernel tiene que liberar memoria asignada al<br />

proceso (bien porque ha terminado su ejecución o bien porque <strong>de</strong>be pasar al área <strong>de</strong> swap), si hay<br />

otros procesos compartiendo el segmento <strong>de</strong> código, este segmento no es <strong>de</strong>scargado <strong>de</strong> memoria.<br />

Solo el superusuario pue<strong>de</strong> modificar el sticky-bit <strong>de</strong> un programa. El empleo <strong>de</strong> este bit (stickybit)<br />

supone una optimización en el trasiego <strong>de</strong> información entre el disco y la memoria, en el caso<br />

<strong>de</strong> programas muy utilizados como son editores, compiladores, etc. Cuando finaliza la ejecución <strong>de</strong><br />

un proceso que tiene el sticky-bit activo, el kernel no libera su región <strong>de</strong> texto; pero en otras<br />

situaciones es necesario hacerlo:<br />

− Si un proceso abre el archivo para escritura; si se modifica el contenido <strong>de</strong>l archivo, se<br />

invalida el contenido <strong>de</strong> la región.<br />

− Si un proceso cambia los permisos <strong>de</strong>l archivo (chmod) y <strong>de</strong>sactiva el sticky-bit.<br />

− Si un proceso ejecuta unlink sobre el archivo.<br />

− Si se <strong>de</strong>smonta el sistema <strong>de</strong> archivos que contiene el archivo<br />

− Si kernel se quedara sin espacio en swap, podría intentar aliviarse liberando regiones.<br />

• Activar modo sticky-bit para archivos ejecutables usados frecuentemente.<br />

• Ventaja ⇒ Texto o código está en memoria ⇒ Tiempo <strong>de</strong> startup <strong>de</strong>l proceso es menor.<br />

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

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

Saved successfully!

Ooh no, something went wrong!