Sistemas Operacionais Prof. André Y. Kusumoto [email protected] Prof. André Y. Kusumoto – [email protected] Estruturas de Sistemas Operacionais • Um sistema operacional fornece o ambiente no qual os programas são executados. Internamente, os sistemas operacionais variam muito em sua constituição, sendo organizados em muitas linhas diferentes. 2/13 Prof. André Y. Kusumoto – [email protected] Componentes do Sistema Gerência de Processos • Um programa não faz nada a não ser que suas instruções sejam executadas por uma CPU • Um processo precisa de determinados recursos – incluindo tempo de CPU, memória, arquivos e dispositivos de I/O – para realizar sua tarefa. Esses recursos são dados ao processo quando ele é criado ou alocados a ele durante sua execução. Um programa por si só não é um processo. Um programa é uma entidade passiva, como o conteúdo de um arquivo armazenado em disco, enquanto um processo é uma entidade ativa, com um contador de programa especificando a próxima instrução a ser executada. • Um processo é a unidade de trabalho em um sistema. Um sistema desse tipo consiste em uma coleção de processos, alguns dos quais são processos de sistema operacional e o resto são processos de usuário. 3/13 Prof. André Y. Kusumoto – [email protected] Componentes do Sistema Gerência da Memória Principal • A memória principal é um grande vetor de palavras e bytes, variando em seu tamanho. Cada palavra ou byte tem seu próprio endereço. • A memória principal geralmente é o único dispositivo de armazenamento grande que a CPU pode endereçar e acessar diretamente. • Para que um programa seja executado, ele deve ser mapeado para endereços absolutos e carregados na memória. À medida que o programa executa, ele acessa instruções e dados do programa. Por fim, o programa termina, seu espaço de memória é declarado disponível e o próximo programa pode ser carregado e executado. • Para melhorar a utilização da CPU e a velocidade de resposta do computador aos seus usuários, é preciso manter vários programas na memória. 4/13 Prof. André Y. Kusumoto – [email protected] Componentes do Sistema Gerência de Arquivos • A gerência de arquivos é um dos componentes mais visíveis de um sistema operacional. • Os computadores podem armazenar informações em vários tipos diferentes de meios físicos. • Cada meio é controlado por um dispositivo, que também tem suas características exclusivas. Essas propriedades incluem velocidade de acesso, capacidade, taxa de transferência de dados e método de acesso (seqüencial ou aleatório). • Para uso conveniente do sistema de computação, o sistema operacional fornece uma visão lógica uniforme do armazenamento de informações, o arquivo • Um arquivo consiste em uma seqüência de bits, bytes, linhas ou registros cujos significados são definidos pelos seus criadores. • Os arquivos são normalmente organizados em diretórios para facilitar o seu uso. Quando vários usuários têm acesso aos arquivos, pode ser desejável controlar quem pode acessar os arquivos, e de que forma pode faze-lo (por exemplo, para leitura, escrita, etc). 5/13 Prof. André Y. Kusumoto – [email protected] Componentes do Sistema Gerência do Sistema de I/O • Um dos objetivos de um sistema operacional é ocultar as peculiaridades de dispositivos de hardware específicos do usuário. Apenas o driver de dispositivo conhece as peculiaridades do dispositivo específico ao qual foi atribuído. Gerência de armazenamento secundário • O principal objetivo de um sistema de computação é executar programas. • Esses programas, com os dados que acessam, devem estar na memória principal, ou armazenamento primário, durante a execução. Como a memória principal é pequena demais para acomodar todos os dados e programas, e como é uma forma de armazenamento volátil, o sistema de computação deve fornecer armazenamento secundário para dar suporte à memória principal. • A maioria dos sistemas de computação modernos usa discos como o principal meio de armazenamento secundário para programas e dados. Os programas e dados são armazenados em disco até serem carregados na memória • Portanto, a gerência adequada do armazenamento em disco é de importância crucial para um sistema de computação. 6/13 Prof. André Y. Kusumoto – [email protected] Componentes do Sistema Sistemas de Proteção • Se um sistema de computação tiver vários usuários e permitir a execução concorrente de múltiplos processos, esses processos deverão ser protegidos das atividades uns dos outros • A proteção é qualquer mecanismo para controlar o acesso de programas, processos ou usuários aos recursos definidos por um sistema de computação. 7/13 Prof. André Y. Kusumoto – [email protected] Serviços de sistemas operacionais • Um sistema operacional fornece um ambiente para a execução de programas. Fornece certos serviços a programas e aos usuários desses programas. Execução de programas: o sistema deve ser capaz de carregar um programa na memória e executar esse programa. Operações de I/O: um programa em execução pode precisar de I/O. O sistema operacional deve fornecer os meios para realizar as operações de entrada e saída. Manipulação do sistema de arquivos: obviamente, os programas precisam ler e gravar arquivos. Comunicações: As comunicações podem ser implementadas via memória compartilhada (mesmo computador) ou pela técnica de troca de mensagens (computadores interligados). Detecção de erros: o sistema operacional precisa estar constantemente ciente de possíveis erros. Para cada tipo de erro, o sistema operacional deve tomar uma medida adequada para garantir uma computação correta e consistente. Contabilização: é preciso manter um registro dos usuários que utilizam os recursos do computador, em que quantidade e que tipos de recursos. 8/13 Prof. André Y. Kusumoto – [email protected] Chamadas ao Sistema • • • As chamadas ao sistema (system calls) fornecem a interface entre um processo e o sistema operacional. As chamadas ao sistema para as plataformas Microsoft Windows modernas fazem parte da API Win32 Como um exemplo da forma em que as chamadas ao sistema são usadas, considere escrever um programa simples para ler dados de um arquivo e copiá-los para outro arquivo: Depois que os dois nomes de arquivos tiverem sido obtidos, o programa deve abrir o arquivo de entrada e criar o arquivo de saída. Cada uma dessas operações requer outra chamada ao sistema. Com os dois arquivos prontos, entramos em um laço que lê dados do arquivo de entrada (uma chamada de sistema) e os grava no arquivo de saída (outra chamada ao sistema). Finalmente, depois que o arquivo todo tiver sido copiado, o programa poderá fechar os dois arquivos (outra chamada ao sistema), gravar uma mensagem na console (mais uma chamada ao sistema) e finalmente terminar normalmente (a chamada final ao sistema). Como podemos ver, os programas fazem uso pesado do sistema operacional. • A maior parte dos detalhes de interface do sistema operacional é oculta do programador pelo compilador e pelo pacote de suporte a execução. 9/13 Prof. André Y. Kusumoto – [email protected] Chamadas ao Sistema Gerência de Arquivos • Em primeiro lugar, é preciso criar e excluir arquivos, através das chamadas create e delete. Cada chamada ao sistema requer o nome do arquivo e talvez alguns atributos do arquivo. Uma vez criado o arquivo, é preciso abri-lo (open) e usá-lo. Gerência de Dispositivos • Um programa, à 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 por diante. Manutenção das Informações • Muitas chamadas ao sistema existem simplesmente a fim de transferir informações entre o programa usuário e o sistema operacional. • Por exemplo, a maioria dos sistemas possui uma chamada ao sistema para obter data e hora atuais, por meio de time e date. • Outras chamadas de sistema podem retornar informações sobre o sistema, tal como o número de usuários atuais, o número de versão do sistema operacional, a quantidade de memória ou espaço em disco livre e assim por diante. 10/13 Prof. André Y. Kusumoto – [email protected] Máquinas Virtuais • • • • Usando as técnicas de escalonamento de CPU e de memória virtual, um sistema operacional pode criar a ilusão de que um processo tem seu próprio processador com sua própria memória (virtual). A abordagem de máquina virtual, por outro lado, não fornece funcionalidade adicional, em vez disso, fornece uma interface que é idêntica ao hardware subjacente. O computador físico compartilha recursos para criar máquinas virtuais. O escalonamento de CPU pode compartilhar a CPU para criar a ilusão de que os usuários têm seus próprios processadores. Uma grande dificuldade da abordagem de máquina virtual envolve os sistemas de disco. Implementação • • Embora o conceito de máquina virtual seja útil, ele é difícil de implementar. Muito trabalho é necessário para fornecer uma duplicata exata da máquina subjacente. Lembre-se de que a máquina subjacente tem dois modos: o modo usuário e o modo monitor. O software da máquina virtual pode executar no modo monitor, pois é o sistema operacional. A máquina virtual propriamente dita só pode executar no modo usuário. 11/13 Prof. André Y. Kusumoto – [email protected] Máquinas Virtuais Benefícios • • • • • • O conceito de máquina virtual tem várias vantagens. Observe que, neste ambiente, existe proteção total dos vários recursos do sistema. Cada maquina virtual é completamente isolada de todas as outras máquinas virtuais, por isso não existem problemas de segurança. Tal sistema de máquina virtual é um veículo perfeito para a pesquisa e desenvolvimento de sistemas operacionais. Normalmente, alterar um sistema operacional é uma tarefa difícil. Como os sistemas operacionais são grandes e complexos, é difícil ter certeza de que uma alteração em uma parte não causará bugs obscuros em outra parte. Um sistema de máquina virtual pode eliminar boa parte do problema. Os programadores de sistema recebem sua própria máquina virtual, e o desenvolvimento do sistema é feito na máquina virtual, em vez da máquina física. 12/13