1 - Chamadas ao Sistema - Camilla
Autor: Camilla | Publicado: 2009-06-23T20:07:00-03:00

Olá pessoal!Bom, nesta matéria nós vamos abordar diversos assuntos, que servirão de base para estudos mais aprofundados, a CHAMADAS AO SISTEMA.A interação entre processos dos usuários e o sistema operacional é feita por meio de chamadas ao sistema (system calls). Essas chamadas estão geralmente disponíveis na forma de instruções  em linguagem de montagem e fazem parte usualmente de listagens contidas em manuais usados por programadores de linguagens de montagem.Diversas linguagens como C, Bliss, BCPL, PL/360 e PERL- foram definidas para substituir as linguagens de montagem na programação de sistemas.Três métodos gerais de passagem de parâmetros ao sistema operacional são usados. A abordagem mais simples é a passagem de parâmetros em registradores, entretanto, podem existir mais parâmetros do que registradores, dos parâmetros são geralmente armazenados em um bloco ou em uma tabela na memória e o endereço da tabela é passado em um registrador. Os valores dos parâmetros podem também ser colocados, ou retirados, na pilha (ou empilhados) pelo programa e desempilhados pelo sistema operacional. As chamadas ao sistema podem ser agrupadas de maneira geral em cinco categorias principais: controle de processos, manipulação de arquivos, manipulação de dispositivos, manutenção de informações e comunicações.Tipos de Chamadas de Sistema: 1) Controle de Serviços e Processos;2) Manipulação de Arquivos;3) Gerenciamento de Dispositivos;4) Armazenamento e Transferência de Dados;5) Comunicações.1) Controle de Serviços e ProcessosUm programa em execução pode interromper sua execução normalmente (termine) ou não (abortar). Se uma chamada ao sistema é feita para terminar a execução de um programa anormalmente ou se ocorre algum erro sem possibilidade de tratamento durante a execução de um programa, o conteúdo de toda a memória é  às vezes impresso e uma mensagem de erro é gerada. Esse dump é feito em disco e pode ser examinado por um depurador para  determinar a causa do problema. Em circunstâncias normais ou anormais, o controle deve ser transferido para o interpretador de comandos, pelo sistema operacional. O interpretador de comandos lê então o próximo comando. Em um sistema batch, o interpretador de comandos normalmente termina o processamento do serviço como um todo e passa a processar o próximo serviço.Um programa em execução pode carregar outro programa (carregar) e iniciar a sua execução (executar). Essa característica permite que o interpretador de comandos execute um novo programa a partir de um comando especificado por algum usuário ou de um comando para processamento em ´segundo plano´ (backgroud) ou quando um usuário pressiona um botão do mouse. Uma questão interessante é determinar para onde retornar o controle quando um programa carregado por outro termina sua execução.Após criar novos serviços e processos, podemos ter de esperar que eles terminem sua execução. Podemos querer esperar por certo período de tempo (esperar tempo); mais provavelmente, podemos querer esperar que um determinado evento ocorra (esperar evento). Os serviços ou processos devem então indicar a ocorrência desse evento (sinalizar evento). Chamadas ao sistema desse tipo, que tratam da coordenação de processos concorrentes.2) Manipulação de ArquivosDevemos primeiro ser capazes de criar e remover arquivos. Ambas as camadas requerem o nome de um arquivo e talvez alguns atributos. Podemos também ler, gravar ou reposicionar (ir para o inicio ou para o fim de um arquivo, por exemplo). Finalmente, precisamos fechar o arquivo, para indicar que não estamos mais usando. Podemos precisar desse mesmo conjunto de operações para diretórios, se tivermos um sistema de arquivos que usa uma estrutura de diretórios para organização dos arquivos. Além disso, tanto para arquivos quanto para diretórios, precisamos poder determinar os valores de vários atributos, e talvez modificá-los, se necessário. O nome e o tipo do arquivo, os códigos de proteção, as informações sobre o uso do arquivo e assim por diante podem ser atributos de um arquivo. São necessárias para essa finalidade no mínimo duas camadas, obter atributo de arquivo e definir atributo de arquivo. Em alguns sistemas operacionais existem muitas outros.3) Gerenciamento de DispositivosUm programa em execução pode precisar de recursos adicionais para que possa continuar o processamento. Esses recursos podem ser mais espaço em memória, unidades de fita, acesso aos arquivos e assim por diante. Se os recursos necessários estão disponíveis, eles podem ser alocados e o controle pode retornar ao programa do usuário; caso contrário, o programa terra de esperar ate que recursos suficientes estejam disponíveis.Os arquivos podem ser vistos como dispositivos virtuais ou abstratos. Portanto, muitas chamadas ao sistema usadas para arquivos são também necessárias para dispositivos. Em um sistema multiusuario, no entanto, devemos primeiro requisitar o uso de um dispositivo para assegurar seu uso exclusivo. Quando terminarmos de usá-lo, devemos liberá-lo. Essas chamadas ao sistema são similares ás de abrir e fechar arquivos. Depois de requisitar um dispositivo ( e depois de ele ter sido alocado para nosso uso), podemos ler, gravar e (possivelmente) reposicionar esse dispositivo, da mesma maneira como acontece com arquivos comuns. A semelhança entre dispositivo de E/S e arquivos é tanta que muitos sistemas operacionais, incluindo o Unix e o MS-DOS, combinam os dois em uma única estrutura nesse caso, dispositivos de E/S são identificados por nomes de arquivos especiais.4) Armazenamento e Transferência de Dados Muitas chamadas ao sistema têm como único objeto transferir dados entre os programas dos usuários e o sistema operacional. Por exemplo, a maioria dos sistemas fornece uma chamada ao sistema para retornar a hora e data atuais. Outras chamadas são usadas para fornecer informações sobre o sistema, como o número atual de usuários, o numero da versão do sistema operacional que está sendo usada, a quantidade de espaço livre na memória e em disco e assim por diante.Além disso, o sistema operacional mantém informações sobre todos os processos e existem chamadas ao sistema para acesso e essas informações. Em geral, existem também chamadas para modificar o valor de atributos de processos (obter atributos de processo e definir atributos de processo).5) ComunicaçõesExistem dois modelos de comunicação comumente usados. No modelo de troca de mensagens, as informações são trocadas por intermédio de mecanismos de comunicação possa ser realizada, é preciso que seja estabelecida uma conexão. O nome do processo com o qual será estabelecida a comunicação deve ser conhecido, quer ele esteja em execução na mesma CPU quer esteja em outro computador conectado através de uma rede de comunicações. Cada computador em uma rede possui um nome pelo qual é comumente conhecido. Da mesma forma, cada processo possui um nome, que é traduzido para uma identificação equivalente, pelo sistema operacional a ele se refere. Existem chamadas ao sistema para obter identificações de um computador e de um processo que fazem essa tradução. Essas identificações são passadas para chamadas ao sistema de propósito geral (abrir e fechar) ou então para chamadas ao sistema específicas (do tipo abrir conexão e fechar conexão), dependendo do modelo de comunicações usado. O processo que recebe a comunicação deve usualmente enviar uma concordância com a comunicação, por meio de uma chamada para aceitar conexão.A maioria dos processos que em geral recebem mensagens é especial, desenvolvidos com esse propósito específico, chamados de daemons que recebe a comunicação, conhecido como servidor, passam então a trocar mensagens por meio de chamadas ao sistema para ler mensagem e gravar mensagem. Por fim, é chamada para fechar conexão.Em um modelo de memória compartilhada, os processos usam ao sistema para mapear memória de forma a obter acesso a regiões da memória reservadas a outros processos.