Está en la página 1de 4

Cuando la cpu envía datos atravez del bus, el bus no es plano sino que se

divide en partes, en una parte del bus van los datos que efectivamente manda
a memoria pero en otra parte del bus va la dirección donde tienen que ir a
parar esos datos que está mandando. Hay otros registros de cpu, el contador
de programa y el registro de instrucciones, son 2 registros importantes que
tiene el so. El conjunto de instrucciones, toda cpu, no depende del hardware,
sino del conjunto de instrucciones. Muchas veces los so para poder funcionar
y cumplir su función, necesitan que durante un breve periodo de tiempo, se
ejecuten 3 4 varias instrucciones, pero que durante ese instante el hardware
no moleste o intervenga, es indispensable que la cpu bloquee el hardware, el
so le dice a la cpu que bloquee el hardware.
Muchas veces los procesos compiten por el mismo recurso, el so administra
los recursos, para resolver esa administración de recursos, a veces el so debe
cumplir 3 pasos:
.revisar que recurso esta dado
.asignárselo a un proceso
.registrar que lo tiene ese proceso
todo esto lo tiene que hacer sin que al so lo distraigan con nada ,como el so
tiene la obligación de administrar recursos y abstraerte del hardware , cada
vez que el hardware necesite algo lo tiene que atender el so, por ejemplo, si
hay dos procesos que están compitiendo por el mismo recurso , el so tiene el
planificador, que es el recurso que quieren los dos , el so tiene solo un registro
, entonces , darle el recurso significa verificar que está libre , asignarle el
recurso y después registrar que está asignado , si en el intermedio de esos
pasos el hardware interrumpe y el so deja las cosas hechas por la mitad,
queda inconsistente el sistema , ya que queda el recurso asignado pero nunca
registro que verdaderamente lo tiene asignado un proceso, la cuestión es
decir a la cpu que no interrumpa nadie.
La cpu tiene 2 modos de ejecución, usuario y supervisor, hay un registro
llamado PSW, en este la cpu lleva un registro en qué modo de ejecución está
en este momento ejecutándose, si esta en modo usuario, entonces no va a
ejecutar una de estas instrucciones que requieren estar en modo privilegiado,
estas instrucciones solo se van a ejecutar en modo privilegiado. La cpu tiene
que estar modo privilegiado cuando el que se está ejecutando es el so y
cuando se esté ejecutando un proceso de usuario la CPU debe estar en modo
no privilegiado.
El so es software, el so establece un conjunto de funciones que para utilizar
las funciones tenes que primero autenticarte y según el usuario y la clave
podes tener determinadas funciones, se llama nivel de privilegios dentro del
so.
Existen un conjunto de instrucciones que la cpu puede ejecutar, solo si, la
cpu esta en modo supervisor, la cpu no va a ejecutar si la cpu esta en modo
usuario, la cpu va a estar en modo supervisor cuando se esté ejecutando el
kernel del so, esta parte del so se construyó para administrar el hardware o
para aislarte del hardware.
cuando estas editando un archivo , y guardas el archivo , el so guarda el
archivo , este archivo se guarda en el disco rígido y este, está colgado a la
controladora , para que los programas de usuario no hablen con todas las
controladoras ,está el so capaz de hablar con la controladora entonces si
vamos a guardar en el disco, el único que va a poder hablar con la
controladora va a ser el so, entonces cuando edite el archivo , abrí el archivo
y guarde el archivo , fueron 2 momentos en el que el editor de texto (vi o
nano) le tuvo que pedir al so que leyera el archivo y que guarde el archivo.
En estos dos momentos cuando leyó el archivo y guardo el archivo, se
estuvo ejecutando el kernel del so.
Cada momento en el que el so tuvo que hablar con las controladoras, la cpu
tuvo que ejecutarse en modo supervisor y ejecutar cualquier instrucción,
porque el que en realidad estaba haciendo las instrucciones que estaba
ejecutando la cpu en ese momento, eran del kernel del so y cada vez que la
cpu dejo de ejecutar instrucciones del kernel del so, tuvo que pasar al modo
usuario, la cpu va alternando entre instrucciones de los usuario y del so.
la memoria cache guarda y copia contenido de la RAM
La memoria hay que verla como una secuencia de posición de memoria,
donde cada posición de memoria está identificada por una dirección de
memoria. La memoria RAM, esa dirección de memoria es un numero
secuencial, si estamos en tecnología de 32 bits, cada dirección de memoria
será de 32 bits o 64 bits, cada dirección de memoria se corresponde a un bit,
entonces, cuando la instrucción de leer y escribir hace referencia a una
posición de memoria, en cada posición de memoria puede haber datos o
instrucciones, depende lo que allá decidido cargar en esa posición de
memoria el so. Cada posición de memoria es un bit, cada posición de
memoria se identifica con una dirección de memoria, cuantas posiciones de
memoria hay en una arquitectura depende de cuantos bit tenga la dirección
de memoria. EJ: con 16 bits 2^16= 65.536, si cada una de esas direcciones
65.536, corresponde a un bit de memoria, cada una de esas direcciones
puede armar con tecnología de 16 bit, puedo armar 65.536 direcciones de
memoria diferentes. Si cada una de esas direcciones me permite direccionar
solamente un bit de memoria, ¿cuál es la máxima cantidad de memoria que
puedo tener? , cada dirección se corresponde un bit, puedo tener como
máximo 65.536 bit de memoria, las direcciones van de 0 a 65.535 con una
distancia de 65.536 posiciones de memoria diferentes, eso totaliza 65.536 bit
de memoria que son 64K (65.536 / 1024). No puedo tener más porque si le
quiere agregar un bit más de memoria no lo podría direccionar. Con
tecnología de 32 bits, ¿cuál es la máxima cantidad de memoria que puedo
tener? , la máxima cantidad de memoria que puedo tener son 4 GB (2^32),
que es lo que contiene esa posición de memoria es una dirección que tomo
el so, en esa posición de memoria puede haber datos, puede haber
instrucciones de un proceso, la memoria es un recurso que administra el so.
REPASO: la cpu tiene ciclos de cpu, que básicamente tiene un contador de programa que
apunta a la dirección de memoria donde está la próxima instrucción que tiene que ejecutar,
trae el contenido de esa dirección de memoria, copia ese contenido en el registro de
instrucciones y ejecuta esa instrucción y le suma 1 al contador de programa. Eventualmente,
La instrucción que está ejecutando puede sobrescribir el contador de programa por que ha
hecho un salto en el programa que está ejecutando, si tuviera un solo programa.
Si tengo una sola cpu, la cpu está ejecutando la instrucción del proceso a o
del proceso b o del so, en el registro de instrucciones hay una sola
instrucción que es o de uno o de otro, o la cpu esta ejecutando un proceso
de usuario o un so, Entonces la idea es que el so intervenga cuando hace
falta y cuando no hace falta que el so se ejecute, la cpu esté disponible para
instrucciones de procesos de usuario.
El único elemento que le puede dar intervención al so es el hardware ,
porque si estoy ejecutando un proceso de usuario y la instrucción que tengo
disponible es un proceso de usuario y el contador de programa está
apuntando a la siguiente instrucción de este proceso de usuario, la única
forma de saltar el proceso de usuario al so, es lograr que ese contador de
programa deje de apuntar a una instrucción de proceso de usuario y apunte
a una instrucción de so, de forma tal que el siguiente ciclo de cpu , la cpu en
lugar de leer la instrucción de proceso de usuario , lea una instrucción del
so. Por qué la cpu hace siempre lo mismo, lee el contador de programa, va a
esa posición de memoria, trae la instrucción que está en esa posición de
memoria, ejecuta esa instrucción de memoria y suma uno al contador de
programa.
Si necesito saltar al so, es decir, la cpu tiene q ejecutar una instrucción de
so, para ejecutar una instrucción del so necesito lograr que la cpu recupere
como siguiente instrucción, no una instrucción del proceso de usuario que
está ejecutando ahora sino una instrucción del so, para lo cual necesito
mínimamente sobrescribir el contador de programa
Que tenía este proceso de usuario, por un valor que apunte a alguna parte
del so, de forma tal que en el siguiente ciclo de la cpu cuando vaya a
recuperar ahora lea. La cpu es la que va ir permitiendo la intervención del so
Cuando la cpu recibe la instrucción trap(ver con más detalle) toma el
contador de programa actual , lo resguarde en algún lugar y sobrescriba el
contador de programa con un numero tal que la próxima instrucción que
ejecute sea parte del so
el único que puede reanimar al cpu si se encuentra inactivo es la cpu

También podría gustarte