Sistemas operativos modernos

de la PSW controla el modo. Al operar en modo de kernel, la CPU puede ejecutar todas las instrucciones de su conjunto de instrucciones y todas las funciones del hardware. El sistema operativo se ejecuta en modo de kemel, y eso le da acceso a todo el hardware. En contraste, los programas de usuario se ejecutan en modo de usuario, que sólo permite ejecutar un subconjunto de las instrucciones y tener acceso a un subconjunto de las funciones. En general, todas las instrucciones que implican E/S y protección de memoria quedan inhabi­ litadas en modo de usuario. Desde luego, también está prohibido cambiar el bit de modo de la PSW a modo de kernel. Si un programa de usuario quiere obtener servicios del sistema operativo, deberá emitir una llamada al sistema, que se transfiere por una interrupción del sistema {trap) al kemel e invoca al sistema operativo. La instrucción TRAP cambia del modo de usuario al modo de kemel e ini­ cia el sistema operativo. Una vez efectuado el trabajo, se devuelve el control al programa de usuario en la instrucción inmediatamente después de la llamada al sistema. Explicaremos los por­ menores de este proceso más adelante en este capítulo. Como nota tipográfica, utilizaremos el ti­ po de letra helvética minúscula para indicar las llamadas al sistema en el texto normal, así: read. Vale la pena señalar que las computadoras tienen otras interrupciones de sistema aparte de la instrucción que ejecuta una llamada al sistema. Casi todas las demás interrupciones de siste­ ma las genera el hardware para advertir de una situación excepcional, como un intento de divi­ sión entre cero o una insuficiencia de punto flotante. En todos los casos, el sistema operativo asume el control y debe decidir qué hacer. A veces es preciso terminar el programa con un error. En otras ocasiones se puede ignorar el error (por ejemplo, un número de flujo inferior puede es­ tablecerse en cero). Por último, si el programa ha anunciado con antelación que quiere manejar ciertos üpos de condiciones, se le puede devolver el control y dejarlo que resuelva el problema. 1.4.2 Memoria El segundo componente importante de cualquier computadora es la memoria. De manera ideal, una memoria deberá ser extremadamente rápida (más que la ejecución de una instrucción, pa­ ra que la CPU no se vea frenada por la memoria), con tamaño de sobra y de costo insignifi­ cante. Ninguna tecnología actual safisface todos estos requisitos, por lo que se adopta un enfoque distinto. El sistema de memoria se construye en una jerarquía de capas, como se muestra en la figura 1-7. La capa superior consiste en los registros internos de la CPU. Estos se componen del mis­ mo material que la CPU y por tanto son tan rápidos como ella. Por supuesto que el acceso a ellos no implica retrasos. La capacidad de almacenamiento de estos registros suele ser de 32 x 32 bits en una CPU de 32 bits, y de 64 x 64 bits en una CPU de 64 bits. En ambos casos, menos de 1 KB. Los programas deben administrar los registros (es decir, decidir qué colocar en ellos) por su cuenta, en software. Luego viene la memoria caché, que en su mayor parte está bajo el control del hardware. La memoria principal se divide en líneas de caché, que por lo regular son de 64 bytes, con las direc­ ciones Oa 63 en la línea de caché O, las direcciones 64 a 127 en la línea 1, etc. Las líneas de ca­ ché de uso más intensivo se mantienen en un caché de alta velocidad situado dentro de la CPU o muy cerca de ella. Cuando el programa necesita leer una palabra de memoria, el hardware de ca-

RkJQdWJsaXNoZXIy MjI4NDcx