• Nenhum resultado encontrado

Embora o sistema operacional MS-DOS não tenha capacidades gerais de multiiarcfa, ele fornece um mé todo para execução concorrente limitada Um programa TSR é um programa que "intercepta uma interrup-

No documento [PT] SILBERSCHATZ - Sistemas Operacionais (páginas 44-47)

ção" e, em seguida, termina com a chamada ao sistema terminate and stay resident. Por exemplo, ele pode

interceptar a interrupção do clock colocando o endereço de uma de suas sub-rotinas na lista de rotinas de in-

Estruturas de Sistemas Operacionais • 43 tcrrupçâo a serem chamadas quando o timer do sistema for acionado. Dessa forma, a rotina TSR será execu- tada várias vezes por segundo, a cada pulso do clock. A chamada ao sistema terminate and stay resident faz com que o MS-DOS reserve o espaço ocupado pelo TSR, para que não seja sobreposto quando o interpreta- dor de comandos for recarregado.

O UNIX de Bcrkeley é um exemplo de sistema multitarefa. Quando um usuário efetua logon no sistema, o shell (interpretador de comandos) escolhido pelo usuário é executado. Esse shell é semelhante ao shell do MS-DOS, no sentido de aceitar comandos e executar programas solicitados pelo usuário. No entanto, como o UNIX é um sistema multitarefa, o interpretador de comandos pode continuar a executar enquanto outro pro- grama é executado (Figura 3.4). Para iniciar um novo processo, o shell executa uma chamada ao sistema fork. Em seguida, o programa selccionado é carregado na memória via uma chamada ao sistema exec, e o programa é então executado. Dependendo da forma em que o comando foi emitido, o shell espera que o processo seja fina- lizado ou executa o processo "em segundo plano". Neste caso, o Shell solicita imediatamente um novo coman- do. Quando um processo estiver executando em segundo plano, não poderá receber entrada diretamente do te- clado, porque o shell está usando esse recurso. As operações de entrada e saída são, portanto, realizadas por meio de arquivos ou usando um mouse e uma interface de janelas. Enquanto isso, o usuário está livre para pedir ao shell que execute outros programas, monitore o andamento do processo de execução, mude a prioridade daquele programa etc. Quando o processo tiver acabado, ele executa uma chamada ao sistema exi t para en- cerrar, passando ao processo que fez a chamada um código de status zero ou um código de erro diferente de zero. Esse status ou código de erro fica então disponível para o shell ou outros programas. Os processos são discutidos no Capítulo 4. processo D memória livre processo C interpretador processo B kernel

Figura 3.4 UNIX executando vários programas.

3 . 3 . 2 Gerência d e a r q u i v o s

O sistema de arquivos será discutido em maiores detalhes no Capítulo 11. No entanto, é possível identificar várias chamadas ao sistema comuns que lidam com arquivos.

/ E m primeiro lugar/é preciso criar e excluir arquivos, através das chamadas create e dei ete. Cada chama- da ao sistema requer o nome do arquivo e talvez alguns atributos do arquivo. Uma vez criado o arquivo, é pre- ciso abri-lo (open) e usá-lo. Podemos também realizar as operações de leitura, escrita ou reposicionar, respec- tivamente read, write ou reposition (voltar ou saltar até o fim do arquivo, por exemplo). Finalmente, precisamos fechar o arquivo, por meio de close, indicando que ele não está mais sendo usado. /

Talvez seja necessário realizar o mesmo conjunto de operações para os diretórios, se houver uma estrutu- ra de diretórios para organizar os arquivos no sistema de arquivos. Além disso, para arquivos ou diretórios, é preciso ser capaz de determinar os valores dos vários atributos e talvez redefini-los, se necessário. Os atribu- tos de arquivo incluem o nome do arquivo, o tipo do arquivo, os códigos de proreção, as informações de con- tabilização etc. Pelo menos duas chamadas ao sistema, get f i l e a t t r i b u t e e s e t f i l e a t t r i b u t e , são necessá- rias para esta função. Alguns sistemas operacionais fornecem um número muito maior de chamadas.

44 • Sistemas Operacionais

3.3.3 Gerência de dispositivos

Um programa, a medida que está sendo executado, talvez precise de recursos adicionais para prosseguir. Os recursos adicionais podem ser mais memória, unidades de fita, acesso a arquivos e assim p o r diante. Se os re- cursos estiverem disponíveis, poderão ser concedidos e o controle poderá ser devolvido ao programa de usuário; caso contrário, o programa terá de esperar até que recursos suficientes estejam disponíveis.

Os arquivos podem ser considerados dispositivos abstratos ou virtuais. Assim, muitas das chamadas ao sistema por arquivos também são necessárias para dispositivos. Se houver vários usuários do sistema, no en- tanto, devemos primeiro realizar uma operação de request, para obter o dispositivo e garantir seu uso exclu- sivo. Depois de terminar com o dispositivo, devemos realizar a operação de rei ease, para liberá-lo. Essas fun- ções são semelhantes às chamadas open e close para arquivos./

Assim que o dispositivo tiver sido solicitado (e alocado), será possível realizar as operações de leitura, es- crita c (possivelmente) reposicionamento do dispositivo, por meio de read, write e reposition, assim como ocorre com arquivos comuns. Na verdade, a similaridade entre dispositivos de l/O e arquivos é tão grande que muitos sistemas operacionais, incluindo o UNIX e o MS-DOS, combinam os dois cm uma estrutura de arquivo-dispositivo. Nesse caso, os dispositivos de I/O são identificados por nomes de arquivo especiais.

3.3.4 Manutenção de informações

/Muitas chamadas ao sistema existem simplesmente a fim de transferir informações entre o programa de usuário e o sistema operacional. Por exemplo, a maioria dos sistemas possuí uma chamada ao sistema para obter a data e hora atuais, por meio de time c date. Outras; chamadas ao sistema podem retornar informações sobre o sistema, tal como o número de usuários atuais, o número da versão do sistema operacional, a quanti- dade de memória ou espaço em disco livre e assim por diante./

Além disso, o sistema operacional mantém informações sobre todos os seus processos e existem chama- das ao sistema para acessar essas informações. Em geral, também existem chamadas para redefinir informa- ções de processo (get process a t t n b u t e s e set process a t t r i b u t e s ) . Na Seção 4.1.3, discutimos que infor- mações são normalmente mantidas.

.3.5 Comunicação

Existem dois modelos comuns de comunicação. No modelo de troca de mensagens, as informações são tro- cadas através de um recurso de comunicação entre processos fornecido pelo sistema operacional. Antes da comunicação ocorrer, uma conexão deve ser estabelecida. O nome do outro comunicador deve ser conheci- do, quer seja outro processo na mesma CPU ou um processo em outro computador conectado por uma rede de comunicação. Cada computador em uma rede tem um nome de host, como um número IP, pelo qual é co- nhecido. Da mesma forma, cada processo tem um nome de processo, que é traduzido em um identificador equivalente com o qual o sistema operacional pode fazer referência a elejfts chamadas ao sistema get hosti d e get processid efetuam essa tradução. Esses identificadores são então passados às chamadas de uso geral open e close fornecidas pelo sistema de arquivos ou às chamadas específicas open connection e close connec- tion, dependendo do modelo de comunicação do sistema. O processo destinatário geralmente deve dar sua permissão para que a comunicação ocorra com uma chamada accept connection. A maioria dos processos que estarão recebendo conexões são daemons de uso especial, q u e são programas de sistema fornecidos para esse fim. Eles executam uma chamada watt for connection e são despertados quando uma chamada é feita. A origem da comunicação, chamada de cliente, e o daemon receptor, chamado de servidor, trocam mensagens por meio das chamadas read message e wri te message. A chamada cl ose connect i on encerra a comunicação.

No modelo de memória compartilhada, os processos utilizam as chamadas ao sistema map memory para obter acesso às regiões da memória de propriedade de outros processos. Lembre-se de q u e , normalmente, o sistema operacional tenta evitar que um processo acesse a memória de o u t r o processo. A memória com-

partilhada requer que dois ou mais processos concordem em remover esta restrição. Eles podem então tro- car informações lendo e gravando dados nessas áreas compartilhadas. A forma dos dados e sua localização são determinadas por esses processos e não estão sob controle do sistema operacional. Os processos tam- bém são responsáveis por garantir que não estão escrevendo na mesma posição simultaneamente. Tais me-

Estruturas de Sistemas Operacionais

45

No documento [PT] SILBERSCHATZ - Sistemas Operacionais (páginas 44-47)

Outline

Documentos relacionados