Cursos / Eletrônica / Sistemas Operacionais / Aula
Até agora, vimos como os sistemas operacionais se parecem externamente, mas você sabe como eles são internamente? Quais são seus componentes e como eles se organizam? Quais tipos de estruturas foram utilizados para criar os sistemas operacionais?
Você sabe, por exemplo, como sua casa foi estruturada? Quantos e quais cômodos tem sua casa (quartos, sala, cozinha etc.)? Como eles estão dispostos (a cozinha é junto com a sala, os quartos são separados...)? Cada estrutura tem suas vantagens e desvantagens; por exemplo, se a cozinha for próxima da sala, posso cozinhar e assistir TV ao mesmo tempo, porém, se alguém fizer uma vitamina de banana na hora do meu filme favorito, essa estruturação pode não ser tão boa assim.
Podemos enxergar um sistema operacional como uma casa, que pode ser estruturada de diferentes formas e, obviamente, cada uma das formas terá suas vantagens e desvantagens. Nesta aula, vamos estudar duas estruturas: (1) monolítica e (2) microkernel.
Antes de detalhar cada uma dessas estruturas, precisamos apresentar para você alguns conceitos básicos usados em todos os sistemas operacionais, independentemente da sua estrutura. Por exemplo, independentemente de qual seja a arquitetura de nossas casas, podemos observar que todas elas têm quartos, cozinha e salas; o que varia de uma para outra é a disposição desses cômodos no projeto, o que poderá, dependendo de cada caso, facilitar a acomodação e comunicação entre as pessoas que habitam a casa, ou das pessoas da casa com as visitas, ou mesmo das pessoas estranhas que batem à nossa porta.
Trazendo essa analogia para o mundo dos sistemas operacionais, esses elementos que estão presentes em todos os SO correspondem ao kernel (traduzindo do inglês, núcleo) e às system calls (traduzindo do inglês, chamadas de sistema):
Existem alguns elementos do sistema (hardwares e softwares) que não podem ser acessados diretamente pelos aplicativos, mesmo considerando que seus programadores tenham capacidade de descrever programas em linguagens nativas de seus respectivos hardwares. Deve-se destacar que a utilização indevida desses elementos ocasionaria sérios problemas à integridade do sistema. Suponha que uma aplicação deseja atualizar diretamente um arquivo no disco contendo o extrato bancário com as movimentações de sua conta bancária. Você imagina o quanto ficaria aborrecido quando, ao consultar o seu extrato, observasse que parte do seu dinheiro foi retirada indevidamente?
Assim, por uma questão de segurança, o projeto de hardware dos computadores atuais não permite que nenhum programa, além do SO, especifique diretamente as instruções que acessam os dados do SO e os recursos controlados por ele. Como o disco é um recurso compartilhado, sua utilização deverá ser realizada unicamente pelo sistema operacional.
As instruções que têm o poder de manipular esses elementos do sistema são conhecidas como instruções privilegiadas e, por conta disso, somente o SO pode manipulá-las. As demais instruções são caracterizadas como não privilegiadas podendo, portanto, ser executadas por qualquer aplicativo. A execução dessas instruções não oferece perigo à consistência do sistema.
Para que uma aplicação possa acessar uma instrução privilegiada, o processador dispõe de um mecanismo que determina o modo de acesso no instante atual. Existem basicamente dois modos de acesso definidos pelo processador: modo usuário e modo kernel.
Quando um processador estiver trabalhando com o modo de acesso definido como usuário, basicamente a aplicação só pode acessar as instruções não privilegiadas. Por outro lado, se o processador estiver com o modo de acesso definido como privilegiado, que normalmente nos referimos como modo kernel, o programa que estiver sendo executado (que nesse instante será o sistema operacional) pode ter acesso ao conjunto total de instruções do processador.
O mecanismo de modos de acesso também fornece proteção ao próprio núcleo do sistema. Suponha que um programa tenha acesso a áreas de memória onde está o sistema operacional. Assim, qualquer programador mal intencionado ou um eventual erro de programação poderia gravar nessa área, violando a consistência do sistema. Com o mecanismo de modos de acesso, para uma aplicação escrever na área de memória do sistema operacional, o programa deve estar sendo executado no modo kernel.
Imagino que você deve estar pensando: puxa vida! Como esse negócio é complicado! Como, quando e quem muda o modo de acesso? Realmente, é um pouco complicado, mas à medida que formos apresentando o funcionamento do sistema operacional, você irá amadurecendo e, com certeza, entenderá direitinho. Tenha um pouco de paciência!
Versão 5.3 - Todos os Direitos reservados