Modo de execución

Na Galipedia, a Wikipedia en galego.

É habitual nun computador que existan varios modos ou niveis de execución. Esta diferenciación faise por motivos de seguridade. Normalmente existen dous niveis: privilexiado e non privilexiado. Cando un código é executado en modo non privilexiado, non pode acceder a todo o mapa de memoria e só pode executar un subconxunto das instrucións existentes. En modo privilexiado, non hai ningunha restrición.

Para que a isto sexa posible, eficaz e seguro, a distinción do modo de execución faise por hardware: un ou varios bits no rexistro de estado da unidade de control indican o nivel de execución. O procedemento habitual de salto dun nivel a outro é o seguinte:

  • O computador arranca en modo privilexiado. Tanto o cargador do sistema operativo como o núcleo do mesmo son executados nese modo. Unha vez que se vai executar algún programa de usuario, baixase o nivel a non privilexiado. Os programas que necesiten datos ou servizos especiais (acceso a disco ou a outros dispositivos periféricos,...), que corren noutros niveis de execución e deben ser controlados polo sistema operativo, debe solicitalo a este provocando unha excepción.
  • Cando se produce unha interrupción ou unha excepción, a execución normal do proceso actual detense, e entra a executar o sistema operativo en modo privilexiado. Neste intre debe comprobar se o acceso solicitado é 'lícito' e, se procede, realizalo. Unha vez que a solicitude foi atendida, o nivel de execución volverá a ser o mesmo de antes, coas implicacións que iso ten. Por motivos de eficiencia (para aumentar a concorrencia), o sistema operativo podería non atender toda unha petición de entrada ou saída de seguido, senón que pasará a executar outro proceso e delegará parte da solicitude a atender no periférico (a repartición de traballo dependerá de se a saída é por interrupcións ou por DMA).
  • Ademais, existen algunhas interrupcións que non son provocadas por programas senón polos dispositivos de entrada/saída ou polo reloxo do computador.