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