Estruturas de Sistemas Operacionais

Propaganda
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
Download