Bloque descriptor de proceso. campo Estado CPU

Bloque descriptor de proceso. campo Estado CPU

de Paulo Elder Sánchez Cuello -
Número de respuestas: 4

Hola, tengo una duda que no me aclaro sobre el siguiente enunciado que esta en las diapositivas...

enunciado:

Estado CPU: El contenido de esta estructura estará indefinido toda vez que el proceso está en estado ejecutando (puesto que estará almacenado en la CPU indicada por procesador). Registro de flags.


Yo lo que entiendo según lo que leí es que: existen dos campos dentro del PCB que se relacionan con la CPU:

  1. Registro de flags: Este campo almacena información sobre las banderas (flags) de la CPU.

  2. Estado CPU: Este campo indica el estado actual de la CPU relacionado con el proceso en cuestión. Por ejemplo, puede indicar si la CPU está ejecutando actualmente el proceso, o si el proceso está en espera para que se le asigne tiempo de CPU.


¿Esta bien lo que entendí?

Me queda la duda de para que existe el registro de flags y en que momento en el tiempo son tomadas para ser guardadas.

En respuesta a Paulo Elder Sánchez Cuello

Re: Bloque descriptor de proceso. campo Estado CPU

de Federico Rivero -

Hola Paulo!

Es correcto lo que planteás, tiene sentido hacer esa distinción. 

Con respecto al registro de flags, es necesario guardarlo como cualquier otro registro, imaginate que ejecutás un CMP AX, BX (el cual calcula las banderas) e inmediatamente se produce un cambio de contexto. En ese caso, cuando el proceso reanude, es preciso que el valor de las flags sea el mismo que se estableció en la ejecución del CMP.  Por esta razón es preciso guardar el valor del registro FLAGS en el PCB y restaurarlo de ahí una vez que el proceso vuelva a ejecutar.

Avisame si no queda claro, por favor :)

Saludos,

      Federico

En respuesta a Federico Rivero

Re: Bloque descriptor de proceso. campo Estado CPU

de Paulo Elder Sánchez Cuello -
Hola Federico !!
No me queda claro la diferencia entre el campo "Estado del proceso" y el campo "Estado CPU"; según lo que me decís yo concluyo que contiene la misma información.
qw
En respuesta a Paulo Elder Sánchez Cuello

Re: Bloque descriptor de proceso. campo Estado CPU

de Federico Rivero -
Es información diferente, el 'estado de CPU' es un campo que con tiene el valor del registro de flags. Es decir, el valor de las banderas N, Z, C, V entre otras. Es similar al espacio dentro del PCB donde se guarda el valor de los registros AX, BX, etc.

Por otro lado, el estado del proceso indica si el proceso representado por ese PCB está en CPU, o en la cola de procesos listos, o bloqueado, etc.

Pongamos un ejemplo: en algún lugar de memoria el SO tiene una lista de PCB:

--------------------------
ID: PCB1
Registros: ...
Estado del CPU (Flags): N = 1, V = 0, Z = 1, C = 1
Estado del proceso: Listo
--------------------------
ID: PCB2
Registros: ...
Estado del CPU (Flags): N = 1, V = 1, Z = 0, C = 0
Estado del proceso: Ejecutando
--------------------------
ID: PCB3
Registros: ...
Estado del CPU (Flags): N = 0, V = 0, Z = 0, C = 1
Estado del proceso: Listo
--------------------------
ID: PCB4
Registros: ...
Estado del CPU (Flags): N = 1, V = 1, Z = 1, C = 1
Estado del proceso: Bloqueado
--------------------------

Es decir, en una computadora con una única CPU, nunca va a haber más de un proceso con 'estado del proceso'  = Ejecutando, porque ese es el proceso en ejecución en cierto momento. Por otro lado, las flags pueden ser todas distintas ya que responden al valor de la última instrucción de ALU ejecutada por el proceso (más otras flags adicionales, por supuesto).

Con esto queda más claro?

Saludos,
    Federico