This work describes the technical aspects of VXt version 2.5, a software simulator of Intel 8086 processor that is being developed at Computing Science Department of FURB - Universidade Regional de Blumenau. This software is being used as a tool in Operating Systems and Hardware Architecture classes. Palavras-chave: arquitetura de computadores, simulação, sistemas operacionais, software didático. 1. Introdução O currículo
Interrup��es
Motiva��o
Para controlar entrada e sa�da de dados, n�o � interessante que a CPU tenha que ficar continuamente monitorando e status de dispositivos como discos ou teclados. O mecanismo de interrup��es permite que o hardware "chame a aten��o" da CPU quando h� algo a ser feito.
Interrup��es ass�ncronas e s�ncronas
Interrup��es geradas por algum dispositivo externo � CPU, como teclado ou controlador de disco, s�o chamadas de interrup��es de hardware ou ass�ncronas (ocorrem independentemente das instru��es que a CPU est� executando.
Quando ocorre uma interrup��o, a CPU interrompe o processamento do programa em execu��o e executa um peda�o de c�digo (tipicamente parte do sistema operacional) chamado de tratador de interrup��o. Em muitos casos, ap�s a execu��o do tratador, a CPU volta a executar o programa interrompido.
---------------------------------------------------------------------- exec. de prog. P | exec. do tratador de interrup��o| retomada de P | | ---------------------------------------------------------------------- ^ | interrup��oObserve que, em termos de fluxo de controle, a execu��o do tratador � um pouco como uma chamada de rotina. No entanto, a chamada de rotina � iniciada por instru��es do programa em execu��o, e o tratador de interrup��o ass�ncrona n�o. Por isso, n�o h� nenhuma comunica��o entre o programa interrompido e o tratador (par�metros ou retorno)!
Um tipo importante de interrup��o de hardware � a interrup��o do rel�gio. Em particular, esse mecanismo permite ao sistema operacional atribuir quotas de tempos de execu��o (fatias de tempo) para cada um dos processos em um sistema multiprograma. A cada interrup��o do rel�gio, o tratador pode verificar se a fatia de tempo do processo em execu��o j� se esgotou e, se for esse o caso, suspend�-lo e acionar o escalonador para que esse escolha outro processo para colocar em execu��o.
Um outro tipo de interrup��o s�o as interrup��es s�ncronas, muitas vezes tamb�m chamadas de traps. Traps ocorrem em consequ�ncia da instru��o sendo executada.
Algumas s�o geradas pelo hardware, para indicar por exemplo overflow em opera��es aritm�ticas ou acesso a regi�es de mem�ria n�o permitidas. Essas s�o situa��es em que o programa n�o teria como prosseguir. O hardware sinaliza uma interrup��o para passar o controle para uma parte do sistema operacional (o tratador da interrup��o em quest�o), que tipicamente termina a execu��o do programa.
Traps tamb�m podem ser geradas explicitamente por instru��es do programa. Essa � uma forma do programa acionar o sistema operacional, por exemplo para requisitar um servi�o de entrada ou sa�da. Um programa n�o pode "chamar" uma rotina do sistema operacional, j� que o sistema operacional � um processo a parte, com seu pr�prio espa�o de endere�amento. Atrav�s do mecanismo de interrup��o de software, um processo qualquer pode ativar um tratador que pode "encaminhar" uma chamada ao sistema operacional.
Traps tamb�m s�o usadas em situa��es onde o programa n�o tem como prosseguir pois aconteceu uma exce��o como overflow aritm�tico, tentativa de acesso a endere�o inv�lido ou estouro da pilha.
Como as interrup��es s�ncronas ocorrem em fun��o da instru��o que est� sendo executada, nesse caso � at� poss�vel o programa passar algum par�metro para o tratador. Isso ocorre com frequencia no caso de interrup��es usadas para chamar o sistema operacional.
Suporte de hardware
Tipicamente, o hardware detecta que ocorreu uma interrup��o, aguarda o final da execu��o da instru��o corrente e aciona o tratador, antes salvando o contexto de execu��o so processo interrompido. Para que a execu��o do processo possa ser reiniciada mais tarde, � necess�rio salvar o program counter e outros registradores de status. Os registradores com dados do programa devem ser salvos pelo pr�prio tratador (ou seja, por software) caso ele os utilize.
Em muitas arquiteturas, existe uma pilha independente associada ao tratamento de interrup��es.
Chamadas ao sistema no IA-32
A instru��o int n do assembly IA-32 gera um trap. Historicamente, chamadas ao sistema s�o feitas com int $0x80. No Linux, antes de se executar essa instru��o, o n�mero da chamada (ou seja, a defini��o do servi�o a ser executado) deve ser colocado no registrador %eax, e os argumentos nos registradores %ebx, %ecx, %edx, %esi e %edi. Depois que o sistema operacional executa o servi�o requisitado, o controle retorna � instru��o seguinte a int, com o valor de retorno em %eax.Refer�ncias:
- CS:APP, se��o 8.1.
- livro Karen Miller, se��es 14.1-14.3, na pasta 1329 do copias.com