Sistemas operativos modernos

Hora de Minutos de CPU Trabajo 1 10:00 4 2 10:10 3 3 10:15 2 4 10:20 2 (a) Núm. de procesos 2 3 4 CPU inactiva .80 .64 .51 .41 CPU ocupada .20 .36 .49 .59 CPU/proceso .20 .18 .16 .15 (b) 2.0 1 .9 1 .8 1 .3 1 ^Term ina trabajo 1 1 1 Inicia trabajo 2 ^ ® • .8 i 1 1 .3 1 .9 1.1 1 1 1 1 .8 —1------ 1------------ i .3 1 .9 ) 1 1 i 1 1 - i 1 1 I 1 1 I f 1 .3 1 .9 1------ 1------------ 1 1 1 1 M I .7 1 ------ ^— 1--------- 1 1 1 1 1 1 1 ) 10 15 20 22 27.6 28.2 31.7 Tiempo (relativo a la llegada del trabajo 1) (c) Figura 4-4. a) Llegada y requerimientos de trabajo de cuatro trabajos, b) Aprovecha­ miento de la CPU para 1 a 4 procesos con espera de E/S del 80%. c) Serie de suce­ sos a medida que los trabajos llegan y terminan. Los números arriba de las líneas horizontales indican cuánto tiempo de CPU, en minutos, recibe cada trabajo en ca­ da intervalo. programa principal, los procedimientos escritos por el usuario y los procedimientos de biblio­ teca en un solo espacio de direcciones), el enlazador necesita saber en qué dirección de la me­ moria comenzará el programa. Por ejemplo, supongamos que la primera instrucción es una llamada a un procedimiento que está en la dirección absoluta 100 dentro del archivo binario producido por el enlazador. Si este programa se carga en la partición 1 (en la dirección lOOK), esa instrucción saltará a la di­ rección absoluta 100, que está dentro del sistema operativo. Lo que se necesita es una llamada a lOOK + 100. Si el programa se carga en la partición 2, la llamada deberá ser a 200K + 100, y así en forma sucesiva. Esto se conoce como el problema de la reubícadón. Una posible solución es modificar las instrucciones en el momento en que el programa se carga en la memoria. Si se carga en la partición 1, se suman lOOK a cada una de las direccio­ nes mencionadas en él; si se carga en la partición 2, se suman 200K, y así en forma sucesiva. Si se va a efectuar la reubicación de esta manera, durante la carga, el enlazador deberá incluir en el programa binario una lista o mapa de bits que indique cuáles palabras del programa son direcciones a reubicar y cuáles son códigos de operación, constantes u otras cosas que no de­ ben reubicarse. OS/MFT operaba así. La reubicación durante la carga no resuelve el problema de la protección. Un programa mal intencionado siempre puede construir una instrucción nueva y saltar a ella. Puesto que en este sistema los programas usan direcciones de memoria absolutas, no direcciones relativas a un re-

RkJQdWJsaXNoZXIy MjI4NDcx